贪吃蛇的编程python_python实现贪吃蛇游戏

本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下

本文稍作改动,修复一些bug,原文链接:python实现贪吃蛇游戏

#!/usr/bin/env python

#__*__ coding: utf-8 __*__

import pygame,sys,time,random

from pygame.locals import *

redColour = pygame.Color(255,0,0)

blackColour = pygame.Color(0,0,0)

whiteColour = pygame.Color(255,255,255)

greyColour = pygame.Color(150,150,150)

def gameOver(playSurface):

gameOverFont = pygame.font.Font('arial.ttf',72)

gameOverSurf = gameOverFont.render('Game Over',True,greyColour)

gameOverRect = gameOverSurf.get_rect()

gameOverRect.midtop = (320,10)

playSurface.blit(gameOverSurf,gameOverRect)

pygame.display.flip()

time.sleep(5)

pygame.quit()

sys.exit()

def main():

pygame.init()

playSurface = pygame.display.set_mode((640,480))

fpsClock = pygame.time.Clock()

pygame.display.set_caption('Snake Liu')

snakePosition = [100,100]

snakeSegments = [[100,100],[80,100],[60,100]]

raspberryPosition = [300,300]

raspberrySpawned = 1

direction = 'right'

changeDirection = direction

while True:

for event in pygame.event.get():

if event.type == QUIT:

sys.exit()

elif event.type == KEYDOWN:

if event.key == K_RIGHT or event.key == ord('d'):

changeDirection = 'right'

if event.key == K_LEFT or event.key == ord('a'):

changeDirection = 'left'

if event.key == K_UP or event.key == ord('w'):

changeDirection = 'up'

if event.key == K_DOWN or event.key == ord('s'):

changeDirection = 'down'

if event.key == K_ESCAPE:

pygame.event.post(pygame.event.Event(QUIT))

# 判断是否输入了反方向,与原文有改动

if changeDirection == 'right':

direction = changeDirection

if changeDirection == 'left':

direction = changeDirection

if changeDirection == 'up':

direction = changeDirection

if changeDirection == 'down':

direction = changeDirection

# 根据方向移动蛇头的坐标

if direction == 'right':

snakePosition[0] += 20

if direction == 'left':

snakePosition[0] -= 20

if direction == 'up':

snakePosition[1] -= 20

if direction == 'down':

snakePosition[1] += 20

# 增加蛇的长度

snakeSegments.insert(0,list(snakePosition))

# 判断是否吃掉了树莓

if snakePosition[0] == raspberryPosition[0] and snakePosition[1] == raspberryPosition[1]:

raspberrySpawned = 0

else:

snakeSegments.pop()

# 如果吃掉树莓,则重新生成树莓

if raspberrySpawned == 0:

x = random.randrange(1,32)

y = random.randrange(1,24)

raspberryPosition = [int(x*20),int(y*20)]

raspberrySpawned = 1

# 刷新pygame显示层

playSurface.fill(blackColour)

for position in snakeSegments:

pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],20,20))

pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0], raspberryPosition[1],20,20))

pygame.display.flip()

# 判断是否死亡,后面几行和原文有改动

if snakePosition[0] > 620 or snakePosition[0] < 0:

gameOver(playSurface)

if snakePosition[1] > 460 or snakePosition[1] < 0:

gameOver(playSurface)

for snakeBody in snakeSegments[1:]:

if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:

gameOver(playSurface)

fpsClock.tick(5)

if __name__ == "__main__":

main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

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

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

相关文章

Win10提示不是有效的字体文件怎么解决

最近有用户跟小编反应自己打开Win10系统Font字体文件夹预览字体时&#xff0c;突然提示不是有效的字体文件&#xff0c;这是什么情况?下面小编就给大家分享一下Win10提示不是有效的字体文件的解决方法。 Win10提示不是有效的字体文件怎么解决 解决方法&#xff1a; 1、查看…

单关闭功能_广告弹窗关闭

相信现在大部分电脑都安装360安全卫士和搜狗拼音输入法&#xff0c;关于这两款软件各有吐槽&#xff0c;最讨厌的莫过于莫名奇妙的各种广告弹窗&#xff0c;让人不厌其烦。因为我们是免费&#xff0c;所以不要渴求太多。360安全卫士广告弹窗关闭办法1、打开360安全卫士点击右上…

win7怎么解压rar文件_win7解压rar文件的方法

大家知道win7怎么解压rar文件?rar是一种常用的文件压缩与归档的私有格式&#xff0c;用于数据压缩与归档打包。加快传输速度&#xff0c;我们都会将文件进行压缩。但最近有Win7系统用户反映收到rar文件&#xff0c;却不知道w怎么解压rar文件?其实只需安装一个支持解压缩rar文…

忽视大小写函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!

在Excel函数公式中&#xff0c;有部分函数的使用率是比较低的&#xff0c;但是其功能也是非常强大的。一、Median函数。功能&#xff1a;返回一组数的中值。中值就是一组数的中间数值&#xff0c;如果参数包含的数值是偶数&#xff0c;Median函数将返回位于中间两个值的平均值。…

win7的开机启动项怎么管理 win7管理开启启动项的方法

win7纯净版系统很多软件都默认设置为开机启动项&#xff0c;随着安装的程序越来越多&#xff0c;可能添加的开机启动项越来越多&#xff0c;这样就拖慢系统运行速度。减少开机启动项可以加快开机速度&#xff0c;所以我们需要管理好开机启动项&#xff0c;关闭不必要的开机启动…

谷歌浏览器无网络连接 打不开网页解决办法

不知道用户在使用的时候有没有遇到无法连接网络的问题&#xff0c;今天小编就会与大家一起来分享一下&#xff0c;在使用谷歌浏览器时&#xff0c;如果出现无网络连接的问题时&#xff0c;要如何解决&#xff0c;首先用户可以检查一下自己的网络情况&#xff0c;如果这些都没有…

创建路径_PS钢笔工具是建立路径的基本工具

PS“钢笔工具”是建立路径的基本工具&#xff0c;用来绘制任意形状的图形路径&#xff0c;钢笔工具通过设置锚点绘制形状路径。新建一个页面&#xff0c;选择钢笔工具&#xff0c;在页面上单击&#xff0c;建立路径的开始点&#xff0c;也就是路径的第一个锚点。再单击&#xf…

UC浏览器电脑版播放视频时出现崩溃怎么解决

UC浏览器是一款功能强大的电脑浏览器。最近小编看到有用户反映播放视频的时候出现崩溃&#xff0c;这个该怎么解决呢?下面小编就来告诉你。 UC浏览器电脑版播放视频时出现崩溃怎么解决 UC浏览器电脑版播放视频时出现崩溃怎么解决&#xff1a; 1、打开ucbrowser://plugins&a…

使用 保存文件_使用SaveFileDialog调用保存文件对话框

使用SaveFileDialog调用保存文件对话框【实例介绍】本实例使用SaveFileDialog对话框实现了保存文件的功能。运行程序&#xff0c; 保存文件&#xff0c;打开“保存文件”对话框(Windows中一般称为“另存为”对话框)&#xff0c;实现保存操作。【开发过程】(1) 创建一个Windows应…

怎么知道Win10的电脑是否满足Win11的硬件要求

怎么知道Win10的电脑是否满足Win11的硬件要求?微软已正式发布Win11操作系统&#xff0c;预计今年年底Win10用户会进行免费升级。但是根据发布的最低系统需求&#xff0c;大多数用户都不知道电脑的参数问题&#xff0c;今天小编就带大家看看自家电脑是否满足Win11硬件要求教程。…

php发卡8.0源码_素材资源解析平台PHP源码 V8.0运营版+会员功能+代理功能+卡密充值...

源码预览源码介绍V8版本。最新更新&#xff0c;全新的解析架构。小白问题一&#xff1a;为什么我不能解析&#xff1f;答&#xff1a;解析是需要开通目标站VIP的。小白问题二&#xff1a;竟然要开通VIP&#xff0c;要你这源码干嘛&#xff1f;有毛病。【这个问题真的有人问过&a…

Win10显示此应用无法在你的电脑上运行 此应用无法在你的电脑上运行处理办法

我们使用Win10系统久了难免会出现许多问题&#xff0c;像有的用户就遇到了打开软件显示“此应用无法在你电脑上运行”的提示&#xff0c;很多人以为是软件自身的问题&#xff0c;其实我们的电脑没有设置好的话也会出现这种不兼容的情况&#xff0c;下面给大家带来解决办法。 解…

apex英雄机器人探路者怎么玩_Apex英雄探路者机器人实战技巧攻略[多图]

Apex英雄探路者机器人其定位是辅助型角色&#xff0c;关于该角色要正确的使用Q技能抓钩&#xff0c;将敌人抓住即可&#xff0c;那么详细的实战技巧如何呢&#xff0c;就让嗨客小卷子来告诉大家吧&#xff01;探路者机器人使用技巧分享探路者(PathFinder)俗称机器人。其定位为辅…

猎豹浏览器怎么查看历史记录 猎豹浏览器历史记录查看教程

很多时候我们用浏览器搜索网页&#xff0c;就会产生历史记录。今天小编就给大家讲讲猎豹浏览器怎么查看历史记录?让你快速找到历史搜索信息。 猎豹浏览器历史记录查看教程 1、打开你的猎豹浏览器&#xff0c;左上角有一个豹子的图片&#xff0c;左键鼠标点击一下 猎豹浏览器…

机器人码垛手持式编程_FANUC机器人码垛编程讲解

先来一个码垛的视频1. 码垛功能的定义对几个具有代表性的点进行示教&#xff0c;即可以从下层到上层按照顺序堆叠工件。2. 码垛的种类码垛 B:包括码垛B(单路径模式)和码垛BX(多路径模式) 适用于工件姿势恒定&#xff0c;堆叠时的底面形状为直线或四角形。 码垛 E:包括码垛E(单路…

搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程

搜狗浏览器是一款非常安全的电脑浏览器。该软件能够对用户密码有安全保障&#xff0c;下面小编就为您带来搜狗浏览器保存账号密码教程。 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程 搜狗浏览器怎么保存账号密码&#xff1a; 1、如果是搜狗浏览器的账号&#xf…

mysqldump 忽略视图_Mysql备份迁移——Mysqldump(.NET调用Mysqldump.exe方式)——(解决视图嵌视图报错)...

string strError string.Empty;//执行cmd获取输出信息。Process p newProcess();p.StartInfo.FileName "cmd.exe";p.StartInfo.RedirectStandardInput true;p.StartInfo.UseShellExecute false;p.StartInfo.RedirectStandardOutput true;//获取输出流//p.StartInfo.…

js验证家庭住址_手摇充电电筒、多功能组合剪刀……官方清单建议上海家庭储备13种应急物资...

面对灾情或突发事件&#xff0c;第一时间自救、避险或撤离&#xff0c;可把损失和伤亡降到最低&#xff0c;因此&#xff0c;以家庭为单位进行应急物资储备尤为必要。12月8日&#xff0c;上海市应急管理局发布了《上海市家庭应急物资储备建议清单》&#xff0c;倡导家庭储备应急…

失效日期 软件测试案例_软件异常测试

日期类型测试&#xff1a;日期类型要测试其边界值和日期格式类型的有效性测试。对于日期类型的边界值可能根据数据库不同而不同&#xff0c;比如sql server的最小日期是1753年1月1日&#xff1b;而对于有效性最常用的就是闰年的有效日期问题&#xff0c;准备这类测试用例来测试…

链表 python 牛客_牛客网《剑指offer》之Python2.7实现:合并两个排序的链表

题目描述输入两个单调递增的链表&#xff0c;输出两个链表合成后的链表&#xff0c;当然我们需要合成后的链表满足单调不减规则。思路依次遍历两个链表&#xff0c;比较两个链表的元素&#xff0c;采用尾插法&#xff0c;小的先插入链表&#xff0c;大的后插入链表代码# -*- co…