2013-05-01 3 views
0

Я разрабатываю игру в блэкджек на Java.несколько изображений и кнопок на одном jframe

Я закончил с написанием логики для игры, но с проблемами проектирования графического интерфейса.

У меня есть функция, которая генерирует случайное число каждый раз, когда игрок хочет попасть.

Я подобрал изображение стола блэкджека и думаю о отображении изображений карт над ним в определенных местах. Я также хочу кнопку «Хит» и «Стенд», снова над изображением стола блэкджека.

В куске кода у меня отображается начальная рука дилера и игрока, но проблема в том, что я не могу вспомнить код для обновления 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

Вы должны назвать super.repaint(g) как первое утверждение paint способа сделать Button к видимому на Panel:

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

Я могу отобразить кнопку на кадре. Но как я могу использовать функцию repaint? – user2340405

Смежные вопросы