持续创作,加速成长!这是我参与「掘金日新计划 · 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
下面将游戏运行的效果图展示一下:
整个项目代码量不是很大,其逻辑也已经在博客中详细叙述,如果需要源码的可以在评论中私信我,直接发你邮箱。