Python怎么实现小游戏​flappy-bird

这篇文章主要讲解了“Python怎么实现小游戏flappy-bird”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现小游戏flappy-bird”吧!

创新互联建站于2013年开始,是专业互联网技术服务公司,拥有项目网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元满洲做网站,已为上家服务,为满洲各地企业和个人服务,联系电话:18982081108

游戏动图:

Python怎么实现小游戏​flappy-bird

 

源码

建议先仔细阅读一下,然后再往后看 DE8UG 对源码的分析。

from random import *
from turtle import *
from freegames import vector

bird = vector(0, 0)
balls = []
score = 0

def tap(x, y):
   "Move bird up in response to screen tap."
   up = vector(0, 30)
   bird.move(up)

def inside(point):
   "Return True if point on screen."
   return -200 < point.x < 200 and -200 < point.y < 200

def draw(alive):
   "Draw screen objects."
   clear()
   goto(bird.x, bird.y)

   if alive:
       dot(10, 'green')
   else:
       dot(10, 'red')

   for ball in balls:
       goto(ball.x, ball.y)
       dot(20, 'black')

   update()

def move():
   "Update object positions."
   global score
   bird.y -= 5

   for ball in balls:
       ball.x -= 3

   if randrange(10) == 0:
       y = randrange(-199, 199)
       ball = vector(199, y)
       balls.append(ball)

   while len(balls) > 0 and not inside(balls[0]):
       balls.pop(0)
       score += 1
       print(f'get {score} scores')

   if not inside(bird):
       draw(False)
       return

   for ball in balls:
       if abs(ball - bird) < 15:
           draw(False)
           return

   draw(True)

   # 在鸟的位置,绘制分数
   goto(bird.x, bird.y)
   write(score, font=('Arial', 30, 'normal'))

   ontimer(move, 50)

setup(420, 420, 370, 0)
hideturtle()
up()
tracer(False)
onscreenclick(tap)
move()
done()
   

运行

复制上述代码到一个 py 为后缀的文件,命名 flappy.py.

在文件所在目录打开控制台:运行pip install freegames,然后运行python flappy.py

 

分析

查看一个 py 文件中的源码,最开始可以对他们进行区域划分。一般有这么几个区域:

  • 导入
  • 全局变量
  • 函数
  • 调用流程

我们可以先大致看几个区域的变量和函数定义,然后从调用流程入手,一步步的分析代码。

这个游戏代码是一个第三方库 freegames 的一部分。从最上面导入依赖部分可以看出,主要是依赖于 turtle 这个库。

from turtle import *的最后是个*,表示导入了 turtle 里面所有东西,一般是不建议导入太多内容的,一是可能加载太多没用的代码,二是可能出现同名的类或函数。目前这只是个小游戏,后面也用到不少 turtle 里面的函数,所以这么写勉强可以接受。

往下看,整个代码用到很多函数,只要是 import 没有明确导入的,以及非本 python 文件写的函数,其实都是这个*带来的 turtle 内部函数了。如果你不知道神马意思,记得我我课程里介绍过超全的在线文档吗?https://devdocs.io,你只需要搜一下turtle就可以看到相关解释了。

导入依赖部分还导入了 freegames 库里面一些工具类和函数:from freegames import vector,看单词就可以知道是个向量,用来表示坐标。

接下来是几个函数:tap,inside,draw,move。

Flappy Bird, 是一个几年前一位越南开发者做的游戏,风靡一时,容易上瘾,褒贬不一。DE8UG 认为这是一个不错的游戏,目前我们看到的这个 python 代码,虽然没有把小鸟和障碍物完全描述出来,但是从学习和娱乐角度来看,已经足够了。

故事很简单:一个小鸟,需要不断拍动翅膀往前飞,同时躲避障碍物。

针对小鸟和障碍物的行为,就不难理解这几个函数了。

tap 表示扇动翅膀,我们用点击屏幕来模拟飞行。

inside 判断障碍物是否在屏幕内。

draw 用来绘制小鸟和障碍物,这里其实都是点,不同的是小鸟为绿色表示正常,红色表示失败。障碍物都用黑色表示。这里有个传入的参数 alive,用来根据小鸟的死活来绘制不同的颜色。同时,绘制障碍物时,注意用 goto 调整不同的位置,以绘制出不同位置的障碍物小球。

move 函数的功能就比较多了,首先要有小鸟的自动降落,表示如果不扇动翅膀就会掉到地上死翘翘了。然后需要绘制黑色小球表示障碍物。这里障碍物相对小鸟是往左移动的,所以 x 设置为-3(函数最后有 ontimer(move, 50)表示定时移动)。接下来是随机模拟不同位置的障碍物,这里主要是纵坐标 y 在屏幕内的变化。接下来判断如果障碍物已经不再屏幕内,就从列表里面移除。我这里添加了一个 score 变量,在顺利躲避了障碍之后,用来累计分数。之后判断 bird 的位置如果不在屏幕内,就给上面的 draw 函数添加参数 False,然后 return 退出。一切正常的话,就循环判断所有的障碍物,判断小鸟和障碍物的位置是否小与一个阈值,这里写的 15。当小于这个值,表示相撞,小鸟就死翘翘了。最后在鸟的位置,绘制分数,这会是一个动态刷新的过程。

感谢各位的阅读,以上就是“Python怎么实现小游戏flappy-bird”的内容了,经过本文的学习后,相信大家对Python怎么实现小游戏flappy-bird这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!

分享名称:Python怎么实现小游戏​flappy-bird
URL链接:https://www.cdcxhl.com/article48/pcghhp.html

成都网站建设公司_创新互联,为您提供关键词优化定制网站网站收录网站改版自适应网站品牌网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发