www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vier gewinnt


Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: lightninglord (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.