Python|Python Pygame实现落球游戏详解

目录

  • 引包
  • 初始化配置
  • 捕捉事件
  • 填充屏幕让球下落
  • 完整代码

引包 引入对应的包,和原来一样写一个打印文字的方法
import sys, random,pygamefrom pygame.locals import *def print_text(font, x, y, text, color=(255, 255, 255)):img_text = font.render(text, True, color)screen.blit(img_text, (x, y))


初始化配置 初始化游戏,pygame窗口的一些信息,以及游戏中用的的一些参数。
pygame.init()# 定时器mainClock = pygame.time.Clock()# 设置屏幕和窗口标题screen = pygame.display.set_mode((600, 500))pygame.display.set_caption("落球游戏")# 设置字体font1 = pygame.font.SysFont("方正粗黑宋简体", 24)pygame.mouse.set_visible(False)# 设置颜色变量white = 255, 255, 255red = 220, 50, 50yellow = 230, 230, 50black = 0, 0, 0# 生命数lives = 3# 分score = 0# 游戏开始flggame_over = True# 鼠标位置mouse_x = mouse_y = 0pos_x = 300pos_y = 460# 球落下的x和y轴坐标bomb_x = random.randint(0, 500)bomb_y = -50# 球下落的速度vel_y = 0.7


捕捉事件 捕捉事件,如果游戏结束按下鼠标,则游戏重新开始, mouse_x, mouse_y捕捉鼠标位置, move_x, move_y获取鼠标的偏移
while True:for event in pygame.event.get():if event.type == QUIT:sys.exit()elif event.type == MOUSEMOTION:mouse_x, mouse_y = event.posmove_x, move_y = event.relelif event.type == MOUSEBUTTONUP:if game_over:game_over = Falselives = 3score = 0keys = pygame.key.get_pressed()if keys[K_ESCAPE]:sys.exit()


填充屏幕让球下落 让屏幕填充一个暖色调,如果游戏未开始,屏幕中显示 “点击开始新游戏”, 否则球下落。
如果球大于500,则重置一个新球,生命减去一,如果生命没有了则游戏结束。
这里没有使用元素相碰撞原理,有两个相对的位置,如果球大于挡板的垂直坐标,切球的x坐标大于挡板的开始位置,小于挡板的宽度,则分数添加,重置球的位置。
screen.fill((255, 166, 77))if game_over:print_text(font1, 100, 200, "点击新游戏")else:bomb_y += vel_yif bomb_y > 500:bomb_x = random.randint(0, 500)bomb_y = -50lives -= 1if lives == 0:game_over = Trueelif bomb_y > pos_y:if bomb_x > pos_x and bomb_x < pos_x + 120:score += 120bomb_x = random.randint(0, 500)bomb_y = -50

绘制球和挡板,绘制屏幕
根据bomb_x,bomb_y来显示球,并绘制一个阴影
Python|Python Pygame实现落球游戏详解
文章图片

【Python|Python Pygame实现落球游戏详解】矩形一样
Python|Python Pygame实现落球游戏详解
文章图片

显示生命数和分数,更新屏幕,设置每秒的频率为20
这里明显有很大的问题,因为圆绘制的时候点是圆心,所以比较的时候就会出错,如果你用矩形的右部分去接球心左少部分,显示还是接不到,这里我们不深究,简单的游戏是实现了,优化我放在第二部分。
pygame.draw.circle(screen, black, (bomb_x - 4, int(bomb_y) - 4), 30, 0)pygame.draw.circle(screen, yellow, (bomb_x, int(bomb_y)), 30, 0)pygame.draw.rect(screen, black, (pos_x - 4, pos_y - 4, 120, 40), 0)pygame.draw.rect(screen, red, (pos_x, pos_y, 120, 40), 0)print_text(font1, 0, 0, "生命数: " + str(lives))print_text(font1, 500, 0, "分数: " + str(score))pygame.display.update()mainClock.tick(20)

Python|Python Pygame实现落球游戏详解
文章图片


完整代码
import sys, random,pygamefrom pygame.locals import *def print_text(font, x, y, text, color=(255, 255, 255)):img_text = font.render(text, True, color)screen.blit(img_text, (x, y))pygame.init()# 定时器mainClock = pygame.time.Clock()# 设置屏幕和窗口标题screen = pygame.display.set_mode((600, 500))pygame.display.set_caption("落球游戏")# 设置字体font1 = pygame.font.SysFont("方正粗黑宋简体", 24)pygame.mouse.set_visible(False)# 设置颜色变量white = 255, 255, 255red = 220, 50, 50yellow = 230, 230, 50black = 0, 0, 0# 生命条数lives = 3# 分score = 0# 游戏开始flggame_over = True# 鼠标位置mouse_x = mouse_y = 0pos_x = 300pos_y = 460# 球落下的x和y轴坐标bomb_x = random.randint(0, 500)bomb_y = -50# 球下落的速度vel_y = 0.7while True:for event in pygame.event.get():if event.type == QUIT:sys.exit()elif event.type == MOUSEMOTION:mouse_x, mouse_y = event.posmove_x, move_y = event.relelif event.type == MOUSEBUTTONUP:if game_over:game_over = Falselives = 3score = 0keys = pygame.key.get_pressed()if keys[K_ESCAPE]:sys.exit()screen.fill((255, 166, 77))if game_over:print_text(font1, 100, 200, "点击新游戏")else:bomb_y += vel_yif bomb_y > 500:bomb_x = random.randint(0, 500)bomb_y = -50lives -= 1if lives == 0:game_over = Trueelif bomb_y > pos_y:if bomb_x > pos_x and bomb_x < pos_x + 120:score += 120bomb_x = random.randint(0, 500)bomb_y = -50pygame.draw.circle(screen, black, (bomb_x - 4, int(bomb_y) - 4), 30, 0)pygame.draw.circle(screen, yellow, (bomb_x, int(bomb_y)), 30, 0)pos_x = mouse_xif pos_x < 0:pos_x = 0elif pos_x > 500:pos_x = 500pygame.draw.rect(screen, black, (pos_x - 4, pos_y - 4, 120, 40), 0)pygame.draw.rect(screen, red, (pos_x, pos_y, 120, 40), 0)print_text(font1, 0, 0, "生命数: " + str(lives))print_text(font1, 500, 0, "分数:" + str(score))pygame.display.update()mainClock.tick(20)

到此这篇关于Python Pygame实现落球游戏详解的文章就介绍到这了,更多相关Python Pygame落球游戏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读