Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.46 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import java.io.*;
  5. import javax.sound.sampled.*;
  6. public class Pong {
  7.  
  8. public static void main(String[] args) {
  9. JFrame frame = new JFrame("Pong");
  10.  
  11. frame.setSize(1000, 800);
  12. frame.setResizable(false);
  13. frame.setLocationRelativeTo(null);
  14. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  15.  
  16. PongPanel panel = new PongPanel();
  17. frame.add(panel);
  18. frame.pack();
  19. frame.setLocationRelativeTo(null);
  20. frame.setVisible(true);
  21. frame.setAlwaysOnTop(true);
  22. frame.setAlwaysOnTop(false);
  23.  
  24. }
  25. public static class PongPanel extends JPanel implements ActionListener, KeyListener {
  26.  
  27. boolean wPressed = false;
  28. boolean sPressed = false;
  29. boolean upPressed = false;
  30. boolean downPressed = false;
  31. boolean onePressed = false;
  32. boolean twoPressed = false;
  33. boolean start = true;
  34. boolean vsCPU = false;
  35. boolean spacePressed = false;
  36.  
  37. int LpaddleY = 400;
  38. int RpaddleY = 400;
  39.  
  40. int ballX = 500;
  41. int ballY = 400;
  42. int ballXspeed = 5;
  43. int ballYspeed = 5;
  44.  
  45. int leftScore = 0;
  46. int rightScore = 0;
  47.  
  48. int LpaddleX = 100;
  49. int LpaddleW = 30;
  50. int LpaddleH = 100;
  51. int RpaddleX = 900;
  52. int RpaddleW = 30;
  53. int RpaddleH = 100;
  54. int ballW = 15;
  55. int ballH = 15;
  56.  
  57. Timer timer = new Timer(1000/60 , this);
  58.  
  59. public PongPanel() {
  60. setBackground(new Color(0, 0, 0));
  61.  
  62. setPreferredSize(new Dimension(1000,800));
  63.  
  64. timer.start();
  65. setFocusable(true);
  66. addKeyListener(this);
  67.  
  68. }
  69.  
  70. public boolean intersects(int px1, int py1, int pw, int ph) {
  71. int bx1 = ballX;
  72. int by1 = ballY;
  73. int bx2 = ballX + ballW;
  74. int by2 = ballY + ballH;
  75.  
  76. int px2 = px1 + pw;
  77. int py2 = py1 + ph;
  78.  
  79. if(bx2 > px1 && bx1 < px2 && by2 > py1 && by1 < py2) {
  80. playSound("collision.wav");
  81. return true;
  82. }
  83. else {
  84. return false;
  85.  
  86. }
  87.  
  88. }
  89.  
  90. public void paintComponent(Graphics g) {
  91. super.paintComponent(g);
  92.  
  93. if(start == true) {
  94. g.setColor(new Color(255,255,255));
  95. g.setFont(new Font("IrisUPC", Font.BOLD, 100));
  96. g.drawString("Pong!", 375, 200);
  97. g.setFont(new Font("IrisUPC", Font.BOLD, 75));
  98. g.drawString("By: name", 280, 250);
  99. g.setFont(new Font("IrisUPC", Font.BOLD, 85));
  100. g.drawString("Press 1 To Play vs CPU", 150, 3751);
  101. g.setFont(new Font("IrisUPC", Font.BOLD, 85));
  102. g.drawString("Press 2 To Play vs HUMAN", 150, 450);
  103.  
  104. }
  105. else if(leftScore < 2 && rightScore < 2) {
  106. g.setColor(new Color(255,255,255));
  107. g.fillRect(LpaddleX,LpaddleY,LpaddleW,LpaddleH);
  108. g.fillRect(RpaddleX, RpaddleY, RpaddleW, RpaddleH);
  109. g.fillRect(ballX, ballY, ballW, ballH);
  110. g.setFont(new Font("IrisUPC", Font.BOLD, 100));
  111. g.drawString("" + leftScore, 200, 100);
  112. g.drawString("" + rightScore, 800, 100);
  113. }
  114. else if(leftScore >= 2) {
  115. timer.stop();
  116. g.setFont(new Font("IrusUPC", Font.BOLD, 50));
  117. g.setColor(new Color(255,255,255));
  118. g.drawString("Left Player Wins!", 300, 400);
  119. //if(spacePressed == true) {
  120. // start = true;
  121. }
  122.  
  123. else if(rightScore >= 2) {
  124. timer.stop();
  125. g.setFont(new Font("IrusUPC", Font.BOLD, 50));
  126. g.setColor(new Color(255,255,255));
  127.  
  128. }
  129. }
  130.  
  131. public void actionPerformed(ActionEvent e) {
  132.  
  133. if(start == true) {
  134. if(onePressed == true) {
  135. start = false;
  136. vsCPU = true;
  137.  
  138. }
  139. if(twoPressed == true) {
  140. start = false;
  141.  
  142. }
  143. }
  144.  
  145. if( wPressed == true ) { LpaddleY = LpaddleY - 10; }
  146. if( sPressed == true ) { LpaddleY = LpaddleY + 10; }
  147. if( upPressed == true ) { RpaddleY = RpaddleY - 10; }
  148. if( downPressed == true ) { RpaddleY = RpaddleY + 10; }
  149. if(LpaddleY <= 0) { LpaddleY = 0 ; }
  150. if(LpaddleY + LpaddleH >= 800) { LpaddleY = 800 - LpaddleH; }
  151. if(RpaddleY <= 0) { RpaddleY = 0; }
  152. if(RpaddleY + LpaddleH >= 800) { RpaddleY = 800 - LpaddleH; }
  153.  
  154. if(ballX <= 0) {
  155. ballX = 500;
  156. ballY = 400;
  157. rightScore++;
  158. playSound("score.wav");
  159. try{Thread.sleep(500);} catch (Exception ex) {
  160. }
  161. ballXspeed = 2;
  162. ballYspeed = -7;
  163. }
  164. if(ballX + 25 >= 1000) {
  165. ballX = 500;
  166. ballY = 400;
  167. leftScore++;
  168. playSound("score.wav");
  169. try{Thread.sleep(500);} catch (Exception ex) {
  170. }
  171. ballXspeed = 2;
  172. ballYspeed = -7;
  173. }
  174. if(ballY <= 0) {
  175. ballYspeed = ballYspeed * -1;
  176. }
  177. if(ballY + 25 >= 800) {
  178. ballYspeed = ballYspeed * -1;
  179. }
  180.  
  181. ballX = ballX + ballXspeed;
  182. ballY = ballY + ballYspeed;
  183.  
  184. boolean touchingLeftPaddle = intersects(LpaddleX, LpaddleY, LpaddleW, LpaddleH);
  185. if(touchingLeftPaddle == true) {
  186. ballXspeed = ballXspeed * -1;
  187. ballXspeed++;
  188. if(ballX < LpaddleX + LpaddleW) {
  189. ballX = LpaddleX + LpaddleW;
  190. }
  191. }
  192. boolean touchingRightPaddle = intersects(RpaddleX, RpaddleY, RpaddleW, RpaddleH);
  193. if(touchingRightPaddle == true) {
  194. ballXspeed = ballXspeed * -1;
  195. ballXspeed--;
  196. if(ballX + ballW > RpaddleX) {
  197. ballX = RpaddleX - ballW;
  198. }
  199.  
  200. }
  201. //RpaddleY = ballY - RpaddleH/2 + ballH/2;
  202.  
  203. // Impossible Bot ^
  204.  
  205. //if(RpaddleY > ballY - RpaddleH/2 + ballH/2 && ballX > 250) {RpaddleY -= 12;}
  206. //else if (RpaddleY < ballY - RpaddleH/2 + ballH/2 && ballX > 250) {RpaddleY += 12;}
  207.  
  208. //Possible Bot ^
  209.  
  210. repaint();
  211. }
  212.  
  213. public void keyPressed(KeyEvent e) {
  214. if(e.getKeyCode() == KeyEvent.VK_W) { wPressed = true; }
  215. if(e.getKeyCode() == KeyEvent.VK_S) { sPressed = true; }
  216. if(e.getKeyCode() == KeyEvent.VK_UP) { upPressed = true; }
  217. if(e.getKeyCode() == KeyEvent.VK_DOWN) { downPressed = true; }
  218. if(e.getKeyCode() == KeyEvent.VK_1) { onePressed = true; }
  219. if(e.getKeyCode() == KeyEvent.VK_2) { twoPressed = true; }
  220. if(e.getKeyCode() == KeyEvent.VK_SPACE) { spacePressed = true; }
  221. }
  222.  
  223. public void keyReleased(KeyEvent e) {
  224. if(e.getKeyCode() == KeyEvent.VK_W) { wPressed = false; }
  225. if(e.getKeyCode() == KeyEvent.VK_S) { sPressed = false; }
  226. if(e.getKeyCode() == KeyEvent.VK_UP) { upPressed = false; }
  227. if(e.getKeyCode() == KeyEvent.VK_DOWN) { downPressed = false; }
  228. if(e.getKeyCode() == KeyEvent.VK_1) { onePressed = false; }
  229. if(e.getKeyCode() == KeyEvent.VK_2) { twoPressed = false; }
  230. if(e.getKeyCode() == KeyEvent.VK_SPACE) { spacePressed = true; }
  231. }
  232.  
  233. public void keyTyped(KeyEvent e) {
  234. }
  235.  
  236. public static void playSound(String s) {
  237. try {
  238. File file = new File(s);
  239. AudioInputStream audio = AudioSystem.getAudioInputStream(file);
  240. Clip clip = AudioSystem.getClip();
  241. clip.open(audio);
  242. clip.start();
  243. }
  244. catch (Exception e) {
  245. System.out.println("Can't find file named: " + s);
  246. }
  247. }
  248. }
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement