2013-11-04 63 views
0

我想翻個人卡,當我點擊他們。在我點擊所有牌的同時翻轉的那一刻。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

當您按下鼠標按鈕時,您正在翻轉所有卡片。 您必須檢查鼠標位置是否與卡片相交併按下鼠標,如果是,則翻轉該卡片。 製作鼠標座標的方法mouseX()和mouseY()。 而只是添加如果(鼠標位置相交卡):

public void mousePressed() { 
    for (int i = 0; i < 6; i++) { 
     if(mouseX() >= cards[i].x && mouseX() <= cards[i].x+cards[i].width && mouseY() >= cards[i].y && mouseY() <= cards[i].y+card[i].height) { 
      cards[i].flip(); 
     } 
    } 
} 
+0

你真棒。非常非常感謝你。它完美地工作。 – AliAli7

+0

如果我的回答真的對你有幫助,將它設置爲接受的答案或將其設置爲有用的答案會很好。謝謝! –

1

那是因爲你環形槽的每一張牌,當你按下一個卡。

public void mousePressed() { 
    for (int i = 0; i < 6; i++) { 
     cards[i].flip(); 
    } 
} 

嘗試定義您點擊哪張卡並僅對該卡使用翻蓋方法。

1

您循環使用mousePressed方法中的所有卡並翻轉它們。你期望會發生什麼?

我想你想檢查用戶點擊的位置,然後翻轉位於該位置的卡。

1

您需要獲得鼠標事件在你的mousePressed()方法,這樣就可以判斷卡已被點擊的,因此您可以將其翻轉。 嘗試在您的MemoryGame類中實現java.awt.MouseListener接口。