Python Pygame动画——移动

Pygame动画——移动

游戏最小系统摆上,然后开始做动画💪

这一章的代码写在01动画原理.py里面

本节视频:

【零基础 Python体验课】第四季 pygame游戏开发

对象移动

由于移动需要刷新,所以要写在循环内,正好在死循环内不停循环刷新就很棒👍

动态写在循环里,静态写在循环外,如果静态的对象显示一个球是这样

在这里插入图片描述

如果想要动态,我们需要将圆的坐标保存为变量,在死循环内更改变量的值就可以,然后重新绘制,就可以有更改,理论上是这样的,那么实际效果呢?

flag = True
while flag:
	# 帧动画编辑位置
	y = y + 1
	pygame.draw.circle(window, (255, 0, 0), (100, y), 50)
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			exit()

没什么,没有更新🙂加一句pygame.display.update()

在这里插入图片描述

代码最后贴出

发现实现的结果和预想的不太一样呀,因为上一次绘画的圆没有消掉,然后紧接着出现了新圆。最简单的方法是将上一个圆设置为与背景色相同的颜色,这样在快速移动的时候就会认为是一个球在移动。具体思路是在更改y之前重新覆盖。

pygame.draw.circle(window, (255, 255, 255), (100, y), 50)
y = y + 1
pygame.draw.circle(window, (255, 0, 0), (100, y), 50)

如果认为移动速度太慢,就让y加的多一些,但一般的电脑都很快,要变慢那么就用一个循环变量,if每10次y+1。

缩放

如果要实现一个圆放大缩小的功能,其实也很简单,只是改变圆的半径重新画就行了,可能我们心里老有一种负担就是上一次的还在,只是覆盖了,觉得不妥,其实没关系,单独画圆并不是控件,就当是一个画板,画上去再擦掉,就没了。

#END#白嫖代码的机会🛩

# coding: UTF-8
'''@Author: Thomas'''
import pygame

WIN_WIDTH = 400 # 常量宽
WIN_HEIGHT = 600 # 常量高

pygame.init()

window = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))
pygame.display.set_caption("动画原理")
window.fill((255, 255, 255)) # 填充为白色
pygame.display.flip() # 刷新动画

# 静态动画编辑位置
# 1、显示静态球
y = 100
pygame.draw.circle(window, (255, 0, 0), (100, y), 50)
pygame.display.update()

flag = True
while flag:
	# 帧动画编辑位置
	pygame.draw.circle(window, (255, 255, 255), (100, y), 50)
	y = y + 1
	pygame.draw.circle(window, (255, 0, 0), (100, y), 50)
	pygame.display.update()
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			exit()

for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值