Einen schönen Guten Tag!
Ich soll eine Java Hölzchenspiel für die Schule programmieren und eine Strategie für den Computer einbinden die ich etwas problematisch finde.
Das Nimmspiel soll so funktionieren das der Benutzer die Anzahl der Hölzchen die auf dem "Tisch" liegen und die maximale Anzahl der Hölzchen die vom Tisch genommen werden dürfen bestimmen kann.
Danach ziehen erst der Benutzer und dann der Computer eine bielibige Anzahl von 1. bis die maximale Anzahl von Hözlchen.
Dabei gibt es eine Gewinnstrategie:wem es gelingt soviele Hölzchen wegzunehmen, dass eine durch (n+1) teilbare Zahl übrigbleibt, wenn n = Höchstzahl ist, der gewinnt fast immer!
Der Computer soll nun entweder der Strategie folgen oder eine zufällige Anzahl von Hözlchen nehmen.
Nun weiß ich das ich mithilfe des Random Befehls die zufäliige anzahl für den Computer bestimmen kann hab aber ein Problem mit der Gewinnstrategie bzw. ich weiß nicht wie ich es schaffe das der Computer der Gewinnstrategie folgt.
Ich programmier noch nicht lange mit Java hatte aber gehofft es mittels eines arrays zu lösen weiß aber nicht wie, dachte das mir hier vlt. jemand helfen könnte
hier mein bisheriger Code:
....ich hoffe nicht das dieser Beitrag irgendwie zu lang ist oder sonst gegen irgendwelche Regeln verstößt falls doch entschuldige ich mich schon im Vorraus....
Ich soll eine Java Hölzchenspiel für die Schule programmieren und eine Strategie für den Computer einbinden die ich etwas problematisch finde.
Das Nimmspiel soll so funktionieren das der Benutzer die Anzahl der Hölzchen die auf dem "Tisch" liegen und die maximale Anzahl der Hölzchen die vom Tisch genommen werden dürfen bestimmen kann.
Danach ziehen erst der Benutzer und dann der Computer eine bielibige Anzahl von 1. bis die maximale Anzahl von Hözlchen.
Dabei gibt es eine Gewinnstrategie:wem es gelingt soviele Hölzchen wegzunehmen, dass eine durch (n+1) teilbare Zahl übrigbleibt, wenn n = Höchstzahl ist, der gewinnt fast immer!
Der Computer soll nun entweder der Strategie folgen oder eine zufällige Anzahl von Hözlchen nehmen.
Nun weiß ich das ich mithilfe des Random Befehls die zufäliige anzahl für den Computer bestimmen kann hab aber ein Problem mit der Gewinnstrategie bzw. ich weiß nicht wie ich es schaffe das der Computer der Gewinnstrategie folgt.
Ich programmier noch nicht lange mit Java hatte aber gehofft es mittels eines arrays zu lösen weiß aber nicht wie, dachte das mir hier vlt. jemand helfen könnte
hier mein bisheriger Code:
Java:
import java.util.Scanner;
public class spiel
{
/**
* @param args
*/
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
spiel Nimm = new spiel();
boolean abfrage = true;
int anzahlhoelzchen = 0;
int maxhoelzchen = 0;
int mensch = 0;
int computer = 0;
int[] maxhoezlchen2 = new int[maxhoelzchen];
System.out.println("Nimm-Spiel Version 0.5");
do
{
System.out.println("Gebe die Anzahl der auf dem Tisch liegenden Hoelzchen an!");
anzahlhoelzchen = Nimm.einlese(anzahlhoelzchen);
System.out.println("Gebe die maximale Anzahl der zu nehmenden Hoelzchen an!");
maxhoelzchen = Nimm.einlese(maxhoelzchen);
if(maxhoelzchen >= anzahlhoelzchen)
{
System.out.println("Es können nicht mehr oder genauso viele Hoelzchen genommen werden wie auf dem Tisch liegen!");
continue;
}
System.out.println("Geben Sie ein Zahl von 1. bis " + anzahlhoelzchen + "an!");
mensch = Nimm.einlese(mensch);
anzahlhoelzchen = anzahlhoelzchen-mensch;
maxhoelzchen = Nimm.einlese(maxhoelzchen);
System.out.println("Es sind noch" + anzahlhoelzchen + "übrig");
computer = Nimm.computer(computer, anzahlhoelzchen, maxhoelzchen);
anzahlhoelzchen = anzahlhoelzchen-mensch;
if(anzahlhoelzchen<=0)
{
System.out.println("Sie haben gewonnen!");
}
}
while(abfrage == true);
}
int einlese(int a)
{
Scanner scan = new Scanner(System.in);
String einlese;
einlese = scan.next();
do
{
try{
a = Integer.parseInt(einlese);
}
catch (NumberFormatException nfe)
{
System.out.println("keine Zahl");
}
if (a <= 0)
{
System.out.println("Geben Sie den Wert erneut an");
continue;
}
}while (a <= 0);
return a;
}
int computer(int a, int b, int c)
int[] maxhoezlchen2 = new int[c+1];
{
if( b%(maxhoezlchen2.length) == 0 );
{
if() //hier wollte ich die Strategie für den Computer irgendwie einbinden
}
return a;
}
}
....ich hoffe nicht das dieser Beitrag irgendwie zu lang ist oder sonst gegen irgendwelche Regeln verstößt falls doch entschuldige ich mich schon im Vorraus....