/**
* @ version 4-11-2006
* @ author
* Nim is een spel dat met lucifers gespeeld wordt. Het doet er niet toe
* hoeveel lucifers er zijn. De lucifers worden in drie stapels verdeeld. Opnieuw
* doet het er niet toe hoeveel lucifers er in elke stapel zitten. De spelers spelen
* om de beurt. Een speler kan elk een aantal lucifers van een willekeurige
* stapel afhalen, maar slechts van één stapel tegelijk. Hij moet minimaal één
* lucifer pakken. De winnaar is diegene die de tegenstander de laatste lucifer
* laat pakken. Schrijf een programma om dit spel te spelen tegen de computer.
* In het begin verdeelt de computer een willekeurig aantal (tussen 1 en 200)
* lucifers in 3 stapels.
*/
public class Nim {
int stapel1;
int stapel2;
int stapel3;
int toss = 0;
/**
* Hiermee wordt het ganse programma opgestart. Het is in deze
* methode dat er aan de gebruiker gevraagd wordt of hij nog een spel wil
* spelen.
*/
public void start() {
char antwoord;
System.out.println("**************************************");
System.out.println(" Welkom bij Nim");
System.out.println("**************************************");
do {
speelSpel();
do {
antwoord = ("\nWil je nog een spel spelen (j/n)?").toLowerCase().charAt(0);
} while ((antwoord != 'j') && (antwoord != 'n'));
} while (antwoord == 'j');
System.out.println("\nBedankt om Nim te spelen...");
}
/**
* Hier worden de verschillende facetten van het spel aangeroepen:
* initialisatie, het tossen om te bepalen wie mag beginnen, het verwerken
* van de opeenvolgende zetten van de gebruiker, resp. de computer, de
* weergave van de winnaar , ...
*/
public void speelSpel() {
initialiseerSpel();
toss();
do {
if (toss == 0) {
System.out.println("\n\nJij mag beginnen");
geefStapelOverzicht();
verwerkJouwBeurt();
}
else if (toss == 1) {
System.out.println("\n\nDe pc begint");
geefStapelOverzicht();
verwerkComputerBeurt();
}
}while (stapel1 != 0 || stapel2 != 0 || stapel3 != 0);
geefWinnaar();
}
/**
* omvat de generatie van een willekeurig aantal
* lucifers en de willekeurige verdeling ervan over de drie stapels.
*/
public void initialiseerSpel() {
stapel1 = (int)(((Math.random() * 200) / 3) + 1);//een getal genereren tussen 1 en 100
stapel2 = (int)(((Math.random() * 200) / 3) + 1);
stapel3 = (int)(((Math.random() * 200) / 3) + 1);
}
/**
* omvat de willekeurige aanduiding van wie mag beginnen, jij
* (gebruiker) of de computer.
*/
public void toss() {
toss = (int)(Math.random()*2);
}
/**
* omvat de verwerking van jouw zet.
*/
public void verwerkJouwBeurt() {
int ingave2, totaal;
int ingave;
String ingave1 = "";
do {
System.out.print("Kies de stapel: ");
ingave = Integer.parseInt(Stream.readString());
ingave1 = Integer.toString(ingave);
}while (!(ingave1.equals("1")) && !(ingave1.equals("2")) && !(ingave1.equals("3")));
System.out.print("Hoeveelheid Lucifers: ");
ingave2 = Integer.parseInt(Stream.readString());
if (ingave1.equals("1")) {
stapel1 = stapel1 - ingave2;
geefStapelOverzicht();
}
else if (ingave1.equals("2")) {
stapel2 = stapel2 - ingave2;
geefStapelOverzicht();
}
else if (ingave1.equals("3")) {
stapel3 = stapel3 - ingave2;
geefStapelOverzicht();
}
toss = 1;
}
/**
* omvat de zet van de computer.
*/
public void verwerkComputerBeurt() {
int pcStartKeuze;
System.out.println("De computer maakt zijn keuze.");
pcStartKeuze = (int)(Math.random()*3);
if (pcStartKeuze == 0) {
stapel1 = stapel1 - (int)(Math.random()*stapel1);
geefStapelOverzicht();
}
else if (pcStartKeuze == 1) {
stapel2 = stapel2 - (int)(Math.random()*stapel2);
geefStapelOverzicht();
}
else if (pcStartKeuze == 2) {
stapel3 = stapel3 - (int)(Math.random()*stapel3);
geefStapelOverzicht();
}
toss = 0;
}
/**
* hiermee druk je de spelsituatie af. Zorg ervoor
* dat na elke zet, van jou of van de computer, een overzicht van de
* stapelbezetting wordt weergegeven.
*/
public void geefStapelOverzicht() {
System.out.println("\n\nStapel 1 " + stapel1);
System.out.println("\nStapel 2 " + stapel2);
System.out.println("\nStapel 3 " + stapel3 + "\n\n\n\n");
}
/**
* geeft aan wie het spel gewonnen heeft
*/
public void geefWinnaar() {
System.out.println("LALALAA");
}
public static void main (String[] args) {
Nim spel = new Nim();//creatie van nieuw object van type 'Nim' en toekenning van zijn referentie aan de 'spel' variabele
spel.start();//methode oproep om het spel te starten
}
}