利用python如何实现猫捉老鼠小游戏

1. 简介

猫捉老鼠是一款非常经典的小游戏,也是很多学习编程的人喜欢使用的一个练手项目。在这个游戏中,玩家需要操纵猫去追逐老鼠,而老鼠则需要躲避猫的追击。那么,利用Python如何实现这个小游戏呢?接下来的文章将带大家逐步实现。

2. 准备工作

2.1 安装pygame库

在Python中实现游戏要用到pygame库,因此需要先安装。以下是在Windows系统下安装pygame库的方法:

pip install pygame

2.2 下载素材

为了让游戏更加生动,我们需要一些图片素材。本文使用的图片素材如下:

将这两个图片文件下载到本地,准备好开始编写游戏界面。

3. 实现游戏界面

首先,需要导入pygame库,并初始化。接下来,创建一个游戏窗口并设置标题、大小和背景颜色:

import pygame

# 初始化pygame

pygame.init()

# 设置窗口标题和大小

pygame.display.set_caption('猫捉老鼠')

screen = pygame.display.set_mode((700, 550))

# 设置背景颜色

background_color = (96, 96, 96)

screen.fill(background_color)

# 刷新屏幕

pygame.display.flip()

运行代码,可以看到一个灰色的窗口。

接下来,让我们把猫和老鼠加入到游戏窗口中。

# 载入猫和老鼠图片

cat = pygame.image.load('cat.png')

cat = pygame.transform.scale(cat, (100, 100))

mouse = pygame.image.load('mouse.png')

mouse = pygame.transform.scale(mouse, (100, 100))

# 将猫和老鼠放在窗口中央

cat_rect = cat.get_rect()

cat_rect.x = screen.get_width() // 2 - cat.get_width() // 2

cat_rect.y = screen.get_height() // 2 - cat.get_height() // 2

screen.blit(cat, cat_rect)

mouse_rect = mouse.get_rect()

mouse_rect.x = screen.get_width() // 2 - mouse.get_width() // 2 + 200

mouse_rect.y = screen.get_height() // 2 - mouse.get_height() // 2

screen.blit(mouse, mouse_rect)

# 刷新屏幕

pygame.display.flip()

运行代码,可以看到一个猫和老鼠都在中央的窗口。

此时,游戏窗口中已经有了猫和老鼠,但它们还没有开始移动。我们需要在后面的代码中加入游戏逻辑,使它们可以开始运动。

4. 实现游戏逻辑

在每个游戏循环中,我们需要监听键盘事件,根据按键采取合适的操作,如猫向左、向右、向上、向下移动,老鼠在随机方向上移动等。

在游戏循环开始之前,需要定义猫和老鼠的初始方向、位置、速度等参数:

# 初始方向和位置

cat_direction = 'right'

cat_speed = 5

cat_x, cat_y = cat_rect.x, cat_rect.y

mouse_direction = 'left'

mouse_speed = 3

mouse_x, mouse_y = mouse_rect.x, mouse_rect.y

在游戏循环中,使用pygame.event.get()监听键盘事件。如果是按下方向键,则更新方向;否则,判断是否退出游戏。

while True:

# 监听事件

for event in pygame.event.get():

# 如果按下ESC键,则退出游戏

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

# 如果按下方向键,则更新方向

elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_LEFT:

cat_direction = 'left'

elif event.key == pygame.K_RIGHT:

cat_direction = 'right'

elif event.key == pygame.K_UP:

cat_direction = 'up'

elif event.key == pygame.K_DOWN:

cat_direction = 'down'

同时,需要更新猫和老鼠的位置。根据它们的方向和速度,计算出它们移动后的坐标。

# 计算猫的新位置

if cat_direction == 'left':

cat_x -= cat_speed

elif cat_direction == 'right':

cat_x += cat_speed

elif cat_direction == 'up':

cat_y -= cat_speed

elif cat_direction == 'down':

cat_y += cat_speed

cat_rect.x, cat_rect.y = cat_x, cat_y

# 计算老鼠的新位置

directions = ['left', 'right', 'up', 'down']

index = random.randint(0, 3)

mouse_direction = directions[index]

if mouse_direction == 'left':

mouse_x -= mouse_speed

elif mouse_direction == 'right':

mouse_x += mouse_speed

elif mouse_direction == 'up':

mouse_y -= mouse_speed

elif mouse_direction == 'down':

mouse_y += mouse_speed

mouse_rect.x, mouse_rect.y = mouse_x, mouse_y

最后,在每个游戏循环结束时刷新屏幕。

# 刷新屏幕

screen.fill(background_color)

screen.blit(cat, cat_rect)

screen.blit(mouse, mouse_rect)

pygame.display.flip()

现在,整个猫捉老鼠的小游戏基本完成了。完整代码如下:

import pygame

import random

import sys

# 初始化pygame

pygame.init()

# 设置窗口标题和大小

pygame.display.set_caption('猫捉老鼠')

screen = pygame.display.set_mode((700, 550))

# 设置背景颜色

background_color = (96, 96, 96)

# 载入猫和老鼠图片

cat = pygame.image.load('cat.png')

cat = pygame.transform.scale(cat, (100, 100))

mouse = pygame.image.load('mouse.png')

mouse = pygame.transform.scale(mouse, (100, 100))

# 将猫和老鼠放在窗口中央

cat_rect = cat.get_rect()

cat_rect.x = screen.get_width() // 2 - cat.get_width() // 2

cat_rect.y = screen.get_height() // 2 - cat.get_height() // 2

screen.blit(cat, cat_rect)

mouse_rect = mouse.get_rect()

mouse_rect.x = screen.get_width() // 2 - mouse.get_width() // 2 + 200

mouse_rect.y = screen.get_height() // 2 - mouse.get_height() // 2

screen.blit(mouse, mouse_rect)

# 初始方向和位置

cat_direction = 'right'

cat_speed = 5

cat_x, cat_y = cat_rect.x, cat_rect.y

mouse_direction = 'left'

mouse_speed = 3

mouse_x, mouse_y = mouse_rect.x, mouse_rect.y

# 游戏循环

while True:

# 监听事件

for event in pygame.event.get():

# 如果按下ESC键,则退出游戏

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

# 如果按下方向键,则更新方向

elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_LEFT:

cat_direction = 'left'

elif event.key == pygame.K_RIGHT:

cat_direction = 'right'

elif event.key == pygame.K_UP:

cat_direction = 'up'

elif event.key == pygame.K_DOWN:

cat_direction = 'down'

# 计算猫的新位置

if cat_direction == 'left':

cat_x -= cat_speed

elif cat_direction == 'right':

cat_x += cat_speed

elif cat_direction == 'up':

cat_y -= cat_speed

elif cat_direction == 'down':

cat_y += cat_speed

cat_rect.x, cat_rect.y = cat_x, cat_y

# 计算老鼠的新位置

directions = ['left', 'right', 'up', 'down']

index = random.randint(0, 3)

mouse_direction = directions[index]

if mouse_direction == 'left':

mouse_x -= mouse_speed

elif mouse_direction == 'right':

mouse_x += mouse_speed

elif mouse_direction == 'up':

mouse_y -= mouse_speed

elif mouse_direction == 'down':

mouse_y += mouse_speed

mouse_rect.x, mouse_rect.y = mouse_x, mouse_y

# 刷新屏幕

screen.fill(background_color)

screen.blit(cat, cat_rect)

screen.blit(mouse, mouse_rect)

pygame.display.flip()

运行代码,可以看到一个猫捉老鼠的小游戏。

5. 总结

在本文中,我们使用Python和pygame库实现了一个简单的猫捉老鼠小游戏。通过这个项目,我们学习了pygame库的使用,了解了如何创建游戏窗口、载入图片、监听键盘事件、计算移动位置等。

这只是一个简单的游戏,还有很多地方可以优化。例如,可以增加碰撞检测、增加多只老鼠、增加声音效果等等。不论是完整的游戏制作还是小模块的练习,都是非常有趣的编程实践。希望本文能对初学者起到一定的指导作用。

后端开发标签