2014-04-10 2 views
-2

저는 초보자이며 1에서 8까지 주사위를 굴리는 프로그램을 만들 필요가 있습니다. Java Netbeans를 사용하여 주사위를 굴릴 수있는 텍스트 상자를 어떻게 추가 할 수 있습니까?더 많은 오이스를 만드는 방법?

public class ToetsJan extends JFrame { 
    public static void main(String args[]){ 
     JFrame frame = new ToetsJan(); 
     frame.setSize(600,400); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setTitle("Dobbelsteen toets"); 
     frame.setContentPane(new TekenPaneel()); 
     frame.setVisible(true); 
    } 
} 

class TekenPaneel extends JPanel { 

    private Dobbelsteen steen1, steen2, steen3; 
    private JButton werpKnop; 

    //constructor 
    public TekenPaneel() { 
     setLayout(null); 

     steen1=new Dobbelsteen(1); 
     steen2=new Dobbelsteen(3); 
     steen3=new Dobbelsteen(5); 

     werpKnop = new JButton(); 
     werpKnop.setText("Gooi!"); 
     werpKnop.setBounds(50,150,70,25); 
     werpKnop.addActionListener(new WerpKnopHandler()); 
     add (werpKnop); 
    } 

    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     steen1.tekenStenen(g); 
     steen1.tekenOgen(g); 
     steen2.tekenStenen(g); 
     steen2.tekenOgen(g); 
     steen3.tekenStenen(g); 
     steen3.tekenOgen(g); 
    } 


    class WerpKnopHandler implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      steen1.gooi(); 
      repaint(); 
     } 
    } 

} 


public class Dobbelsteen{ 
    private int x, y; 


    public Dobbelsteen(int x){ 
     this.x = x; 
     y = 50*x; 
    } 

    public void tekenStenen(Graphics g){ 
     // Teken de dobbelsteen 
     g.setColor(Color.BLACK); 
     g.fillRoundRect((y), 55, 60, 60, 25, 25); 
     g.setColor(Color.WHITE); 
     g.drawRoundRect((y), 55, 60, 60, 25, 25); 
    } 

    public void tekenOgen(Graphics g){  
      int getal = gooi(); 
      if (getal == 1) { 
       g.fillOval((y+25), 80, 8, 8); 
      } 
      else if (getal == 2) { 
       g.fillOval((y+5), 60, 8, 8); 
       g.fillOval((y+45), 100, 8, 8); 
      } 
      else if (getal == 3){ 
       g.fillOval((y+25), 80, 8, 8); 
       g.fillOval((y+5), 60, 8, 8); 
       g.fillOval((y+45), 100, 8, 8); 
      } 
      else if (getal == 4){ 
       g.fillOval((y+5), 60, 8, 8); 
       g.fillOval((y+45), 100, 8, 8); 
       g.fillOval((y+5), 100, 8, 8); 
       g.fillOval((y+45), 60, 8, 8); 
      } 
      else if (getal == 5){ 
       g.fillOval((y+25), 80, 8, 8); 
       g.fillOval((y+5), 60, 8, 8); 
       g.fillOval((y+45), 100, 8, 8); 
       g.fillOval((y+5), 100, 8, 8); 
       g.fillOval((y+45), 60, 8, 8); 
      } 
      else if (getal == 6){ 
       g.fillOval((y+5), 60, 8, 8); 
       g.fillOval((y+45), 100, 8, 8); 
       g.fillOval((y+5), 100, 8, 8); 
       g.fillOval((y+45), 60, 8, 8); 
       g.fillOval((y+5), 80, 8, 8); 
       g.fillOval((y+45), 80, 8, 8); 
      }  
    } 

    public int gooi() { 
     return (int) (6 * Math.random() + 1); 
    } 
} 

답변

1

귀하의 코드 레이아웃이 열차의 잔해였다

3 개 주사위를 굴려 내 코드입니다. 들여 쓰기로 깔끔하고 읽기 쉬운 코드를 작성하십시오. 수업, 변수 및 방법에 영어 이름을 사용하는 것이 좋습니다. 그렇지 않으면 거의 항상 영어로 된 JDK 또는 라이브러리 이름과 함께 읽을 때 혼란 스러울 것입니다.

public class TextDialog extends Dialog implements ActionListener { 

    private static final long serialVersionUID = 1L; 
    private boolean dialogCompleted = false; 
    private Button ok, can; 
    private TextField input; 

    public TextDialog() { 

     super(new Frame(""), "Text dialog", true); 
     setLayout(new FlowLayout()); 
     input = new TextField(15);         
     add(new Label("Input :")); 
     add(input);     
     addOKCancelPanel(); 
     createFrame(); 
     pack(); 
     setVisible(true); 
    } 

    private void addOKCancelPanel() { 

     Panel p = new Panel(); 
     p.setLayout(new FlowLayout()); 
     createButtons(p); 
     add(p); 
    } 

    private void createButtons(Panel p) { 

     p.add(ok = new Button("OK")); 
     ok.addActionListener(this); 
     p.add(can = new Button("Cancel")); 
     can.addActionListener(this); 
    } 

    private void createFrame() { 

     Dimension d = getToolkit().getScreenSize(); 
     setLocation(d.width/4, d.height/3); 
    } 

    public void actionPerformed(ActionEvent ae) { 

     if (ae.getSource() == ok) { 

      dialogCompleted = true; 
      setVisible(false); 
     } else if (ae.getSource() == can) { 

      dialogCompleted = false; 
      setVisible(false); 
     } 
    } 

    public boolean isDialogCompleted() { 
     return dialogCompleted; 
    } 

    public String getInput() { 
     return input.getText(); 
    }  
} 

당신이 주사위의 수를 보유 할 수있는 자료 구조를 필요로 주사위의 임의의 수를 설정하려면 :

는 다음과 같은 코드를 사용할 수있는 텍스트 대화 상자를 표시합니다. 더 나는 JAVA와 안돼서하지

private List<Dobbelsteen> dice; 

public TekenPaneel() { 

    TextDialog dialog = new TextDialog(); 
    int numberOfDice; 
    if (dialog.isDialogCompleted()) { 
     numberOfDice = Integer.parseInt(dialog.getInput()); 
    } 
    else { 
     // use a default if the user cancels the input 
     numberOfDice = 2; 
    } 
    dice = new ArrayList<Dobbelsteen>(); 
    int x = 1; 
    for(int i = 1; i < numberOfDice; i++) { 
     dice.add(new Dobbelsteen(x)); 
     x = x + 2; 
    } 
+0

: 예를 들어 java.util.List

에서보세요 – Koessien

관련 문제