用pygame實現打飛機游戲-5-發射子彈


  1 #coding=utf-8
  2 import pygame
  3 #導入pygame模塊
  4 from pygame.locals import *
  5 #導入檢測鍵盤的子模塊
  6 class AircraftCoordinate(object):
  7     def __init__(self,screen):
  8         #設置飛機默認的位置
  9         self.x = 250
 10         self.y = 600
 11         self.screen =screen
 12         #設置要顯示的內容的窗口
 13         self.imagePath = "./feiji/hero.gif"
 14         self.aircraftImageFile = pygame.image.load(self.imagePath).convert()
 15         self.aircraftBullet = []
 16         #在默認值中定義一個aircraftBullet列表
 17     def display(self):
 18         self.screen.blit(self.aircraftImageFile,(self.x,self.y))
 19 
 20         for bullet in self.aircraftBullet:
 21             bullet.display()
 22             bullet.move()
 23         #無限顯示子彈,即按空格就顯示子彈
 24     def moveLeft(self):
 25         self.x -= 20
 26     def moveRight(self):
 27         self.x += 20
 28     def moveUp(self):
 29         self.y -= 20
 30     def moveDown(self):
 31         self.y += 20
 32     def shoot(self):
 33         newBullet = BulletCoordinate(self.x,self.y,self.screen)
 34         #定義一個newBullet變量,傳x,y,screen到BulletCoordinate類中
 35         self.aircraftBullet.append(newBullet)
 36         #在aircraftBullet中創建新子彈
 37 class BulletCoordinate(object):
 38      def __init__(self,x,y,screen):
 39          #定義默認值,接收從飛機類中傳過來的參數
 40          self.x = x+40
 41          self.y = y-20
 42          self.screen = screen
 43          self.imagePath = "./feiji/bullet-3.gif"
 44          self.bulletImageFile = pygame.image.load(self.imagePath).convert()
 45      def move(self):
 46          self.y -= 0.5
 47      def display(self):
 48          self.screen.blit(self.bulletImageFile,(self.x,self.y))
 49      
 50 
 51 
 52 if __name__ == '__main__':
 53 #__name__變量,判斷該模塊是作為腳本被執行,還是被調用,當直接執行的時候,就是main,在被別人調用的時候,就是name
 54     screen = pygame.display.set_mode((480,980),0,32)
 55 #設置屏幕,0,32是默認值
 56     bgImageFile = './feiji/background.png'
 57 #導入圖片
 58     background = pygame.image.load(bgImageFile).convert()
 59 #背景用background保存
 60     aircraft = AircraftCoordinate(screen)
 61     #aircraftImageFile =  './feiji/hero.gif'
 62     #導入飛機圖片
 63     #aircraft = pygame.image.load(aircraftImageFile).convert()
 64     #飛機圖用aircraft保存
 65 
 66 while True:
 67     screen.blit(background,(0,0))
 68     #設置背景在屏幕的坐標,0.0是左上角的坐標。
 69     #screen.blit(aircraft,(x,y))
 70     #設置飛機在屏幕的坐標
 71 
 72     aircraft.display()
 73     for event in pygame.event.get():
 74         #在發生的事件當中循環,意思可以等同於獲取所有的鍵盤操作
 75         if event.type == QUIT:
 76             #判斷是否是按下了關閉鍵
 77             print("exit")
 78             exit()
 79             #退出程序
 80         elif event.type ==KEYDOWN:
 81             #判斷是否按下了按鍵
 82             if event.key == K_a or event.key == K_LEFT:
 83             #判斷是否按下了a鍵或者左鍵
 84                 print('')
 85                 aircraft.moveLeft()
 86             elif event.key == K_d or event.key == K_RIGHT:
 87             #判斷是否按下了d鍵或者右鍵
 88                 print('')
 89                 aircraft.moveRight()
 90             elif event.key == K_w or event.key == K_UP:
 91             #判斷是否按下了w鍵或者上鍵
 92                 print('')
 93                 aircraft.moveUp()
 94             elif event.key == K_s or event.key == K_DOWN:
 95             #判斷是否按下了s鍵或者下鍵
 96                 print('')
 97                 aircraft.moveDown()
 98             elif event.key == K_SPACE:
 99             #判斷是否按下了空格鍵
100                 print('射子彈')
101                 aircraft.shoot()
102 
103     pygame.display.update()
104     #更新屏幕

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM