用Python趣味小游戏开发!

liftword3个月前 (04-10)技术文章41

我们已经成功搭建了贪吃蛇游戏的基本框架,并且让蛇能够在屏幕上移动起来。现在,我们将进入第二步:为游戏添加第二个指令,让玩家能够通过键盘输入来控制蛇的移动方向。

一、回顾上一步的代码

在开始之前,让我们先回顾一下上一步的代码。我们使用了Pygame库来创建游戏窗口,并且定义了一个蛇类(`Snake`),它包含了蛇的初始位置、移动速度等属性。以下是上一步代码的核心部分:

```python

import pygame

import sys

# 初始化Pygame

pygame.init()

# 设置屏幕大小

screen_width = 800

screen_height = 600

screen = pygame.display.set_mode((screen_width, screen_height))

# 设置颜色

black = (0, 0, 0)

white = (255, 255, 255)

green = (0, 255, 0)

# 蛇类

class Snake:

def __init__(self):

self.position = [100, 50] # 初始位置

self.body = [[100, 50], [90, 50], [80, 50]] # 蛇的身体

self.direction = "RIGHT" # 初始方向

def change_direction(self, new_direction):

if new_direction == "RIGHT" and not self.direction == "LEFT":

self.direction = "RIGHT"

if new_direction == "LEFT" and not self.direction == "RIGHT":

self.direction = "LEFT"

if new_direction == "UP" and not self.direction == "DOWN":

self.direction = "UP"

if new_direction == "DOWN" and not self.direction == "UP":

self.direction = "DOWN"

def move(self):

if self.direction == "RIGHT":

self.position[0] += 10

if self.direction == "LEFT":

self.position[0] -= 10

if self.direction == "UP":

self.position[1] -= 10

if self.direction == "DOWN":

self.position[1] += 10

self.body.insert(0, list(self.position))

# 游戏主循环

snake = Snake()

clock = pygame.time.Clock()

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

screen.fill(black)

for pos in snake.body:

pygame.draw.rect(screen, green, pygame.Rect(pos[0], pos[1], 10, 10))

snake.move()

pygame.display.flip()

clock.tick(10)

```

这段代码实现了蛇的自动移动,并且在屏幕上绘制了蛇的身体。现在,我们需要让玩家能够通过键盘输入来控制蛇的方向。

二、添加键盘输入控制

在Pygame中,我们可以使用`pygame.event.get()`来获取用户的输入事件。当用户按下键盘时,会触发一个`KEYDOWN`事件,我们可以通过监听这个事件来获取用户按下的是哪个键。接下来,我们将修改代码,让蛇能够根据用户的输入改变方向。

1.修改`Snake`类的`change_direction`方法

首先,我们需要确保蛇的方向能够根据用户的输入进行改变。在`Snake`类中,我们已经定义了一个`change_direction`方法,它可以根据传入的新方向来更新蛇的当前方向。这个方法已经足够使用,我们不需要对其进行修改。

2.在游戏主循环中添加键盘输入监听

接下来,我们需要在游戏主循环中添加对键盘输入的监听。当用户按下键盘时,我们调用`Snake`类的`change_direction`方法来改变蛇的方向。以下是修改后的代码:

```python

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

elif event.type == pygame.KEYDOWN: # 监听键盘按下事件

if event.key == pygame.K_UP:

snake.change_direction("UP")

if event.key == pygame.K_DOWN:

snake.change_direction("DOWN")

if event.key == pygame.K_LEFT:

snake.change_direction("LEFT")

if event.key == pygame.K_RIGHT:

snake.change_direction("RIGHT")

screen.fill(black)

for pos in snake.body:

pygame.draw.rect(screen, green, pygame.Rect(pos[0], pos[1], 10, 10))

snake.move()

pygame.display.flip()

clock.tick(10)

```

在这段代码中,我们添加了一个`elif event.type == pygame.KEYDOWN:`的判断条件,用来监听键盘按下事件。当用户按下键盘时,我们通过`event.key`来判断用户按下的是哪个键。如果用户按下的是上箭头键(`pygame.K_UP`),我们就调用`snake.change_direction("UP")`来改变蛇的方向为向上;同理,对于下箭头键、左箭头键和右箭头键,我们也分别调用`snake.change_direction`方法来改变蛇的方向。

三、测试游戏

现在,我们已经完成了第二步的代码修改。运行程序后,你可以通过键盘上的箭头键来控制蛇的移动方向。蛇会根据你的输入实时改变方向,并且在屏幕上移动。

四、总结与展望

在这一部分中,我们为贪吃蛇游戏添加了键盘输入控制功能,让玩家能够通过键盘上的箭头键来控制蛇的移动方向。这是游戏开发中的一个关键步骤,它让玩家能够与游戏进行交互。

在接下来的步骤中,我们将继续完善贪吃蛇游戏。我们可以为游戏添加食物,当蛇吃到食物时,它的身体会变长;我们还可以添加碰撞检测,当蛇撞到自己或者屏幕边缘时,游戏结束。此外,我们还可以为游戏添加计分系统,记录玩家的得分。

通过一步步的学习和实践,你将能够掌握Python游戏开发的基本技巧,并且能够独立开发出更加复杂和有趣的游戏。希望你在这个过程中能够收获乐趣,并且不断提升自己的编程能力。

相关文章

使用Python+OpenCV代码制作贪吃蛇小游戏,你也可以打造自己的AI

前言今天和大家分享一下如何使用 mediapipe+opencv 自制贪吃蛇小游戏。先放张图看效果。规则:食指指尖控制蛇头,指尖每接触到黄色方块,计数加一,蛇身变长,方块随机切换位置。如果指尖停止移动...

游戏代码如何应用?

游戏代码的应用涉及从开发到运行的完整流程,需要结合游戏引擎、编程语言和开发工具来实现。以下是分步骤的详细说明和示例:### 一、游戏代码应用的核心步骤1. **选择开发工具** - 游戏引擎:Unit...

教你用 python 写一个小游戏

今天玩点别的吧都说 Python 除了生孩子什么都能干咱们今天就用 Python 写个小游戏贪吃蛇想必大家都玩过这玩意有没有想过你自己来实现一个这样的游戏呢那么接下来就是学习 python 的正确姿势...

一行代码可以做什么?Python给你答案

下面分享几个神奇的小游戏和一些实用的Python一行代码程序。一些小游戏贪吃蛇使用一行代码启动相关游戏,比如贪吃蛇snakepython -m freegames.snake贪吃蛇的玩法想必不用过多解...

实测Claude 3.7:3200行代码一口气输出,弱智吧已失守

Claude 3.7新鲜出炉全网热议,到底有多强?第一波实测来了!简单粗暴总结,它在编程、现实世界任务上,能力爆表。只需一个样本,就能一下子吐出3200多行代码,做出一个可玩性很高的游戏。像什么跳跃、...

新手小白为自己定制Python学习计划。闭关修炼,争取早日吃上鸡腿

以下是为期一个月的Python每日1小时高效学习计划,注重循序渐进和实战应用,适合零基础或基础薄弱的学习者:**第一阶段:基础语法(第1-7天)**```python 每日结构:10:00-10:10...