Neues TUT! (BITTE ANGUCKEN)

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Antworten
Bossface
Beiträge: 16
Registriert: Do Jul 11, 2002 12:01 am

Neues TUT! (BITTE ANGUCKEN)

Beitrag von Bossface »

Code: Alles auswählen

++++++++++++++++++
| How to Nimm Spiel    |
++++++++++++++++++


Vorwort

Dieses TUT zeigt nur WIE man ein NIMM-SPIEL machen könnte. Es gibt bestimmt noch
mehr wegen, aber so geht es auch.

Kapitel 1 -> Das Spielprinzip

Bei einem Nimm-Spiel handelt es sich meistens um, einen Haufen Münzen, man darf nur mit einen Zug bestimmt viele nehmen, aber mindestens 1. Und wenn es nur noch eine Münze gibt und einer dieser nehmen muss, der hat verloren. 

Kapitel 2 -> An was muss man beim Programmieren denken !

Es ist wichtig zuversuchen alles sicher zu machen. Damit meine ich z.B. , das der Spieler nicht eingeben kann, das er Null nehmen will! In C++ würde man das so verhindern :

...
...
loop:     //Bis hier hin wird gesprungen, falls man nicht zwischen 1-4 etwas wählt
cin>>eingabe;     //Eingabeaufforderung

if (eingabe < 1 || eingabe > 4)     //Test
   {
    cout<<"Bitte eine Zahl zwischen 1-4 Eingeben"<<endl;     //Textausgabe
    goto loop;     //gehe zu loop
   }

So kann man die Fehler abfangen.

Kapitel 3 -> Die KI


Wenn z.B. am Anfang 20 Münzen dort liegen und man 4 nimmt, liegen dort nur noch 16 (!). Wenn der Gegner nun dran ist, wie soll er entscheiden wieviel er nimmt ?. Es ist ehrlich gesagt ganz einfach!

16     =     Haufen

16/4 = 4

Wenn wir jetzt 16 Minus 4 Rechnen kommt 12 (!) raus. Und so könnte es immer weiter gehen..ABER, was ist wenn der Haufen nur noch 1 Münze ist ??

1/4 = 1/4

Weil wir int benutzen, runden der Compiler automatisch ab. Einviertel wird aber Abgerundet...dannn würde der Computer keine Münze nehmen, sprich du würdest trotzdem verlieren! Aber, es gibt eine Lösung!!

haufen = anzahl der münzen //ist ein int darf kein Float sein!!
temp = zwischen speicher!!
eingabe = eingabe integer!!

//Wie die KI Funktioniert!!

temp = haufen/4;	//Die Geteilt Rechnung, wir nehmen an das Haufen 0 ist, deswegen ist temp auch 0!!

if (temp <1)	//Test, ob temp 0 ist!!
   {
    temp = 1;	//Wenn ja temp auf 1 stellen!!
   }

haufen = haufen - temp;	//temp von haufen abziehen!!

Schlußwort

Ich hoffe ihr habt nun ein bisschen gelernt...;-)
Falls es Rechtschreib - Source Fehler gibt bitte mailen!
Falls Fragen, Kritik(NEIN, DANKE) oder Lob ... E-Mail!!
Viel Spaß beim Coden!!!

See Ya
Camal

See Ya
Bossface
fangorrn
der dunkle Wald
Beiträge: 6653
Registriert: So Nov 19, 2000 1:01 am

Beitrag von fangorrn »

Mach bitte für Alle deine TUTs einen Thread ja? Nicht immer für jedes neue eins OK?!
dinf!
Benutzeravatar
XTale
Zweiter Admin im Bunde
Beiträge: 4736
Registriert: Fr Mai 12, 2000 12:01 am

Beitrag von XTale »

loop: //Bis hier hin wird gesprungen, falls man nicht zwischen 1-4 etwas wählt
cin>>eingabe; //Eingabeaufforderung

if (eingabe < 1 || eingabe > 4) //Test
{
cout<<""Bitte eine Zahl zwischen 1-4 Eingeben""<<endl; //Textausgabe
goto loop; //gehe zu loop
}
unsauber - nur Basicprogrammierer benutzten Labels und GoTo *g
In so nem kleinen Programm ist es eigentlich egal - aber wenn du mal 100x soviele Zeilen hast wirst du jedes GoTo verfluchen.
mach ne while schleife oder von mir aus auch ne endlosschleife aus der du rausspringst wenn die eingabe richtig is

davon abgesehn das ich durch deinen KI Vorschlag nich ganz durschblick...
da liegen 3 Münzen, PC is dran. pc Rechner 3/4 = 0.75, rundet auf und nimmt eine Münze.
Liegen noch 2 Münzen und der blöde Computer verliert - super KI *g
Da würd ich vielleicht was anderes nehmen ;)[/quote]
Bild
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Beitrag von Katana »

Da war die FF-KI besser analysiert ;)
Also, das mit den Labels und dem Goto sollteste sofort wieder vergessen, das gibt 'nen ganz unsauberen Stil.
Das war früher noch ok, aber da mußte man auch noch jeder Zeile 'ne Nr. verpassen ;)

Mach's eher so:

Code: Alles auswählen

while (eingabe < 1 || eingabe > 4) {
  cout << "Bitte eine Zahl zwischen 1-4 eingeben" << endl;
  cin>>eingabe;
}
Und das mit der KI is auch net so dolle. Solange da mehr als 3 Münzen liegen, nimmt der immer 4 ... das ist nicht wirklich ideal ;)

[edit] Code 'n bissl. abgeändert. PS: Ich kann kein C(++) ;)[/edit]
Benutzeravatar
XTale
Zweiter Admin im Bunde
Beiträge: 4736
Registriert: Fr Mai 12, 2000 12:01 am

Beitrag von XTale »

katana - du bist mein held

du hast genau das was ich oben geschrieben hab nochmal in anderen worten gepostet ;)

*Pokalüberreicht*
Bild
Antworten