本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢!
一、前言
本文介绍Python编程开发贪吃蛇游戏实战的第二期内容。
-
什么是Python?
Python是由荷兰人吉多·范罗苏姆于1990年代初设计的一门编程语言,应用领域非常广泛,尤其在数据分析、人工智能、游戏开发等领域,已经成为最受欢迎的程序设计语言之一,比较适合新手学习。
Python语言标准库官方使用手册:https://docs.python.org/zh-cn/3/library/
-
什么是Pygame?
Pygame 是一个专门用来开发游戏的 Python 模块,是一个免费、开源的第三方软件包,主要为开发、设计 2D 电子游戏而生,比如扫雷、纸牌游戏、贪吃蛇、超级马里奥、飞机大战等等。
Pygame官网地址:https://www.pygame.org/tags/all
二、贪吃蛇游戏开发简介
2.1 贪吃蛇游戏规则
游戏用户可以使用键盘控制贪吃蛇去吃食物,每次成功吃掉一个食物后,游戏得分增加50分,蛇身体变长一节;同时,食物消失,随机又出现新的食物,不断重复,看谁的游戏得分最高;
如果贪吃蛇撞到了墙(游戏窗口边框),则游戏结束,显示最终游戏得分;之后,可以按空格,重新开始游戏;
2.2 贪吃蛇游戏开发步骤
贪吃蛇游戏开发包括四个步骤,这里对应分四期博客文章进行介绍。
-
步骤1、编程开发贪吃蛇游戏界面,即创建一个游戏主窗口,设置一张图片作为游戏的背景图片(这里使用蜡笔小新图片),同时在窗口左上角显示游戏得分Score;
-
步骤2、编程开发贪吃蛇,即在游戏主窗口中,画一条粉色的贪吃蛇,并且可以使用键盘控制贪吃蛇进行上下左右的移动;
-
步骤3、编程开发贪吃蛇吃食物和游戏规则,即在游戏主窗口中,画一个黑色的食物,并且当食物被贪吃蛇吃掉后,又会出现新的食物。同时,蛇身体变长一节,游戏得分增加50分;
-
步骤4、编程开发游戏结束规则,即当贪吃蛇撞到了墙(游戏窗口边框),提示“Game Over”游戏结束,显示最终游戏得分;之后,可以提示可以按空格,重新开始游戏;
三、贪吃蛇游戏开发实战
这里介绍贪吃蛇游戏开发实战第二期,编程开发贪吃蛇,即在游戏主窗口中,画一条粉色的贪吃蛇,并且可以使用键盘控制贪吃蛇进行上下左右的移动。
对应的Python代码如下:
import pygame
import sys
import random
"""
贪吃蛇游戏
@author 姑苏老陈
@date 2024-07-18
"""
# 定义游戏窗口大小
game_width = 800
game_height = 800
# 定义蛇类,点以25为单位
class Snake(object):
# 初始化, 开始时默认向右/身体块x5
def __init__(self):
self.direction = pygame.K_RIGHT
self.body = []
for x in range(5):
self.addNode()
# 在头部添加一个蛇块
def addNode(self):
left, top = (0, 0)
if self.body:
left, top = (self.body[0].left, self.body[0].top)
# 创建一个指定位置和大小的矩形区域,即蛇块
node = pygame.Rect(left, top, 25, 25)
if self.direction == pygame.K_LEFT:
node.left -= 25
elif self.direction == pygame.K_RIGHT:
node.left += 25
elif self.direction == pygame.K_UP:
node.top -= 25
elif self.direction == pygame.K_DOWN:
node.top += 25
self.body.insert(0, node) # insert在列表的指定位置插入一个元素
# 删除尾部最后一个蛇块
def delNode(self):
self.body.pop() # pop移除列表中的最后一个元素
# 蛇移动
def move(self):
self.addNode()
self.delNode()
# 改变蛇的方向,左右、上下不能被逆向改变
def changeDirection(self, curkey):
LR = [pygame.K_LEFT, pygame.K_RIGHT]
UD = [pygame.K_UP, pygame.K_DOWN]
if curkey in LR + UD:
if (curkey in LR) and (self.direction in LR):
return
if (curkey in UD) and (self.direction in UD):
return
self.direction = curkey
# 定义界面文案显示
def show_text(screen, pos, text, color, font_bold=False, font_size=60, font_italic=False):
# 获取系统字体,并设置文字大小
cur_font = pygame.font.SysFont("宋体", font_size)
# 设置是否加粗属性
cur_font.set_bold(font_bold)
# 设置是否斜体属性
cur_font.set_italic(font_italic)
# 设置文字内容,创建字体surface对象
text_fmt = cur_font.render(text, 1, color)
# 绘制文字,放置在screen主窗口上
screen.blit(text_fmt, pos)
# 定义main方法
def main():
# 初始化设置,创建游戏主窗口等等
pygame.init()
screen_size = (game_width, game_height)
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption('贪吃蛇-蜡笔小新版')
image = pygame.image.load("../../assets/xiaoxin.jpeg") # 加载图像,创建图像surface对象
img = pygame.transform.scale(image, (game_width, game_width)) # 调整图像大小,并返回一个新的图像surface对
clock = pygame.time.Clock() # 创建一个时钟对象来帮我们确定游戏要以多大的帧数运行
scores = 0 # 游戏得分
isDead = False
# 创建蛇类
snake = Snake()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
snake.changeDirection(event.key)
screen.fill((255, 255, 255))
screen.blit(img, (0, 0))
# 画蛇身,画一个不停移动的矩形队列
if not isDead:
snake.move()
for rect in snake.body:
pygame.draw.rect(screen, "pink", rect, 0) # 绘制矩形蛇块
# 显示当前分数
show_text(screen, (44, 44), 'Scores: ' + str(scores), "black")
pygame.display.update()
# 设置游戏的帧数率(FPS),即通过时钟对象,指定循环频率,每秒循环10次
clock.tick(10)
# 入口
if __name__ == '__main__':
main()
代码运行效果图如下:
四、总结
以上介绍了如何使用Python编程开发贪吃蛇游戏,并提供了对应的代码以及运行效果图。希望对大家有帮助,谢谢。
PS:代码中使用到的图片等资源下载地址:https://pan.baidu.com/s/11F7CtbdEojYTNvZkUzWhBA?pwd=7vf0
提取码:7vf0
如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)