Autor Beitrag
gowoot06
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 28.01.07 16:43 
Hallo,

wir sollen im Infokurs das NIM-Spiel programmieren.

Zum Aufbau und der Spielweise:
Es gibt drei Häufchen mit 3, 5 und 7 Streichhölzern.
Man darf abwechselnd soviele Streichhölzer nehmen wie man will, aber mindestens eins und nur aus einer Reihe.
Wer das letzte Streichholz nimmt verliert.

Die Oberfläche und so ist kein Problem, aber wir sollen einen Computergegner einbauen un da hab ich keine Ahnung wie das gehen soll(genauso wie alle anderen aus dem Infokurs).

Vielleicht kann mir ja hier einer helfen, eins seiner Programme schicken(falls jemand schon sowas hat) oder einen Denkanstoss geben.

Danke im Vorraus.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 28.01.07 16:53 
In Delphi gemacht hab ich sowas zwar noch nie, aber ich kenne eine JavaScript-Version: hier.

Das Script steht hier drin: www.alraft.de/altenhein/nim_idx.htm

Vielleicht kannst du dir da ja was ableiten?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
gowoot06 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 28.01.07 17:03 
Irgendwie nicht, sorry. Also ein Denkanstoß wie man den KI-Teil des Quellcodes gestaltet wäre wirklich schön.

Gewinnsituationen sind ja klar:

2-4-6
1-4-5
1-2-3
1-1-1
0-2-2
0-3-3
0-4-4
0-5-5
0-0-1
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: So 28.01.07 18:43 
Na also, die KI könnte einfach mit aller Kraft auf diese Gewinnsituationen hinarbeiten bzw. Situationen errechnen, die zu den Gewinnsituationen führen und daraus wiederrum neue Situationen die zu den Situationen führen die zu den Gewinnsituationen führen usw. So lässt sich meines Erachtens sogar für jeden Zug die absolut richtige Handlungsweise bestimmen.

_________________
Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
lutz
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 28.01.07 18:46 
ja das ist ja irgendwie klar, aber wie könnte man sowas bewerkstelligen?
gowoot06 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 28.01.07 20:08 
Ja genau liegt ja leider das Problem.
Wie soll man denn sowas unter Zuhilfenahme der Gewinnsituationen (s.o.) bewerkstelligen?
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: So 28.01.07 20:40 
Naja, also ein Anfang wäre es ja schonmal, dass man den Computergegner einfach immer zufälllig ein paar Hölzer nehmen lässt, bis eine Situation auftritt in der er sicher gewinnen kann. (kann man ja über if-Abfragen überprüfen) ab da lässt man ihn dann halt nach einem vorher festgelegten Plan spielen.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 29.01.07 01:11 
Ich hab mich nochmal schlau gemacht, hier noch ein Paar Links:

www.csm.astate.edu/secret.html
www.mathematische-ba...ien.de/nimspiel.html
de.wikipedia.org/wiki/Nim-Spiel

Ist allerdings sehr Mathe-Theorie-lastig. Am weitesten wirst du wohl tatsächlich kommen, wenn du den Quelltext von dem Javascript analysierst.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."