/**
 * D0017D - Inlämningsuppgift 3 - Simulerar spelet 12 med tre tärningar
 * @author Peo Frosteus, pereno-0
 * Programmet simulerar spelet 12
 * Användaren uppmanas att välja att slå tärning 1, 2 eller 3
 * Man får bara slå varje tärning en gång per omgång
 * Vinst är en tärningssumma av 12 på 2 eller 3 tärningar
 * Vid slutet på varje omgång anges resultat och 
 * antalet vinster/förluster sparas tills dess att programmet avslutas
 * Om användaren anger q avslutas programet
 * 
 */

import java.util.Scanner; //Importera scanner för user input
import java.util.Random; // Importera Random för slumptal

public class Uppgift3
{
   public static void main(String[] args)
   {

      // Deklarera konstanter
      final int SIDES; // Antal sidor på en tärning
      final int WINNINGSUM; // Summan som ger vinst

      // Deklarea variabler
      String userInput; // Inmatningen
      int dice1; // Tärning #1
      int dice2; // Tärning #2
      int dice3; // Tärning #3
      int noOfWins; // Antal vinster
      int noOfLosses; // Antal förluster
      int sum; // Summa av alla tärningar

      // Sätt värden på konstanter
      SIDES = 6;
      WINNINGSUM = 12;

      // Sätt världen på variabler
      noOfWins = 0;
      noOfLosses = 0;
      sum = 0;

      // Deklarera inmatning
      Scanner keyboard = new Scanner(System.in); 

      // Starta nytt spel
      System.out.printf("Välkommen till spelet 12. Du ska slå 1-3 tärningar och försöka få summan 12...\n");
      do
      {
         // Sätt alla tärningar till noll
         dice1 = 0;
         dice2 = 0;
         dice3 = 0;

         do // Starta programmer och kör tills användaren matar in 'q'
         {
            // Uppmana användaren att välja
            System.out.printf("Ange vilken tärning du vill slå [1,2,3](avsluta med q): ");

            userInput = keyboard.nextLine();

            // Kolla inmatningen
            switch (userInput)
            {

            case "1": // Om användaren väljer tärning 1
               if (dice1 == 0)
               { // Om tärningen inte är slagen i denna omgång
                  dice1 = (int) (Math.random() * SIDES) + 1;
                  break;
               } else
               { // Om tärningen ÄR slagen i denna omgång
                  System.out.printf("Du har redan slagit den här tärningen en gång, välj en annan.\n");
                  break;
               }

            case "2": // Om användaren väljer tärning 2
               if (dice2 == 0)
               { // Om tärningen inte är slagen i denna omgång
                  dice2 = (int) (Math.random() * SIDES) + 1;
                  break;
               } else
               { // Om tärningen ÄR slagen i denna omgång
                  System.out.printf("Du har redan slagit den här tärningen en gång, välj en annan.\n");
                  break;
               }

            case "3": // Om användaren väljer tärning 3
               if (dice3 == 0)
               { // Om tärningen inte är slagen i denna omgång
                  dice3 = (int) (Math.random() * SIDES) + 1;
                  break;
               } else
               { // Om tärningen ÄR slagen i denna omgång
                  System.out.printf("Du har redan slagit den här tärningen en gång, välj en annan.\n");
                  break;
               }

            case "q":
               System.out.printf("Avslutar spel!");
               System.exit(0);
               break;

            default:
               System.out.printf("Felaktig inmatning.\n");
               break;

            }
            sum = dice1 + dice2 + dice3; // Summera efter varje slag
            System.out.printf("%s %s %s Summa: %s - Vinst: %s Förlust: %s \n", dice1, dice2, dice3, sum, noOfWins,
                  noOfLosses);

         } while ((dice1 == 0 || dice2 == 0 || dice3 == 0) && sum != WINNINGSUM); // Kör omgången tills dess att alla
                                                                                  // tärningar är slagna ELLER om summan
                                                                                  // blir 12 innan dess

         // Spel avslutat
         if (sum == WINNINGSUM) // Om summan är 12, öka vinst-räknaren med 1, och skriv ut utfallet av omgången.
         {
            noOfWins++;
            System.out.printf("Vinst! Summan blev %s \n", sum);
         } else // Annars, öka förlust-räknaren med 1
         {
            noOfLosses++;
            System.out.printf("Förlust! Summan blev %s \n", sum);
         }

         System.out.printf("Nästa omgång!\n");

      } while (true); // Kör programmet så länge som användaren inte anger 'q'
   }
}