PHP前端开发

分享一个pygame 弹力球的实现实例

百变鹏仔 3小时前 #Python
文章标签 弹力

期望:

1.球体接触到框体后反弹

2.设置速度按键,按下后改变球体速度、颜色状态

具体实现:

 1 import pygame 2  from pygame.locals import * 3  import sys, random 4  5  6 class Circle(object): 7      #   设置Circle类属性 8     def __init__(self): 9          self.vel_x = 110         self.vel_y = 111          self.radius = 2012          self.pos_x, self.pos_y = random.randint(0, 255), random.randint(0, 255)13          self.width = 014         self.color = 0, 0, 015 16      #   球体颜色速度改变方法17     def change_circle(self, number):18          self.color = random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)19          #   防止球体速度方向发生改变20         if self.vel_x < 0:21              self.vel_x = -number22         else:23             self.vel_x = number24          if self.vel_y < 0:25             self.vel_y = -number26         else:27              self.vel_y = number28          #   self.vel_x, self.vel_y = number, number  如果仅此句,速度方向会发生改变    def circle_run(self):31         #   防止球体超出游戏界面框体32          if self.pos_x > 580 or self.pos_x < 20:33             self.vel_x = -self.vel_x     if self.pos_y > 480 or self.pos_y < 20:36             self.vel_y = -self.vel_y37          self.pos_x += self.vel_x38         self.pos_y += self.vel_y39          pos = self.pos_x, self.pos_y40          ygame.draw.circle(screen, self.color, pos, self.radius, self.width)41 42 pygame.init()43  screen = pygame.display.set_mode((600, 500))44  #   Circle实例45 circle1 = Circle()46 47 while True:48      for event in pygame.event.get():49         if event.type == QUIT:50              sys.exit()51         elif event.type == KEYUP:52              if event.key == pygame.K_1:53                  circle1.change_circle(1)54              elif event.key == pygame.K_2:55                  circle1.change_circle(2)56              elif event.key == pygame.K_3:57                  circle1.change_circle(3)58              elif event.key == pygame.K_4:59                  circle1.change_circle(4)60 61      screen.fill((0, 0, 100))62 63      circle1.circle_run()64 65      pygame.display.update()