乐愚社区Beta

 编程语言  >  pygame入门04.02 —— 上下移动小球案例

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()
  

注意一下,所有的运动形式都在于你的变量怎样的,其余的都差不多。
这就是关于图形运动的全部内容了,如果有不足之处还望指出,谢谢各位。
总而言之,一切都要建立在行动的基础上,才会有真正的提高。昨天和今天的不同在于你是否有进步,今天和明天的不同在于你是否还在前行。

与君共勉,下期再见。

 

 


还没注册帐号?快来注册社区帐号,和我们一起嗨起来!
关于本社区

集各类兴趣爱好于一身的轻量化交流社区,在此您可以和他人一起分享交流您觉得有价值的内容,社区鼓励大家发表原创内容,为社区添砖加瓦!

发帖奖励 → 社区版规 → 招聘版主 →
推荐版块
扫描二维码下载社区APP
回到顶部