<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 擊落敵艦 子彈擊中敵艦,我們可以使用 `pygame.sprite.groupcollide`方法來檢測。我們向Main.py文件的按鍵控制區下增加代碼: ``` # 子彈擊毀敵艦 bullet_collide_dic = pygame.sprite.groupcollide(bullet_sprites, enemy_sprites, True, True) for bullet in bullet_collide_dic: print(bullet, bullet_collide_dic[bullet]) ``` ## 敵艦撞機 在游戲開始的時候,我們需要讓plane位于screen的底部: ``` # 飛機位于舞臺底部 self.rect.x = self.bg_size[0] / 2 self.rect.y = self.bg_size[1] - self.rect.height ``` 敵艦裝機和子彈擊毀敵艦類似,我們在Main.py里增加代碼 ``` if pygame.sprite.spritecollideany(plane, enemy_sprites) is not None: print('killed') running = False ``` 當飛機被擊落后,游戲就結束了。因此,我們把 running 設置為False。此時游戲效果如下: ![](https://adatech-1256165843.cos.ap-chengdu.myqcloud.com/20181022073214.png) ## 批量化出現敵艦 到目前為止,敵艦被撞擊后就都沒了。我們需要讓敵艦減少一定數量后就再增加一些敵艦。 首先,我們把初始化敵艦的代碼改為一個函數: ``` def init_enemy(size): for i in range(size): enemy = Enemy((random.randrange(0, WIDTH), random.randrange(0, 50))) enemy_sprites.add(enemy) all_sprites.add(enemy) # 初始化敵艦 init_enemy(ENEMY_SIZE) ``` 在子彈擊毀敵艦后,我們判斷敵艦數量是否小于min_size,如果小于這個數字,就再初始化一次敵艦: ``` # 增加敵艦 if len(enemy_sprites) <= ENEMY_MIN_SIZE: init_enemy(ENEMY_SIZE - len(enemy_sprites)) ``` 此時,游戲效果如下: ![](https://adatech-1256165843.cos.ap-chengdu.myqcloud.com/20181022073309.png) ## 碰撞檢測總結 在sprite里,有三個碰撞檢測方法:`pygame.sprite.groupcollide(bullet_sprites, enemy_sprites, True, True)` 兩個group是否發生碰撞;`pygame.sprite.spritecollideany(plane, enemy_sprites)` 一個sprite是否碰到一個group里的任何一個sprite;`pygame.sprite.spritecollide(plane,enemy_sprites,True)`獲取一個plane碰到group里的所有sprite。 可以發現,經過pygame的封裝。碰撞檢測變得非常簡單。在我們的游戲開發里,非經常用到各種各樣的角色碰撞。這是游戲的核心。 下節課,我們來記錄一下游戲的得分,并給我們的飛機和敵艦增加些生命值,讓游戲更好玩。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看