我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用Python写贪吃蛇游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用Python写贪吃蛇游戏

怎么用Python写贪吃蛇游戏,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

前几天,有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Python(蛇)玩Snake(贪吃蛇),再合适不过了。

这里通过一个Python入门学习的例子跟大家详细讲解一下!

先通过下面这个效果图来感受下吧!

怎么用Python写贪吃蛇游戏

1 环境

操作系统:Windows

Python版本:3.7.3

2 需求分析

我们先来回顾下贪吃蛇中的游戏元素及游戏规则。

首先呢,需要有贪吃蛇、有食物;需要能控制贪吃蛇来上下移动获取食物;贪吃蛇在吃取食物后,自身长度增加,同时食物消失并随机生成新的食物;如果贪吃蛇触碰到四周墙壁或是触碰到自己身体时,则游戏结束。

游戏规则就是这么简单,接下来我们借助一个第三方库pygame来实现它。

Pygame是一个利用SDL库的游戏库, 是一组用来开发游戏软件的 Python 程序模块。SDL(Simple DirectMedia Layer)是一个跨平台库,支持访问计算机多媒体硬件(声音、视频、输入等),SDL非常强大,但美中不足的是它是基于 C 语言的。 PyGame是 SDL 库的 Python 包装器(wrapper),Pygame 在SDL库的基础上提供了各种接口,从而使用用户能够使用python语言创建各种各样的游戏或多媒体程序。

它的安装方法很简单,如下:

pip install pygame

想要了解更多pygame功能的朋友也可以查阅官方的文档。

3 代码实现

首先导入我们要用到的模块,除了第三方库pygame外,我们还会用到一些Python内置的模块如sys、random、time等,一并导入即可。

import pygame, sys, random, time# 从pygame模块导入常用的函数和常量from pygame.locals import *

1 一些全局参数的初始化

接下来,我们需要声明一些全局参数。如初始化pygame、定义游戏窗口的大小、窗口的标题、定义全局的颜色变量等信息。

# 初始化Pygame库pygame.init()# 初始化一个游戏界面窗口DISPLAY = pygame.display.set_mode((640, 480))# 设置游戏窗口的标题pygame.display.set_caption('人人都是Pythonista - Snake')# 定义一个变量来控制游戏速度FPSCLOCK = pygame.time.Clock()# 初始化游戏界面内使用的字体BASICFONT = pygame.font.SysFont("SIMYOU.TTF", 80)# 定义颜色变量BLACK = pygame.Color(0, 0, 0)WHITE = pygame.Color(255, 255, 255)RED = pygame.Color(255, 0, 0)GREY = pygame.Color(150, 150, 150)

2 初始化贪吃蛇及食物

游戏中需要有贪吃蛇及食物,我们给定一个初始值。我们将整个界面看成许多20*20的小方块,每个小方块代表一个标准小格子,贪吃蛇的长度就可以用几个标准小格子表示。我们将贪吃蛇身体用列表的形式存储,方便之后的删减。

'''初始化贪吃蛇及食物'''# 贪吃蛇的的初始位置snake_Head = [100,100]# 初始化贪吃蛇的长度 (注:这里以20*20为一个标准小格子)snake_Body = [[80,100],[60,100],[40,100]]# 指定蛇初始前进的方向,向右direction = "right"# 给定第一枚食物的位置food_Position = [300,300]# 食物标记:0代表食物已被吃掉;1代表未被吃掉。food_flag = 1

3 实现贪吃蛇的上下左右移动

我们需要控制贪吃蛇的上下左右的移动,这里通过监听键盘输入来实现。利用键盘中的上下左右键或WASD键来控制贪吃蛇的运动。

# 检测按键等Pygame事件for event in pygame.event.get(): if event.type == QUIT: # 接收到退出事件后,退出程序 pygame.quit() sys.exit() # 判断键盘事件,用 方向键 或 wsad 来表示上下左右 elif event.type == KEYDOWN: if (event.key == K_UP or event.key == K_w) and direction != DOWN: direction = UP if (event.key == K_DOWN or event.key == K_s) and direction != UP: direction = DOWN if (event.key == K_LEFT or event.key == K_a) and direction != RIGHT: direction = LEFT if (event.key == K_RIGHT or event.key == K_d) and direction != LEFT: direction = RIGHT

接下来就是将蛇前进方向按照键盘的输入进行转弯操作,并将蛇的头部当前的位置加入到蛇身的列表中。

# 根据键盘的输入,改变蛇的头部,进行转弯操作if direction == LEFT: snake_Head[0] -= 20if direction == RIGHT: snake_Head[0] += 20if direction == UP: snake_Head[1] -= 20if direction == DOWN: snake_Head[1] += 20# 将蛇的头部当前的位置加入到蛇身的列表中snake_Body.insert(0, list(snake_Head))

4 判断是否吃到食物

如果蛇头与食物的位置重合,则判定吃到食物,将食物数量清零;而没吃到食物的话,蛇身就会跟着蛇头运动,蛇身的最后一节将被踢出列表。

# 判断是否吃掉食物if snake_Head[0]==food_Position[0] and snake_Head[1]==food_Position[1]: food_flag = 0else: snake_Body.pop()

5 重新生成食物

当游戏界面中的食物数量为0时,需要重新生成食物。利用random函数来生成随机位置

# 生成新的食物if food_flag == 0: # 随机生成x, y x = random.randrange(1,32) y = random.randrange(1,24) food_Position = [int(x*20),int(y*20)] food_flag = 1

6 绘制贪吃蛇、食物、分数等信息

定义贪吃蛇的绘制函数

# 绘制贪吃蛇def drawSnake(snake_Body): for i in snake_Body: pygame.draw.rect(DISPLAY, WHITE, Rect(i[0], i[1], 20, 20))

定义食物的绘制函数

# 绘制食物的位置def drawFood(food_Position): pygame.draw.rect(DISPLAY, RED, Rect(food_Position[0], food_Position[1], 20, 20))

定义分数的绘制函数

# 打印出当前得分

def drawScore(score):

# 设置分数的显示颜色

score_Surf = BASICFONT.render('%s' %(score), True, GREY)

# 设置分数的位置

score_Rect = score_Surf.get_rect()

score_Rect.midtop = (320, 240)

# 绑定以上设置到句柄

DISPLAY.blit(score_Surf, score_Rect)

这些都定义好之后,我们需要在游戏主逻辑中调用它们,并刷新Pygame的显示层,贪吃蛇与食物的每一次移动,都会进行刷新显示层的操作来显示。最后我们可以设定一个速度值来合理控制游戏执行的速度。

DISPLAY.fill(BLACK)# 画出贪吃蛇drawSnake(snake_Body)# 画出食物的位置drawFood(food_Position)# 打印出玩家的分数drawScore(len(snake_Body) - 3)# 刷新Pygame的显示层,贪吃蛇与食物的每一次移动,都会进行刷新显示层的操作来显示。pygame.display.flip()# 控制游戏速度FPSCLOCK.tick(7)

7 定义游戏结束的画面并判断游戏是否结束

定义函数,用于展示游戏结束的画面并退出程序

# 游戏结束并退出def GameOver(): # 设置GameOver的显示颜色 GameOver_Surf = BASICFONT.render('Game Over!', True, GREY) # 设置GameOver的位置 GameOver_Rect = GameOver_Surf.get_rect() GameOver_Rect.midtop = (320, 10) # 绑定以上设置到句柄 DISPLAY.blit(GameOver_Surf, GameOver_Rect) pygame.display.flip() # 等待3秒 time.sleep(3) # 退出游戏 pygame.quit() # 退出程序 sys.exit()

在游戏主逻辑中加入判断,游戏是否结束

'''游戏结束的判断'''# 贪吃蛇触碰到边界if snake_Head[0]<0 or snake_Head[0]>620: GameOver()if snake_Head[1]<0 or snake_Head[1]>460: GameOver()# 贪吃蛇触碰到自己for i in snake_Body[1:]: if snake_Head[0]==i[0] and snake_Head[1]==i[1]: GameOver()

本文利用Pygame模块实现了最简单的贪吃蛇版本。当然还有很多需要优化的地方,比如随机生成食物时如何避免出现在贪吃蛇的自身上、通过贪吃蛇的长度来自动控制游戏速度等等。

关于怎么用Python写贪吃蛇游戏问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用Python写贪吃蛇游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用Python写贪吃蛇游戏

怎么用Python写贪吃蛇游戏,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前几天,有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典
2023-06-02

python贪吃蛇游戏代码怎么写

下面是一个简单的Python贪吃蛇游戏的代码示例:```pythonimport pygameimport random# 游戏窗口大小WINDOW_WIDTH = 800WINDOW_HEIGHT = 600# 蛇身尺寸SNAKE_SIZ
2023-08-14

Python贪吃蛇游戏编写代码

最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间找不到别的,就先做个贪吃蛇来练练简单的语法。 由于Python监听键盘很麻烦,没有C语言的kbhit(),所以这条贪吃蛇不会自己动,运行效果如下:要求:
2022-06-04

python用海龟绘图写贪吃蛇游戏

一个简单的贪吃蛇程序,供大家参考,具体内容如下 如图显示导入海龟绘图库from turtle import * from random import randrange常量设置food_x = randrange(-20, 20) * 20
2022-06-02

python怎么实现贪吃蛇游戏

要实现贪吃蛇游戏,可以使用Python中的pygame库来进行游戏界面的绘制和键盘事件的监听。以下是一个简单的贪吃蛇游戏的示例代码:```pythonimport pygameimport random# 游戏界面的宽度和高度WIDTH =
2023-08-09

Python怎样制作贪吃蛇游戏

这篇文章给大家介绍Python怎样制作贪吃蛇游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言:文章利用Python pygame做一个贪吃蛇的小游戏而且讲清楚每一段代码是用来干嘛的。据说是贪吃蛇游戏是1976年,
2023-06-22

Python turtle实现贪吃蛇游戏

本文实例为大家分享了Python turtle实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下# Simple Snake Game in Python 3 for Beginnersimport turtle import time i
2022-06-02

Java实现贪吃蛇游戏代码怎么写

以下是一个简单的Java实现贪吃蛇游戏的代码示例:```javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class SnakeGame ex
2023-08-09

怎么用JS实现贪吃蛇游戏

本文小编为大家详细介绍“怎么用JS实现贪吃蛇游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用JS实现贪吃蛇游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果图:完整代码如下:html:
2023-07-02

怎么用Vue做个贪吃蛇游戏

这篇文章主要介绍了怎么用Vue做个贪吃蛇游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Vue做个贪吃蛇游戏文章都会有所收获,下面我们一起来看看吧。Vue.js写一个命令行贪吃蛇游戏安装npm inst
2023-07-04

怎么用C++实现贪吃蛇游戏

这篇文章给大家分享的是有关怎么用C++实现贪吃蛇游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1976年,Gremlin平台推出了一款经典街机游戏Blockade。游戏中,两名玩家分别控制一个角色在屏幕上移动
2023-06-25

python如何实现贪吃蛇游戏

这篇文章主要介绍了python如何实现贪吃蛇游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。游戏实现效果如下:后面有完整代码和解析import sysimport pyga
2023-06-14

如何使用Canvas写一个贪吃蛇游戏

这篇文章主要介绍了如何使用Canvas写一个贪吃蛇游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。之前在慕课网看了几集Canvas的视频,一直想着写点东西练练手。感觉贪吃蛇
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录