Forum: Mikrocontroller und Digitale Elektronik Vier gewinnt


von Peter X. (vielfrass)


Lesenswert?

Ob man wohl ein vier gewinnt Programm in einem Mikrocontroller 
unterbringen kann. Ich stelle mir so ein kleines Kästchen vor, 7 Tasten 
um dem uC mitzuteilen, wo der Gegner seinen Stein reingeworfen hat, und 
eine 7-Segment-Anzeige um mir zu zeigen, wo ich den Stein reinwerfen 
soll. Rechenzeit sollte im Bereich von ein paar Sekunden liegen, und 
genau da sehe ich den Hund begraben. Weil "Brut-Force" Konzepte 
benötigen doch sehr viel Rechenzeit. Hat jemand schon mal so etwas 
programmiert?

von Michael U. (amiga)


Lesenswert?

Hallo,

habe ich mal vor vielen Jahren in Basic auf dem KC87 programmiert...

Nach und nach den Alghoritmus aufgebessert, war am Ende eigentlich recht 
spielstark, wenn... ja wenn da nicht kurz vor dem gewinnen öfter ein
Arrayindex out if Range die Sache beendet hätte. ;-((

Mach es "ordentlich", Spielfeld aus 2-Farb Leuchtdioden z.B.
Rechenzeit ist überhaupt kein Problem, am Anfang erstmal einen einfachen 
Ablauf basteln, erstmal schauen, wo eine gegnerische Linie blockiert 
werden muß, dann wo man selbst anbauen kann, dann, wo man 
vorrausschauend aufbauen kann so als Ansatz.

Gruß aus Berlin
Michael

von Peter X. (vielfrass)


Lesenswert?

Michael U. wrote:
> Hallo,
>
> habe ich mal vor vielen Jahren in Basic auf dem KC87 programmiert...
>
> Nach und nach den Alghoritmus aufgebessert, war am Ende eigentlich recht
> spielstark, wenn... ja wenn da nicht kurz vor dem gewinnen öfter ein
> Arrayindex out if Range die Sache beendet hätte. ;-((
>
> Mach es "ordentlich", Spielfeld aus 2-Farb Leuchtdioden z.B.
> Rechenzeit ist überhaupt kein Problem, am Anfang erstmal einen einfachen
> Ablauf basteln, erstmal schauen, wo eine gegnerische Linie blockiert
> werden muß, dann wo man selbst anbauen kann, dann, wo man
> vorrausschauend aufbauen kann so als Ansatz.
>
> Gruß aus Berlin
> Michael


Klingt interessant, magst du mal dein Programm posten?
Ich wollte aber eher ein winzig kleines Gerät konstruieren, das mir ein 
bischen beim Schummeln hilft ;-)
Gerade der Speicherbedarf solcher Programme könnte ein KO Kriterium bei 
der Auswahl sehr kleiner uC's sein...

von Hannes L. (hannes)


Lesenswert?

Peter X. wrote:

> Klingt interessant, magst du mal dein Programm posten?

Ich glaube kaum, dass Michael das KC87-Programm im PC-Format liegen hat, 
um es mal schnell ins Netz zu stellen...

> Ich wollte aber eher ein winzig kleines Gerät konstruieren, das mir ein
> bischen beim Schummeln hilft ;-)

Aha...

> Gerade der Speicherbedarf solcher Programme könnte ein KO Kriterium bei
> der Auswahl sehr kleiner uC's sein...

Nunja, du wirst ja erstmal mit dem Erstellen eines Algorithmus beginnen 
müssen. Erst wenn dieser steht, kannst Du versuchen, ihn zu optimieren 
und in Software zu gießen. Ich habe ja schon ein paar Kleinigkeiten auf 
dem AVR gemacht, aber für die Realisierung eines funktionierenden 
4gewinnt fühle ich mich noch zu unerfahren.

...

von yalu (Gast)


Lesenswert?

Michael U. schrieb:
> habe ich mal vor vielen Jahren in Basic auf dem KC87 programmiert...

Grins :) Es gab da wohl eine Epoche, in der fast jeder, der Zugang zu
einem Computer hatte, ein Vier-Gewinnt programmiert hat. Bei mir war
es an Stelle des KC87 das "Konkurrenzprodukt" aus Amerika mit der
angebissenen Baumfrucht.

Mein Programm spielte immerhin so gut, dass ich selbst kaum eine
Chance dagegen hatte, was aber nichts heißen muss. Leider ist das
Programm verschollen oder gammelt auf einer wahrscheinlich nicht mehr
lesbaren 5¼"-Diskette in der hintersten Kellerecke herum.

Ich habe nur noch so viel im Kopf: Da mit Brute-Force in Basic in
vernünftiger Zeit nicht die erforderliche Zahl von Zügen voraus-
berechnet werden konnte, habe ich mich für einen tabellengesteuerten
Ansatz entschieden. Das lief dann so, dass man bei Spielbeginn erst
einmal 20 Sekunden ;-) warten musste, bis die Tabellen initialisiert
waren, dann kam aber jeder Zug wie aus der Pistole geschossen, ohne
merkliche Verzögerung.

Ich bin mir ziemlich sicher, dass der Algorithmus auf einem mittel-
großen AVR laufen könnte, obwohl er ihn nicht gut nutzen würde, da er
zwar mit Rechenzeit geizt, aber nicht mit RAM. Von der Rechenleistung
dürfte ein in C programmierter AVR zwei bis drei Größenordnungen
besser abschneiden, RAM-mäßig könnten 1024 Bytes aber schon etwas
knapp werden.

Ich werde mal in einer ruhigen Minute versuchen, mir den Algorithmus
ins Gedächtnis zurückzurufen und, falls ich erfolgreich bin, hier
posten :)

von lightninglord (Gast)


Lesenswert?

Kleiner Link statt vieler Worte:

http://www.marwedels.de/malte/ledmatrix/ledmatrix.html

Einfach mal den Source runterladen dort ist schon ein kompletter C-Code 
fürn AVR für Tetris, 4 Gewinnt und andere Spiele aus der "Gründerzeit".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.