self.destroy_images.extend([\
pygame.image.load("images/enemy1_down1.png").convert_alpha(), \
pygame.image.load("images/enemy1_down2.png").convert_alpha(), \
pygame.image.load("images/enemy1_down3.png").convert_alpha(), \
pygame.image.load("images/enemy1_down4.png").convert_alpha() \
新增(飛機被摧毀的過程圖)
先設定self.active=true,表示飛機存活,發生碰撞後呼叫毀滅過程
然後呼叫reset函式
if not(delay % 3):
if e2_destroy_index == 0:
enemy2_down_sound.play()
screen.blit(each.destroy_images[e2_destroy_index], each.rect)
e2_destroy_index = (e2_destroy_index + 1) % 4
if e2_destroy_index == 0:
each.reset()
飛機毀滅,先呼叫 e2_destroy_index=0的,然後1,2,3,
呼叫完3後,變為0再呼叫reset
pygame.sprite.spritecolode(me,enemies,false)
碰撞檢測返回的是列表,但這個碰撞檢測的是個矩形,使用者體驗不佳
pygame.mask.from_su***ce(self.image)
pygame.sprite.spritecollide(me, enemies, false, pygame.sprite.collide_mask)
mask標記不透明的部分,檢測不透明部分,這下是完美碰撞了
pygame飛機大戰開發實錄3
通過之前的講解,了解了一些相關原理和基本的控制方法。接下來就可以開始編寫 飛機大戰 了。開始之前,先說一說,為什麼要以物件化程式設計,之前的例子裡的指令碼,都是以過程化編寫,而實際開發則以物件化為主。這裡把飛機移動的指令碼,按物件化重新編寫,右邊是原來的指令碼。乍一看,物件化好像要複雜一些。進一步觀...
pygame飛機大戰4
pygame.mask.from su ce self,image 對的非透明部分做標記 pygame.sprite.spritecollide b,enemies,false,pygame.sprite.collide mask 完美檢測碰撞 me.rect.midtop,子彈生成在飛機的中間的頂...
pygame飛機大戰5
score font.render score s str score true,white render函式把字元字串轉換為su ce物件 true拒絕鋸齒 paused rect.collidepoint event.pos 在paused rect矩形類裡有collidepoint event...