目录

游戏规则

游戏代码

游戏截图

补充说明

拓展延伸


游戏规则

使用↑ ↓ ← →四个键进行游玩,蛇头不能碰到自己

在结束时会有分数打在上面

游戏代码

#声明编码
# -*- coding utf-8 -*-
​
# 导入框架
import pygame
import random# 设置大小长度
W = 800
H = 600
size = (W, H)
# 设定游戏行列数
ROW = 30
COL = 40# 定义要使用的类(用来记录点坐标)
class Point:def __init__(self, row, col):self.row = rowself.col = coldef copy(self):return Point(row=self.row, col=self.col)# 定义绘画的函数
def rect(point, color):cell_width = W / COLcell_height = H / ROWleft = point.col * cell_widthtop = point.row * cell_heightpygame.draw.rect(screen, color, (left, top, int(cell_width), int(cell_height)))# 随机生成食物
def genfood():while True:food_x = Point(row=random.randint(0, ROW - 1), col=random.randint(0, COL - 1))if food_x.row != head.row and food_x.col != head.col and food_x not in snakebody:return food_x# pygame初始化框架
pygame.init()screen = pygame.display.set_mode(size)
pygame.display.set_caption('贪吃蛇')
clock = pygame.time.Clock()
# 定义蛇身
snakebody = []
snakebody_color = (200, 200, 200)
# 定义蛇头
head = Point(row=0, col=0)
head_color = (0, 128, 200)
# 定义食物
food = genfood()
food_color = (255, 255, 0)
# 计分
score = 0
# 方向
direct = 'right'
# 循环
quit = True
"""游戏开始"""
while quit:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:quit = Falseelif event.type == pygame.KEYDOWN:if event.key == 1073741906 or event.key == 119:if direct == 'right' or direct == 'left':direct = 'up'elif event.key == 1073741905 or event.key == 115:if direct == 'right' or direct == 'left':direct = 'down'elif event.key == 1073741904 or event.key == 97:if direct == 'up' or direct == 'down':direct = 'left'elif event.key == 1073741903 or event.key == 100:if direct == 'up' or direct == 'down':direct = 'right'# 处理蛇身snakebody.insert(0, head.copy())# 处理吃到食物eat = (head.row == food.row and head.col == food.col)if eat:food = genfood()score += 1else:if len(snakebody) != 0:snakebody.pop()# 移动if direct == 'up':head.row -= 1elif direct == 'down':head.row += 1elif direct == 'left':head.col -= 1elif direct == 'right':head.col += 1# 设定死亡dead = Falseif head.row < 0 or head.col < 0 or head.row >= ROW or head.col >= COL:dead = Truefor snake in snakebody:if snake.row == head.row and snake.col == head.col:dead = Trueif dead:quit = False# 渲染画面# pygame.draw.rect(screen, (255, 255, 255), (0, 0, W, H))screen.fill(pygame.Color('White'))# 画蛇头,蛇身,食物rect(head, head_color)for snake in snakebody:rect(snake, snakebody_color)rect(food, food_color)# 计算机处理pygame.display.flip()# 设置帧率clock.tick(10)
else:# 打印分数print(f"你的分数是:{score}")​

游戏截图

补充说明

  • pygame不属于Python自带库,需要自己在命令行安装,命令如下
pip install pygame

拓展延伸

如果想把程序给朋友炫耀一下,但他又没有Python环境时可以这样:

  1. 在命令行下载pyinstaller库(这个库是用来把.py文件转成.exe可执行文件的)

    pip install pyinstaller
  2. 用此命令把.py文件转成.exe可执行文件(路径不能包含空格)
    pyinstaller -F 路径

    备注:-F是用来转成一个文件的,如果不加的话默认转成一个目录

  3. 最后在这一行找到转出文件的路径 

Python写一个简单的贪吃蛇程序相关推荐

  1. 老滚5初始化python失败_五分钟学会怎么用python做一个简单的贪吃蛇

    Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发.我们今天将利用它来制作一款大家基本都玩过的小游戏--贪吃蛇. 一.需要导入的包 import pygame ...

  2. 用C语言写一个简单的贪吃蛇游戏(用到easyx图形库)

    学习内容:1.游戏的存储与读写 2.制作游戏菜单 3.制作定时器 目录 一.需要用到的头文件.全局变量和一些函数 二.定时器 三.数据的初始化和绘制 四.蛇的运行和吃食物 五.游戏菜单界面 六.游戏存 ...

  3. 基于面向对象 来写一个简单的贪吃蛇小游戏(代码可直接用)

    分析一下用到的对象(这个案例的地图过于简单,可以不用创建为对象)     食物对象(food)     蛇对象(snake)     游戏对象(game) 1.food对象     属性 :x, y, ...

  4. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  5. python推荐系统-用python写个简单的推荐系统示例程序

    用python写个简单的推荐系统示例程序 作者:阿俊 发布于:2011-11-26 16:03 Saturday 分类:推荐系统 python这门语言写程序代码量非常少,短短几行就可以把程序写的很清楚 ...

  6. 用python写一个简单的web服务器

    人生苦短,我用python 简洁高效,这才是理想的语言啊 分享一点python的学习经验-----如何用python写一个简单的web服务器 首先,我们需要简单地了解一下网络通信协议,这里用白话介绍一 ...

  7. 用Python写一个模拟qq聊天小程序的代码实例

    前言 今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Python 超简单的聊天 ...

  8. 如何用python写一个计算日期间隔的程序?

    如何用python写一个计算日期间隔的程序? 文章目录 如何用python写一个计算日期间隔的程序? 前言 问题梳理 问题解决 写在后面 前言 为什么想起来写一个这样的程序呢? 前几天聊天的时候,突然 ...

  9. 怎样用java写一个简单的文件复制程序

    怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...

  10. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例

    用Python写一个模拟qq聊天小程序的代码实例 发布时间:2020-09-09 07:49:29

最新文章

  1. ssm配置socket_ssm框架中集成websocket实现服务端主动向客户端发送消息
  2. python建立空矩阵_SciPy创建稀疏矩阵
  3. Visual Studio 2013软件安装教程
  4. python sqlite3加密_sqlite3加密 - kjpioo的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. C++实现希尔排序(附完整源码)
  6. 可以添加自定义的Select控件
  7. React之createRef
  8. Linux——find命令常见用法
  9. android 禁止屏幕放大缩小,禁止APP内Webview页面跟随系统缩放字号
  10. JAVA ------- eclipse使用的步骤: %## 使用小技巧 ##%
  11. [转载][奇文共赏].由入门到精通 - 吃透PID2.0.PDF
  12. MySQL基础实战篇
  13. docker镜像加速器
  14. ip网络广播系统连接服务器失败,航天广电数字IP网络广播系统安装IP地址调试6大知识...
  15. 004. 看似“完美”的类目+属性
  16. HP喷墨打印机墨盒清零
  17. java openxml_Excel单元格中的OpenXml和Date格式
  18. 常用 ajax js 表单 下拉加载
  19. Halcon入门(1)——选取ROI区域
  20. CI框架教程5——整合PHPExcel库应用

热门文章

  1. Java高并发编程实战5,异步注解@Async自定义线程池
  2. 干货 | 推荐几款实用的思维导图工具
  3. 【Qt for Python官方教程】使用pyside6-rcc引入.qrc文件
  4. 中国水系Android第一个版本
  5. php视频教程打包下载 - 网络上最好的php视频教程
  6. protel dxp教程 protel dxp经典视频教程
  7. 海思麒麟要敢于叫板高通骁龙
  8. 求偏微分方程的数值解(有限差分法、配置法、Galerkin方法)
  9. 地震matlab频域分析,基于matlab的地震数据的分析.doc
  10. Windows2012安装AppFabric失败返回1603错误的解决方案