第9讲 | 如何绘制游戏背景?
蔡能

我在之前的文章中描述了各种基础知识,然后梳理了开发流程,并带你创建了一个窗体,现在我们要做的就是朝这个窗体里添加东西。
我会随着进度逐渐提升难度。就现阶段来讲,我们涉及的只是一些基础知识,并且只需要将大部分的关注点放在我们要做的游戏内容上,并不需要关注过多的底层逻辑代码。
做事情都有先后顺序,做游戏开发自然也是。为什么要学习先绘制游戏背景而不是别的什么,很简单,因为只有先绘制了游戏背景,才能进行后续的游戏图像遮挡、图形图像的显示等等操作。
不管你有没有玩过《超级玛丽》《魂斗罗》《雷电》之类的游戏,但一定对其画面不陌生。和我们要开始做的打飞机游戏一样,这种类型的 2D 游戏,其背景不是左右卷轴,就是上下卷轴。所谓左右卷轴,就是游戏画面是横向的、左右运动的,而上下卷轴就是游戏画面是竖直对的、上下运动的。

像《雷电》这样的经典飞机游戏,就是属于上下卷轴的。上下卷轴的飞机游戏有一个特点,就是它是在空中,从凌驾于飞机之上的视角,往地面俯瞰的。因为是俯视角,所以我们可以很方便地看到游戏的整体地图,包括地面上的敌人、空中的敌人等等,层次感会很强。
因此,可以确定,我们要做的打飞机,也是一个上下卷轴的游戏。这样,我们就可以着手将需要的图片添加进去了。
我们要使用 Pygame,先读取一个图片,让该图片成为游戏背景并载入进去。当下阶段,我们的图片从哪儿获得并不重要,因为在一个完整的游戏开发团队里面,都有专业的美术团队负责作图,但是现在我们没有,所以我就自己贴一幅图来代替正式的游戏背景。所以你现在只需要知道背景是如何贴上去的就好了。
和前面的文章说过的一样,我们需要先载入 Pygame 模块,并且定义一个变量 background。我们将一幅名为 lake,jpg 的图片文件赋值给 backgroud 变量。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学游戏开发》,新⼈⾸单¥59
《从 0 开始学游戏开发》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(12)
- 最新
- 精选
- fenglinwan老师,我有一个问题,如果我的一台电脑运行速度快,一个循环很快就运行完了,另一台电脑慢! 岂不是一台背景滑动的快,另一台背景滑动的慢!
作者回复: 所以要有帧速度控制。
5 - 三硝基甲苯while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() screen.blit(bg, (0, y_move)) y_move -= 1 pygame.display.update() screen.fill([random.randint(0,255),random.randint(0,255),random.randint(0,255)]) pygame.time.wait(100) 可能会被 颜色变化闪瞎
作者回复: 你可以做判断,变化的不要这么剧烈
2 - 青鸟独立开发游戏如何获取图片等资源,一定要自己学会画图吗?
作者回复: 去网上搜,如果是程序员不需要学会画图
1 - 邢浩锋你好,按着原文的代码写,只是背景图片不同。最后运行出来的背景是一片漆黑,看不到图片。是跟背景图片的大小有关吗?还是什么原因?
作者回复: 你看下绘制函数的调用顺序
- Geek_King@技术爱好者为什么if event.type==pygame.QUIT:之后用pygame.quit()而不用sys.exit(),因为我运行的时候好像pygame.quit()以后还会执行后面的代码,出错才退出的
作者回复: 执行后面的代码是因为循环外面还有代码,sys.exit是直接退出,虽然结果都是退出,但这种方式比较粗暴。
- null为什么update要在fill之前调用呢?我的理解是,如果先调用update把要显示的东西都显示出来了,但是后面又调用了fill,这样不是就把前面显示的东西都覆盖掉了吗?不是先清屏再显示的吗(就是先调用fill再调用update)?
作者回复: 看文中具体代码,如果fill后,update就覆盖了清除操作
- GS这样分段的代码。对于初学者,忘记缩进搞半天,最好是最后有个完整版的3
- 裴海港在填充颜色的时候分别为RGB设置0-255的随机数字应该可以让颜色不停变换3
- 观察与思考我觉得从逻辑顺序上,如果按15324,比较好理解3
- 阿森先screen.blit(bg, (0,0)) update(),再while true,图像就出来了,按原文的顺序是黑屏的窗口,编程小白查错好困难啊1
收起评论