用Python趣味小游戏开发!
我们已经成功搭建了贪吃蛇游戏的基本框架,并且让蛇能够在屏幕上移动起来。现在,我们将进入第二步:为游戏添加第二个指令,让玩家能够通过键盘输入来控制蛇的移动方向。
一、回顾上一步的代码
在开始之前,让我们先回顾一下上一步的代码。我们使用了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游戏开发的基本技巧,并且能够独立开发出更加复杂和有趣的游戏。希望你在这个过程中能够收获乐趣,并且不断提升自己的编程能力。