Python 编程从入门到实践 第十二章 飞船开始游戏时靠着边界的问题解决办法
注:圖中標(biāo)識的1,2,3,4 就是所指向的那一行代碼,上面是本人的正確代碼
解決辦法:書上的代碼內(nèi)容順序是1代碼在2代碼的前面,其實(shí)只要把1代碼放到2代碼后面就可以解決靠邊的問題
飛船初始靠邊原因:1在2前面 那么執(zhí)行順序就是 先執(zhí)行1 將float(self.rect.x)的值賦值給self.x,由于剛開始self.rect.x默認(rèn)值是0,所以此時self.x = 0,然后再運(yùn)行2代碼(self.rect.midbottom = self.screen_rect.midbottom)執(zhí)行這行代碼就是為了讓飛船居中,self.rect.midbottom的值其實(shí)本質(zhì)就是設(shè)置self.rect.x和self.rect.y(就像設(shè)置self.rect.x為屏幕寬度的一半,然后self.rect.y為整個屏幕的高度,這樣就會產(chǎn)生底部居中的效果)?書上這句話是起作用了,此時的self.rect.x 應(yīng)該大致等于屏幕的寬度的一半,飛船也是居中狀態(tài)的,但是由于主程序中while True一開始就一直循環(huán),所以一開始運(yùn)行程序時就會立馬走到4代碼執(zhí)行updateShip方法 然后由于3代碼是在兩個if語句之外的所以不用判斷就會立即執(zhí)行self.rect.x = self.x 此時由于沒有觸發(fā)任何事件,所以self.x沒有被重新賦值所以 還是0 ,3代碼就把self.x = 0 賦值給了self.rect.x (就是這里覆蓋了2代碼給他賦予的居中的值,由于代碼運(yùn)行速度很快瞬間就替換了居中的值,所以就會出現(xiàn)一開始靠邊的效果), x=0 所以飛船在最左邊
而1放在2后面能成功的原因就是剛剛上面說的2中的midbottom代碼賦值能改變self.rect.x的值讓其變?yōu)槠聊粚挾鹊囊话?#xff0c;那么此時在執(zhí)行1代碼self.x = float(self.rect.x) 中的self.rect.x就不在是0 而是屏幕寬度的一半,self.x的值就變?yōu)榱似聊粚挾鹊囊话?#xff0c;所以此時再運(yùn)行代碼就和上面情況一樣但是不同的是self.x的值不再是0 而是屏幕寬度的一半所以進(jìn)行3代碼時賦值的不是0 而是屏幕一半k寬度從而居中
?加油!
總結(jié)
以上是生活随笔為你收集整理的Python 编程从入门到实践 第十二章 飞船开始游戏时靠着边界的问题解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 名字由来
- 下一篇: CC00045.elasticsearc