前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flappy-bird 游戏

flappy-bird 游戏

作者头像
叶子陪你玩
发布2021-07-05 18:11:42
6800
发布2021-07-05 18:11:42
举报
文章被收录于专栏:叶子陪你玩编程

一直学习一样东西,学久了就可以尝试归纳总结,整理成笔记或者写成教程,这是一种很好的学习策略。(当然更好的方法是从学的时候就开始整理)

最近教学生做游戏,根据过往的经验,我把游戏中常用的方法都提取出来了,形成了一份笔记。

比如游戏中的最简单框架,绘图,加载图片,背景音乐加载播放,音效加载播放,鼠标移动或者按下检测,按键检测,区域检测,相对移动,角色碰撞检测,角色移动,角色旋转,角色跳跃,连续跳跃等。

有了这份笔记,做一般的游戏就非常快了,构思好思路,到里面挑选代码块拼凑即可(前提自己要理解原本的代码块),类似拼积木一样。

比如之前两次的游戏也是用类似的思路实现了,仔细观察,会发现很多代码一样的。

chrome 浏览器小恐龙彩蛋游戏

恐龙接食物

遇到没碰到过的问题,可以将其添加进去,这样就有了积累,随着时间的变化,这份笔记就成为了你的代码库,忘记不会查一查就可以了。


比如做了一个小demo--flappy bird,除了找素材处理素材;实际编写,调试10分钟左右就搞定啦。

只实现了按空格键上下飞行,管道随机出现并移动,碰撞检测以及飞出界外还没设定。

视频上传审核麻烦,录了个动图。

代码语言:javascript
复制
# 导入库
import pygame
import sys
import random

# 初始化
pygame.init()
pygame.mixer.init()
# 设置窗口大小
screen = pygame.display.set_mode((600, 600))
# 设置标题
pygame.display.set_caption("flappy bird")

# 管道
pipe_list = []
for i in range(1,3):
    pipe = pygame.image.load(f"pipe{i}.png")
    pipe_list.append(pipe)
random.shuffle(pipe_list)
pipe_pos = [[700,0],[700,600-pipe_list[1].get_height()]]

# crow
crow_list = []
for i in range(1, 3):
    temp = pygame.image.load(f"crow{i}.png")
    new_temp = pygame.transform.flip(temp,True,False)
    crow_rect = new_temp.get_rect()
    crow_list.append(new_temp)
crow_rect.x, crow_rect.y = 50, 300
crow_index = 0

# 设置y轴上的初速度为0
y_speed = 0
# 起跳初速度
jumpSpeed = -10
# 模拟重力
gravity = 1

# 地面移动速度与距离
pipe_speed = 10
pipe_move_distance = 0

# 时钟
clock = pygame.time.Clock()
# 循环显示
while True:
    # 每秒30次
    clock.tick(30)

    # 事件侦测
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        # 空格键侦测
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                y_speed = jumpSpeed

    # 跳跃
    crow_rect.y += y_speed  # 更新y坐标
    y_speed += gravity  # 重力作用下改变速度

    # 管道移动
    pipe_move_distance += pipe_speed
    pipe_pos[0][0] = 600-pipe_move_distance
    pipe_pos[1][0] = 600-pipe_move_distance

    # 管道出界重新选择管道
    if pipe_move_distance >= 600:
        pipe_move_distance = 0
        random.shuffle(pipe_list)
        pipe_pos = [[700, 0], [700, 600-pipe_list[1].get_height()]]

    # crow图片索引加 1
    crow_index += 1

    # 设置背景色
    screen.fill((87, 250, 255))
    # 绘制管道
    screen.blit(pipe_list[0], pipe_pos[0])
    screen.blit(pipe_list[1], pipe_pos[1])
    # 绘制crow
    screen.blit(crow_list[crow_index % 2], crow_rect)
    
    pygame.display.update()

需要素材的可以留言。


最近除了做案例,写课程,还研究了一些教(教学)与学(学习)的相关理论。主要关于如何教别人学习和如何自己学习。

比如教学中有哪些基本过程,环节,教学的基本原则,教学策略还有常见的一些教学法,教学内容组织以及评价。

学习主要看了主流的一些学习理论,学习策略,学习动机以及学习迁移相关方法的内容。

等弄的差不多,后面有时间结合案例分享出来。

(全文完)


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档