python贪吃蛇项目介绍(python简单贪吃蛇开发)
类别:脚本大全 浏览量:714
时间:2022-04-04 11:34:33 python贪吃蛇项目介绍
python简单贪吃蛇开发本文实例为大家分享了python简单贪吃蛇的具体代码,供大家参考,具体内容如下
|
import sys import random import pygame from pygame. locals import * # 目标方块的颜色 红色 redColor = pygame.Color( 255 , 0 , 0 ) # 游戏界面的背景颜色 纯黑色 blackColor = pygame.Color( 0 , 0 , 0 ) # 贪吃蛇的颜色 白色 whiteColor = pygame.Color( 255 , 255 , 255 ) # 定义游戏结束的函数 def gameOver(): pygame.quit() sys.exit() # 定义main函数 def main(): # 初始化pygame pygame.init() # 定义一个控制速度的函数 fpsClock = pygame.time.Clock() # 创建显示层 playSurface = pygame.display.set_mode(( 640 , 480 )) # 界面的大小 pygame.display.set_caption( '贪吃蛇' ) # 初始化蛇的位置 snake_position = [ 100 , 100 ] # 初始化蛇的长度 snake_body = [[ 100 , 100 ],[ 80 , 100 ],[ 60 , 100 ]] # 初始化目标方块的位置 target_position = [ 300 , 300 ] # 目标方块的状态 target_flag = 1 # 初始化一个方向 direction = 'right' # 定义蛇的方向变量 changeDirection = direction while True : # pygame的交互模块和事件队列 for event in pygame.event.get(): # 是否推出 if event. type = = QUIT: pygame.quit() sys.exit() # 判断键盘事件 elif event. type = = KEYDOWN: if event.key = = K_RIGHT: changeDirection = 'right' if event.key = = K_LEFT: changeDirection = 'left' if event.key = = K_UP: changeDirection = 'up' if event.key = = K_DOWN: changeDirection = 'down' if event.key = = K_SPACE: pygame.event.post(pygame.event.Event(QUIT)) # 根据键盘反应确定方向 if changeDirection = = 'left' and not direction = = 'right' : direction = changeDirection if changeDirection = = 'right' and not direction = = 'left' : direction = changeDirection if changeDirection = = 'up' and not direction = = 'down' : direction = changeDirection if changeDirection = = 'down' and not direction = = 'up' : direction = changeDirection # 根据方向移动蛇头的坐标 if direction = = 'right' : snake_position[ 0 ] + = 20 if direction = = 'left' : snake_position[ 0 ] - = 20 if direction = = 'up' : snake_position[ 1 ] - = 20 if direction = = 'down' : snake_position[ 1 ] + = 20 # 蛇与自身的碰撞检测 for body in snake_body: if snake_position[ 0 ] = = body[ 0 ] and snake_position[ 1 ] = = body[ 1 ]: gameOver() # 蛇移动 snake_body.insert( 0 , list (snake_position)) if snake_position[ 0 ] = = target_position[ 0 ] and snake_position[ 1 ] = = target_position[ 1 ]: target_flag = 0 else : # 如果没吃到,蛇尾弹出栈 snake_body.pop() # 如果吃掉目标方块,重新生成一个目标方块 if target_flag = = 0 : x = random.randrange( 1 , 32 ) y = random.randrange( 1 , 24 ) # 20*20的像素为一个小矩形 target_position = [ int (x * 20 ), int (y * 20 )] target_flag = 1 # 绘制显示层 playSurface.fill(blackColor) # 绘制蛇 for position in snake_body: pygame.draw.rect(playSurface, redColor, Rect(position[ 0 ],position[ 1 ], 20 , 20 )) # 画目标方块 pygame.draw.rect(playSurface, whiteColor, Rect(target_position[ 0 ], target_position[ 1 ], 20 , 20 )) pygame.display.flip() # 判断死亡 if snake_position[ 0 ] > 620 or snake_position[ 1 ] < 0 : gameOver() elif snake_position[ 1 ] > 460 or snake_position[ 1 ] < 0 : gameOver() # 控制游戏的速度 fpsClock.tick( 5 ) if __name__ = = '__main__' : main() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/wwxy1995/article/details/79998066
您可能感兴趣
- 百度免费翻译接口(基于python实现百度翻译功能)
- pythontkinter详解(python3.6使用tkinter实现弹跳小球游戏)
- python字典的key(Python使用dict.fromkeys快速生成一个字典示例)
- python图像仿射变换(详解Python计算机视觉 图像扭曲仿射扭曲)
- python获取excelsheet名称(python查询文件夹下excel的sheet名代码实例)
- 如何用python画函数图(使用python绘制二元函数图像的实例)
- elasticsearch数据写入原理(Python对ElasticSearch获取数据及操作)
- python中字典的主要特点(Python里字典的基本用法包括嵌套字典)
- python 正则表达式菜鸟教程(详解Python正则表达式re模块)
- python函数调用传递数组数据(python调用c++传递数组的实例)
- 用mysql语句写python学生管理系统(Python基于mysql实现学生管理系统)
- python中内存管理机制(Python中整数的缓存机制讲解)
- python外部如何调嵌套函数(python中嵌套函数的实操步骤)
- python字符串找一个最大字符(Python查找最长不包含重复字符的子字符串算法示例)
- python撤回的微信消息怎么看(Python实现微信消息防撤回功能的实例代码)
- Python实现合并两个有序链表的方法示例(Python实现合并两个有序链表的方法示例)
- 王铲铲的致富之路无限金币卡法攻略教学(王铲铲的致富之路无限金币卡法攻略教学)
- 文明6金币太少怎么办 文明6无限刷钱教程(文明6金币太少怎么办)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
- 被鉴定的古董价值300万 当心,你可能遇到诈骗了(被鉴定的古董价值300万)
热门推荐
- phpstudy安装包打不开(phpStudy访问速度慢和启动失败的解决办法)
- sql怎么把表移到另一个数据库中(sql存储过程实例--动态根据表数据复制一个表的数据到另一个表)
- pythonimage库(Python/Django后端使用PIL Image生成头像缩略图)
- python 装饰器模式(python重试装饰器的简单实现方法)
- vue.js入门教学第15讲(Vue.js 使用AntV X6的示例步骤)
- docker如何解绑容器(如何进入、退出docker的container实现)
- mysql数据库简单优化(MySQL数据类型优化原则)
- 云主机免费推荐吗(云主机可以永久免费吗?)
- IT技术类在团队管理上的几个建议
- python生成文本文件(python+os根据文件名自动生成文本)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9