Python 编程从入门到实践 第十二章 飞船开始游戏时靠着边界的问题解决办法

注:图中标识的1,2,3,4 就是所指向的那一行代码,上面是本人的正确代码

解决办法:书上的代码内容顺序是1代码在2代码的前面,其实只要把1代码放到2代码后面就可以解决靠边的问题

飞船初始靠边原因:1在2前面 那么执行顺序就是 先执行1 将float(self.rect.x)的值赋值给self.x,由于刚开始self.rect.x默认值是0,所以此时self.x = 0,然后再运行2代码(self.rect.midbottom = self.screen_rect.midbottom)执行这行代码就是为了让飞船居中,self.rect.midbottom的值其实本质就是设置self.rect.x和self.rect.y(就像设置self.rect.x为屏幕宽度的一半,然后self.rect.y为整个屏幕的高度,这样就会产生底部居中的效果) 书上这句话是起作用了,此时的self.rect.x 应该大致等于屏幕的宽度的一半,飞船也是居中状态的,但是由于主程序中while True一开始就一直循环,所以一开始运行程序时就会立马走到4代码执行updateShip方法 然后由于3代码是在两个if语句之外的所以不用判断就会立即执行self.rect.x = self.x 此时由于没有触发任何事件,所以self.x没有被重新赋值所以 还是0 ,3代码就把self.x = 0 赋值给了self.rect.x (就是这里覆盖了2代码给他赋予的居中的值,由于代码运行速度很快瞬间就替换了居中的值,所以就会出现一开始靠边的效果), x=0 所以飞船在最左边

而1放在2后面能成功的原因就是刚刚上面说的2中的midbottom代码赋值能改变self.rect.x的值让其变为屏幕宽度的一半,那么此时在执行1代码self.x = float(self.rect.x) 中的self.rect.x就不在是0 而是屏幕宽度的一半,self.x的值就变为了屏幕宽度的一半,所以此时再运行代码就和上面情况一样但是不同的是self.x的值不再是0 而是屏幕宽度的一半所以进行3代码时赋值的不是0 而是屏幕一半k宽度从而居中

 加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值