丰富代码生活-python实现贪吃蛇

454 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

pygame模块主要用来进行游戏开发,是在SDL库基础上被设计而来,其轻量级、简单以及强大的跨平台特性被许多开发者所喜爱,今天在工作之余利用pygame制作一款摸鱼工具---贪吃蛇。

首先介绍一下pygame的使用方式。

pygame.init()

简单的一行代码就直接实现了pygame的初始化操作,避免了繁琐的窗口构建过程。

然后就是设置游戏窗口的大小,代码也是一行搞定。

PlayWindows = pygame.display.set_mode((900, 720))

为了突出自己的个性,窗口的标题肯定不能少

pygame.display.set_caption("贪吃蛇---摸鱼游戏")

最重要的部分是事件的捕获,因为游戏都需要与人进行交互,所以这点必不可少。

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

这样,一个游戏的基本框架就算搭建完成了,运行时就会出现一个黑色背景框,下面就是需要进行游戏的设计了。

首先需要在屏幕中绘制出网格线,参考函数如下:

for x in range(20, 900, 20):
        pygame.draw.line(PlayWindows, (100, 100, 100), (x,40), (x, 720), 1) 

上面给出的是画竖线,对于画横线的方法与上面类似,在此不做赘述。

画完线之后剩下的就是需要处理蛇是否吃到食物,以及如果吃到食物蛇身应该如何变化。

画完蛇身然后就是食物的生成以及画蛇身。在蛇身不断运动过程中我们还需要判断运动过程中是否触碰到蛇身,如果触碰到蛇身后需要判定游戏结束,这点需要注意一下。

创建食物的代码,首先生成一个x,y坐标值,判断该坐标值下是否被蛇身覆盖,如果没有覆盖,则将这个x,y坐标值作为参数进行返回。

def create_food(snake):
    food_x = random.randint(SCOPE_X[0], SCOPE_X[1])
    food_y = random.randint(SCOPE_Y[0], SCOPE_Y[1])
    while (food_x, food_y) in snake:
        food_x = random.randint(SCOPE_X[0], SCOPE_X[1])
        food_y = random.randint(SCOPE_Y[0], SCOPE_Y[1])
    return food_x, food_y

下面将游戏运行的效果图展示一下:

屏幕截图 2022-05-27 094140.png

屏幕截图 2022-05-27 094257.png

整个项目代码量不是很大,其逻辑也已经在博客中详细叙述,如果需要源码的可以在评论中私信我,直接发你邮箱。