2013-05-01 4 views
0

자바로 블랙 잭 게임을 디자인하고 있습니다.하나의 jframe에 여러 개의 이미지와 버튼이 있습니다.

게임 논리를 작성했지만 GUI를 설계하는 데 문제가 있습니다.

나는 플레이어가 명중하기를 원할 때마다 난수를 생성하는 함수를 가지고있다.

블랙 잭 테이블의 이미지를 가져 와서 지정한 위치에 카드 이미지를 표시 할 생각입니다. 나는 또한 블랙 잭 테이블의 이미지 위에 다시 히트 앤 스탠드 버튼을 원한다.

내가 가지고있는 코드 조각에는 딜러와 플레이어의 초기 핸드가 표시되지만 문제는 새로운 카드가 생성 될 때마다 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

초기 이미지가 원래 카드를 처리합니다. 나머지는 비워 둡니다. 버튼에 청취자를 놓고 청취자 안에 새로운 카드를 카드의 다음 장소로 읽습니다. 그런 다음 다시 칠하는지 확인하십시오. 어쩌면 이것은 당신에게 단서를 줄 것입니다. –

+1

BTW. 블랙 잭은 모든 카드를 무작위로 선택하지 않습니다. 고정 된 값을 가진 X 개의 카드를 가져 와서 선택하도록 명령합니다. 거래는 이미 처리 된 다음 거래로 구성됩니다. 이것은 3 개의 클럽을 무작위로 반복해서 선택하지 않도록합니다. –

+2

왜 'JPanel'대신 '패널'이 필요합니까? – whiskeyspider

답변

0

당신은 Panel에 볼에 Button을 할 paint 방법의 첫 번째 문으로 super.repaint(g)를 호출해야합니다 :

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

프레임에 버튼을 표시 할 수 있습니다. 그러나 페인트 기능은 어떻게 사용합니까? – user2340405

관련 문제