python——一步步教你用pyganme完成贪吃蛇小游戏(简易初版)

引言

  大部分人学会python的基础语法之后,都想着写爬虫,画画,当这两个都完成之后呢?那当然是写一个自己开发的小游戏了,而在所有的小游戏当中,又以贪吃蛇最经典,元素也最少,那么今天,我就给大家讲一下一个初级的贪吃蛇程序该怎么写。

步骤

第一步:确定画布

  首先,我们需要生成我们的游戏画布,确定大小颜色和标题等,因为今天介绍的是简版,所以只要设定画布大小和标题就行,背景颜色看个人喜好添加与否。

# 生成游戏窗口
screen = pg.display.set_mode((500, 500))
# 生成游戏名称
pg.display.set_caption('贪吃蛇大作战')
# 生成fps对象,用来后面调节速度
fps = pg.time.Clock()

  在这里,我将要生成的是一个500的正方形画布,标题就叫贪吃蛇大作战
在这里插入图片描述

第二步:梳理方法

  在编写程序之前,我们需要先理清楚贪吃蛇需要哪些方法(即过程),以及各自的目的:

方法 目的
def foods 建立生成新食物位置方法,需要食物不在蛇头处
def draw 建立绘制蛇与食物的方法
def snake_die 判断蛇是否死了(蛇头出界或者触碰到身体)
def move_snake 移动蛇,使蛇在画布上做出视觉上的移动
def is_eat 判断是否吃到食物
def keyboard 响应玩家操作
things 在画布上生成蛇与食物
def game_run 游戏运行程序

  在过程梳理完之后,我们需要了解pygame库要用到什么函数,以及各自的作用:

函数 作用
display.set_mode 创建显示窗口,可以设置窗口大小
display.set_caption 设置标题
time.Clock() 设置屏幕刷新率,也就是fps,配合.tick(n)设置速度为n,n越大刷新越快,蛇的速度也就越快
draw.rect 在画布上绘制图案,传参为创建的窗口,颜色,位置,大小
event.get() 获得事件,例如QUIT退出,KEYDOWN键盘等
display.set_mode.fill 设置背景,可以是颜色也可以是图像
display.flip() 刷新屏幕,整体全部刷新
display.update() 刷新屏幕,可以传参,传参即刷新传入的内容,不传参与 flip一致
第三步:编写方法

  方法梳理完毕,函数也了解清楚后,就开始编写我们的几个过程内容吧:

# 建立生成食物位置方法,需要食物不在蛇头处
def foods(head):
    while True:
        x = random.randint(1, 49) * 10
        y = random.randint(1, 49) * 10
        new_food = [x, y]
        if head[0] == x and head[1] == y:
            continue
        else:
            break
    return new_food

当旧食物被吃掉后,我们需要生成新的食物,新食物的位置利用random随机生成,就需要判断新食物不与蛇头重合,如果重合,则重新生成。

# 建立绘制蛇与食物的方法
def draw(color, pos):
    pg.draw.rect(screen, color, pg.Rect(pos[0], pos[1], 10, 10))

这个方法是对draw.rect的加工,方便后面绘制蛇与食物的时候代码简便

# 判断蛇是否死了
def snake_die(head, body):
    # 定义蛇死亡标志
    die_flag = False
    # 如果蛇头与身体某部分重合,则判断为死亡
    for bd in body:
        if head[0] == bd[0] and head[1] == bd[1]:
            die_flag = True
    # 如果蛇头在窗口外则死亡
    if head[0] > 500 or head[0] < 0 or head[1] > 
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值