用Python制作贪吃蛇游戏的过程代码是什么
Admin 2022-08-11 群英技术资讯 1014 次浏览
这篇文章主要介绍“用Python制作贪吃蛇游戏的过程代码是什么”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“用Python制作贪吃蛇游戏的过程代码是什么”文章能帮助大家解决问题。本文实例为大家分享了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()
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
关于计算器的实现,不少朋友可能使用JavaScript或者PHP有实现过,是比较简单的。那么我们如果要用python来实现,怎样写一个计算器呢?下面就给大家分享一下实现示例以及代码。
这篇文章主要介绍了解决Python保存文件名太长OSError: [Errno 36] File name too lon问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章给大家分享的是有关使用python实现图片文字识别功能的内容。小编觉得挺实用的,因此分享给大家做个参考,感兴趣的朋友可以了解看看,接下来一起跟随小编看看吧。
那么如何使我们输入的文本在输出我们想要的对齐方式呢?其实用我们的format就可以解决,我们一起来看看如何操作吧。
AOP,就是面向切面编程,简单的说,就是动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。这样我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008