Python: Python中写一个乒乓球类的游戏

python scott 192℃ 0评论

最近开始学Python,感觉挺好玩的,既有脚本语言的灵活性,又有丰富的类库与面向对象的特点,开发起来很方便。

Python: Python中写一个乒乓球类的游戏

Python: Python中写一个乒乓球类的游戏

游戏的规则和乒乓球一样,如果妙蛙种子掉地上了就算输,你可以用蓝色的跷跷板弹它,使他不落到地面上。

Game Over后可按任意键继续游戏或选择退出。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  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:UsersdswuDesktopplayer.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:UsersdswuDesktopReflector.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就可以运行了。

1
2
img_player = " C:UsersdswuDesktopplayer.png >"
img_ref_path  = " C:UsersdswuDesktopReflector.png >"

由于比较简单,看看代码运行一下应该就差不多明白了,如果有不明白的地方请给我留言,方便一起学习与进步。

平时都在线,欢迎交流。

原文:http://www.cnblogs.com/LanTianYou/p/4544614.html

转载请注明:osetc.com » Python: Python中写一个乒乓球类的游戏

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址