Advertisement
SamGauths

Pong Game in Dragon Language

Apr 12th, 2020
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. select "graphic"
  2. select "robot"
  3. select "std"
  4. select "math"
  5.  
  6. // CONSTANTS
  7. WINDOW_WIDTH = 640
  8. WINDOW_HEIGHT = 480
  9. SPEED = 1.3
  10.  
  11. // VARIABLES
  12. posX = (WINDOW_WIDTH/2) - (80/2)
  13. posX_two = (WINDOW_WIDTH/2) - (80/2)
  14. posBallX = posX + (80/2) - (14/2)
  15. posBallY = WINDOW_HEIGHT-40
  16. start = 1
  17. up = 1
  18.  
  19. randomOne = rand() * 4
  20. randomTwo = floor(randomOne)
  21.  
  22. randomWall = rand() * 1
  23. rTop = -1
  24. r_up = -1
  25. l_up = -1
  26. r_down = -1
  27. l_down = -1
  28.  
  29. // FUNCTIONS
  30. func init()
  31. {
  32. posX = (WINDOW_WIDTH/2) - (80/2)
  33. posX_two = (WINDOW_WIDTH/2) - (80/2)
  34. posBallX = posX + (80/2) - (14/2)
  35. posBallY = WINDOW_HEIGHT-40
  36. start = 1
  37. up = 1
  38. }
  39.  
  40. func rectangle(x,y,w,h, R,G,B)
  41. {
  42. color(R,B,G)
  43. frect(x,y,w,h)
  44. }
  45.  
  46. func collBottomPlayer()
  47. {
  48. if(posX < 0)
  49. {
  50. posX += SPEED
  51. }
  52. if(posX > WINDOW_WIDTH - 80)
  53. {
  54. posX -= SPEED
  55. }
  56. }
  57.  
  58. func ball()
  59. {
  60. if(start == 1)
  61. {
  62. posBallX = posX + (80/2) - (14/2)
  63. posBallY = WINDOW_HEIGHT-40
  64. }
  65.  
  66. if(start == 0)
  67. {
  68. if(up == 1)
  69. {
  70. posBallY -= 1
  71.  
  72. if(randomTwo == 0)
  73. {
  74. posBallX -= 2
  75. }
  76. if(randomTwo == 1)
  77. {
  78. posBallX -= 1.5
  79. }
  80. if(randomTwo == 2)
  81. {
  82. posBallX += 2
  83. }
  84. if(randomTwo == 4)
  85. {
  86. posBallX += 1.5
  87. }
  88.  
  89. if(posBallX + 14 > posX_two && posBallX < posX_two + 80 && posBallY < 20 && posBallY > 14)
  90. {
  91. up = 0
  92. rTop = floor(randomOne)
  93. }
  94. if(posBallX + 14 > WINDOW_WIDTH)
  95. {
  96. r_up = floor(randomWall)
  97. if(r_up == 0)
  98. {
  99. randomTwo = 0
  100. }
  101. if(r_up == 1)
  102. {
  103. randomTwo = 1
  104. }
  105. }
  106. if(posBallX < 0)
  107. {
  108. l_up = floor(randomWall)
  109. if(l_up == 0)
  110. {
  111. randomTwo = 2
  112. }
  113. if(l_up == 1)
  114. {
  115. randomTwo = 4
  116. }
  117. }
  118. }
  119. if(up == 0)
  120. {
  121. posBallY += 1
  122.  
  123. if(rTop == 0)
  124. {
  125. posBallX -= 2
  126. }
  127. if(rTop == 1)
  128. {
  129. posBallX -= 1.5
  130. }
  131. if(rTop == 2)
  132. {
  133. posBallX += 2
  134. }
  135. if(rTop == 4)
  136. {
  137. posBallX += 1.5
  138. }
  139.  
  140. if(posBallX + 14 > posX && posBallX < posX + 80 && posBallY < WINDOW_HEIGHT - 10 && posBallY + 14 > WINDOW_HEIGHT - 20)
  141. {
  142. up = 1
  143. }
  144. if(posBallX + 14 > WINDOW_WIDTH)
  145. {
  146. r_down = floor(randomWall)
  147. if(r_down == 0)
  148. {
  149. rTop = 0
  150. }
  151. if(r_down == 1)
  152. {
  153. rTop = 1
  154. }
  155. }
  156. if(posBallX < 0)
  157. {
  158. l_down = floor(randomWall)
  159. if(l_down == 0)
  160. {
  161. rTop = 2
  162. }
  163. if(l_down == 1)
  164. {
  165. rTop = 4
  166. }
  167. }
  168. if(posBallY > WINDOW_HEIGHT)
  169. {
  170. init()
  171. }
  172. }
  173. }
  174. }
  175.  
  176. func draw()
  177. {
  178. rectangle(posBallX,posBallY,14,14, 255,0,0) // ball
  179. rectangle(posX_two,0+10,80,10, 255,255,255) // top player
  180. rectangle(posX,WINDOW_HEIGHT-20,80,10, 255,255,255) // bottom player
  181. }
  182.  
  183. func collisions()
  184. {
  185. collBottomPlayer()
  186. }
  187.  
  188. func update()
  189. {
  190. posX_two = posBallX - (80/2) - (14/2)
  191. ball()
  192. collisions()
  193. repaint()
  194. }
  195.  
  196.  
  197. window("The Invincible Pong Player",WINDOW_WIDTH,WINDOW_HEIGHT)
  198.  
  199. while(true)
  200. {
  201. randomOne = rand() * 3
  202.  
  203. rectangle(0,0,WINDOW_WIDTH,WINDOW_HEIGHT, 0,0,0) // background
  204. key = keypressed()
  205.  
  206. if(key == VK_RIGHT)
  207. {
  208. posX += SPEED // move right
  209. }
  210. if(key == VK_LEFT)
  211. {
  212. posX -= SPEED // move left
  213. }
  214. if(key == VK_UP)
  215. {
  216. if(start = 1)
  217. {
  218. randomTwo = floor(randomOne)
  219. start = 0
  220. }
  221. }
  222.  
  223. draw()
  224. delay(3)
  225. update()
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement