记忆游戏图形java

我正在编写一个4×4内存游戏的程序。 在这16个盒子中将是一对0-7的整数。 我已将所有这些已经随机化并正确编码。 现在我想弄清楚每次鼠标点击盒子时如何将颜色与相应的整数配对。

这里大部分是代码。 我知道这个游戏的逻辑尚未开始,但我现在更专注于displayHit方法和setColor方法。 只是张贴整个代码,因为我可能搞砸了其他地方。

/*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  0) && (xMouse  100) && (xMouse  200) && (xMouse  300) && (xMouse  0) && (yMouse  100) && (yMouse  200) && (yMouse  300) && (yMouse <=400)) yMouse = 333; } } 

}

从你的代码中可以看出你在那里做了什么,

但我想你应该尝试以下方法:

1)确保你有一个组件说我们称之为cmp。

2)确保每次单击该框时都会调用cmp.repaint()

3)确保从cmp的paintComponent(Graphics g)中调用displayHit(g)函数

那应该做的

此外,温度被操纵在哪里?

这应该是有帮助的:

 public class ColorChanger extends JFrame implements MouseListener { private Color c = Color.black; private JPanel p = new JPanel () { public void paintComponent(Graphics g) { g.setColor(c ); g.drawRect(100, 100, 100, 100); } }; public ColorChanger() { setDefaultCloseOperation(EXIT_ON_CLOSE); setPreferredSize(new Dimension(1024, 700)); addMouseListener(this); this.getContentPane().add(p); pack(); setVisible(true); } public static void main (String arg[]) { SwingUtilities.invokeLater(new Runnable() { public void run() { new ColorChanger(); } }); } @Override public void mouseClicked(MouseEvent arg0) { randomizeColor(); p.repaint(); } private void randomizeColor() { switch ((int)(3*Math.random())) { case 0:c=Color.red;return; case 1:c=Color.blue;return; case 2:c=Color.green;return; } } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } }