Python中寫一個乒乓球類的遊戲

來源:互聯網
上載者:User

標籤:

最近開始學Python,感覺挺好玩的,既有指令碼語言的靈活性,又有豐富的類庫與物件導向的特點,開發起來很方便。

遊戲的規則和乒乓球一樣,如果妙蛙種子掉地上了就算輸,你可以用藍色的蹺蹺板彈它,使他不落到地面上。

Game Over後可按任意鍵繼續遊戲或選擇退出。

代碼如下:

  1 import sys, pygame  2 from random import *  3 from pygame.locals import *  4 from pygame.font import *  5 class MyPlayer(pygame.sprite.Sprite):  6     def __init__(self, image_file, location, speed):  7         pygame.sprite.Sprite.__init__(self)  8         self.image = pygame.image.load(image_file)  9         self.rect = self.image.get_rect() 10         self.rect.left, self.rect.top = location 11         self.speed = speed 12         self.status = True 13     def move(self): 14         self.rect = self.rect.move(self.speed) 15         if self.rect.left < 0 or self.rect.right > width: 16             self.speed[0] = -self.speed[0] 17         if self.rect.top < 0:  18             self.speed[1] = -self.speed[1] 19         if self.rect.bottom > height: 20             #Game over 21             self.status = False 22 class Reflector(pygame.sprite.Sprite): 23     def __init__(self, image_file, location, speed): 24         pygame.sprite.Sprite.__init__(self) 25         self.image = pygame.image.load(image_file) 26         self.rect = self.image.get_rect() 27         self.rect.left, self.rect.top = location 28         self.speed = speed 29     def move(self): 30         self.rect = self.rect.move(self.speed) 31         if self.rect.left < 0 or self.rect.right > width: 32             self.speed[0] = -self.speed[0] 33         if self.rect.top < 0 or self.rect.bottom > height: 34             self.speed[1] = -self.speed[1] 35 def animate(players): 36     screen.fill([255,255,255]) 37     for player in players: 38         player.move() 39     for player in players:     40         players.remove(player) 41         if pygame.sprite.spritecollide(player,players,False): 42             player.speed[0] = -player.speed[0] 43             player.speed[1] = -player.speed[1] 44         players.add(player) 45         player.move() 46         screen.blit(player.image,player.rect) 47     pygame.display.flip() 48     pygame.time.delay(10) 49  50 pygame.init() 51 size = width,height = 640,480 52 screen = pygame.display.set_mode(size) 53 screen.fill([255,255,255]) 54 pygame.display.set_caption("MiaoWa Game") 55 def play(): 56     img_player = "C:\Users\dswu\Desktop\player.png" 57     players = pygame.sprite.Group() 58     for row in range(0,1): 59         for column in range(0,1): 60             playerLocation = [column*250+10,row*250+10] 61             playerSpeed = [choice([-2,2]), choice([-2,2])] 62             player = MyPlayer(img_player, playerLocation, playerSpeed) 63             players.add(player) 64     img_ref_path = "C:\Users\dswu\Desktop\Reflector.png" 65     ref_pos = [0,464] 66     ref_speed = [0,0] 67     reflector = Reflector(img_ref_path, ref_pos, ref_speed) 68     players.add(reflector) 69     running = True 70     while running: 71         key_pressed = pygame.key.get_pressed() 72         for event in pygame.event.get(): 73             if event.type == pygame.QUIT: 74                 game.quit() 75             if event.type == KEYDOWN: 76                 if event.key == K_LEFT:   77                     ref_speed[0] = -2 78                 elif event.key == K_RIGHT: 79                     ref_speed[0] = +2 80         animate(players) 81         if player.status == False: 82             running = False 83     final_text = "Game Over!" 84     ft_font = pygame.font.Font(None, 100) 85     ft_surf = ft_font.render(final_text, 1, (0,0,0)) 86     screen.blit(ft_surf, [screen.get_width()/2 - ft_surf.get_width()/2, 100]) 87     tip_text = "Type any key to continue" 88     tip_font = pygame.font.Font(None, 50) 89     tip_surf = tip_font.render(tip_text, 1, (0,0,0)) 90     screen.blit(tip_surf, [screen.get_width()/2 - tip_surf.get_width()/2, 200]) 91     pygame.display.flip() 92     keepOn = True 93     while keepOn: 94         key_pressed = pygame.key.get_pressed() 95         for event in pygame.event.get(): 96             if event.type == pygame.QUIT: 97                 pygame.quit() 98             if event.type == KEYDOWN: 99                 play()100 play()

主要是通過pygame.sprite.Sprite類實現碰撞的監控,通過事件的捕捉及判斷實現這種彈力球類的遊戲,其中涉及到文字在介面上的顯示,遊戲中的迴圈控制,以及重新開始遊戲等。

把上面這段代碼貼到你的IDLE中,找到下面這兩行替換成你機器中的圖片路徑,按F5就可以運行了。

img_player = "C:\Users\dswu\Desktop\player.png"img_ref_path = "C:\Users\dswu\Desktop\Reflector.png"

由於比較簡單,看看代碼運行一下應該就差不多明白了,如果有不明白的地方請給我留言,方便一起學習與進步。

平時都線上,歡迎交流。

Python中寫一個乒乓球類的遊戲

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.