Automat

Fragen zum Thema HTML, JavaScript, PHP
sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Sa Jan 09, 2016 8:52 pm

Aber das macht doch in dem Fall keinen Unterschied weil es doch eh nur ein Feld gibt

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Sa Jan 09, 2016 11:32 pm

sashpta hat geschrieben:Aber das macht doch in dem Fall keinen Unterschied weil es doch eh nur ein Feld gibt
Das ist richtig. Und falsch.

Das ganze nennt sich Software-Architektur. Du baust gerade einen Beton-Klumpen, der tut, was Du willst. Wenn Du damit fertig bist, wirst Du es nutzen können oder wegwerfen.

Gute Software schreibt man aber so, dass man sie mehrfach benutzen kann.
Nun willst Du die Software nicht mehrfach benutzen, oder? Oder?
Du willst die Software mehrfach benutzen - einmal so, wie Du sie nutzen möchtest und dann ganz oft mit Testfällen, um halbwegs sicherzustellen, dass die Software überhaupt funktioniert.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » So Jan 10, 2016 12:26 am

Gut also ich verstehe was du meinst, für mich macht es zwar bei dem hier keinen Sinn aber es schadet bestimmt nicht wenn man sich da direkt dran gewöhnt^^

Bleibt nur noch die Frage wie man das umsetzt.

ich müsste mit meinem Code doch auch noch weitere Felder erstellen können und dann auch überprüfen können. Dann kann ich doch das selbe die du
Xin hat geschrieben: Ich kann die Auswertung also für ein von mir festgelegtes und übergebenes Feld testen - Du nicht, weil Du nicht weißt auf welches Spielfeld sich das Ergebnis bezieht.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » So Jan 10, 2016 1:23 am

sashpta hat geschrieben:Gut also ich verstehe was du meinst, für mich macht es zwar bei dem hier keinen Sinn aber es schadet bestimmt nicht wenn man sich da direkt dran gewöhnt^^

Bleibt nur noch die Frage wie man das umsetzt.
Nimm erstmal Deinen Code soweit auseinander, dass Du eine Funktion zum erstellen des Spielfeldes hast, die zum evaluieren und eine für die Ausgabe - wie ich es vorher schon beschrieb.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Mi Jan 13, 2016 5:32 pm

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>

</head>
<body>

<?php
  function Feld() {
   $feld[0] = rand(1, 9);
   $feld[1] = rand(1, 9);
   $feld[2] = rand(1, 9);
   $feld[3] = rand(1, 9);
   $feld[4] = rand(1, 9);
   $feld[5] = rand(1, 9);
   $feld[6] = rand(1, 9);
   $feld[7] = rand(1, 9);
   $feld[8] = rand(1, 9);

 for ($i = 0; $i < 3; $i++) {
        Bilder($feld[$i]);
      }

   echo "<br>";

    for ($i = 3; $i < 6; $i++) {
        Bilder($feld[$i]);
      }

   echo "<br>";

    for ($i = 6; $i < 9; $i++) {
        Bilder($feld[$i]);
      }

   echo "<br>";

   evaluieren();
}
function Bilder($feld) {
   switch ($feld):
       case 1:
           echo '<img src="http://www.kissenjunkie.de/wp-content/uploads/2015/12/Celeste-Kissen-grau-kleine-Sterne-300x300.jpg" width = "50px" height "50px">';
           break;
       case 2:
           echo '<img src="http://geschenke-fuer-maenner.bernaunet.eu/wp-content/uploads/2015/10/kleiner-Schutzengel-300x300.jpg" width = "50px" height "50px>';
           break;
       case 3:
           echo '<img src="http://opensource.org/files/osi_keyhole_300X300_90ppi.png" width = "50px" height "50px>';
           break;
       case 4:
           echo '<img src="http://www.tierisch-gut-drauf.com/wp-content/uploads/sites/12/2015/07/kleiner-kratzbaum-300x300.jpg" width = "50px" height "50px>';
           break;
       case 5:
           echo '<img src="http://www.cricketlife.net/wp-content/uploads/2015/12/fliesen-fr-kleine-bder-300x300.jpg" width = "50px" height "50px>';
           break;
       case 6:
           echo '<img src="http://www.opticbits.com/wp-content/uploads/2015/12/sofas-fr-kleine-rume-300x300.jpg" width = "50px" height "50px>';
           break;
       case 7:
           echo '<img src="http://www.febs.de/wp-content/uploads/2015/05/LinkedIn_logo_initials-300x300.png" width = "50px" height "50px>';
           break;
       case 8:
           echo '<img src="http://kleinehilfsaktion.de/wp-content/uploads/2014/10/ausblick-kleine-hilfsaktion-300x300.jpg" width = "50px" height "50px>';
           break;
       case 9:
           echo '<img src="http://www.opticbits.com/wp-content/uploads/2015/11/fliesen-ideen-kleine-badezimmer-300x300.jpg" width = "50px" height "50px>';
           break;
       endswitch;

}


function evaluieren() {



 $ReiheTOP = false;
 $ReiheMID = false;
 $ReiheBOT = false;
 $DiaLR = false;
 $DiaRL = false;
 $DoppelReihe = false;
 $DoppelDia = false;
 $DoppelReihe_U_LRdia = false;
 $DoppelReihe_U_RLdia = false;
 $DoppelDia_U_Rtop = false;
 $DoppelDia_U_Rmid = false;
 $DoppelDia_U_Rbot = false;
 $alleGleich = false;


# erste Reihe komplett gleich
   if ($feld[0] == $feld[1]) {
      if ($feld[1] == $feld[2]) {
         $ReiheTOP = true;
      }
   }

   # zweite Reihe komplett gleich
   if ($feld[3] == $feld[4]) {
      if ($feld[4] == $feld[5]) {
         $ReiheMID = true;
      }
   }

   # dritte Reihe komplett gleich
   if ($feld[6] == $feld[7]) {
      if ($feld[7] == $feld[8]) {
         $ReiheBOT = true;
      }
   }

   # diagonal (links nach rechts)
   if ($feld[0] == $feld[4]) {
      if ($feld[4] == $feld[8]) {
         $DiaLR = true;
      }
   }

   # diagonal (rechts nach links)
   if ($feld[2] == $feld[4]) {
      if ($feld[4] == $feld[6]) {
         $DiaRL = true;
      }
   }
   
   
   
   # 2 GLeiche, oben, mitte
   if ($ReiheTOP == true and $ReiheMID == true) {
      $DoppelReihe = true;
   }

   # 2 Gleiche, oben, unten
   if ($ReiheTOP == true and $ReiheBOT == true) {
      $DoppelReihe = true;
   }

   # 2 Gleiche, mitte, unten
   if ($ReiheMID == true and $ReiheBOT == true) {
      $DoppelReihe = true;
   }

   # 2 Gleiche, Diagonal
   if ($DiaLR == true and $DiaRL == true) {
      $DoppelDia = true;
   }

   # 3 Gleiche, 2 Reihe + Dia l-r
   if ($DoppelReihe == true and $DiaLR == true) {
      $DoppelReihe_U_LRdia = true;
      }

   # 3 Gleiche, 2 Reihe + Dia r-l
   if ($DoppelReihe == true and $DiaRL == true) {
      $DoppelReihe_U_RLdia = true;
      }

   # 3 Gleiche, 2 Dia + Reihe, oben
   if ($DoppelDia == true and $ReiheTOP == true) {
      $DoppelDia_U_Rtop = true;
      }

   # 3 GLeiche, 2 Dia + Reihe, mitte
   if ($DoppelDia == true and $ReiheMID == true) {
      $DoppelDia_U_Rmid = true;
      }

   # 3 Gleiche, 2 Dia + Reihe, unten
   if ($DoppelDia == true and $ReiheBOT == true) {
      $DoppelDia_U_Rbot = true;
      }

   # Alle gleich
   if ($DoppelReihe == true and $ReiheTOP == true || $DoppelReihe == true and $ReiheMID == true || $DoppelReihe == true and $ReiheBOT == true) {
      $alleGleich = true;
      }


Ausgabe();

}


function Ausgabe() {

      $Sieg_R = "SIEG! Du hast 3 Gleiche in einer Reihe!";                                     # done
      $Sieg_D = "SIEG! Du hast 3 Gleiche diagonal!";                                          # done
      $D_Sieg_R = "DOPPEL SIEG!! Du hast 2 mal 3 Gleiche in einer Reihe!";                        # done
      $D_Sieg_D = "DOPPEL SIEG!! Du hast 2 mal 3 Gleiche diagonale!";                              # done
      $T_Sieg_2R = "DREIFACH SIEG!!! Du hast 2 mal 3 Gleiche in einer Reihe und 1 diagonales!";
      $T_Sieg_2D = "DREIFACH SIEG!!! Du hast 2 Diagonale und einmal 3 Gleiche in einer Reihe!";
      $Jackpot = "JACKPOT!!!!!!!!!";      


  #Jackpot
  if ($alleGleich == true):
    echo $Jackpot;
  # 2 Diagonal + Reihe
  elseif ($DoppelDia_U_Rbot == true || $DoppelDia_U_Rmid == true || $DoppelDia_U_Rtop == true):
    echo $T_Sieg_2D;
  # 2 Reihe + Diagonal
  elseif ($DoppelReihe_U_RLdia == true || $DoppelReihe_U_LRdia == true):
    echo $T_Sieg_2R;
  # 2 Diagonal
  elseif ($DoppelDia == true):
    echo $D_Sieg_D;
  # 2 Reihen
  elseif ($DoppelReihe == true):
    echo $D_Sieg_R;
  # Diagonal
  elseif ($DiaRL == true || $DiaLR == true):
    echo $Sieg_D;
  # Reihe
  elseif ($ReiheBOT == true || $ReiheMID == true || $ReiheTOP == true):
    echo $Sieg_R;
  endif;
}

Feld();

?>

   </body>
</html>
Habs jetzt so, sehe da zwar keinen Sinn drin, da es nicht wirklich übersichtlicher ist, schließlich habe ich ja nur ne Funktion um den vorher schon vorhandenen Code gemacht aber gut. Wenigstens sollte jetzt das gehen, dass nur den richtigen Text anzeigen somit hatte es doch irgendwie etwas Sinn :D aber gut das einzige Problem ist jetzt nur, dass er sich beschwert:

Code: Alles auswählen

NOTICE Undefined variable: feld on line number 87

NOTICE Undefined variable: feld on line number 87

NOTICE Undefined variable: feld on line number 88

NOTICE Undefined variable: feld on line number 88

NOTICE Undefined variable: feld on line number 94

NOTICE Undefined variable: feld on line number 94

NOTICE Undefined variable: feld on line number 95

NOTICE Undefined variable: feld on line number 95

NOTICE Undefined variable: feld on line number 101

NOTICE Undefined variable: feld on line number 101

NOTICE Undefined variable: feld on line number 102

NOTICE Undefined variable: feld on line number 102

NOTICE Undefined variable: feld on line number 108

NOTICE Undefined variable: feld on line number 108

NOTICE Undefined variable: feld on line number 109

NOTICE Undefined variable: feld on line number 109

NOTICE Undefined variable: feld on line number 115

NOTICE Undefined variable: feld on line number 115

NOTICE Undefined variable: feld on line number 116

NOTICE Undefined variable: feld on line number 116

NOTICE Undefined variable: alleGleich on line number 191

NOTICE Undefined variable: DoppelDia_U_Rbot on line number 194

NOTICE Undefined variable: DoppelDia_U_Rmid on line number 194

NOTICE Undefined variable: DoppelDia_U_Rtop on line number 194

NOTICE Undefined variable: DoppelReihe_U_RLdia on line number 197

NOTICE Undefined variable: DoppelReihe_U_LRdia on line number 197

NOTICE Undefined variable: DoppelDia on line number 200

NOTICE Undefined variable: DoppelReihe on line number 203

NOTICE Undefined variable: DiaRL on line number 206

NOTICE Undefined variable: DiaLR on line number 206

NOTICE Undefined variable: ReiheBOT on line number 209

NOTICE Undefined variable: ReiheMID on line number 209

NOTICE Undefined variable: ReiheTOP on line number 209
Das liegt dann wohl daran dass jetzt alles in Funktionen ist und die Variablen die er braucht nicht in seiner eigenen Funktion sind oder?
Hab versucht ein "global" davor zu setzten, jedoch kommt dann diese Meldung

Code: Alles auswählen

FATAL ERROR syntax error, unexpected '[', expecting ',' or ';' on line number 4
muss man dann immer erst schreiben

Code: Alles auswählen

 global $variable;
$variable = new "Auto"; 

oder wie? oder nimmt man dort gar kein "global" ?
Hab das nur so (https://gyazo.com/49a845ea6425b0199694bd9e65d15a70) gesehen als ich bei php.net den Eintrag "Geltungsbereich von Variablen" überflogen hab^^

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Do Jan 14, 2016 10:32 am

Deine Funktion "Feld" sollte ein Feld zurückgeben. Dieses Feld solltest Du der Funktion evaluate übergeben. Die Sachen sollten unabhängig voneinander sein.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Do Jan 14, 2016 1:19 pm

Wie soll ich das machen?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Do Jan 14, 2016 4:23 pm

sashpta hat geschrieben:Wie soll ich das machen?
Schau Dir die ersten beiden Sätze meines vorherigen Postings an und setze sie um. :)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Do Jan 14, 2016 5:06 pm

Ja das ist mir klar aber wie mach ich dass es ein "ganzes" Feld ist? Sonst wärs doch nicht anders als jetzt

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Do Jan 14, 2016 5:12 pm

sashpta hat geschrieben:Ja das ist mir klar aber wie mach ich dass es ein "ganzes" Feld ist? Sonst wärs doch nicht anders als jetzt
Erstmal reicht es, wenn es ein Array bleibt. Du kannst da eine Struktur draus machen, aber es geht erstmal darum, dass die Funktionalität voneinander getrennt ist.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten