pygame入门04.02 —— 上下移动小球案例 |
|
原来是稀琳
L7
• 2024-10-06 • 回复 0 • 只看楼主
• 举报
|
我是一个python入门的小白,做这个系列即是为了巩固pygame的相关知识,也是为了考验自己坚持做一件事。
另外如果以下内容有错误或不规范的请各位大佬积极指出,谢谢大家
在这一章本来是想发一个类似像素鸟的游戏(只是玩法相同,不插入图片),可由于本人技术不过关,关于障碍物这方面的逻辑问题还没有搞清楚,就只发一个小球移动的教程,和我个人认为的在pygame里面实现图形移动的方法。也算给自己在这方面做一个总结。
先给出代码:
import pygame
import sys
import time
import random
#初始化pygame
from pygame.locals import*
pygame.init()
#创建游戏窗口
width =240
height = 400
screen = pygame.display.set_mode((width,height))
#给游戏窗口命名
pygame.display.set_caption("躲避障碍物")
#小球代码
ball_x = width // 2
ball_y = height // 2
ball_speed = 5
ball_color = (225,0,0)
ball_r = 10
#游戏结束代码
def GameOver():
font = pygame.font.Font(None,50)
text = font.render("Game over",True,(0,0,0))
text_rect = text.get_rect(center = (width // 2,height // 2))
screen.blit(text,text_rect)
pygame.display.update()
pygame.time.wait(2000)
runing = True
while runing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
runing = False
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
ball_y -= ball_speed * 2
# 绘制小球
pygame.draw.circle(screen, ball_color, (ball_x, ball_y), ball_r)
ball_y += ball_speed
# 填充背景色
screen.fill((255, 210, 100)) # 白色背景
# 绘制小球
pygame.draw.circle(screen, ball_color, (ball_x, ball_y), ball_r)
if ball_y == height or ball_y == 0:
GameOver()
break
# 更新显示
pygame.display.flip()
# 控制帧率
pygame.time.Clock().tick(40)
#刷新游戏窗口
pygame.display.update()
#关闭游戏窗口
pygame.quit()
sys.exit()
在没有以下鼠标交互代码出现之前,小球只会向下移动,如果小球触碰到顶部和尾部就结束游戏。
# 鼠标交互的代码
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
ball_y -= ball_speed * 2
# 绘制小球
pygame.draw.circle(screen, ball_color, (ball_x, ball_y), ball_r)
最后不要完了设置循环帧数,以便使游戏便于游玩
# 更新显示
pygame.display.flip()
# 控制帧率
pygame.time.Clock().tick(40)
'''
更新显示也不能忘记
'''
pygame里面实现图形移动的方法
在绝大多数游戏中,这是重中之重,却没有多少人会真正系统的去讲解这个点,所有我来尝试一下:
最开始的想法
接下来运动的方法
由于我们不需要看到这么多圆运动的过程,我们只需要结果,于是我们就会选择不断地刷新屏幕
在这里我们依旧会面临一个重大问题,就是速度太快,几乎是一闪而逝,于是乎我们就要控制帧率,减缓循环的速度。
# 更新显示
pygame.display.flip()
# 控制帧率
pygame.time.Clock().tick(40)
#刷新游戏窗口
pygame.display.update()
注意一下,所有的运动形式都在于你的变量怎样的,其余的都差不多。
这就是关于图形运动的全部内容了,如果有不足之处还望指出,谢谢各位。
总而言之,一切都要建立在行动的基础上,才会有真正的提高。昨天和今天的不同在于你是否有进步,今天和明天的不同在于你是否还在前行。
与君共勉,下期再见。