python实现简单贪吃蛇小游戏
作者:側耳听偑 时间:2021-12-11 13:59:00
本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下
1. 导入游戏库
import pgzrun
import random
2.游戏初始化
# 窗口大小
WIDTH = 600
HEIGHT = 480
# 贪吃蛇
bodys = [ [100,100],[80,100], [60,100], [40,100], [20,100]]
head = [100,100]
d = 'right'
# 食物
food = [290,290]
# 得分
score=0
3.游戏窗口绘制
def draw():
#清空屏幕
screen.clear()
# 绘制网格
for i in range(1,24):
screen.draw.line((0,i*20),(600,i*20),'gray')
for i in range(1,30):
screen.draw.line((i*20,0),(i*20,480),'gray')
#绘制蛇
for body in bodys:
rect = Rect(body,(20,20))
screen.draw.filled_rect(rect,(0,0,255))
inner = [body[0]+2,body[1]+2]
rect = Rect(inner, (15, 15),center='center')
screen.draw.filled_rect(rect, (0, 0, 180))
# 绘制头
rect = Rect(head, (20, 20))
screen.draw.filled_rect(rect, (0, 200,0))
inner = [head[0] + 2, head[1] + 2]
rect = Rect(inner, (15, 15))
screen.draw.filled_rect(rect, (0, 255, 12))
# 绘制食物
screen.draw.filled_circle(food,10, '#ffddee')
# 绘制得分
screen.draw.text('score:'+str(score),(20, 20), color="orange",fontsize=30)
4.蛇的移动功能
def run():
global food,d,head,bodys,score
# 新增一个格子的身体
if d=='right':
head[0] += 20
elif d=='left':
head[0] -= 20
elif d=='up':
head[1] -= 20
else:
head[1] += 20
bodys.insert(0,list(head))
if head[0] == food[0]-10 and head[1] == food[1] - 10:
food = [random.randint(1,30)*20-10,random.randint(1,20)*20-10]
score+=1
if score>3:
clock.unschedule(run)
clock.schedule_interval(run, 0.1)
else:
bodys.pop()
# 撞墙后重新开始
if head[0]<0 or head[0]>580 or head[1]<0 or head[1]>480 or head in
bodys[1:]:
# 蛇回到初始位置
bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]
head = [100, 100]
# 方向向右
d = 'right'
# 得分清零
score=0
clock.unschedule(run)
clock.schedule_interval(run, 0.3)
5.按键控制蛇的行走方向
# 按键控制蛇的行走方向
def on_key_down(key):
global d
# 改变方向
if key == keys.DOWN and d != 'up':
d = 'down'
if key == keys.UP and d != 'down':
d = 'up'
if key == keys.LEFT and d != 'right':
d = 'left'
if key == keys.RIGHT and d != 'left':
d = 'right'
6.启动游戏
# 定时设置
clock.schedule_interval(run, 0.3)
# 播放音乐
music.play('music.mp3')
# 启动游戏
pgzrun.go()
完整代码
# 1.导入库
import pgzrun
import random
# 2.初始化
# 窗口大小
WIDTH = 600
HEIGHT = 480
# 贪吃蛇
bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]
head = [100, 100]
d = 'right'
# 食物
food = [290, 290]
# 得分
score = 0
# 3.游戏窗口绘制
def draw():
# 清空屏幕
screen.clear()
# 绘制网格
for i in range(1, 24):
screen.draw.line((0, i * 20), (600, i * 20), 'gray')
for i in range(1, 30):
screen.draw.line((i * 20, 0), (i * 20, 480), 'gray')
# 绘制蛇
for body in bodys:
rect = Rect(body, (20, 20))
screen.draw.filled_rect(rect, (0, 0, 255))
inner = [body[0] + 2, body[1] + 2]
rect = Rect(inner, (15, 15), center='center')
screen.draw.filled_rect(rect, (128, 0, 128)) # 紫色
# 绘制头
rect = Rect(head, (20, 20))
screen.draw.filled_rect(rect, (0, 200, 0))
inner = [head[0] + 2, head[1] + 2]
rect = Rect(inner, (15, 15))
screen.draw.filled_rect(rect, (0, 255, 12))
# 绘制食物 颜色为红色
screen.draw.filled_circle(food, 10, '#ff0000')
# 绘制得分
screen.draw.text('score:' + str(score), (20, 20), color="red", fontsize=30)
# 4.蛇的移动功能
def run():
global food, d, head, bodys, score
# 新增一个格子的身体
if d == 'right':
head[0] += 20
elif d == 'left':
head[0] -= 20
elif d == 'up':
head[1] -= 20
else:
head[1] += 20
bodys.insert(0, list(head))
if head[0] == food[0] - 10 and head[1] == food[1] - 10:
food = [random.randint(1, 30) * 20 - 10, random.randint(1, 20) * 20 - 10]
score += 1
if score > 10:
clock.unschedule(run)
clock.schedule_interval(run, 0.1)
else:
bodys.pop()
# 撞墙后重新开始
if head[0] < 0 or head[0] > 580 or head[1] < 0 or head[1] > 480 or head in bodys[1:]:
# 蛇回到初始位置
bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]
head = [100, 100]
# 方向向右
d = 'right'
# 得分清零
score = 0
clock.unschedule(run)
clock.schedule_interval(run, 0.3)
# 按键控制蛇的行走方向
def on_key_down(key):
global d
# 改变方向
if key == keys.DOWN and d != 'up':
d = 'down'
if key == keys.UP and d != 'down':
d = 'up'
if key == keys.LEFT and d != 'right':
d = 'left'
if key == keys.RIGHT and d != 'left':
d = 'right'
# 6.启动游戏
# 定时设置
clock.schedule_interval(run, 0.3)
# 播放音乐
music.play('music.mp3')
# 启动游戏
pgzrun.go()
来源:https://jjianfang.blog.csdn.net/article/details/109606063
标签:python,贪吃蛇
0
投稿
猜你喜欢
简单的网站页面有什么好处
2007-11-15 06:28:00
Mootools 1.2教程(14)——定时器和哈希简介
2008-12-08 12:50:00
asp程序定义变量比不定义变量速度快一倍
2012-12-04 20:06:32
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2023-07-07 06:31:22
合并网页中的多个script引用实现思路及代码
2023-06-29 09:02:19
怎样在MySQL数据库中导出整个数据库
2008-12-31 15:13:00
CSS和HTML与前端技术层图示
2010-04-05 21:54:00
ORACLE11g随RHEL5系统自动启动与关闭的设置方法
2009-08-31 12:43:00
使用python实现对元素的长截图功能
2023-11-20 10:27:44
asp 动态生成rss(不成生xml文件)代码
2011-04-04 11:17:00
OpenCV计算平均值cv::mean实例代码
2023-06-19 10:26:02
python将ip地址转换成整数的方法
2022-10-17 23:40:23
FileSystem对象常用的文件操作函数有哪些?
2009-11-01 15:11:00
基于Oracle的面向对象技术入门基础简析开发者网络Oracle
2010-07-18 12:57:00
自适应浏览器位置的div效果
2008-05-29 13:15:00
python自制简易mysql连接池的实现示例
2023-04-14 20:23:55
CSS Sprites对CSS布局的意义、优点和缺点介绍
2008-07-14 07:22:00
FrontPage XP中的设计技巧
2008-07-17 10:49:00
第一类工厂与哈希对象
2009-12-28 13:14:00
15款最佳jQuery LightBox插件
2010-09-25 12:41:00