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
您可能感兴趣
- python3 代码解读(Python3列表内置方法大全及示例代码小结)
- python程序运行步骤(详解python运行三种方式)
- python3中super函数的基本用法(实例讲解Python3中abs函数)
- python中怎样使用列表的sort方法(详解python中sort排序使用)
- python调用支付宝支付接口(python实现支付宝转账接口)
- pythonselenium自动化教程(python使用selenium实现批量文件下载)
- python如何一行行读取文件(python 实现一次性在文件中写入多行的方法)
- python弹球游戏编写过程(python实现坦克大战游戏 附详细注释)
- python爬虫10分钟教程(浅谈Python爬虫基本套路)
- python 组合数据类型(详解Python3 对象组合zip和回退方式*zip)
- elasticsearch数据写入原理(Python对ElasticSearch获取数据及操作)
- python爬取百度搜索pdf文档(Python实现的爬取百度文库功能示例)
- python中的eval函数的用法(Python eval的常见错误封装及利用原理详解)
- python3 怎么查看函数用法(Python3 max函数基础用法)
- python抖音视频收集(python制作抖音代码舞)
- python如何解压加密zip文件(python读取有密码的zip压缩文件实例)
- 七夕的寓意(七夕的寓意)
- 苏志燮赵恩静结婚,韩国四大公共财产变三人,这么快就有替补了(苏志燮赵恩静结婚)
- 《内在美》后,一大波新韩剧来袭,李钟硕朴信惠宋慧乔玄彬回归(一大波新韩剧来袭)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
热门推荐
- yii数据库测评(Yii2.0框架behaviors方法使用实例分析)
- laravel的api验证失败重定向(Laravel的Auth验证Token验证使用自定义Redis的例子)
- 如何对代码进行评审
- php制作随机编号(PHP生成随机码的思路与方法实例探索)
- mysql各种类型设置(MySQL sql_mode的使用详解)
- sqlserver数据库的对象有哪些(详解SQL Server数据库架构和对象、定义数据完整性)
- setTimeout和setIntelval的用法和区别
- php上传大文件教程(PHP实现带进度条的Ajax文件上传功能示例)
- springboot docker教程(在Idea中使用Docker部署SpringBoot项目的详细步骤)
- CSS中background-attachment
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9