<address id="bjr5b"><form id="bjr5b"></form></address>

    <form id="bjr5b"></form>

        <address id="bjr5b"><listing id="bjr5b"><meter id="bjr5b"></meter></listing></address>

          <form id="bjr5b"></form>
          400-650-7353

          精品課程

          您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎知識】Pygame的基本使用——使用Sprites(精靈)類

          【Python基礎知識】Pygame的基本使用——使用Sprites(精靈)類

          • 來源:優就業
          • 2021-09-28 09:51:42
          • 閱讀()
          • 分享
          • 手機端入口

          Sprite表示精靈,是計算機圖形學術語,指屏幕上可以移動的任何對象。當玩任何2D游戲時,在屏幕上看到的所有對象都是精靈。精靈可以設置動畫,可以由玩家控制,甚至可以相互交互。

          在游戲循環的更新和渲染部分,需要更新和渲染精靈,但是可以想象,如果游戲中包含大量精靈,那么游戲循環的這些部分可能會變得非常漫長而復雜。

          Pygame為此提供了一個很好的解決方案:Sprite Group (精靈組)。

          創建一個精靈組來容納游戲中所有的精靈:

          1. all_sprites = pygame.sprite.Group() 

          現在可以通過在游戲循環中添加以下內容來利用該精靈組:

          1. # 更新游戲 
          2. all_sprites.update() 
          3.  
          4. # 渲染 
          5. screen.fill(WHITE) 
          6. all_sprites.draw(screen) 

          對于創建的每個精靈,只需確保將其添加到all_sprites精靈組中,它將自動在游戲窗口上繪制并在每次循環中進行更新。

          (1)創建精靈

          現在開始創建第一個精靈。在Pygame中,精靈是對象。首先在template.py中定義精靈類Player,類中定義__init__()方法,其中每個精靈都必須有兩個屬性,分別是image(圖像)和rect(矩形),并將其初始化:

          1. class Player(pygame.sprite.Sprite):   # 繼承pygame中的Sprite類 
          2.     def __init__(self): 
          3.         pygame.sprite.Sprite.__init__(self
          4.         self.image = pygame.Surface((3030)) 
          5.         self.image.fill(BLUE) 
          6.         self.rect = self.image.get_rect() 
          7.         self.rect.centerx = WIDTH / 2 
          8.         self.rect.centery = HEIGHT - 30 

          其中,定義了圖像屬性——只是創建了一個簡單的30*30的正方形,并用藍色填充。還定義了矩形屬性,get_rect()用于查看圖像并計算將其包圍的矩形。在Pygame中,可以使用矩形來跟蹤對象的坐標,也可以使用矩形將對象放置在游戲窗口上的任意位置。

          再創建第二個精靈,這是一個50*50的正方形,并用紅色填充:

          1. class Player1(pygame.sprite.Sprite): 
          2.     def __init__(self): 
          3.         pygame.sprite.Sprite.__init__(self
          4.         self.image = pygame.Surface((5050)) 
          5.         self.image.fill(RED) 
          6.         self.rect = self.image.get_rect() 
          7.         self.rect.centerx = WIDTH / 2 
          8.         self.rect.centery = HEIGHT / 2 

          然后分別創建Player類的實例player和Player1類的實例player1,還需要將player和player1添加到all_sprites精靈組中:

          1. all_sprites = pygame.sprite.Group() 
          2. player = Player() 
          3. player1 = Player1() 
          4. all_sprites.add(player, player1) 

          最后進行渲染部分,在游戲循環的“screen.fill(WHITE)”代碼下面添加如下代碼:

          1. all_sprites.draw(screen) 

          運行結果如圖1所示。

          圖1 創建精靈的運行結果

          (2)移動精靈

          游戲循環顯示每一幀,如果需要移動精靈,那么需要在精靈類Player中添加update()方法來更新精靈的位置:

          1. def update(self): 
          2.     self.rect.x += 3 

          上述代碼的update()方法很簡單,就是使精靈矩形的x坐標增加3個像素,即向游戲窗口右邊移動3個像素。每次游戲循環,都會調用update()方法,精靈會一直右移。但是這樣有個缺點,當精靈移動到游戲窗口最右邊時,就會消失不見?梢愿膭觰pdate()方法的代碼,使得當精靈移動到最右邊時,回到最左邊繼續移動:

          1. def update(self): 
          2.     self.rect.x += 3 
          3.     if self.rect.left > WIDTH: 
          4.         self.rect.right = 0 

          同樣,在Player1類中添加update()方法,使精靈矩形向游戲窗口左邊移動2個像素,當精靈移動到最左邊時,回到最右邊繼續移動:

          1. def update(self): 
          2.     self.rect.x -= 2 
          3.     if self.rect.left < 0
          4.         self.rect.right = WIDTH 

          all_sprites是一個精靈組,對該組進行更新,就是對組中每一個精靈進行更新。在游戲循環中,精靈組all_sprites調用update()方法,則組中每一個精靈將自動在游戲窗口上繪制并在每次循環中進行更新:

          1. all_sprites.update() 

          運行結果如圖2所示。

          圖2 移動精靈的運行結果

          學習疑問申請解答
          您的姓名
          您的電話
          意向課程
           

          中公優就業

          IT小助手

          掃描上方二維碼添加好友,請備注:599,享學習福利。

          >>本文地址:
          注:本站稿件未經許可不得轉載,轉載請保留出處及源文件地址。

          推薦閱讀

          優就業:ujiuye

          關注中公優就業官方微信

          • 關注微信回復關鍵詞“大禮包”,享學習福利
          QQ交流群
          在線疑問解答
          (加群備注“網站”)
          IT培訓交流群 加入群聊 +
          軟件測試 加入群聊 +
          全鏈路UI/UE設計 加入群聊 +
          Python+人工智能 加入群聊 +
          互聯網營銷 加入群聊 +
          Java開發 加入群聊 +
          PHP開發 加入群聊 +
          VR/AR游戲開發 加入群聊 +
          大前端 加入群聊 +
          大數據 加入群聊 +
          Linux云計算 加入群聊 +
          優就業官方微信
          掃碼回復關鍵詞“大禮包”
          享學習福利

          測一測
          你適合學哪門IT技術?

          1 您的年齡

          2 您的學歷

          3 您更想做哪個方向的工作?

          獲取測試結果
           
          課程資料、活動優惠 領取通道
           
           
          国产成人精品亚洲日本语言
          <address id="bjr5b"><form id="bjr5b"></form></address>

            <form id="bjr5b"></form>

                <address id="bjr5b"><listing id="bjr5b"><meter id="bjr5b"></meter></listing></address>

                  <form id="bjr5b"></form>