简陋的贪吃蛇小游戏

# -*- coding:utf-8 -*-
# 导入库
import sys
import time
import random
import pygame
from pygame.locals import *# 参数设置
WIDTH = 640
HEIGHT = 480
BLOCK = 20
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)# 退出程序
def terminal():pygame.quit()sys.exit()# 绘制食物
def draw_food(window, point):rect = pygame.Rect(point[0], point[1], BLOCK, BLOCK)pygame.draw.rect(window, RED, rect)# 绘制贪吃蛇
def draw_snake(window, snake_body):for point in snake_body:rect = pygame.Rect(point[0], point[1], BLOCK, BLOCK)pygame.draw.rect(window, GREEN, rect)# 贪吃蛇移动
def move_snake(snake_body, direction, food_position):if direction == 'up':snake_body.insert(0, [snake_body[0][0], snake_body[0][1] - BLOCK])if direction == 'down':snake_body.insert(0, [snake_body[0][0], snake_body[0][1] + BLOCK])if direction == 'left':snake_body.insert(0, [snake_body[0][0] - BLOCK, snake_body[0][1]])if direction == 'right':snake_body.insert(0, [snake_body[0][0] + BLOCK, snake_body[0][1]])# 吃到食物if snake_body[0] == food_position:food_position = [random.randrange(0, WIDTH, BLOCK), random.randrange(0, HEIGHT, BLOCK)]else:snake_body.pop()# 是否撞墙、撞身体alive = Trueif snake_body[0][0] < 0 or snake_body[0][0] + BLOCK > WIDTH:alive = Falseelif snake_body[0][1] < 0 or snake_body[0][1] + BLOCK > HEIGHT:alive = Falseelif snake_body[0] in snake_body[1:]:alive = Falsereturn snake_body, food_position, alive# 游戏结束并退出程序
def game_over(window):msg = pygame.font.SysFont('arial', 20)msg = msg.render('Game over', 1, RED)window.blit(msg, (10, 10))pygame.display.flip()time.sleep(2)  # 等待2秒后退出terminal()# 监控鼠标、键盘
def monitor_action(direction):for event in pygame.event.get():if event.type == QUIT:  # 右上角关闭按钮terminal()if event.type == KEYDOWN:if event.key == K_UP and direction != 'down':direction = 'up'elif event.key == K_DOWN and direction != 'up':direction = 'down'elif event.key == K_LEFT and direction != 'right':direction = 'left'elif event.key == K_RIGHT and direction != 'left':direction = 'right'elif event.key == K_ESCAPE:  # ‘ESC’键退出程序terminal()return direction# 运行游戏
def run_game():pygame.init()  # 模块初始化window = pygame.display.set_mode((WIDTH, HEIGHT))   # 新建窗口pygame.display.set_caption('贪吃蛇游戏')  # 窗口标题clock = pygame.time.Clock()  # 计时器# 贪吃蛇、食物初始状态food_position = [300, 300]snake_body = [[100, 100], [80, 100]]direction = 'right'while True:window.fill(WHITE)  # 绘制背景draw_food(window, food_position)draw_snake(window, snake_body)pygame.display.flip()  # 刷新屏幕direction = monitor_action(direction)  # 控制方向snake_body, food_position, alive = move_snake(snake_body, direction, food_position)  # 计算下一次绘制物体if not alive:game_over(window)clock.tick(10)  # 刷新频率,1秒刷新5次terminal()return 0# 调用函数
run_game()

运行效果:

python实现简陋的贪吃蛇小游戏相关推荐

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

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

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

    Python使用pygame编写贪吃蛇小游戏 代码如下: # -*- coding:utf-8 -*- """ 贪吃蛇 """ import ...

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

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

  4. Python实现贪吃蛇小游戏(双人模式)

    这篇文章主要为大家详细介绍了Python实现双人模式的贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 简单用py写了一个贪吃蛇游戏,有单人.双人模式,比较简 ...

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

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

  6. python100行代码程序-100行python代码,轻松完成贪吃蛇小游戏

    大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉害着呢!今天,小编就来用100行代码实现一个简易版的贪吃蛇.在网上,贪吃蛇教程蛮多的,但要安装蛮多库的,而且也不够清晰,今天的代码比较短, ...

  7. python小游戏编程实例-10分钟教你用Python写一个贪吃蛇小游戏,适合练手项目

    另外要注意:光理论是不够的.这里顺便总大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交 ...

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

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

  9. bat贪吃蛇游戏代码_100行python代码,轻松完成贪吃蛇小游戏

    来源:DataGo数据狗   链接: https://mp.weixin.qq.com/s/fDcr1SfcbynLzHye7Q7VOg 大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉 ...

最新文章

  1. 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载
  2. Java™ 教程(Queue接口)
  3. assert宏的用法
  4. Python学习笔记:返回函数
  5. php +号在传输参数的过程中被变为空格了_编程难学?web相关知识,跟着淼哥学php全栈之路6...
  6. XCTF-MISC-新手区-功夫再高也怕菜刀
  7. android 弹出框带标题栏,Android开发靠标题栏的弹框
  8. 一日一技:ASP.NET Core Api网关Ocelot初探
  9. 加入gitignore文件没有起作用怎么办
  10. 【kafka】kafka record is corrupt(记录损坏)
  11. 无法卸载和重装photoshop CS3 的解决办法
  12. photoshop 证件照动作_国考报名确认及缴费进行中!证件照上传注意事项!
  13. 天池大数据竞赛——糖尿病遗传风险预测赛后总结(二)
  14. Shell脚本实现俄罗斯方块小游戏
  15. 研发人员分层及其工作内容划分
  16. mysql safe file priv_mysql --secure-file-priv问题解决方案
  17. 如何在表格里做计算机统计表,excel怎么制作统计表格 excel统计表怎么添加标题...
  18. centos8安装RabbitMQ和erlang
  19. c语言错误c2142,应数计算机程序设计(C语言)实验选编.docx
  20. spss分析方法-多个独立样本检验(转载)

热门文章

  1. 乐视商城官方微博壕送5000张电影票:生态可以这样纵横
  2. OPenCV 图像透视变换矫正
  3. 设计模式学习(十一):Builder建造者模式
  4. 国密局发布16项密码行业标准 2022年5月1日起实施
  5. Geography Markup Language (GML)
  6. 分布式对偶平均法(DDA)
  7. SQL Server 变更数据捕获(CDC)
  8. 威伦触摸屏绘制XY曲线
  9. 织梦网站木马生成一个php文件夹,dede织梦程序网站安全设置防范木马侵袭
  10. 判断文件夹是否存在的方法