5.4. En Terning-klasse

Lad os tage et andet eksempel, en terning. Den vigtigste egenskab ved en terning er dens værdi (dvs. antallet af øjne på siden, der vender opad lige nu) mellem 1 og 6.

Figur 5-4. Java


// En klasse der beskriver 6-sidede terninger
public class Terning
{
  // den side der vender opad lige nu
  int værdi;

  // konstruktør
  public Terning()
  {
    kast(); // kald kast() der sætter værdi til noget fornuftigt
  }

  // metode til at kaste terningen
  public void kast()
  {
    // find en tilfældig side
    double tilfældigtTal = Math.random();
    værdi = (int) (tilfældigtTal * 6 + 1);
  }

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

Her er et program, der bruger et Terning-objekt til at slå med, indtil vi får en 6'er:


public class BenytTerning
{
  public static void main(String args[])
  {
    Terning t;
    t = new Terning();  // opret terning

    // Slå nu med terningen indtil vi får en sekser
    boolean sekser = false;
    int antalKast = 0;

    while (sekser==false)
    {
      t.kast();
      antalKast = antalKast + 1;
      System.out.println("kast "+antalKast+": "+t.værdi);
      if (t.værdi == 6) sekser = true;
    }

    System.out.println("Vi slog en 6'er efter "+antalKast+" slag.");
  }
}

kast 1: 4
kast 2: 2
kast 3: 6
Vi slog en 6'er efter 3 slag.

5.4.1. Opgaver

  1. Skriv et program, der rafler med to terning-objekter, indtil der slås en 6'er.

  2. Skriv et program, der rafler med fire terninger, indtil der slås tre eller fire 6'ere. Udskriv antal øjne for hver terning.

  3. Skriv et program, der rafler med 12 terninger, og hver gang udskriver øjnene, summen af øjnene og hvor mange 6'ere der kom. Brug Vector-klassen til at holde styr på terningerne.

  4. Lav en Moent-klasse der repræsenterer en mønt med 2 sider (du kan tage udgangspunkt i Terning.java). Lav metoden krone(), der returnerer true eller false. Lav et program, der kaster en mønt 100 gange og tæller antal gange, det fik krone.