python语言能做什么游戏好玩_太好玩了我用 Python 制作一款小游戏

超级玛丽、魂斗罗、坦克大战、冒险岛……提到这些游戏,"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 = height or y1 

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

我们已经完成了贪吃蛇游戏。完整版贪吃蛇游戏代码如下。

领取方式:

长按扫码,发消息[贪吃蛇]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值