Advertisement
Guest User

for jordan

a guest
Apr 2nd, 2020
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. import turtle
  2. import winsound
  3. import os
  4. import json
  5.  
  6. # import sound
  7. relative_dir = os.path.dirname(__file__)
  8. config_file_path = os.path.join(relative_dir, 'config.json')
  9.  
  10. with open(config_file_path) as config_file:
  11. data = json.load(config_file)
  12. bounce_sound = data['bounce_sound']
  13. sound_file = os.path.join(relative_dir, bounce_sound)
  14.  
  15. win = turtle.Screen()
  16. win.title("Pong by R.Gauger")
  17. win.bgcolor(data["backgroundColor"])
  18. win.setup(width=800, height=600)
  19. win.tracer(0)
  20.  
  21. # score
  22. score_a = 0
  23. score_b = 0
  24.  
  25. # Paddle A
  26. paddle_a = turtle.Turtle()
  27. paddle_a.speed(0)
  28. paddle_a.shape("square")
  29. paddle_a.color(data["paddle_a.color"])
  30. paddle_a.shapesize(stretch_wid=5, stretch_len=1)
  31. paddle_a.penup()
  32. paddle_a.goto(-350, 0)
  33.  
  34. # Paddle B
  35. paddle_b = turtle.Turtle()
  36. paddle_b.speed(0)
  37. paddle_b.shape("square")
  38. paddle_b.color(data["paddle_b.color"])
  39. paddle_b.shapesize(stretch_wid=5, stretch_len=1)
  40. paddle_b.penup()
  41. paddle_b.goto(350, 0)
  42.  
  43. # Ball
  44. ball = turtle.Turtle()
  45. ball.speed(0)
  46. ball.shape("square")
  47. ball.color(data["ball.color"])
  48. ball.penup()
  49. ball.goto(0, 0)
  50. ball.dx = .2
  51. ball.dy = -.2
  52.  
  53. # Pen
  54. pen = turtle.Turtle()
  55. pen.speed(0)
  56. pen.color("white")
  57. pen.penup()
  58. pen.hideturtle()
  59. pen.goto(0, 260)
  60.  
  61.  
  62. def scoreUpdate(pen, data):
  63. pen.write("{}: {} {}: {}".format(
  64. data["player_name_a"], score_a, data["player_name_b"], score_b), align="center", font=("Courier", 24, "normal"))
  65. scoreUpdate(pen, data)
  66.  
  67.  
  68. #winner
  69.  
  70. # bounce
  71.  
  72.  
  73. def bounce(winsound):
  74. winsound.PlaySound(sound_file, winsound.SND_ASYNC)
  75.  
  76.  
  77. # Function
  78.  
  79. def paddle_a_up():
  80. y = paddle_a.ycor()
  81. y += 20
  82. paddle_a.sety(y)
  83.  
  84.  
  85. def paddle_a_down():
  86. y = paddle_a.ycor()
  87. y -= 20
  88. paddle_a.sety(y)
  89.  
  90.  
  91. def paddle_b_up():
  92. y = paddle_b.ycor()
  93. y += 20
  94. paddle_b.sety(y)
  95.  
  96.  
  97. def paddle_b_down():
  98. y = paddle_b.ycor()
  99. y -= 20
  100. paddle_b.sety(y)
  101.  
  102.  
  103. # Keyboard binding
  104. win.listen()
  105. win.onkeypress(paddle_a_up, data["paddle_a_up"])
  106. win.onkeypress(paddle_a_down, data["paddle_a_down"])
  107. win.onkeypress(paddle_b_up, data["paddle_b_up"])
  108. win.onkeypress(paddle_b_down, data["paddle_b_down"])
  109.  
  110. # Main Game loop
  111.  
  112. while(score_a < 1 and score_b < 1):
  113. win.update()
  114.  
  115. # Move the ball
  116. ball.setx(ball.xcor() + ball.dx)
  117. ball.sety(ball.ycor() + ball.dy)
  118.  
  119. # Border Checking
  120. if ball.ycor() > 290:
  121. ball.sety(290)
  122. ball.dy *= -1
  123. bounce(winsound)
  124.  
  125. if ball.ycor() < -290:
  126. ball.sety(- 290)
  127. ball.dy *= -1
  128. bounce(winsound)
  129.  
  130. if ball.xcor() > 390:
  131. ball.goto(0, 0)
  132. ball.dx = .2
  133. ball.dx *= -1
  134. score_a += 1
  135. pen.clear()
  136. scoreUpdate(pen, data)
  137.  
  138. if ball.xcor() < -390:
  139. ball.goto(0, 0)
  140. ball.dx = .2
  141. ball.dx *= 1
  142. score_b += 1
  143. pen.clear()
  144. scoreUpdate(pen, data)
  145.  
  146. # Paddle and ball collisions
  147. if ball.xcor() > 340 and ball.xcor() < 350 and (ball.ycor() < paddle_b.ycor() + 40 and ball.ycor() > paddle_b.ycor() - 40):
  148. ball.setx(340)
  149. ball.dx *= -1
  150. ball.dx -= .1
  151. bounce(winsound)
  152.  
  153. if ball.xcor() < -340 and ball.xcor() > -350 and (ball.ycor() < paddle_a.ycor() + 40 and ball.ycor() > paddle_a.ycor() - 40):
  154. ball.setx(-340)
  155. ball.dx *= -1
  156. ball.dx -= .1
  157. bounce(winsound)
  158.  
  159. data[player_name_a] = score_a
  160. data[player_name_b] = score_b
  161.  
  162. while (True):
  163. win.update()
  164. # Pen
  165. pen = turtle.Turtle()
  166. pen.speed(0)
  167. pen.color("white")
  168. pen.penup()
  169. pen.hideturtle()
  170. pen.write("{}: {} {}: {}".format(
  171. data["player_name_a"], score_a, data["player_name_b"], score_b), align="center", font=("Courier", 24, "normal"))
  172. scoreUpdate(pen, data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement