93
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2242
姓名: 徐思遥
学号:20224221
实验教师:王志强
实验日期:2024年5月14日
必修/选修: 专选课
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等
贪吃蛇是一款经典的电子游戏,旨在通过控制一条蛇的移动来吃食物,并随着吃到的食物数量增加而使蛇的长度增加。本实验旨在使用
Python 编程语言和 Pygame 库实现一个简单的贪吃蛇游戏,并增加游戏结束的功能。
通过阅读资料和搜寻B站,本实验将分为以下几个步骤:
1.安装 Pygame 库。




2.编写贪吃蛇游戏的 Python 代码
(1)游戏的初始化;

(2)设置屏幕大小;

(3)颜色定义;

(4)创建屏幕;

(5)设置帧速率;

(6)初始化贪吃蛇、食物、方向(蛇的移动、食物生成等功能);

(7)定义死亡函数;

(8)游戏循环;

(9)方向验证,并增加碰到边界时游戏结束的功能;


(10)绘制蛇和食物、更新屏幕、设置帧速率。

3.调试和测试编写的代码,确保游戏可以正常运行并在碰到边界时正确结束游戏。
(1)贪吃蛇源代码
import pygame
import random
# 初始化游戏
pygame.init()
# 设置屏幕大小
screen_width = 400
screen_height = 400
cell_size = 2
# 颜色定义
white = (255, 255, 255)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)
# 创建屏幕
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('贪吃蛇')
# 设置帧速率
clock = pygame.time.Clock()
# 初始化贪吃蛇
snake_pos = [screen_width // 2, screen_height // 2]
snake_body = [[snake_pos[0], snake_pos[1]], [snake_pos[0] - cell_size, snake_pos[1]], [snake_pos[0] - (2 * cell_size), snake_pos[1]]]
# 初始化食物
food_pos = [random.randrange(1, (screen_width // cell_size)) * cell_size, random.randrange(1, (screen_height // cell_size)) * cell_size]
food_spawn = True
# 初始化方向
direction = 'RIGHT'
change_to = direction
# 定义死亡函数
def game_over():
font = pygame.font.SysFont('arial', 30)
game_over_text = font.render('游戏结束!', True, red)
screen.blit(game_over_text, [screen_width // 3, screen_height // 3])
pygame.display.flip()
pygame.time.wait(2000)
pygame.quit()
quit()
# 游戏循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
change_to = 'RIGHT'
if event.key == pygame.K_LEFT:
change_to = 'LEFT'
if event.key == pygame.K_UP:
change_to = 'UP'
if event.key == pygame.K_DOWN:
change_to = 'DOWN'
# 方向验证
if change_to == 'RIGHT' and not direction == 'LEFT':
direction = 'RIGHT'
if change_to == 'LEFT' and not direction == 'RIGHT':
direction = 'LEFT'
if change_to == 'UP' and not direction == 'DOWN':
direction = 'UP'
if change_to == 'DOWN' and not direction == 'UP':
direction = 'DOWN'
# 根据方向移动蛇的头部
if direction == 'RIGHT':
snake_pos[0] += cell_size
if direction == 'LEFT':
snake_pos[0] -= cell_size
if direction == 'UP':
snake_pos[1] -= cell_size
if direction == 'DOWN':
snake_pos[1] += cell_size
# 增加蛇的长度
snake_body.insert(0, list(snake_pos))
if snake_pos == food_pos:
food_spawn = False
else:
snake_body.pop()
if food_spawn == False:
food_pos = [random.randrange(1, (screen_width // cell_size)) * cell_size, random.randrange(1, (screen_height // cell_size)) * cell_size]
food_spawn = True
# 游戏结束条件:碰到边界
if snake_pos[0] >= screen_width or snake_pos[0] < 0 or snake_pos[1] >= screen_height or snake_pos[1] < 0:
game_over()
# 游戏结束条件:碰到自己
for block in snake_body[1:]:
if snake_pos == block:
game_over()
# 绘制蛇和食物
screen.fill(black)
for pos in snake_body:
pygame.draw.rect(screen, green, pygame.Rect(pos[0], pos[1], cell_size, cell_size))
pygame.draw.rect(screen, blue, pygame.Rect(food_pos[0], food_pos[1], cell_size, cell_size))
# 更新屏幕
pygame.display.update()
# 设置帧速率
clock.tick(10)
(2)运行视频
https://live.csdn.net/v/393300
4、实验结果与分析
通过python代码成功实现了一个简单的贪吃蛇游戏,并在碰到边界时正常结束游戏。游戏能够在 Pygame 窗口中运行,玩家可以使用方向键控制蛇的移动,通过吃食物来增加长度,一旦蛇的头部碰到边界,游戏即会结束。
5、实验过程中遇到的问题和解决
问题1:蛇的移动方式不符合预期。
解决过程:仔细检查了蛇移动的逻辑,发现错误在于更新蛇身体各个部分的位置时出现了问题。通过调试并逐步修改代码,最终解决了这个问题。
问题2:游戏在边界检测时出现错误,无法正确结束游戏。
解决过程:检查了边界检测的逻辑,发现了一处边界条件判断错误的地方。进行了修正后,游戏可以正确地在碰到边界时结束。
贪吃蛇是一个经典的游戏,它的规则简单,但却非常有趣。通过编写贪吃蛇游戏,我学到了很多关于 Python 编程的知识和技能。 在这个实验中,我使用了 Pygame 库来创建游戏窗口和处理游戏逻辑。我学会了如何使用 Pygame 库来绘制图形、处理事件和播放声音。我还学会了如何使用面向对象编程的思想来设计游戏中的蛇和食物对象。 在实现贪吃蛇的移动和转弯功能时,我使用了 Pygame 的键盘事件来监听用户的输入,并根据输入来控制蛇的移动方向。在实现食物的生成和消失功能时,我使用了随机数生成器来生成食物的位置,并在蛇吃到食物后重新生成食物。 通过这个实验,我还学会了如何调试程序和解决问题。在编写程序的过程中,我遇到了很多问题,例如蛇的身体部分没有正确连接、食物没有正确消失等。通过仔细检查代码和使用调试工具,我最终解决了这些问题。 总的来说,通过编写贪吃蛇游戏,我学到了很多关于 Python 编程的知识和技能,也提高了自己的编程能力和解决问题的能力。
通过本学期学习 Python 课程,我对编程有了更深入的理解,也掌握了一些实用的编程技能。 在学习 Python 课程的过程中,我感受到了编程的乐趣和挑战。Python 的语法简洁明了,非常容易理解和掌握。通过学习 Python,我学会了如何使用变量、数据类型、控制结构、函数等基本概念来构建程序。同时,我也学会了如何使用一些常用的库和工具,来处理数据和可视化结果。 除了学习编程技能之外,我还体会到了编程思维的重要性。编程思维是一种解决问题的思维方式,它强调逻辑思考、问题分解和算法设计。通过学习 Python 课程,我学会了如何将一个复杂的问题分解成多个简单的子问题,并通过编写代码来解决这些子问题。这种思维方式不仅在编程中有用,在日常生活中也非常有用。 同时也非常感谢王志强老师对我们的教导,虽然python现在在我的眼里还是比较高深困难的东西,但我很幸运遇到了志强老师,教我们理解什么是python、该如何学习python。总的来说,学习 Python 课程是一次非常有意义的经历。通过学习 Python,我不仅掌握了一门实用的编程语言,还培养了自己的编程思维和解决问题的能力。我相信这些技能和思维方式将对我未来的学习和工作产生积极的影响。老师的寄语我也十分地感动,好好学习,热爱生活!特别荣幸在这学期选了志强老师的python课程,长路漫漫,我们后会有期!