超级玛丽、魂斗罗、坦克大战、冒险岛……提到这些游戏,“80后”、"90后"滔滔不绝,掀起一波回忆杀。
最近不少媒体发文称:“小霸王被申请破产”。其实,不管有没有破产,小霸王终究只能成为童年回忆了,它的落寞是不争的事实,曾风靡全国的光辉再也回不去了。
今天我来用 Python 制作一个曾经标志性的游戏:「贪吃蛇」。学习和趣味两不耽误的coding。让我们开始构建游戏吧。
导入库
首先,我们需要将库导入到代码中,这些代码将用于构建游戏。我们需要下面的库来构建和运行我们的游戏。
import pygame import time import random
说明如下:
-
pygame:此库将帮助我们获取所有图形组件来构建游戏。
-
random:这个库将帮助我们在游戏中随机位置生成食物。
-
time:这有助于我们在游戏中与时间相关的功能,如蛇的速度。
启动游戏并设置图形
现在,让我们开始构建游戏部分。我们将首先初始化游戏。
pygame.init()
我们在游戏中定义了6种颜色。
white = (255, 255, 255) yellow = (255, 255, 102) black = (0, 0, 0) red = (213, 50, 80) green = (0, 255, 0) blue = (50, 153, 213)
接下来,我们应该定义游戏运行的显示的大小。将高度定义为 600px,宽度定义为 800px。
width = 800 height = 600
接下来,我们将使用定义游戏标题的游戏名称。
dis = pygame.display.set_mode((width, height)) pygame.display.set_caption("Snake Game")
定义游戏中使用的变量
现在我们将初始化时钟变量,该变量将使用我们之前导入的时间包。
clock = pygame.time.Clock()
定义我们的蛇的速度,以及蛇块的大小。
snake_block = 10 snake_speed = 12
接下来,我们定义字体大小和字体样式,用于显示分数。
font_style = pygame.font.SysFont(“bahnschrift”, 25) score_font = pygame.font.SysFont(“comicsansms”, 35)
定义帮助器函数
在这里,我们需要定义三个帮助器函数,用于以下目的:用于显示分数、处理蛇和处理游戏中其他相关信息的显示。
def Your_score(score): value = score_font.render("Your Score: " + str(score), True, yellow) dis.blit(value, [0, 0] def our_snake(snake_block, snake_list): for x in snake_list: pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block]) def message(msg, colour): mesg = font_style.render(msg, True, colour) dis.blit(mesg, [width / 6, height / 3])
构建游戏循环
现在,我们开始构建游戏的组件,使其运行并通过键盘响应用户输入。
我们首先定义两个布尔变量:game_over和game_close。他们将描述游戏状态。
第一个会告诉游戏是否结束。下一个变量定义游戏是否关闭,我们需要再次玩游戏。我们把两者定义为假。
game_over = False game_close = False
下一步,我们的目标是定义游戏中需要的其他变量。
x1 = width / 2 y1 = height / 2 x1_change = 0 y1_change = 0 snake_List = [] snake_length = 1 foodx = round(random.randrange(0, width — snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, height — snake_block) / 10.0) * 10.0
接下来,我们将启动一个循环,该循环将game_over变为True。
在该循环中,我们将首先定义要执行的指令,以防game_close为 True。
下面是代码,这将有助于我们解决这种情况时,game_close等于真。
while game_close == True: dis.fill(blue) message(“Oops! Your snake died! Press P to play again or Q to quit”, red) Your_score(snake_length — 1) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_p: gameLoop()
现在,在处理game_close条件后,我们接下来将定义所有必需的步骤,这些步骤将允许我们的蛇通过用户的输入移动。我们将接受 W, A, S, D 和向上, 向下, 左右键组合玩游戏。您可以自由选择您选择的键来玩游戏。
for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT or event.key == pygame.K_a: x1_change = -snake_block y1_change = 0 elif event.key == pygame.K_RIGHT or event.key == pygame.K_d: x1_change = snake_block y1_change = 0 elif event.key == pygame.K_UP or event.key == pygame.K_w: y1_change = -snake_block x1_change = 0 elif event.key == pygame.K_DOWN or event.key == pygame.K_s: y1_change = snake_block x1_change = 0
接下来,我们将定义输掉比赛的条件。
`if x1 >= width or x1 < 0 or y1 >= height or y1 < 0: game_close = True x1 += x1_change y1 += y1_change dis.fill(blue) pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])`
然后,我们调用our_snake Your_score(定义在之前),并传递给这些函数所需的参数,以显示更新的蛇和玩家的分数。
`snake_Head = [] snake_Head.append(x1) snake_Head.append(y1) snake_List.append(snake_Head) if len(snake_List) > snake_length: del snake_List[0] for x in snake_List[:-1]: if x == snake_Head: game_close = True our_snake(snake_block, snake_List) Your_score(snake_length — 1) pygame.display.update()`
接下来,我们将蛇速作为时钟的参数。
if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, width — snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, height — snake_block) / 10.0) * 10.0 snake_length += 1 clock.tick(snake_speed)
我们的游戏快结束了。最后一步,我们需要退出游戏,并再次调用游戏循环。
`pygame.quit() quit() gameLoop()`
我们已经完成了贪吃蛇游戏。
点击下方安全链接前往获取
CSDN大礼包:《Python入门&进阶学习资源包》免费分享文章来源:https://www.toymoban.com/news/detail-841587.html
👉Python实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python书籍和视频合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉Python副业创收路线👈
这些资料都是非常不错的,朋友们如果有需要《Python学习路线&学习资料》,点击下方安全链接前往获取
CSDN大礼包:《Python入门&进阶学习资源包》免费分享
本文转自网络,如有侵权,请联系删除。文章来源地址https://www.toymoban.com/news/detail-841587.html
到了这里,关于太好玩了!我用 Python 制作一款小游戏!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!