4-Gewinnt Anfängerproblem

  • Hallo,

    ich bin gerade dabei ein kleines 4 Gewinnt Spiel in PHP zu programmieren komme allerdings schon beim Steine setzen nicht weiter...

    Das Spielfeld lasse ich durch 2 Schleifen erstellen und speichere es dann in einer Session ab.

    Hoffe mir kann jemand weiterhelfen.

    Gruß rambo 5

    Einmal editiert, zuletzt von rambo 5 (7. April 2013 um 19:11)

  • Also erstmal wäre es schön, wenn du uns hilfst, und deinen Code sauber strukturierst, dass man das auch lesen kann.

    Ich weiss jetzt nichts, WAS genau dein Problem ist, meine Glaskugel ist kaputt und in deinem Post stehts nicht, klär uns bitte auf ;)

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Ich weiß nicht wie ich einer Zelle dann einen anderen Wert bzw. Hintergrundfarbe zuordnen kann.
    Zur Not kann ich das Projekt auch per PN schicken falls es zu unverständlich ist :D

  • ja aber dann gibts eigentlich nen lehrer, der dafür zuständig ist euch das zeugs anständig bei zu bringen...
    und html-code in der session zu speichern is gruselig. in die session oder datenbanken schreibt man WERTE nicht code!

    dann zeig mal genau und sauber, was du hast und beschreibe dein problem=> was du haben möchtest
    und dann schauen wir mal, ob wir dir bei den hausaufgaben helfen. ich kann mir nicht vorstellen, dass euer lehrer euch keine infos gegeben hat.

  • Ich habe zurzeit eine index.php und eine verarbeitung.php (mit template vorlage)
    Auf der Index starte ich eine Session

    PHP
    if (!isset($_SESSION['tabelle']))        
    {           
     $_SESSION['tabelle'] = "tabelle";

    Dort wird dann die Tabelle mit den 2 Schleifen von oben sowie 6 Buttons erstellt. (Ich glaube da liegt schon der erste Fehler)

    In der verarbeitung.php lasse ich die Tabelle dann mit $tabelle = $_SESSION['tabelle']; ausgeben. (Die ausgabe erfolgt über das Template)
    Dort habe ich dann für jeden Button das gemacht:

    PHP
    if(isset($_POST['b0'])) 
    {
    $spalte = '0';
    }
    {}


    Wenn Button 0 gedrückt wird sollte $spalte also auf 0 gesetzt werden, bei Button 1 auf 1 usw.

    PHP
    for($i = 0; $i <= 5; $i++)   
    {       
    if($feld[$i][$spalte]==0)           
    {               
     $feld[$i][$spalte] = 1;
    }            
    {           
     $feld[$i][$spalte] = 1;            
    }    
    }

    Beim betätigen tut sich allerdings gar nichts...

    Ich hoffe jemand kann verstehen was ich überhaupt meine :D

    Soll ich dir sonst mal den gesamten index Code per PN schicken? Ich glaube dann verstehst du leichter was ich meine.

  • Du kannst hier auch zip-Dateien hochladen, dann kann sie jeder in diesem Thread herunterladen ;)

    wenn du die tabelle in die Session speicherst und immer diesen Wert ausgiebst, ohne ihn vorher mit deinen neuen, veränderten Daten zu aktualisieren, ist klar, dass immer das gleiche rauskommt.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • nö, ich will nix per pn haben..
    es stellen sich mir zwei fragen.
    1) wieso glaubst du dass es falsch is die 4-gewinnt-matrix in einer doppelschleife zu erzeugen?
    2) wie schickst du die daten denn ab?

    zum einen ist es nämlich richtig eine verschachtelte schleife zu nutzen und zum anderen brauchst du ein form-tag zum absenden der daten oder sonst ajax (was ich nicht glaube, dass ihr es nutzen sollt)

    mal meine theorie zu deinen ersten schritten:

    man hat eine matrix, in jede spalte dieser matrix kann man etwas "reinwerfen", dann wird in dieser spalte ein feld als gefüllt markiert.
    kommt nochmal etwas in die gleiche spalte geht man ein feld höher.

    das ganze ginge mit $_GET
    du hast 6 spalten, also ist $_GET['spalte'] mit 0 bis 5 zu belegen

  • Crosspoating zu http://www.php.de/php-einsteiger…on-problem.html.

    Du solltest wenigstens fair sein und erwähnen,dass du schon in einem anderen Forum gefragt hast und mit der Antwort dort nicht viel anfangen konntest.

    Ja allerdings meinte mein Lehrer das sich das nicht umsetzen lässt so wie ich es möchte, da man die die class nicht von einer einzelnen im nachhinein ändern kann wenn sie dynamisch erstellt wurden.

    @synaptic

    Es wird mit einem form-tag gesendet

    Theoretisch sollte doch jede Zelle mit $feld[$i][$j] angesprochen werden können oder?

    - - - Aktualisiert - - -

    Ok habe es mal hochgeladen aber etwas verändert mit der Session nicht wundern.

  • Dein Lehrer hat offensichtlich sehr wenig Ahnung, sonst hätte er dir bereits gesagt, wie das richtig geht. Ich geb dir jetzt einen Tipp:

    Anstatt die Tabelle in die Session zu speichern, lege dir eine Datei "spielfeld.template.php" an, die AUSSCHLIEßLICH die Daten deines Spielfedes (also dein 2-Dimensionales-Array) in den HTML-Code umwandelt, der das wiederspiegelt und ihn auch direkt ausgiebt. In der Session speicehrst du dann nur deine Spieldaten, keinen HTMl-Code.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Ok hab ich gemacht aber wie lasse ich es direkt ausgeben?
    Muss die verarbeitung.php die spielfeld.template.php automatisch mitöffnen?
    Sry bin echt noch ein Anfänger...

  • Die spielfeld.template.php includest du in die verarbeitung.php. Die kann etwa so aussehen (Einfach den Code mit dem du jetzt schon die Tabelle erstellst):

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Die spielfeld.template.php habe ich erstellt aber wie includiere ich sie in die verarbeitung.php?

    // Ok habe es jetzt hinbekommen danke :)
    Allerdings weiß ich nicht wie ich die Zellen nun verändern kann beim klicken auf einen Button

    Aktuelle Version im Anhang

    2 Mal editiert, zuletzt von rambo 5 (7. April 2013 um 23:39)

  • also ich für meinen teil verliere so langsam den glauben an die menschen, die so tun, als wollten sie was lernen :(
    crossposting is für mich ein grund direkt auszusteigen!!
    ein lehrer, der nix kann, schüler die lieber ihre aufgaben programmiert bekommen würden...

    nenne mir bitte einen einzigen grund, wieso wir bzw ich (kann ja nur für mich sprechen) dir noch helfen sollen!

    die mindeste fairness bescheid zu sagen, dass man woanders nachgefragt hat, aber damit nichts anfangen konnte, sollte doch vorhanden sein.
    da is man als helfender eigentlich inzwischen schon gezwungen 10 minuten zu recherchieren, ob es ggf nen crossposting gibt, damit man sich überlegen kann, ob man noch helfen wird.

    hab echt drüber nachgedacht dir da jetzt noch mit code auf die sprünge zu helfen, aber ich geh lieber pennen, das is ertragreicher.

    gute nacht, bub!

  • nenne mir bitte einen einzigen grund, wieso wir bzw ich (kann ja nur für mich sprechen) dir noch helfen sollen!

    Die gleiche frage stelle ich mir auch.... du bekommst einen letzten Tipp, den kannst du umsetzen oder nicht, ich werd nach diesem Post auch aussteigen:

    spielfeld.template.php erzeugt das Spielfeld aufgrund deiner Session-Daten. Jetz denk mal scharf nach, was sich ändern müsste, damit spielfeld.temaplte.php ne Andere ausgabe erzeugt also zuvor...

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Aber was ich da gefragt habe ist doch was ganz anderes?! Bzw. war das für mich abgeschlossen da mein Lehrer meinte ich solle den Zellen lieber Werte wie 0 (neutral), 1(player1) und 2(player2) zuweisen...
    Wusste auch nicht das man das erwähnen sollte :(
    Haben bis jetzt auch nur mit diesem template-system gearbeitet und noch nichts in die Richtung gemacht nur verschiedene Schleifen, foreach und da wüsste ich nichts was mir weiterhilft
    Daher weiß ich auch nicht wie das dann aussehen muss etc.

    Einmal editiert, zuletzt von rambo 5 (8. April 2013 um 00:28)

  • hab mir deinen murks mal geladen und angesehen.
    WER BRINGT DIR SO EINE KACKE BEI?

    oder hast du nicht verstanden wie die grundlegenden dinge zu laufen haben?

    EVA-Prinzip: Eingabe - Verarbeitung - Ausgabe

    dann nutzt du eine "template-engine" und machst css-echos in der php-datei, die des ganze ausführen soll.
    metatags mitten in einem script-tag, wobei es ja auch nur ein schliessendes script-tag is, das öffnende fehlt gänzlich!
    hochkommata mitten im html-tag
    der code is zum teil schrecklich und zum teil gar nicht eingerückt.
    irgendwo im code sind klammern ohne inhalte.
    session_start mitten in der datei (ok als erste php-ausgabe, aber davon wirds nicht besser)
    etliche notices für nicht definierte offsets.

    wieso sollt ihr sowas machen, wenn ihr nicht den wissensstand dafür habt?
    dir fehlen die basics für html und css
    dir fehlen die minimalen grundkenntnisse von php

    vielleicht solltest du erstmal ne seite bauen mit statischen teilen, die du includest, damit kommste wohl weiter, als wenn wir dir hier was vorkauen.