贪吃蛇的编程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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
贪吃蛇的编程python_python实现贪吃蛇游戏相关推荐
- GUI编程详解:小游戏贪吃蛇
GUI编程 1.简介 Gui的核心技术:Swing.AWT 界面不美观 需要jre环境 为什么要学习? 可以写出自己想要的小工具 工作时候,也可能需要维护到swing界面 了解MVC架构,了解监听 ( ...
- c/c++游戏编程之控制台贪吃蛇(一)
c/c++游戏编程之控制台贪吃蛇(一) c/c++游戏编程之控制台贪吃蛇(二) 欢迎你开启了c++的游戏编程世界之旅 如果你还未学过c++基本语法,请先学习基本语法再来学习游戏编程噢~. 对这样的&q ...
- c/c++游戏编程之控制台贪吃蛇(二)
c/c++游戏编程之控制台贪吃蛇(一) c/c++游戏编程之控制台贪吃蛇(二) 为了解决"闪屏"问题,我们不再使用system("cls")进行清屏,而是直接用 ...
- 【编程6】贪吃蛇游戏(python+pygame)
效果图~新鲜出炉 开始界面 游戏中 结束界面 一.pygame模块概览 模块名称 功能 pygame.cdrom 访问光驱 pygame.cursors 加载光标 pygame.display 访问显 ...
- 贪吃蛇java 暂停_Java实现贪吃蛇小游戏
三月份的时候用Java写了一个贪吃蛇的小游戏,写完的时候颇有成就感,现在在这里做一下总结. 先把需要用到的图片资源放在这里,分别为上.下.左.右方向的蛇头,蛇身,食物,标题,可以通过右击另存为的方式下 ...
- 贪吃蛇大作战代码java,贪吃蛇游戏,贪吃蛇java游戏代码讲解
贪吃蛇游戏,贪吃蛇java游戏代码讲解 来源:互联网 作者:佚名 时间:2020-06-06 贪吃蛇源代码.txt这世界上除了我谁都没资格陪在你身边. 听着,我允许你喜欢我.除了白头偕老,我们... ...
- c语言贪吃蛇黑方框,[求助][贪吃蛇]源程序,请教其中一个问题。
[求助][贪吃蛇]源程序,请教其中一个问题. 源程序如下: 我的问题是,调节游戏速度时,数字为什么越大时,有时候竟然越快? #define N 200 #include #include #inclu ...
- 贪吃蛇python语言代码_Python贪吃蛇简单的代码
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在自学Python的过程中在网上查询资料时发现了一些好玩的东西,python的游戏库模块,它可以自己弄一个小游戏来玩玩,然后我在网上找了一些游戏的代码,, ...
- python界面小游戏贪吃蛇_用Python实现童年小游戏贪吃蛇
贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中. 尽管贪吃蛇的历史相对比较久远,但它却有着十分顽强的生命力,保持经久不衰,其中很重要的原因便是游戏厂家不断的 ...
最新文章
- python怎么读文件内容-Python 文件内容读取
- 对话农民丰收节交易会-林裕豪:从玉农业2021新年贺词
- Android SDK Manager无法更新的解决方案
- 图层几何学 -- iOS Core Animation 系列二
- 快播王欣明天就出狱了,他能借钱东山再起吗?
- linux Swap交换分区概念
- Abp vnext Web应用程序开发教程 6 —— 作者:领域层
- mysql innodb 分区_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
- java抽象类详细介绍
- 垃圾食品对身体的影响可不仅仅是减慢新陈代谢这么简单
- 关于jenkins自动化打包探索
- Sql Server 2008 配置服务器,并让客户端连接
- 旁注攻击和CDN,绕过cdn找真实IP
- wifi共享大师,去除弹窗广告。
- 利用matlab求系统的单位阶跃响应,基于Matlab6_5的归一化二阶系统单位阶跃响应的模拟演示...
- 3DMax软件的功能,通过它制作出来的影视作品有很强的立体感
- phpstorm安装jquery插件库
- MFC系列 - 第一个MFC入门程序
- 利用CSS实现渐变色边框
- python对接蚂蚁金服支付宝
热门文章
- 高级语言程序设计c 华南理工,华南理工大学高级语言程序设计(C)期末练习题
- 解决the resource is not on the build path of a java project
- Visio各图形如何一键自动对齐?
- 学计算机的让修电脑搞笑段子精选,搞笑段子:阿姨,我是真的就来给他们修电脑的!...
- code iban 是有什么组成_深入浅出Zookeeper(四):客户端的请求在服务器中经历了什么...
- wireshark rto_RTO的完整形式是什么?
- stack示例_C.示例中的Stack.CopyTo()方法
- java get post 注解,GET/POST接收或发送数据的问题
- 华为P40pro 手机云台_2020年目前拍照最好的手机推荐!华为P40 Pro!DXO全球榜首
- Java Currency getInstance()方法与示例