Java内存游戏如何翻转单个卡?
当我点击一张卡片时,我试图翻转它们。当我点击所有卡片时,所有卡片同时翻转
这是我的密码。任何帮助都将不胜感激,并提前向您表示感谢
package cards;
import processing.core.PApplet;
public class MemoryGame extends PApplet {
static final int COLS=2;
static final int RAWS=3;
Card[] cards;
public void setup() {
size(RAWS*Card.WIDTH, COLS*Card.HEIGHT); // card witdth 60*9+(10*9) for the gaps=630
cards = new Card[COLS*RAWS];
cards[0] = new Card(11, 0, 0);
cards[1] = new Card(3, Card.WIDTH, 0);
cards[2] = new Card(7, 2 * Card.WIDTH, 0);
cards[3] = new Card(3, 0, Card.HEIGHT);
cards[4] = new Card(7, Card.WIDTH, Card.HEIGHT);
cards[5] = new Card(11, 2 * Card.WIDTH, Card.HEIGHT);
}
public void draw() {
background(204);
for (int i = 0; i < 6; i++) {
cards[i].display(this);
}
}
public void mousePressed() {
for (int i = 0; i < 6; i++) {
cards[i].flip();
}
}
public static void main(String[] args) {
PApplet.main("cards.MemoryGame");
}
}
+++++++++++++++++++++++++++++++++卡类++++++++++++++++++++++++++++++++++++++++++++++++++++++
package cards;
import processing.core.PApplet;
public class Card {
boolean shown=false;
static final int WIDTH = 120;
static final int HEIGHT = 180;
static final int gap = 20;
int value;
float x,y;
Card(int _v, float _x, float _y) {
value = _v;
x = _x;
y = _y;
}
public void display(PApplet applet) {
applet.stroke(0);
applet.strokeWeight(2);
if (shown) {
applet.fill(100);
applet.rect(x, y, WIDTH, HEIGHT,WIDTH/5);
applet.textAlign(applet.CENTER,applet.CENTER);
applet.textSize(WIDTH/2);
applet.fill(0);
applet.text(value,x+WIDTH/2,y+HEIGHT/2);
} else {
applet.fill(255);
applet.rect(x, y, WIDTH, HEIGHT,WIDTH/5);
}
}
public void flip() {
shown=!shown;
}
}
# 1 楼答案
这是因为当你按下一张卡片时,你会在每张卡片上循环
尝试定义您单击的卡,并仅对该卡使用翻转方法
# 2 楼答案
当按下鼠标按钮时,您正在翻转所有卡片。 您必须检查鼠标位置是否与卡相交,并按下鼠标,如果是,则翻转该卡。 生成方法mouseX()和mouseY(),它们为您提供鼠标坐标。 只需添加if(鼠标位置与卡相交):
# 3 楼答案
您需要在mousePressed()方法中获取鼠标事件,这样您就可以确定单击了哪张卡,从而可以翻转它。 尝试实现java。awt。MemoryGame类中的MouseListener接口
# 4 楼答案
在
mousePressed
方法中循环遍历所有卡片并翻转它们。你以为会发生什么我想你要检查用户点击的位置,然后翻转位于该位置的卡