php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.09.2004, 21:35  
Gast
 
Beiträge: n/a
Standard Logikspiele wie 4gewinnt coden

Hi,

im Profi-Forum hat man die frage verachtet, vielleicht hilft ja hier jemand:

Zitat:
Hi,

wie kann man den Spielstand eines Games wie 4gewinnt am geschicktesten protokollieren, festhalten bzw. den spielstand auf 'gewinn' (4 gleicher farbe senkrecht oder waagrecht).

Bei einbarmigen Banditen konnte man ja noch gut mit if & else schleifen die Logik durchziehen - bei TicTacToe oder 4gewinnt wirds dagegen schon komplexer.

eine idee?

yoo
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.09.2004, 23:05  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Logikspiele wie 4gewinnt coden

Zitat:
Zitat von yoo2k
im Profi-Forum hat man die frage verachtet
jupp. und zwar aus diesen gründen.

http://www.phpfriend.de/forum/viewto...hlight=#154933

keine weitere diskussion darüber.
danke.


antwort auf deine frage.
mit mehrdimensionalen arrays.

Zitat:
bei TicTacToe oder 4gewinnt wirds dagegen schon komplexer.
klar ist / wird das komplex ... muss es ja auch. wenn du es gut machen willst.
imported_Ben ist offline  
Alt 27.09.2004, 03:14  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Komplex?

Du erzeugst, wie Ben bereits vorgeschlagen hat, ein zweidimensionales Array. Jedes Feld definiert sich durch die Nummer der Spalte und die Nummer der Zeile und kennt den Wert 'leer', 'rot' oder 'blau'.

Dann schreibst du dir z.B. eine kleine Klasse, mit einer Methode, die für einen Stein x prüft, ob rechts oder links neben ihm, oder über ihm oder schräg rechts oder links über ihm drei Steine der gleichen Farbe liegen.

Dann baust du dir eine Methode, die dir alle Steine einer Farbe f von unten nach oben nacheinander aufzählt, wobei du eben zuerst die unterste Reihe durchgehst, dann die zweitunterste usw.

Wird ein Stein eingeworfen, dann aktualisiert du deine Matrix, hölst dir über die zuletzt genannte Methode eine Lste mit den Steinen der Farbe des eingeworfenen Steins und gibt jeden dieser Steine an die Prüfmethode. Sobald diese true, also einen gewinn zurückgibt, brichst du ab.

Ein anderer, sicherlich eleganterer Ansatz wäre, nur den letzten Stein zu überprüfen, ob er eben Teil einer '4er-Kette' ist. Aber da lohnt sich der Denk- (ausgefeilter Algorithmus) oder Schreibaufwand (13 Möglichkeiten) sicher nicht gegenüber einem Gewinn an Performance oder 'Code-Ästhetik'.

Eine Idee wäre noch, den Zuständen die Werte 1 (rot), 0 (leer) und -1 (blau) zu geben. Dann brauchst du die 4 Felder der möglichen Reihen nur aufadieren und schauen, ob du auf 4 bzw. -4 kommst.

Basti
Basti ist offline  
Alt 27.09.2004, 10:35  
Gast
 
Beiträge: n/a
Standard

zu dem tictatc toe spiel: es gibt da ein "maigsches Quadrat", das so angeortnet ist, das die Summe 3er Zahlen senkrecht, waagerecht und diagonal immer 15 ergibt, das sieht wie folgt aus.
Code:
8...1....6 
3...5....7 
4...9 ...2
Du hast also eine 3x3 Matrix und speicherst jetzt in diesem Array erstens die Zahlenwerte und zweitens die aktuelle Belegung (von spieler 1 oder spieler 2 belegt, oder frei).
Du durchläufst die belegungen für spieler 1 und 2 mit einer schleife und addierst alle Zeilen, Spalten und die beiden Diagonalen. wenn ein Spieler auf 15 Punkte kommt, hat er gewonnen.

Das gleiche kann man auch gut dazu verwenden, um den Computergegner zu programmieren.
Wenn er mit einem Zug irgendwo 15 Punkte ereichen kann, so zieht er so, wenn nicht schaut er, ob der gegenspieler irgendwo 15 punkte ereichen kann und setzt so, das er diese Möglichkeit blockiert. trifft beide nicht zu, kannst du den computer zufällig setzten lassen, wobei du bestimmten Positionen mehr "gewicht" geben kannst.
[EDIT: falls dich das mit dem "gewichten" interessiert: http://www.phpfriend.de/forum/viewtopic.php?t=22999 ]
[EDIT2: Es gibt auch größere "magische quadrate", die sich dann auf andere Logikspiele übertragen lassen. Mehr dazu findet man z.b. hier : http://www.mathematische-basteleien.de/magquadrat.htm (sorry !)]
 
Alt 27.09.2004, 11:14  
Erfahrener Benutzer
 
Registriert seit: 01.12.2003
Beiträge: 4.113
supertramp
Standard

der letzte link lautet:
http://www.mathematische-basteleien.de/magsquare.htm
__________________
Aufstrebend, kompetent und werbefrei.
www.developers-guide.net
supertramp ist offline  
Alt 06.10.2004, 23:25  
Gast
 
Beiträge: n/a
Standard Re: Logikspiele wie 4gewinnt coden

Zitat:
Zitat von Ben
Zitat:
Zitat von yoo2k
im Profi-Forum hat man die frage verachtet
jupp. und zwar aus diesen gründen.

http://www.phpfriend.de/forum/viewto...hlight=#154933

keine weitere diskussion darüber.
danke.
der beitrag ist gelöscht.. warum darf darüber nichtmehr diksutiert werden?
danke für die bisheirgen antworten - jede war interessant undwürde mich freuen wenn nochmehr kommt...
 
Alt 07.10.2004, 09:42  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Ich denke, Ben meinte, dass über die Ablehnung deines Themas im Profi-Forum (nicht das Thema selbst) nichtmehr diskutiert werden soll und der Link zeigte wahrscheinlich auf irgendeine Seite, auf der du hättest nachlesen können, welchen Formfehler o.Ä. du gemacht hast - wenn die Seite denn noch existiert hätte.

Ist irgendwie ein Dauerthema auf phpfriend.de - soweit ich das verfolge. Leute posten ins 'Profi-Forum', weil sie denken, dort bessere Antworten zu bekommen (und die Antworten im Anfänger-Forum - aber sicherlich auch ab und an in den anderen Foren - sind bisweilen auch krass daneben), die selbsternannten, tatsächlichen (nach den Definitionen hier) und vermeintlichen Profis putzen ihren Status raus, indem sie unvorsichtige oder ignorante oder auch missverstandene Fragesteller auf ihre Plätze verweisen usw.

Aber das ist wohl der Anfang genau der Diskussion, die Ben hier nicht haben möchte *g.

> danke für die bisheirgen antworten - jede war interessant undwürde
> mich freuen wenn nochmehr kommt...

Vielleicht solltest du die Frage etwas weiter präzisieren.

Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
zum Coden jemand gesucht sofort planett Beitragsarchiv 0 15.05.2008 12:26
Time() selber coden? $$$ ThiKool $$$ PHP Tipps 2006 8 11.07.2006 22:50
Coden!? Beitragsarchiv 14 30.08.2005 17:37
Design da - wie coden lessiv HTML, Usability und Barrierefreiheit 7 30.08.2005 08:32
Bitte einmal Coden PHP Tipps 2005-2 10 17.08.2005 10:50
newsscript coden $$$ ThiKool $$$ PHP Tipps 2005 10 30.04.2005 08:55
Erst denken, dann coden. PHP Tipps 2005 5 28.04.2005 20:16
Sinnvolles Coden einer Page GrU3nL!nG PHP Tipps 2005 24 11.04.2005 15:56
Starthilfe für das Coden gesucht GrU3nL!nG Beitragsarchiv 14 11.04.2005 15:03
Coden PHP-Fortgeschrittene 2 22.10.2004 10:37
Kann mir einer eine Clanpage coden, designen ??? Beitragsarchiv 7 13.08.2004 12:56
[Erledigt] Kann mir einer eine Clanpage coden, designen ??? PHP Tipps 2004 3 11.08.2004 22:01
Problem mit editor coden HTML, Usability und Barrierefreiheit 1 29.06.2004 14:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tipps 4gewinnt, profie 4 gewinnt tipps, g logikspiel 2005

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.