графика памяти игры java
Я кодирую программу, которая представляет собой игру памяти 4х4. В этих 16 полях будет пара целых чисел от 0 до 7. У меня все это уже рандомизировано и правильно закодировано. Теперь я пытаюсь выяснить, как сочетать цвета с соответствующими целыми числами каждый раз, когда мышь щелкает по полю.
Здесь большая часть кода. Я знаю, что логика этой игры еще не началась, но сейчас я больше сосредоточен на методе displayHit и методе setColor. Просто опубликовать весь код, потому что, возможно, я напортачил где-то еще.
<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>
}