Programmering
Simpel terning lavet i Java
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.