Programmering

Simpel terning lavet i Java

25. november 2015 af rune3132 (Slettet)

Hej Studieportalen

Jeg er i gang med at lave en terning, men er stødt på et mindre problem. Det mit program burde gøre er at vælge et tilfældigt tal mellem 1 og 6, og derefter tegne tallet. Problemet er at mit program giver 2-3 værdier hver gang jeg kører det. Hvis en eller anden kunne forklare hvad jeg gør forkert, og give mig et skub i den rigtige retning ville det være perfekt. Jeg copy paster min code nedenunder (3 classes) og vedhæfter en samlet BlueJ fil.

Vh. Rune

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

public class Grafikpanel extends JPanel
{
  public void paintComponent(Graphics g){
      super.paintComponent(g);
      setBackground(Color.GREEN);
      int x1=20;
      int y1=20;
      Terning t;
      t = new Terning();

      for(int n=0; n<1; n++){
      t.kast();
      g.setColor(Color.WHITE);
      g.fillRect(x1, y1, 140, 140);
      System.out.println(t.getVærdi());
      if(t.getVærdi()==6){
          g.setColor(Color.RED);
      }
      else{
          g.setColor(Color.BLACK);
      }
      switch(t.getVærdi()){
          case 1: g.fillOval(x1+55, y1+55, 30, 30); break;
          case 2: g.fillOval(x1+12, y1+12, 30, 30); g.fillOval(x1+98, y1+98, 30, 30); break;
          case 3: g.fillOval(x1+12, y1+12, 30, 30); g.fillOval(x1+98, y1+98, 30, 30); g.fillOval(x1+55, y1+55, 30, 30); break;
          case 4: g.fillOval(x1+12, y1+12, 30, 30); g.fillOval(x1+98, y1+98, 30, 30); g.fillOval(x1+12, y1+98, 30, 30); g.fillOval(x1+98, y1+12, 30, 30); break;
          case 5: g.fillOval(x1+12, y1+12, 30, 30); g.fillOval(x1+98, y1+98, 30, 30); g.fillOval(x1+12, y1+98, 30, 30); g.fillOval(x1+98, y1+12, 30, 30); g.fillOval(x1+55, y1+55, 30, 30); break;
          case 6: g.fillOval(x1+12, y1+12, 30, 30); g.fillOval(x1+98, y1+98, 30, 30); g.fillOval(x1+12, y1+98, 30, 30); g.fillOval(x1+98, y1+12, 30, 30); g.fillOval(x1+12, y1+55, 30, 30); g.fillOval(x1+98, y1+55, 30, 30); break;
      }
    }
  }
}

import javax.swing.JFrame;

public class BenytGrafikpanel
{
  public static void main(String[] arg)
  {
    Grafikpanel panel = new Grafikpanel();        // opret panelet

    JFrame vindue = new JFrame("Grafikpanel");    // opret et vindue på skærmen
    vindue.add( panel );                          // vis panelet i vinduet

    vindue.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // reagér på luk
    vindue.setSize(350,350);                       // sæt vinduets størrelse
    vindue.setVisible(true);                      // åbn vinduet
  }
}

public class Terning
{

  private int værdi;

  /** konstruktør der opretter en terning */
  public Terning()
  {
    // vælg en tilfældig side til at starte med
    værdi = (int) (Math.random() * 6 + 1);
  }

  /** kaster terningen, så den får en anden værdi */
  public void kast()
  {
    // vælg en tilfældig side
    double tilfældigtTal = Math.random();
    værdi = (int) (tilfældigtTal * 6 + 1);
  }

  /** Aflæser terningens værdi */
  public int getVærdi()
  {
    return værdi;
  }

  /** Sætter terningens værdi */
  public void setVærdi(int nyVærdi)
  {
    værdi = nyVærdi;
  }

  /** giver en beskrivelse af terningen som en streng */
  public String toString()
  {
    String svar = ""+værdi;  // værdi som streng, f.eks. "4"
    return svar;
  }
}


Skriv et svar til: Simpel terning lavet i Java

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.