acoolrocket

Circle Orbital Simulation

Feb 21st, 2018
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. import simplegui
  2. import math
  3.  
  4. Width = 500
  5. Height = 500
  6.  
  7. player_sprite = simplegui.load_image("https://i.imglnx.com/fhN53R.png")
  8. sun_sprite_image = simplegui.load_image("https://i.imglnx.com/Vsd87P.png")
  9.  
  10. class player_1:
  11. def __init__(self, circle1_center, circle1_radius, velocity_circle1, acceleration1, bounce_distance1, sun_hitbox_center, sun_hitbox_radius):
  12. self.circle1_center = circle1_center
  13. self.circle1_radius = circle1_radius
  14. self.velocity_circle1 = velocity_circle1
  15. self.acceleration1 = acceleration1
  16. self.bounce_distance1 = bounce_distance1
  17. #Sun integers
  18. self.sun_hitbox_center = sun_hitbox_center
  19. self.sun_hitbox_radius = sun_hitbox_radius
  20.  
  21. def keydown1(self, key):
  22. if key == simplegui.KEY_MAP["left"]:
  23. self.velocity_circle1[0] -= self.acceleration1
  24. elif key == simplegui.KEY_MAP["up"]:
  25. self.velocity_circle1[1] -= self.acceleration1
  26. elif key == simplegui.KEY_MAP["right"]:
  27. self.velocity_circle1[0] += self.acceleration1
  28. elif key == simplegui.KEY_MAP["down"]:
  29. self.velocity_circle1[1] += self.acceleration1
  30.  
  31. def keyup1(self, key):
  32. if key == simplegui.KEY_MAP["left"]:
  33. self.velocity_circle1[0] = 0
  34. elif key == simplegui.KEY_MAP["up"]:
  35. self.velocity_circle1[1] = 0
  36. elif key == simplegui.KEY_MAP["right"]:
  37. self.velocity_circle1[0] = 0
  38. elif key == simplegui.KEY_MAP["down"]:
  39. self.velocity_circle1[1] = 0
  40.  
  41. def draw_sprites(self, canvas):
  42. global Width, Height
  43. canvas.draw_image(player_sprite, [1060/2, 1060/2], [1060, 1060], self.circle1_center, [40, 40])
  44. canvas.draw_image(sun_sprite_image, [3002/2, 3005/2], [3002, 3005], [Width/2,Height/2], [70, 70])
  45.  
  46. def Movement(self):
  47. self.circle1_center[0] = self.circle1_center[0] + self.velocity_circle1[0]
  48. self.circle1_center[1] = self.circle1_center[1] + self.velocity_circle1[1]
  49.  
  50. def Border_collisions(self):
  51. global Width, Height
  52. if self.circle1_center[0] <= self.circle1_radius:
  53. self.circle1_center[0] += self.bounce_distance1
  54. elif self.circle1_center[0] >= Width-self.circle1_radius:
  55. self.circle1_center[0] -= self.bounce_distance1
  56. elif self.circle1_center[1] <= self.circle1_radius:
  57. self.circle1_center[1] += self.bounce_distance1
  58. elif self.circle1_center[1] >= Height-self.circle1_radius:
  59. self.circle1_center[1] -= self.bounce_distance1
  60.  
  61. def sun_orbit_collisions(self):
  62. x = math.pow((self.sun_hitbox_center[0]-self.circle1_center[0]), 2)
  63. y = math.pow((self.sun_hitbox_center[1]-self.circle1_center[1]), 2)
  64. distance = math.sqrt(x + y)
  65. #Collisions:
  66. if self.circle1_radius+self.sun_hitbox_radius >= distance:
  67. self.velocity_circle1[0] = -self.velocity_circle1[0]
  68. self.velocity_circle1[1] = -self.velocity_circle1[1]
  69.  
  70. Call_player_1 = player_1([50, 450], 17, [0,0], 2, 10, [Width/2,Height/2], 70)
  71.  
  72. def draw_sprites(canvas):
  73. global Call_Sprite_1
  74. Call_player_1.draw_sprites(canvas)
  75. Call_player_1.Movement()
  76. Call_player_1.Border_collisions()
  77. Call_player_1.sun_orbit_collisions
  78.  
  79. def keydown(key):
  80. global Call_player_1
  81. Call_player_1.keydown1(key)
  82.  
  83. def keyup(key):
  84. global Call_player_1
  85. Call_player_1.keyup1(key)
  86.  
  87. frame = simplegui.create_frame("Circle Orbital Simulation", Width, Height)
  88.  
  89. frame.set_draw_handler(draw_sprites)
  90.  
  91. frame.set_keydown_handler(keydown)
  92. frame.set_keyup_handler(keyup)
  93.  
  94. frame.start()
Advertisement
Add Comment
Please, Sign In to add comment