Python使用pygame编写贪吃蛇小游戏

代码如下:

# -*- coding:utf-8 -*-
"""
贪吃蛇
"""
import pygame
import sys
import random
import time
from pygame.locals import *__author__ = 'Evan'# 定义颜色变量
black_colour = pygame.Color(28, 56, 20)
white_colour = pygame.Color(255, 144, 20)
red_colour = pygame.Color(255,34 , 20)
grey_colour = pygame.Color(150, 150, 150)# 定义游戏结束函数
def gameover(gamesurface):# 设置提示字体的格式gameover_font = pygame.font.SysFont("MicrosoftYaHei", 16)# 设置提示字体的颜色gameover_colour = gameover_font.render('GameOver', True, grey_colour)#只能英文# 设置提示位置gameover_location = gameover_colour.get_rect()gameover_location.midtop = (310, 200)# 绑定以上设置到句柄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('贪吃蛇')# 初始化变量# 初始化贪吃蛇的起始位置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(8)if __name__ == "__main__":main()

效果展示:

Python使用pygame编写贪吃蛇小游戏相关推荐

  1. python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏

    Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...

  2. 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  3. python50行小游戏_50行python代码实现的贪吃蛇小游戏

    50行python代码实现的贪吃蛇小游戏 发布于 2014-09-01 21:26:24 | 1337 次阅读 | 评论: 1 | 来源: 网友投递 Python编程语言Python 是一种面向对象. ...

  4. python快速实现简易贪吃蛇小游戏

    贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本.既简单又耐玩.该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长.  贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式.赏金模 ...

  5. python实现简陋的贪吃蛇小游戏

    简陋的贪吃蛇小游戏 # -*- coding:utf-8 -*- # 导入库 import sys import time import random import pygame from pygam ...

  6. python编程小游戏-10分钟用Python编写一个贪吃蛇小游戏,简单

    贪吃蛇,大家应该都玩过.小编当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最 ...

  7. 10分钟python游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  8. 10分钟用Python编写一个贪吃蛇小游戏

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  9. 10 分钟用 Python 编写一个贪吃蛇小游戏

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

最新文章

  1. 云计算读书笔记(二)
  2. linux 打包压缩工具
  3. 基于stm32、spi协议的Fatfs文件系统移植(附完整代码下载)
  4. Random快速连续产生不相同随机数
  5. 【原】关于ActiveX插件小项目总结
  6. linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因
  7. 互联网全域降维攻击战略概述
  8. php中d是什么文件,后缀php是什么文件
  9. 程序老鸟:软件测试的工资高还是开发者工资高?
  10. Linux手势控制软件,让 linux 实现触摸板多点触控与手势操作
  11. Docker入门之运行原理及常用命令
  12. vc运行库各版本下载
  13. 检测到您尚未安装ALEXA工具条
  14. 电路串联和并联图解_画简单的串联、并联电路图
  15. 《java websocket》之 实现
  16. 新媒传信Java_新媒小课堂——多媒体、流媒体、富媒体
  17. 12C新特性--Application Continuity
  18. 短信链接复制搜索公众号,短信如何推广公众号?
  19. 近年图像翻译先进模型小结
  20. 机械臂速成小指南(六):步进电机驱动器

热门文章

  1. 基于PaddlePaddle复现DDRNet23-slim
  2. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十五节: 3D项目优化方案
  3. html图片点击局部放大,jQuery教程 css+jQuery实现图片局部放大预览
  4. android整合小米、个推、jpush推送
  5. 开通阿里云短信服务-PHP版本
  6. jQuery实现图片播放器插件
  7. 《Python全栈基础教程》目录
  8. Linux学习第九课、磁盘容量配额、RAID磁盘冗余阵列
  9. sklearn学习05——K-means
  10. ASCII中的控制字符含义