python写的贪吃蛇小游戏_Python贪吃蛇小游戏

贪吃蛇

1. 导入游戏库

# 1.导入库

import pgzrun

import random

2.游戏初始化

# 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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值