Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. package delli001.proj4;
  2.  
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.event.MouseEvent;
  6. import java.awt.event.MouseListener;
  7.  
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10.  
  11. public class MatchThreeGUI extends JPanel {
  12.  
  13. private static final long serialVersionUID = 1L;
  14.  
  15. public static void main(String[] args) {
  16. JFrame frame = new JFrame("match three");
  17. MatchThreeGUI g = new MatchThreeGUI();
  18. frame.add(g);
  19. frame.setSize(600, 600);
  20. frame.setVisible(true);
  21. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  22. }
  23.  
  24. int drag_x, drag_y;
  25. MatchThree game;
  26.  
  27. int match_height = 100;
  28. int match_width = 100;
  29. int match_x = 50;
  30. int match_y = 500;
  31. PieceRender[][] prenders;
  32.  
  33. Font score_font = new Font("sansserif", Font.BOLD, 16);
  34. Piece selected;
  35.  
  36. int state;
  37.  
  38. MatchThreeGUI() {
  39. game = new MatchThree();
  40. state = 0;
  41.  
  42. prepareRendering();
  43.  
  44. this.addMouseListener(new MouseListener() {
  45.  
  46. @Override
  47. public void mouseClicked(MouseEvent e) {
  48. int x = e.getX() / 50;
  49. int y = e.getY() / 50;
  50. if (game.validLoc(x, y)){
  51. if (state == 0){
  52. selected = game.pieces[y][x];
  53. selected.toggleSelect();
  54. prenders[y][x] = new PieceRender(selected);
  55. state = 1;
  56. }else if (state == 1){
  57. state = 0;
  58. int old_x = selected.x;
  59. int old_y = selected.y;
  60. selected.toggleSelect();
  61. if (game.swapPieces(selected.x,selected.y, x,y)){
  62. //swap successful
  63. prenders[y][x] = new PieceRender (selected);
  64.  
  65. }
  66. prenders[old_y][old_x] = new PieceRender(game.pieces[old_y][old_x]);
  67.  
  68.  
  69. }
  70. repaint();
  71. }else if ((e.getX() > match_x)
  72. && (e.getX() < match_x + match_width) && (e.getY() > match_y)
  73. && (e.getY() < match_y + match_height)){
  74. game.markHorizontalMatches();
  75. game.markVerticalMatches();
  76. game.updateBoard();
  77. prepareRendering();
  78. repaint();
  79. }
  80. } // mouse click
  81.  
  82. @Override
  83. public void mouseEntered(MouseEvent arg0) {
  84. } // not used
  85.  
  86. @Override
  87. public void mouseExited(MouseEvent arg0) {
  88. } // not used
  89.  
  90. @Override
  91. public void mousePressed(MouseEvent e) {
  92. int x = e.getX() / 50;
  93. int y = e.getY() / 50;
  94. // if valid, save for later so we can calculate drag amount
  95. if (game.validLoc(x, y)){
  96. drag_x = x;
  97. drag_y = y;
  98.  
  99. }
  100. } // mousePressed
  101.  
  102. @Override
  103. public void mouseReleased(MouseEvent e) {
  104. int x = e.getX() / 50;
  105. int y = e.getY() / 50;
  106.  
  107. //horizontal drag
  108. if (game.validLoc(x, y)){
  109. if (drag_y == y){
  110. int offset = drag_x - x;
  111. if (offset < 0){
  112. offset += MatchThree.width;
  113. }
  114. game.horizontalRotate(y, offset);
  115. for (int i = 0; i < MatchThree.width; i++){
  116. prenders[y][i] = new PieceRender (game.pieces[y][i]);
  117. } // redrawing row
  118. repaint();
  119. }//checking for horizontal
  120. }
  121. if(game.validLoc(x, y)){
  122. if (drag_x == x){
  123. int offset = drag_y - y;
  124. if (offset < 0){
  125. offset += MatchThree.height;
  126. }
  127. game.verticalRotate(x,offset);
  128. for(int i = 0; i < MatchThree.height; i++){
  129. prenders[i][x] = new PieceRender (game.pieces[i][x]); //fixed the vertical glitch by switching i and x
  130. }
  131. repaint();
  132. }
  133. }
  134. // valid location
  135.  
  136. } // mouse release
  137.  
  138. }); // mouse listener
  139.  
  140. } // constructor
  141.  
  142. void doRendering(Graphics g) {
  143. // TODO: paint the pieces
  144. for (int y = 0; y < prenders.length; y++){
  145. for (int x = 0; x < prenders[y].length; x++){
  146. prenders[y][x].paint(g);
  147. }
  148. }
  149. } // do Rendering
  150.  
  151. public void paintComponent(Graphics graphics) {
  152.  
  153. super.paintComponent(graphics);
  154.  
  155. // TODO: paint game
  156. graphics.setColor(java.awt.Color.DARK_GRAY);
  157. graphics.fillRect(0,0,600,600);
  158.  
  159. // pieces
  160. doRendering (graphics);
  161.  
  162. // match button
  163. graphics.setColor(java.awt.Color.WHITE);
  164. graphics.fillRect(match_x, match_y, match_width, match_height);
  165. graphics.setFont(score_font);
  166. graphics.drawString("Score: " + game.score + " Moves: " + game.moves, 350, 550);
  167. graphics.setColor(java.awt.Color.BLACK);
  168. graphics.drawString("Match",75, 550);
  169. }
  170.  
  171. void prepareRendering() {
  172. // TODO: match drawings to underlying data
  173.  
  174. prenders = new PieceRender[MatchThree.height][MatchThree.width]; //allocates space for 2d array
  175. for (int y = 0; y < MatchThree.height; y++){
  176. for (int x = 0; x < MatchThree.width; x++){ //off by one error NEED TO FIX
  177. prenders[y][x] = new PieceRender(game.pieces[y][x]);
  178. }
  179. }
  180.  
  181. } // prepare Rendering
  182.  
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement