贪吃蛇大家都玩过吧,今天手把手教你们自己写一个贪吃蛇游戏。

1.有关游戏的项目我们需要用到pygame库,用win+s输入cmd窗口,用 pip install pygame 命令安装就好了。

2.如果出现了这种版本过低的警告,可以输入 easy_install -U pip 命令进行版本升级,等待一段时间就可以了。

3.输入 pip list 可以查看当前版本。

4.下面就是完整的代码:

import pygame, sys, random, time
# 从pygame模块导入常用的函数和常量
from pygame.locals import *
# 定义颜色变量
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()

5.下面是运行结果:

三分钟写出一个“贪吃蛇”,有且只有python能这么轻松做到,不管你信不信(附代码和注释)相关推荐

  1. 用200行C语言代码写出一个贪吃蛇——1.0(基本版)

    1.设计思路 总的来说,贪吃蛇这个小游戏涉及到的东西不多,但是对逻辑思维是比较吃基本功的. 贪吃蛇,显示给我们看的有三部分:蛇.食物.地图边界. 我们可以用一个二维数组来标记这些部分: 例如这里我创建 ...

  2. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  3. python60行绘图程序_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  4. 贪吃蛇python撞墙不死_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  5. 给新手看的 Micronaut 入门教程,10 分钟写出一个 Micronaut 程序

    以下内容均选自 Micronaut 入门实战:基于 JVM 的微服务框架 . Micronaut是什么? Micronaut 是一个现代化的基于 JVM 的全栈框架,用于构建模块化且易于测试的微服务或 ...

  6. 分享自己写的一个贪吃蛇的游戏(Linux)

    作者: dave_cn 发表于 2010-07-18 21:20 原文链接 阅读: 148 评论: 2 转载请注明出处.http://www.cnblogs.com/dave_cn/ 本程序需要ncu ...

  7. 五分钟写出一个可以滑动条拖动的矩形脉冲合成的MatlabGUI程序

    命令行输入 GUIDE 创建空白GUI程序 拖动控件,右键察看滑动条的回调函数,粘贴如下代码 滑动条参数设置 function slider1_Callback(hObject, eventdata, ...

  8. 用Python写了一个贪吃蛇大冒险小游戏

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

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

最新文章

  1. Java中的增强for循环的实现原理与坑
  2. 深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点
  3. [1204 寻找子串位置] 解题报告
  4. [ZT ref=null]Javascript的IE和Firefox兼容性汇编
  5. SQL Server 查询表备注信息的语句
  6. idea 切换java11_Java 11就在这里,您准备好进行切换了吗?
  7. php redis.h,swoole安装hredis支持导致php不能加载swoole扩展
  8. 紧急不代表重要:管理时间的六个秘密
  9. 黄聪:PHP获取MAC地址(转)
  10. mysql master-user_【MySQL】MySQL5.6数据库基于binlog主从(Master/Slave)同步安装与配置详解...
  11. Jmeter新手频犯错误之一(登录)
  12. jquery实现某宝放大点击切换
  13. UI 假死的可能性和处理方法总结
  14. GridViewObjectDataSource新特性小记 懒人篇(一) 分页上路
  15. js文件之间函数的调用
  16. 访问动态web工程时浏览器地址栏显示%20%20%20%20%...
  17. html如何调图片透明度,改变图片的透明度.html
  18. 华为一碰传nfc_详解:华为免费升级的“一碰传”到底是个什么东西?
  19. 今天我被微软狠狠地雷翻了
  20. win7 关闭计算机休眠,Win7关闭休眠的方法

热门文章

  1. 嵌入式linux学习-驱动(2) hello world 模块实现记录 基于RK3568
  2. php定时任务-宝塔Linux面板
  3. 三个经典故事改变人生
  4. Element el-row el-col 布局组件详解
  5. 道路运输经营许可之道路危货经营许可
  6. 解读工业机器人控制系统组成及典型结构
  7. (二十九)arcpy开发利用arcpy在arcgis中实现批量计算图斑四至坐标(polygon顶点计算,范围获取、pyhon类创建)
  8. python科学计算代码库_科学计算库Numpy,(示例代码)
  9. 2 Led指示灯的封装
  10. 一箭穿心的c语言编程,《用C语言函数实现心形图案和一箭穿心图案的显示》.pdf...