本文实例为大家分享了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实现贪吃蛇游戏相关推荐

  1. GUI编程详解:小游戏贪吃蛇

    GUI编程 1.简介 Gui的核心技术:Swing.AWT 界面不美观 需要jre环境 为什么要学习? 可以写出自己想要的小工具 工作时候,也可能需要维护到swing界面 了解MVC架构,了解监听 ( ...

  2. c/c++游戏编程之控制台贪吃蛇(一)

    c/c++游戏编程之控制台贪吃蛇(一) c/c++游戏编程之控制台贪吃蛇(二) 欢迎你开启了c++的游戏编程世界之旅 如果你还未学过c++基本语法,请先学习基本语法再来学习游戏编程噢~. 对这样的&q ...

  3. c/c++游戏编程之控制台贪吃蛇(二)

    c/c++游戏编程之控制台贪吃蛇(一) c/c++游戏编程之控制台贪吃蛇(二) 为了解决"闪屏"问题,我们不再使用system("cls")进行清屏,而是直接用 ...

  4. 【编程6】贪吃蛇游戏(python+pygame)

    效果图~新鲜出炉 开始界面 游戏中 结束界面 一.pygame模块概览 模块名称 功能 pygame.cdrom 访问光驱 pygame.cursors 加载光标 pygame.display 访问显 ...

  5. 贪吃蛇java 暂停_Java实现贪吃蛇小游戏

    三月份的时候用Java写了一个贪吃蛇的小游戏,写完的时候颇有成就感,现在在这里做一下总结. 先把需要用到的图片资源放在这里,分别为上.下.左.右方向的蛇头,蛇身,食物,标题,可以通过右击另存为的方式下 ...

  6. 贪吃蛇大作战代码java,贪吃蛇游戏,贪吃蛇java游戏代码讲解

    贪吃蛇游戏,贪吃蛇java游戏代码讲解 来源:互联网 作者:佚名 时间:2020-06-06 贪吃蛇源代码.txt这世界上除了我谁都没资格陪在你身边. 听着,我允许你喜欢我.除了白头偕老,我们... ...

  7. c语言贪吃蛇黑方框,[求助][贪吃蛇]源程序,请教其中一个问题。

    [求助][贪吃蛇]源程序,请教其中一个问题. 源程序如下: 我的问题是,调节游戏速度时,数字为什么越大时,有时候竟然越快? #define N 200 #include #include #inclu ...

  8. 贪吃蛇python语言代码_Python贪吃蛇简单的代码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在自学Python的过程中在网上查询资料时发现了一些好玩的东西,python的游戏库模块,它可以自己弄一个小游戏来玩玩,然后我在网上找了一些游戏的代码,, ...

  9. python界面小游戏贪吃蛇_用Python实现童年小游戏贪吃蛇

    贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中. 尽管贪吃蛇的历史相对比较久远,但它却有着十分顽强的生命力,保持经久不衰,其中很重要的原因便是游戏厂家不断的 ...

最新文章

  1. python怎么读文件内容-Python 文件内容读取
  2. 对话农民丰收节交易会-林裕豪:从玉农业2021新年贺词
  3. Android SDK Manager无法更新的解决方案
  4. 图层几何学 -- iOS Core Animation 系列二
  5. 快播王欣明天就出狱了,他能借钱东山再起吗?
  6. linux Swap交换分区概念
  7. Abp vnext Web应用程序开发教程 6 —— 作者:领域层
  8. mysql innodb 分区_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
  9. java抽象类详细介绍
  10. 垃圾食品对身体的影响可不仅仅是减慢新陈代谢这么简单
  11. 关于jenkins自动化打包探索
  12. Sql Server 2008 配置服务器,并让客户端连接
  13. 旁注攻击和CDN,绕过cdn找真实IP
  14. wifi共享大师,去除弹窗广告。
  15. 利用matlab求系统的单位阶跃响应,基于Matlab6_5的归一化二阶系统单位阶跃响应的模拟演示...
  16. 3DMax软件的功能,通过它制作出来的影视作品有很强的立体感
  17. phpstorm安装jquery插件库
  18. MFC系列 - 第一个MFC入门程序
  19. 利用CSS实现渐变色边框
  20. python对接蚂蚁金服支付宝

热门文章

  1. 高级语言程序设计c 华南理工,华南理工大学高级语言程序设计(C)期末练习题
  2. 解决the resource is not on the build path of a java project
  3. Visio各图形如何一键自动对齐?
  4. 学计算机的让修电脑搞笑段子精选,搞笑段子:阿姨,我是真的就来给他们修电脑的!...
  5. code iban 是有什么组成_深入浅出Zookeeper(四):客户端的请求在服务器中经历了什么...
  6. wireshark rto_RTO的完整形式是什么?
  7. stack示例_C.示例中的Stack.CopyTo()方法
  8. java get post 注解,GET/POST接收或发送数据的问题
  9. 华为P40pro 手机云台_2020年目前拍照最好的手机推荐!华为P40 Pro!DXO全球榜首
  10. Java Currency getInstance()方法与示例