graficzna gra pamięciowa Java
Koduję program, który jest grą z pamięcią 4x4. W tych 16 polach będzie para liczb całkowitych od 0-7. Mam już wszystko losowo i poprawnie zakodowane. Teraz próbuję dowiedzieć się, jak sparować kolory z odpowiednimi liczbami całkowitymi za każdym razem, gdy kliknie myszą nad polem.
Tutaj większość kodu. Wiem, że logika dla tej gry nie została jeszcze rozpoczęta, ale teraz bardziej koncentruję się na metodzie displayHit i setColor. Po prostu opublikowałem cały kod, bo może zawiedłem gdzieś indziej.
<code>/*Sets the background of your memory board to black*/ public void init() { setSize(400,400); setBackground(Color.BLACK); buildBoard(4); } /*This is main in java applets You may need to add (not change) a couple things in this method */ public void paint(Graphics canvas) { if(firstRun) //for the first run we need to build our random board { print2DArray(board); buildBoard(4); firstRun = false; } else // once our board is built we will display the game { displayGame(canvas); if (mouseClicked) // if the mouse has been clicked { displayHit(canvas);//find which box the user clicked mouseClicked = false; } } } /* DO NOT change this method determines if the mouse has been pressed sets x and y Mouse to the location of the mouse arrow redraws the image */ public boolean mouseDown(Event e, int x, int y ) { mouseClicked = true; xMouse = x; yMouse = y; repaint(); return true; } /*DO NOT change this method redraws the scene */ public void update ( Graphics g ) { paint(g); } /* pre: none post: build an array that holds the memory values for a board of size x size the board will hold two of each int from 0 to size randomly placed in the array */ public void buildBoard(int s) { int a = 4; for (int row = 0; row < a; row++) for (int column = 0; column < a; column++) { board[row][column] = count++ % 8; } for(int row = 0; row < 4; row++) for(int column = 0; column < 4; column ++) { int x = (int)Math.floor(Math.random()*4); int y = (int)Math.floor(Math.random()*4); temp = board[row][column]; board[row][column] = board[x][y]; board[x][y] = temp; } } public static void print2DArray(int[][] arr) { for (int row = 0; row < arr.length; row++) { for (int col = 0; col < arr[row].length; col++) { System.out.print(arr[row][col] + " "); } System.out.println(); } } public void displayGame(Graphics canvas) { canvas.setColor(Color.WHITE); for(int i =0; i < 400; i+= WIDTH) for(int j = 0; j < 400; j+= WIDTH) canvas.drawRect(i, j, WIDTH, WIDTH); } /* Pre: xMouse and yMouse have been initialized Post: A circle is displayed in the correct box on the screen Currently the circle is displayed at the mouse location */ public void displayHit(Graphics g) { buildBoard(temp); setColor(g); centerHit(xMouse, xMouse); g.fillOval(xMouse, yMouse, 40, 40); } public void setColor(Graphics g) { switch(temp) { case 0: g.setColor(Color.RED); break; case 1: g.setColor(Color.GREEN); break; case 2: g.setColor(Color.BLUE); break; case 3: g.setColor(Color.ORANGE); break; case 4: g.setColor(Color.CYAN); break; case 5: g.setColor(Color.MAGENTA); break; case 6: g.setColor(Color.PINK); break; case 7: g.setColor(Color.YELLOW); break; } } public void centerHit(int centerX, int centerY) { { if ((xMouse > 0) && (xMouse <=100)) xMouse = 33; else if ((xMouse > 100) && (xMouse <=200)) xMouse = 133; else if ((xMouse > 200) && (xMouse <=300)) xMouse = 233; else if ((xMouse > 300) && (xMouse <=400)) xMouse = 333; } { if ((yMouse > 0) && (yMouse <=100)) yMouse = 33; else if ((yMouse > 100) && (yMouse <=200)) yMouse = 133; else if ((yMouse > 200) && (yMouse <=300)) yMouse = 233; else if ((yMouse > 300) && (yMouse <=400)) yMouse = 333; } } </code>
}