SHARE
TWEET

RIO

a guest Oct 23rd, 2019 83 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //GUI
  2. public class Gui {
  3.     public void printRio(boolean[] values){
  4.         StringBuilder st = new StringBuilder();
  5.         st.append("____RIO____\n");
  6.         st.append("|    "+zeichen(values[4])+"    |\n");
  7.         st.append("|    "+zeichen(values[3])+"    |\n");
  8.         st.append("|    "+zeichen(values[2])+"    |\n");
  9.         st.append("|    "+zeichen(values[1])+"    |\n");
  10.         st.append("|    "+zeichen(values[0])+"    |\n");
  11.         st.append("___________");
  12.         System.out.println(st.toString());
  13.     }
  14.     private String zeichen(boolean loch){
  15.         if (loch){
  16.             return "°";
  17.         }
  18.         else {
  19.             return "*";
  20.         }
  21.     }
  22.     public void printSpieler(Spieler[] spielers){
  23.         StringBuilder st = new StringBuilder();
  24.         for (Spieler spieler: spielers) {
  25.             st.append("Name: " + spieler.getName() + " Stäbchen: " + spieler.getAnzahlStaebchen());
  26.             st.append("\n");
  27.         }
  28.         System.out.println(st.toString());
  29.     }
  30.     public void printGewinner(Spieler[] spielers){
  31.         for (Spieler spieler:spielers
  32.              ) {
  33.             if(spieler.getAnzahlStaebchen()==0){
  34.                 System.out.println("Spieler: " + spieler.getName() + " Hat gewonnen");
  35.                 break;
  36.             }
  37.         }
  38.     }
  39. }
  40.  
  41. //RealerWuerfel
  42. public class RealerWuerfel implements Wuerfel {
  43.     private static final int MAX_NUMBER = 6;
  44.  
  45.     public int wuerfle() {
  46.         Random random = new Random();
  47.         int result = random.nextInt(5)+1;
  48.         return result;
  49.     }
  50. }
  51.  
  52. //Rio
  53. public class Rio {
  54.     private static final int MAX = 6;
  55.     private boolean loecher[]= new boolean[]{false,false,false,false,false,false};
  56.     private Wuerfel wuerfel;
  57.  
  58.     public Rio(Wuerfel wuerfel) {
  59.         this.wuerfel = wuerfel;
  60.  
  61.     }
  62.     public boolean play(){
  63.         int wurf = wuerfel.wuerfle();
  64.         if (wurf == 6){
  65.             return true;
  66.         }
  67.         int position = wurf-1;
  68.         if (position == -1){
  69.             position = 0;
  70.         }
  71.         loecher[position] = !loecher[position];
  72.         return loecher[position];
  73.     }
  74.  
  75.     public boolean[] getLoecher() {
  76.         return loecher;
  77.     }
  78. }
  79.  
  80. //Spiel
  81. import javax.swing.*;
  82.  
  83. public class Spiel {
  84.     private int aktuellerSpielerIndex;
  85.     private Gui gui;
  86.     private Rio rio;
  87.     private Spieler[] spielers;
  88.     private boolean vorzeitigFertig = false;
  89.  
  90.     public Spiel(Gui gui, Rio rio, Spieler[] spielers) {
  91.         this.gui = gui;
  92.         this.rio = rio;
  93.         this.spielers = spielers;
  94.     }
  95.     public void spiele(){
  96.         waehleJuengstenSpieler();
  97.         while (spielIstFertig()==false && vorzeitigFertig == false){
  98.             boolean würfeln = false;
  99.             do {
  100.                 int selection = JOptionPane.showConfirmDialog(null,"Würfeln",spielers[aktuellerSpielerIndex].getName(),JOptionPane.YES_NO_OPTION);
  101.                     switch (selection) {
  102.                         case JOptionPane.YES_OPTION:
  103.                             würfeln = true;
  104.                             break;
  105.                         case JOptionPane.NO_OPTION:
  106.                             würfeln = false;
  107.                             switch (spielBeenden()) {
  108.                                 case JOptionPane.YES_OPTION:
  109.                                     vorzeitigFertig= true;
  110.                                     würfeln = true;
  111.                                     break;
  112.                                 case JOptionPane.NO_OPTION:
  113.                                     break;
  114.                             }
  115.                             break;
  116.                     }
  117.                 }while (!würfeln);
  118.             if(!vorzeitigFertig){
  119.                 if(rio.play()){
  120.                     spielers[aktuellerSpielerIndex].gibStaebchen();
  121.                 }
  122.                 else {
  123.                     spielers[aktuellerSpielerIndex].nimmStaebchen();
  124.                 }
  125.                 gui.printRio(rio.getLoecher());
  126.                 gui.printSpieler(spielers);
  127.  
  128.                 waehleNaechstenSpieler();
  129.             }
  130.  
  131.         }
  132.         if(!vorzeitigFertig){
  133.             gui.printGewinner(spielers);
  134.         }
  135.     }
  136.     private boolean spielIstFertig(){
  137.         for (Spieler spieler: spielers) {
  138.             if(spieler.getAnzahlStaebchen()==0){
  139.                 return true;
  140.             }
  141.         }
  142.         return false;
  143.     }
  144.     private void waehleJuengstenSpieler(){
  145.         int jung = 0;
  146.         int next = 0;
  147.         for (int i = 0; i <spielers.length ; i++) {
  148.             try{
  149.                 jung = spielers[i].getAlter();
  150.                 next = spielers[i+1].getAlter();
  151.                 if(jung<next){
  152.                     aktuellerSpielerIndex = i;
  153.                 }
  154.             }catch (Exception e){
  155.                 aktuellerSpielerIndex = spielers.length-1;
  156.                 break;
  157.             }
  158.  
  159.         }
  160.  
  161.     }
  162.     private void waehleNaechstenSpieler(){
  163.         aktuellerSpielerIndex++;
  164.         if(spielers.length==aktuellerSpielerIndex){
  165.             aktuellerSpielerIndex = 0;
  166.         }
  167.  
  168.  
  169.     }
  170.     private int spielBeenden(){
  171.         int beenden = JOptionPane.showConfirmDialog(null,"Spiel Beenden?","Beenden",JOptionPane.YES_NO_OPTION);
  172.         return beenden;
  173.     }
  174. }
  175.  
  176. //Spieler
  177. public class Spieler {
  178.     private int anzahlStaebchen;
  179.     private String name;
  180.     private final int alter;
  181.  
  182.     public Spieler(int anzahlStaebchen, String name, int alter) {
  183.         this.anzahlStaebchen = anzahlStaebchen;
  184.         this.name = name;
  185.         this.alter = alter;
  186.     }
  187.     public void nimmStaebchen(){
  188.         anzahlStaebchen++;
  189.     }
  190.     public void gibStaebchen(){
  191.         anzahlStaebchen--;
  192.     }
  193.  
  194.     public String getName() {
  195.         return name;
  196.     }
  197.  
  198.     public int getAlter() {
  199.         return alter;
  200.     }
  201.  
  202.     public int getAnzahlStaebchen() {
  203.         return anzahlStaebchen;
  204.     }
  205. }
  206.  
  207.  
  208. //Wuerfel
  209. public  interface Wuerfel {
  210.       int wuerfle();
  211. }
  212.  
  213.  
  214. //WuerfelMock
  215. public class WuerfelMock {
  216.    
  217.     private int wurf;
  218.  
  219.     public WuerfelMock(int wurf) {
  220.         this.wurf = wurf;
  221.     }
  222.    
  223.     public int wuerfle() {
  224.         return 0;
  225.  
  226.     }
  227.  
  228.    
  229. }
  230.  
  231.  
  232. //Starter
  233. public class Starter {
  234.     public static void main(String[] args) {
  235.         final Wuerfel wuerfel = new RealerWuerfel();
  236.         final Rio rio = new Rio(wuerfel);
  237.         final Gui gui = new Gui();
  238.         final Spieler[] spieler = new Spieler[]{new Spieler(5, JOptionPane.showInputDialog(null,"Spieler 1 Name eingeben: ","Spieler 1",JOptionPane.QUESTION_MESSAGE), alterEingeben("Spieler 1")),
  239.                                                  new Spieler(5,JOptionPane.showInputDialog(null,"Spieler 2 Name eingeben: ","Spieler 2",JOptionPane.QUESTION_MESSAGE), alterEingeben("Spieler 2"))};
  240.        
  241.        
  242.         final Spiel spiel = new Spiel(gui,rio,spieler);
  243.  
  244.         spiel.spiele();
  245.     }
  246.     private static int alterEingeben(String spieler){
  247.         int alter=0;
  248.         boolean worked = false;
  249.         do{
  250.             try {
  251.                 alter= Integer.parseInt(JOptionPane.showInputDialog(null,spieler + " Alter eingeben: ",spieler,JOptionPane.QUESTION_MESSAGE));
  252.                 worked= true;
  253.             }
  254.             catch (Exception e){ }
  255.         }while (worked==false);
  256.  
  257.         return alter;
  258.  
  259.     }
  260.  
  261.  
  262. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top