同人游戏制作:跟着元气学编程〔11〕

2021/08/15158 浏览创意同人
编程系列真的鸽了好多天……因为我能力不足,等人答复和优化的时候花了很多时间
本期任务:添加怪物前一些乱七八糟的细节
退出方式更改:每次测试都需要用鼠标关闭,稍微有亿点麻烦。所以我们可以设置一个退出快捷键——Q。因为Q和箭头键以及空格键相隔较远,不会有误触的风险。
TapTap
(这里插一句题外话。为什么《我的世界》的扔出物品默认快捷键是Q?总是玩着玩着……*按Q释放剑气)
更改背景:现在人物在过道上,但是怪物应该是在房间里刷新的。我们可以在人物走到一定地方的时候更改背景
(先设置一个变量,对后续开发有利)
TapTap
(将原road类改为backgrounds,因为背景图片的基础设置都是一样的,无论多少都可以共享一个大类)
TapTap
创建一个该类的实例,并将backgrounds的update()方法加入主循环
TapTap
同时更改game_functions的update_screen()函数,绘制出背景
TapTap
人物细节以及不同背景的活动区域:现在的人物不会转身,就算向左走,人物图片也是朝右的,非常不细节。所以我们可以更改一下,让人物在往不同方向走的时候有形象上的变化。活动区域则是根据自己的电脑设置进行计算(快乐的三位数加减法)
TapTap
现在运行程序,可以看见角色的形象变化。触碰到屏幕顶端会切换背景,触碰到下端同理。就是有一个小bug:从房间切换到过道时可以进入到墙里面。不过不会影响游戏体验,而且还难修复(摊牌了,其实是我不会修)。有几率会触发武器错位bug,但是我不知道怎么卡出来的……(本周的元气水谈我要讲一下,人傻了)给会拿到这款复刻游戏的图片提供大佬说一下,不要去刻意卡bug啊,不然我修不过来
一些小问题:鸽了这么久了,做一些题来加深记忆吧!
(1)图三切换背景时,为什么每次切换都需要重新设置图片位置,明明已经在初始化设置好了?(可以单独把两张图片用初始化位置的代码在电脑上试一下,会发现都是在屏幕正中央。)如果不重新设置会发生什么?
(2)图六的if self.moving_right:语句的下级代码中,更改人物位置用的是self.centery。self.centery就是self.rect.centery的小数形式,但是如果用self.rect.centery设置的话,无法实现预期效果,为什么?
(第二个问题我也不确定,看看有没有人跟我讲解一下?)
9
1
2