用python做一个贪吃蛇游戏,简单的贪吃蛇游戏
这篇文章主要为大家详细介绍了大蟒实现简单贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了大蟒实现简单贪吃蛇的具体代码,供大家参考,具体内容如下
1. 导入游戏库
导入pgzrun
随机导入
2.游戏初始化
# 窗口大小
宽度=600
身高=480
# 贪吃蛇
bodys=[ [100,100],[80,100],[60,100],[40,100],[20,100]]
head=[100,100]
d=对
# 食物
食物=[290,290]
# 得分
分数=0
3.游戏窗口绘制
定义绘制():
#清空屏幕
screen.clear()
# 绘制网格
对于(1,24):范围内的英语字母表中第九个字母
screen.draw.line((0,i*20),(600,i*20), gray )
对于范围(1,30):内的英语字母表中第九个字母
screen.draw.line((i*20,0),(i*20,480), gray )
#绘制蛇
对于正文中的正文:
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 )
# 绘制得分
屏幕。画吧。text( score : str(score),(20,20),color=orange ,fontsize=30)
4.蛇的移动功能
定义运行():
全球食物、d、头、身体、分数
# 新增一个格子的身体
如果d==右 :
head[0]=20
elif d==left:
head[0] -=20
elif d==up:
head[1] -=20
else:
head[1]=20
bodys.insert(0,list(head))
如果head[0]=food[0]-10和头[1]==菜[1] - 10:
food=[random.randint(1,30)*20-10,random.randint(1,20)*20-10]
得分=1
如果得分3:
clock.unschedule(运行)
clock.schedule_interval(run,0.1)
else:
bodys.pop()
# 撞墙后重新开始
如果头[0]0或head[0]580或head[1]0或头[1]480或头进去
第:号
# 蛇回到初始位置
bodys=[[100,100],[80,100],[60,100],[40,100],[20,100]]
head=[100,100]
# 方向向右
d=对
# 得分清零
分数=0
clock.unschedule(运行)
clock.schedule_interval(run,0.3)
5.按键控制蛇的行走方向
# 按键控制蛇的行走方向
def on_key_down(键):
全球拥有
# 改变方向
if key==keys .向下和d!=向上 :
d=向下
if key==keys .向上和向下!=向下 :
d=向上
if key==keys .左转d!=对
:
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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。