import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;

public class sundv extends Applet
{ 

  boolean n = false; // Variable für den "NeinListener"
  boolean r = false; // Variable für den "NeustartListener"

  int j = 0; // Variable für den "JaListener" 

  int s; // Spielstandsvariable

  int i; // Zählvariable 1
  int k; // zählvariable 2

  int a; // Variablen für transformator ()
  int b; 
  int c;
  int d;
  int e;
  int f;
  int g;
  int h;
  int l;

  int z; // Zufallvariable für den Gegner

  int w = 3;

  int zahl1; // Zufallsvariablen 
  int zahl2;
  int zahl3;
  int zahl4;
  int zahl5;
  int zahl6;
  int zahl7;
  int zahl8;
  int zahl9; 

  Button Ja;
  Button Nein;
  Button neustart;
  
   String[] kartenNamen =
  { "dummy", "siebenherz", "achtherz", "neunherz", "zehnherz",
    "Jherz", "Qherz", "Kherz", "Aherz",
    "siebenkreuz", "achtkreuz", "neunkreuz", "zehnkreuz",
    "Jkreuz", "Qkreuz", "Kkreuz", "Akreuz", 
    "siebenkaro", "achtkaro", "neunkaro", "zehnkaro",
    "Jkaro", "Qkaro", "Kkaro", "Akaro",
    "siebenpik", "achtpik", "neunpik", "zehnpik", 
    "Jpik", "Qpik", "Kpik", "Apik",
    "toll", "naja", "schade", "hintergrund"
  };

  
  Image[] kartenBilder = new Image[kartenNamen.length];

  String[] ergebnis =
  { "Damit hast du gewonnen!", "Er hat dich abgezogen!", "Das ist ein Unendschieden."
  };

  public void init() 
  { 

    MediaTracker KartenTracker = new MediaTracker(this); 
    for (i = 0; i < kartenNamen.length; i++)
    {kartenBilder[i] = getImage(getCodeBase(), "images/"+kartenNamen[i]+".jpg");
    }

    for (k = 0; k < kartenNamen.length; k++)
    {KartenTracker.addImage(kartenBilder[k], 0); 
    } 
    
    try 
    { 
      KartenTracker.waitForAll(); 
    } catch (InterruptedException ex) { } 

    Ja = new Button("Noch eine!");
    Nein = new Button("Reicht!");
    neustart = new Button("Neustart");
    setLayout(null);
    add(Ja);
    Ja.setBounds(363, 10, 68, 20);
    add(Nein);
    Nein.setBounds(440, 10, 50, 20);
    add(neustart);
    neustart.setBounds(499, 10, 60, 20);
    Nein.addActionListener(new NeinListener());
    Ja.addActionListener(new JaListener());
    neustart.addActionListener(new neustartListener());
  
    rndm();
    
  } 

   public void gegner()
  {
     Random zufallg = new Random();
     z = zufallg.nextInt (9)+17;

     if (z <= 21)
     { 
      if (z > s | s > 21)
      { w = 2;
      }
      if (z < s & s <= 21)
      { w = 1;
      }
      if (z == s)
      { w = 0;
      }
     }

     else 
     {
      if (s > 21)
      { w = 0;
      }
      if (s <= 21)
      { w = 1;
      }
     }
  }
   public void rndm()
  {  
     Random zufall = new Random(); 
     zahl1 = zufall.nextInt (31)+1; 

      do
     zahl2 = zufall.nextInt (31)+1; 
      while (zahl2==zahl1);

      do
     zahl3 = zufall.nextInt (31)+1; 
      while (zahl3==zahl1 || zahl3==zahl2);
     
      do
     zahl4 = zufall.nextInt (31)+1;
      while (zahl4==zahl1 || zahl4==zahl2 || zahl4==zahl3);

      do
     zahl5 = zufall.nextInt (31)+1;
      while (zahl5==zahl1 || zahl5==zahl2 || zahl5==zahl3 || zahl5==zahl4);

      do
     zahl6 = zufall.nextInt (31)+1;
      while (zahl6==zahl1 || zahl6==zahl2 || zahl6==zahl3 || zahl6==zahl4 || zahl6==zahl5);

      do
     zahl7 = zufall.nextInt (31)+1;
      while (zahl7==zahl1 || zahl7==zahl2 || zahl7==zahl3 || zahl7==zahl4 || zahl7==zahl5 || zahl7==zahl6);

      do
     zahl8 = zufall.nextInt (31)+1;
      while (zahl8==zahl1 || zahl8==zahl2 || zahl8==zahl3 || zahl8==zahl4 || zahl8==zahl5 || zahl8==zahl6 || zahl8==zahl7);

      do
     zahl9 = zufall.nextInt (31)+1;
      while (zahl9==zahl1 || zahl9==zahl2 || zahl9==zahl3 || zahl9==zahl4 || zahl9==zahl5 || zahl9==zahl6 || zahl9==zahl7 || zahl9==zahl8);

     showStatus(Integer.toString(zahl1)); 
     showStatus(Integer.toString(zahl2)); 
     showStatus(Integer.toString(zahl3));
     showStatus(Integer.toString(zahl4));
     showStatus(Integer.toString(zahl5));
     showStatus(Integer.toString(zahl6));
     showStatus(Integer.toString(zahl7));
     showStatus(Integer.toString(zahl8));
     showStatus(Integer.toString(zahl9));

  }

   class JaListener implements ActionListener
  { 
       public void actionPerformed(ActionEvent e)
      {
         Object obj = e.getSource();
         if (obj instanceof Button)
         {
            j ++;
            repaint();
         }
      }   
   }
   
   class NeinListener implements ActionListener
  { 
       public void actionPerformed(ActionEvent e)
      {
         Object obj = e.getSource();
         if (obj instanceof Button)
         {
            n = true;
            repaint();
            gegner();
         }
      }   
   }

   class neustartListener implements ActionListener
  { 
       public void actionPerformed(ActionEvent e)
      {
         Object obj = e.getSource();
         if (obj instanceof Button)
         {
            rndm();
            j = 0;
            z = 0;
            n = false;
            w = 3;
            repaint();
         }
      }   
   }

   public void transform ()
  { 

  a = (zahl1)%8; switch (a) {case 0: a=11; break; case 1: a=7;break; case 2: a=8; break; case 3: a=9; break; case 4: a=10; break; case 5: a=2; break; case 6: a=3; break; case 7: a=4; break;}    
  b = (zahl2)%8; switch (b) {case 0: b=11; break; case 1: b=7;break; case 2: b=8; break; case 3: b=9; break; case 4: b=10; break; case 5: b=2; break; case 6: b=3; break; case 7: b=4; break;}
  c = (zahl3)%8; switch (c) {case 0: c=11; break; case 1: c=7;break; case 2: c=8; break; case 3: c=9; break; case 4: c=10; break; case 5: c=2; break; case 6: c=3; break; case 7: c=4; break;}
  d = (zahl4)%8; switch (d) {case 0: d=11; break; case 1: d=7;break; case 2: d=8; break; case 3: d=9; break; case 4: d=10; break; case 5: d=2; break; case 6: d=3; break; case 7: d=4; break;}
  e = (zahl5)%8; switch (e) {case 0: e=11; break; case 1: e=7;break; case 2: e=8; break; case 3: e=9; break; case 4: e=10; break; case 5: e=2; break; case 6: e=3; break; case 7: e=4; break;}
  f = (zahl6)%8; switch (f) {case 0: f=11; break; case 1: f=7;break; case 2: f=8; break; case 3: f=9; break; case 4: f=10; break; case 5: f=2; break; case 6: f=3; break; case 7: f=4; break;}
  g = (zahl7)%8; switch (g) {case 0: g=11; break; case 1: g=7;break; case 2: g=8; break; case 3: g=9; break; case 4: g=10; break; case 5: g=2; break; case 6: g=3; break; case 7: g=4; break;}
  h = (zahl8)%8; switch (h) {case 0: h=11; break; case 1: h=7;break; case 2: h=8; break; case 3: h=9; break; case 4: h=10; break; case 5: h=2; break; case 6: h=3; break; case 7: h=4; break;}
  l = (zahl9)%8; switch (l) {case 0: l=11; break; case 1: l=7;break; case 2: l=8; break; case 3: l=9; break; case 4: l=10; break; case 5: l=2; break; case 6: l=3; break; case 7: l=4; break;}
  }

   public void paint(Graphics p) 
  { 
    
    transform();
    s = 0;

    p.drawImage(kartenBilder[36], 0, 0, this);

    p.drawImage(kartenBilder[zahl1], 10, 10, this); s = s + a;
    p.drawImage(kartenBilder[zahl2], 100, 10, this); s = s + b;
   if (j > 0)
   {p.drawImage(kartenBilder[zahl3], 190, 10, this); s = s + c;
   }
   if (j > 1)
   {p.drawImage(kartenBilder[zahl4], 10, 150, this); s = s + d;
   }
   if (j > 2)
   {p.drawImage(kartenBilder[zahl5], 100, 150, this); s = s + e;
   }
   if (j > 3)
   {p.drawImage(kartenBilder[zahl6], 190, 150, this); s = s + f;
   }
   if (j > 4)
   {p.drawImage(kartenBilder[zahl7], 10, 292, this); s = s + g;
   }
   if (j > 5)
   {p.drawImage(kartenBilder[zahl8], 100, 292, this); s = s + h;
   }
   if (j > 6)
   {p.drawImage(kartenBilder[zahl9], 190, 292, this); s = s + l;
   }

   if (j > 7)
   {p.drawString("Du hast 4 Buben und 4 Damen bekommen (äußerst unwahrscheinlich),", 363, 230);
    p.drawString("möchtest die Grenzen dieses Wahnsinnsprogramms ausloten", 363,245);
    p.drawString("oder bist zu dämlich, um zu bemerken, dass du nicht mehr gewinnen kannst.",363,260);
   }
 
   p.drawString("Summe:" + s, 363, 50);
   p.drawString("Gewinnwahrscheinlichkeit:", 363, 65);

    if (s == 21)
    {p.drawImage(kartenBilder[33], 363, 80, this);
    }
    if (s > 21)
    {p.drawImage(kartenBilder[35], 363, 80, this);
    }   
    if (s < 21)
    {p.drawImage(kartenBilder[34], 363, 80, this);
    }

   if (n)
   {
    p.drawString("Der Computer hat " + z  + ".", 363, 300);

     switch (w) 
    {case 0: p.drawString( ergebnis[2], 363, 315); break; 
     case 1: p.drawString( ergebnis[0], 363, 315); break;
     case 2: p.drawString( ergebnis[1], 363, 315); break;
    }
   }



  }

}