2013-05-01 23 views
0

我正在用Java設計一款二十一點遊戲。單個jframe上的多個圖像和按鈕

我已經完成了爲遊戲編寫邏輯,但在設計GUI時遇到問題。

我有一個函數,每次玩家想要點擊都會產生隨機數。

我已經拿起二十一點表的圖像,並且正在考慮在指定位置顯示卡片圖像。我也想要一個Hit和Stand按鈕,在二十一點桌的圖像上。

我有一段代碼顯示經銷商和玩家的初始手牌,但問題是我無法想到每次生成新牌時更新Jframe的代碼。此外,按鈕不顯示。那是我尋找幫助的地方。我是使用Jframes,Jpannels等的初學者。這就是我所擁有的。

public class Check extends Panel { 
    BufferedImage img; 
    BufferedImage img1; 
    BufferedImage img2; 
    BufferedImage img3; 
    BufferedImage img4; 

public Check() 
{ 

try { 
img = ImageIO.read(newFile("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\table.jpg")); 

} catch (IOException e) { 
} 

try { 
int n,j; 
    n=1 + (int)(Math.random() * ((4 - 1) + 1)); 
    j=1 + (int)(Math.random() * ((13 - 1) + 1)); 



img1 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\"+n+"-"+j+".gif")); 

} catch (Exception e) { 

} 
try { 
    int n,j; 
    n=1 + (int)(Math.random() * ((4 - 1) + 1)); 
    j=1 + (int)(Math.random() * ((13 - 1) + 1)); 

img2 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\"+n+"-"+j+".gif")); 
    } catch (Exception e) { 

    } 

try { 
    int n,j; 
    n=1 + (int)(Math.random() * ((4 - 1) + 1)); 
    j=1 + (int)(Math.random() * ((13 - 1) + 1)); 

img3 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\"+n+"-"+j+".gif")); 

} catch (Exception e) { 

} 

try { 

img4 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\rear.gif")); 
    } catch (Exception e) { 

} 


} 


public void paint(Graphics g) { 
g.drawImage(img, 0, 0, this); 
g.drawImage(img1, 470, 475, this); 
g.drawImage(img2, 510, 475, this); 
g.drawImage(img3, 510, 125, this); 
g.drawImage(img4, 470, 125, this); 


} 

static public void main(String args[]) throws 
Exception { 
JFrame frame = new JFrame("Display image"); 
JButton b = new JButton("HIT"); 
b.setBounds(100,100,110,100); 
b.setVisible(true); 
Panel panel = new Check(); 
panel.add(b); 
frame.getContentPane().add(panel); 
frame.setSize(1024,768); 
frame.setVisible(true); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

} 
+0

最初的圖像是原發的牌。讓其他人留空。將一個動作監聽器放在按鈕上,在聽者的內部,您將新卡片讀入下一張卡片。然後確保重繪。也許這會給你一些線索。 – 2013-05-01 18:37:16

+1

BTW。二十一點不會隨機爲每一張牌發送一張牌。它需要X卡組具有固定值並命令它們進行選擇。一筆交易包括獲得已經處理的下一筆交易。這使得它不再隨機選擇3個俱樂部。 – 2013-05-01 18:39:01

+2

爲什麼'Panel'而不是'JPanel'? – whiskeyspider 2013-05-01 18:41:45

回答

0

你應該叫super.repaint(g)paint方法的第一條語句,使Button可見於Panel

public void paint(Graphics g) { 
super.paintComponent(g); 
... 
} 
+0

我能夠顯示框架上的按鈕。但我如何使用重繪功能? – user2340405 2013-05-05 04:23:53

相關問題