Python中實現乒乓球效果

來源:互聯網
上載者:User

標籤:

Python既有指令碼語言的靈活性,又有豐富的類庫與物件導向的特點,開發起來很方便,

 

  遊戲的規則和乒乓球一樣,如果妙蛙種子掉地上了就算輸,你可以用藍色的蹺蹺板彈它,使他不落到地面上,Game Over後可按任意鍵繼續遊戲或選擇退出;

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

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

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

 

 代碼如下:

  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類實現碰撞的監控,通過事件的捕捉及判斷實現這種彈力球類的遊戲,其中涉及到文字在介面上的顯示,遊戲中的迴圈控制,以及重新開始遊戲等。

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

 

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.