Python贪吃蛇游戏详细代码和注释

在写Python游戏项目时,最重要的时python中的pygame库。安装pygame库和用法在我CSDN博客另一篇文章上。这里就不详细说了。下边时运行游戏界面。

下边是详细的代码和注释

import pygame,sys,random,time
from pygame.locals import *   #从pygame模块导入常用的函数和常量
#定义颜色变量
black_colour = pygame.Color(0,0,0)
white_colour = pygame.Color(255,255,255)
red_colour = pygame.Color(255,0,0)
grey_colour = pygame.Color(150,150,150)
#定义游戏结束函数
def GameOver(gamesurface):#设置提示字体的格式GameOver_font = pygame.font.SysFont("MicrosoftYaHei", 16)#设置提示字体的颜色GameOver_colour = GameOver_font.render('Game Over',True,grey_colour)#设置提示位置GameOver_location = GameOver_colour.get_rect()GameOver_location.midtop = (320,10)#绑定以上设置到句柄gamesurface.blit(GameOver_colour,GameOver_location)#提示运行信息pygame.display.flip()#休眠5秒time.sleep(5)#退出游戏pygame.quit()#退出程序sys.exit()
#定义主函数
def main():#初始化pygame,为使用硬件做准备pygame.init()pygame.time.Clock()ftpsClock = pygame.time.Clock()#创建一个窗口gamesurface = pygame.display.set_mode((640,480))#设置窗口的标题pygame.display.set_caption('tanchishe snake')#初始化变量#初始化贪吃蛇的起始位置snakeposition = [100,100]#初始化贪吃蛇的长度snakelength = [[100,100],[80,100],[60,100]]#初始化目标方块的位置square_purpose = [300,300]#初始化一个数来判断目标方块是否存在square_position = 1#初始化方向,用来使贪吃蛇移动derection = "right"change_derection = derection#进行游戏主循环while True:#检测按键等pygame事件for event in pygame.event.get():if event.type==QUIT:#接收到退出事件后,退出程序pygame.quit()sys.exit()elif event.type==KEYDOWN:#判断键盘事件,用w,s,a,d来表示上下左右if event.key==K_RIGHT or event.key==ord('d'):change_derection = "right"if event.key==K_LEFT or event.key==ord('a'):change_derection = "left"if event.key==K_UP or event.key==ord('w'):change_derection = "up"if event.key==K_DOWN or event.key==ord('s'):change_derection = "down"if event.key==K_ESCAPE:pygame.event.post(pygame.event.Event(QUIT))#判断移动的方向是否相反if change_derection =='left'and not derection =='right':derection = change_derectionif change_derection =='right'and not derection =='left':derection = change_derectionif change_derection == 'up' and not derection =='down':derection = change_derectionif change_derection == 'down' and not derection == 'up':derection = change_derection#根据方向,改变坐标if derection == 'left':snakeposition[0] -= 20if derection == 'right':snakeposition[0] += 20if derection == 'up':snakeposition[1] -= 20if derection == 'down':snakeposition[1] += 20#增加蛇的长度snakelength.insert(0,list(snakeposition))#判断是否吃掉目标方块if snakeposition[0]==square_purpose[0] and snakeposition[1]==square_purpose[1]:square_position = 0else:snakelength.pop()#重新生成目标方块if square_position ==0:#随机生成x,y,扩大二十倍,在窗口范围内x = random.randrange(1,32)y = random.randrange(1,24)square_purpose = [int(x*20),int(y*20)]square_position = 1#绘制pygame显示层gamesurface.fill(black_colour)for position in snakelength:pygame.draw.rect(gamesurface,white_colour,Rect(position[0],position[1],20,20))pygame.draw.rect(gamesurface,red_colour,Rect(square_purpose[0],square_purpose[1],20,20))#刷新pygame显示层pygame.display.flip()#判断是否死亡if snakeposition[0]<0 or snakeposition[0]>620:GameOver(gamesurface)if snakeposition[1]<0 or snakeposition[1]>460:GameOver(gamesurface)for snakebody in snakelength[1:]:if snakeposition[0]==snakebody[0] and snakeposition[1]==snakebody[1]:GameOver(gamesurface)#控制游戏速度ftpsClock.tick(5)if __name__ == "__main__":main()

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50599.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪吃蛇Python版 源码+代码分析

跳转目录 前言运行示例程序分析捕获键盘操作输出游戏画面 代码分析一安装运行环境游戏地图的实现炸弹的实现食物的实现蛇的实现 初步测试键盘控制的实现主程序game函数图形界面显示分数, 得分结束函数游戏主函数 源码下载 前言 该程序未使用pygame库, 而是采用keyboard库的on_p…

1.02亿美元从数字资产基金撤出!BTC价格已经触底!预示下跌趋势即将逆转?

根据CoinShares的一份报告&#xff0c;上周全球数字资产基金流出总额为1.02亿美元&#xff0c;美国数字资金外流共计9800万美元&#xff0c;而欧洲仅为200万美元&#xff0c;这表明美国市场的不稳定程度越来越高。 事实上&#xff0c;数字资产基金是一种投资工具&#xff0c;旨…

c语言 搜索彩票期数,根据福利彩票的规则用c++编写一个买彩票开奖的程序,求程序代码,谢谢...

满意答案 haslis3ila 2016.03.13 采纳率&#xff1a;58% 等级&#xff1a;7 已帮助&#xff1a;611人 1、完整代码如下&#xff0c;已经过VS2012编译及实际测试 2、基本上不存在什么缺憾&#xff0c;唯一的缺憾是很难中奖。#include #include #include #include using names…

电影解说怎么操作?电影解说都用什么配音软件?

我们都知道&#xff0c;短视频现在非常火爆&#xff0c;我们平时刷视频&#xff0c;可以看到很多的电影解说&#xff0c;不仅语言生动&#xff0c;而且配音很逼真&#xff0c;很多人以为电影解说的配音都是自己配音的&#xff0c;其实不然。以目前的市场现状来说&#xff0c;绝…

使用 ChatGPT 生成数据,4 个示例

如今&#xff0c;国家列表和货币列表等标准数据源很容易在互联网上获得。然而&#xff0c;丰富或重新格式化这些数据通常非常耗时。在本文中&#xff0c;我们探讨如何使用 ChatGPT 有效地生成和增强数据。我们将提供示例来演示 ChatGPT 的功能。 示例 1 — 获取 CSV 格式的世界…

java实现双色球生成器

题目要求&#xff1a; 思路&#xff1a; 生成红球&#xff1a; 使用random对象随机生成1-33的数字&#xff0c;使用长度为6的数组接收&#xff0c;比较生成树在数组里是否有重复如果重复就&#xff0c;本次随机数作废&#xff0c;重新生成不重复就放入数组使用Arrays.sort&am…

python彩票号码生成器

突然想到好久没动代码了&#xff0c;手痒痒&#xff0c;但是又不知道弄啥。想了想平时自己闲来无事都会买彩票&#xff0c;路过买两块&#xff0c;中不中全看天意。 但是经常买彩票的时候不知道选什么号码&#xff0c;犹豫的几分钟时间就浪费了&#xff0c;所以写了个彩票号码…

什么是CMP(同意管理平台)与Cookies?

有时访问网站时&#xff0c;会弹出弹窗或下面弹出横条&#xff0c; 这就是CMP。 什么是个人数据&#xff1f; 个人数据或个人信息是可用于识别活着的个人的信息。不同的数据保护法&#xff0c;如GDPR和CCPA&#xff0c;对个人数据的定义不同&#xff0c;但大体上它们都同意这样…

信息学奥赛C++语言:可口可乐

【题目描述】 便利店给出以下的优惠&#xff1a;“每3个空瓶可以换1瓶可口可乐。” 现在&#xff0c;您准备从便利店买一些可口可乐&#xff08;N瓶&#xff09;&#xff0c;您想知道您最多可以从便利店拿到多少瓶可口可乐。下图给出N8的情况。方法是&#xff1a;喝完8瓶可乐之…

喝汽水问题(使用c语言解决)

目录 问题描述 解题方法一 解题思路&#xff1a; 代码实现 解题方法二 解题思路&#xff1a; 代码实现 解题方法三 解题思路: 代码实现 总结 问题描述 喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&…

ESP8266接入小爱同学—智能LED台灯或风扇(利用继电器)

ESP8266接入小爱同学—智能LED台灯或风扇 上周用esp8266做了一个语音智能台灯&#xff0c;也参考了很多网上的教程&#xff0c;也不难&#xff0c;挺简单的&#xff0c;在这里分享一下。 首先我用的是arduino IDE对esp8266进行的编译&#xff0c;arduino对8266编译环境的具体…

【Homeassistant 的Node-red插件之小爱同学语音功能开通】

欢迎大家阅读2345VOR的博客【Homeassistant 的Node-red插件之小爱同学语音功能开通】,本页是Homeassistant 的Node-red插件之小爱同学语音功能开通,实现播报任意带变量的文本🥳🥳🥳2345VOR鹏鹏主页: 已获得CSDN《嵌入式领域优质创作者》称号🎉🎉、阿里云《arduino…

esp8266接入米家、小爱同学,附开源app控制

超简单&#xff0c;两步完事 第一步 下载程序到esp8266第二步 绑定到米家第三步 &#xff08;附&#xff09;开源app控制 第一步 下载程序到esp8266 下载地址: 点击下载 本demo 是利用arduino IDE开发&#xff0c;关于arduino IDE 的ESP8266环境配置可参考&#xff1a;环境配…

【IoT物联网全栈之路 ②】如何快速体验,微信公众号配网,天猫精灵和小爱同学双通讯;(附带Demo)

本系列博客学习由非官方人员 半颗心脏 潜心所力所写&#xff0c;仅仅做个人技术交流分享&#xff0c;不做任何商业用途。如有不对之处&#xff0c;请留言&#xff0c;本人及时更改。 1、 开门大篇&#xff0c;xClouds是什么&#xff1f;我什么要做&#xff1f;为什么要开源&…

ESP8266对接巴法云平台实现小爱同学控制开关灯

原理&#xff1a;esp8266连接巴法云平台mqtt服务并订阅主题&#xff0c;通过小爱语音发出指令&#xff0c;相当于mqtt的消息推送&#xff0c;从而进行控制esp8266 。 1. 巴法云平台创建MQTT设备云主题 在控制台新建mqtt设备云主题&#xff0c;字母数字自定义组合即可。 现在支…

小爱同学桌面提醒器开发0基础教程

1、视频效果 小爱同学桌面显示器 学会烧录软件到开发板&#xff0c;会改代码修改wifi信息&#xff0c;我在添加一下你的信息&#xff0c;就可以玩了。 2、实现原理 3、实现步骤&#xff1a; 购买开发板》烧录代码》连接大白服务器&#xff08;服务器对接小爱同学开放平台过程…

Arduino应用开发——通过小爱同学控制灯光

Arduino应用开发——通过小爱同学控制灯光 目录 Arduino应用开发——通过小爱同学控制灯光前言1 工作原理2 硬件准备3 软件准备3.1 Arduino IDE环境搭建3.2 Blinker APP账号注册和使用 4 编写程序5 关联米家APP和Blinker设备6 语音控制测试7 进阶用法7.1 亮度控制7.2 色温控制7…

小爱同学控制单片机或者其它硬件的思路记录

由于小米只能家具生态的协议是不开放的&#xff0c;但是有很多同学想使用小爱同学的语音功能去控制单片机、树莓派或者其他DIY硬件。因此有个下面这个构想。初步验证可行。 实验具备条件 DIY设备联网&#xff08;直接或者间接&#xff09; 小米手机&#xff08;小爱同学&…

小爱同学、Blinker 控制esp32自带灯熄灭---Micropython版本

操作官方案例修改增加小爱同学控制支持&#xff0c;具体代码上传到github可以参考&#xff0c;有帮助的话麻烦请star支持下&#xff0c;有细节问题也麻烦指出和交流 github地址: https://github.com/lonngxiang/xiaoai_blinker_mpy小爱控制eap32、blinker 1、具体实现细节 主…

小爱同学控制美的美居中的家电热水器,空调等

背景 家里大多数家电都是支持接入米家App的&#xff0c;美的家电不能接入小米&#xff0c;电脑安装Home Assistant成功实现小爱语音控制美的燃气热水器。 实现步骤&#xff1a; 1. 安装docker 我的电脑是windows的&#xff0c;那就直接安装docker desktop https://desktop.…