/**
*
* @version 19 november 2012
* @Project 2: RadVanFortuin
*/
public class RadVanFortuin {
int bedragRad,rad,keuze,draai,aantalWoorden,plaatsCat,bedragSpeler,beurten,plaats,totaal; // declaratie variabelen
String sterWoord3,teRadenWoord2;
boolean bankroet = false;
boolean geraden = false;
boolean gokken = true;
boolean categorieKeuze = false;
boolean inTabel = false;
boolean quit = false;
boolean gameOver = false;
String sterWoord2,teRadenWoord,gok;
final int CATEGORIES = WoordIO2.aantalCategories("woorden.txt");
final int AANTALWOORDEN = WoordIO2.aantalWoorden("woorden.txt");
final String[][] TERADENWOORDEN = vulWoorden("woorden.txt");
int[] spelersLijst = new int[aantal()];
String categorie;
String[] Extra = new String [AANTALWOORDEN];
public int aantal() {
String hoeveelheid;
int spelers;
do {
System.out.println("=== Het Rad van Fortuin ===\n\nMet hoeveel willen jullie spelen?");
spelers = Input.readInt();
} while (spelers > 100);
return spelers;
}
public String[][]vulWoorden(String bestand) {
String[][] teRadenWoorden = new String[CATEGORIES][AANTALWOORDEN+1];
String[] lijnen = WoordIO2.geefLijnen("woorden.txt");
for (int i = 0; i < lijnen.length; i++) {
inTabel = false;
for (int i3 = 0; i3 < CATEGORIES; i3++) {
if ((lijnen[i].substring(0,lijnen[i].indexOf('-'))).equals(teRadenWoorden[i3][0])) {
inTabel = true;
}
}
if (inTabel == false) {
teRadenWoorden[plaatsCat][0] = lijnen[i].substring(0,lijnen[i].indexOf('-'));
Extra = geefWoordenUitCategorie(lijnen, teRadenWoorden[plaatsCat][0]);
for (int teller = 1; teller < AANTALWOORDEN + 1; teller++) {
teRadenWoorden[plaatsCat][teller] = Extra[teller-1];
}
plaatsCat++;
}
}
return teRadenWoorden;
}
public String[] geefWoordenUitCategorie(String[] lijnenVanFile, String categorie) {
int telWoorden = 0;
String[] aantalWoordenInFile = new String[AANTALWOORDEN];
for (int i = 0; i < lijnenVanFile.length;i++) {
if ((lijnenVanFile[i].substring(0,lijnenVanFile[i].indexOf('-'))).equals(categorie)) {
aantalWoordenInFile[telWoorden] = lijnenVanFile[i].substring(lijnenVanFile[i].indexOf('-')+1);
telWoorden++;
}
}
return aantalWoordenInFile;
}
public void start() {
char medeklinker;
int aantalGeraden;
String echtTeRadenWoord;
String echtSterWoord;
do {
if(starten() == true) {
gameOver = false;
echtTeRadenWoord = genereerWoord(keuzeOnderwerp()).toLowerCase();
echtSterWoord = sterren(echtTeRadenWoord);
for (int verloop = 1; verloop <= 10 ; verloop ++) {
if (gameOver == true) {
break;
}
for (int participant = 1 ; participant < spelersLijst.length + 1; participant++) {
if(draaien(participant) == true) {
totaal = radStop(draaiRad());
if (totaal > 0) {
medeklinker = gokMedeklinker();
aantalGeraden = gokControle(echtSterWoord,echtTeRadenWoord,medeklinker);
echtSterWoord = vervangen(echtSterWoord,echtTeRadenWoord,medeklinker);
totaal = cash (aantalGeraden,totaal);
if (aantalGeraden > 0) {
if (gokWoord(verloop,totaal,echtTeRadenWoord) == true) {
einde (participant,totaal);
gameOver = true;
break;
}
}
}
} else {
gameOver = true;
break;
}
}
}
} else {
quit = true;
}
} while (gameOver == false);
}
public boolean starten (){
boolean begin = true;
do {
System.out.println("=== Het Rad van Fortuin ===\n\nWat wil je doen?\n\n1) Een nieuw spel starten\n2) Het programma stoppen\n\nKeuze:");
keuze = Input.readInt();
if (keuze == 1) {
begin = true;
}
if (keuze == 2) {
begin = false;
}
} while (keuze !=1 && keuze != 2);
return begin;
}
public String keuzeOnderwerp() {
System.out.print("De mogelijke categorieen zijn: ");
for (int i = 0 ; i < CATEGORIES; i++) {
System.out.print(TERADENWOORDEN[i][0] + ",");
}
do {
System.out.println("\nGeef een categorie:\n");
categorie = Input.readString();
for ( int i = 0 ; i < CATEGORIES; i++) {
if(categorie.equals(TERADENWOORDEN[i][0])){
categorieKeuze = true;
}
}
} while (categorieKeuze == false);
return categorie;
}
public String genereerWoord (String categorie) {
int random = (int)(Math.random()* AANTALWOORDEN) + 1;
for (int i = 0; i < CATEGORIES ; i++) {
if (TERADENWOORDEN[i][0].equals(categorie)){
plaats = i;
}
}
System.out.println("We zoeken een woord van het type: "+ categorie +"\nHet te raden woord heeft de volgende vorm:");
return TERADENWOORDEN[plaats][random];
}
public String sterren (String teRadenWoord) {
String sterWoord = new String ();
for (int i = 0; i < teRadenWoord.length(); i++) { //woord omzetten naar sterren
if (teRadenWoord.charAt(i) == ' ') {
sterWoord = sterWoord + ' ';
} else {
sterWoord = sterWoord + '*';
}
}
System.out.println(sterWoord);
return sterWoord;
}
public boolean draaien (int participant) {
boolean begin = false;
do {
System.out.println("SPELER " + participant + "\nWat wil je doen?\n\n1) Aan het rad draaien\n2) Dit spel stoppen\n\nKeuze:"); //keuze
draai = Input.readInt();
if (draai == 1) {
begin = true;
}
if (draai == 2) {
begin = false;
}
} while (draai != 1 && draai != 2);
return begin;
}
public int draaiRad() { //het bedrag waar het rad op stopt wordt in een variabele gestoken
rad = (int) (5 * Math.random());
System.out.println("Het rad wordt gedraaid: \n");
switch (rad) {
case 0:
bedragRad = 2000;
break;
case 1:
bedragRad = 4000;
break;
case 2:
bedragRad = 10000;
break;
case 3:
bedragRad = 100000;
break;
case 4:
bedragRad = 0;
break;
}
return bedragRad;
}
public int radStop (int bedragRad) {
if(bedragRad == 0) {
System.out.println("\nHet rad stopt op bankroet");
} else {
System.out.println("\nHet rad stopt op: " + bedragRad+ " euro");
}
return bedragRad;
}
public char gokMedeklinker() { //de medeklinker wordt geraden en de medeklinker wordt in het sterrenwoord gestoken
char medeklinker;
String letter = "";
do {
System.out.println("U mag een medeklinker gokken:");
letter = Input.readString();
medeklinker = letter.charAt(0);
} while(letter.length() !=1 || letter.equals("a") || letter.equals("e") || letter.equals("o") || letter.equals("u") || letter.equals("i"));
return medeklinker;
}
public int gokControle(String sterWoord, String teRadenWoord, char gokMedeklinker) {
int aantal = 0;
if (sterWoord.indexOf(gokMedeklinker) >=0) {
System.out.println("Deze medeklinker werd al geraden");
aantal = 0;
} else {
for (int i = 0; i < teRadenWoord.length(); i++) {
if(teRadenWoord.charAt(i) == gokMedeklinker) {
aantal++;
}
}
}
System.out.println("Deze letter komt " + aantal + " keer voor in het woord.");
return aantal;
}
public String vervangen (String sterWoord, String teRadenWoord, char letter) {
for (int i = 0; i < sterWoord.length() ; i++) {
if (teRadenWoord.charAt(i) == letter) {
if (sterWoord.charAt(i) == letter) {
sterWoord2 = sterWoord2 + sterWoord.charAt(i);
} else {
sterWoord2 = sterWoord2 + letter;
}
} else {
sterWoord2 = sterWoord2 + sterWoord.charAt(i);
}
}
System.out.println(sterWoord2);
return sterWoord2;
}
public int cash (int aantal, int geldBedrag) {
bedragSpeler = bedragSpeler + (aantal * bedragRad);
System.out.println("U heeft " + bedragSpeler + " euro in de kassa \n");
return bedragSpeler;
}
public boolean gokWoord(int beurten, int geldbedrag, String teRadenWoord) { //de gok wordt vergeleken met het te raden woord
System.out.println("U mag nu een gok wagen:");
gok = Input.readLine().toLowerCase();
if (gok.equals(teRadenWoord)) {
System.out.println("\n --- PROFICIAT --- \n U heeft het woord in " + beurten + " beurten geraden! \n U heeft " + bedragSpeler + " euro gewonnen\n");
geraden = true;
} else {
System.out.println("Spijtig, " + gok + " is niet juist");
geraden = false;
}
return geraden;
}
public void einde (int participant, int bedragSpeler) {
System.out.println("\nOverzicht van de scores:\n");
spelersLijst[participant-1] = spelersLijst[participant-1]+ bedragSpeler;
for (int i = 1; i < spelersLijst.length + 1; i++) {
System.out.println("Speler" + i + " = " + spelersLijst[i-1]);
}
}
public static void main(String[] args) { //oproepen van de methode
RadVanFortuin controle = new RadVanFortuin();
controle.start();
}
}