Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- session_start();
- #<!-- Session, zum Speichern der Zahlen wird gestartet -->
- ?>
- <html>
- <head>
- <title>Sudoku</title>
- <link rel = "stylesheet" href = "style.css">
- <meta charset="utf-8">
- </head>
- <header>
- <?php
- # Prüfen, ob die Zahlen gesetzt sind
- # und falls keine Zahlen gesetzt sind (leer) und nicht 81 Arrays --> nicht ausführen
- if (isset($_POST["zahleneingabe"]) && !empty($_POST["zahleneingabe"]) && count($_POST["zahleneingabe"]) === 81) {
- # Session definieren
- $_SESSION["zahleneingabe"] = $_POST["zahleneingabe"];
- # Array in 9 Teile zerteilen
- # Zeile 0 auslesen
- $row = array_chunk($_SESSION['zahleneingabe'], 9);
- # Spalte 0 auslesen
- $column = array_column($row, 0);
- # Alle Spalten
- # prüfen, ob alle Zeilen komplett richtig sind
- # hier werden die Fehler gespeichert
- $fehler_zeilen = array();
- # Schleife die 9x ausgeführt wird, $r steht für die aktuelle Zeile
- for($r = 0; $r < 9; $r++)
- # Schleife die 9x ausgeführt wird, einmal für jede Zahl, $i entspricht der aktuellen Zahl (die 0 muss eine 1 sein und die 9 eine 10, sonst wird die 9 nicht überprüft)
- for($i = 1; $i < 10; $i++) {
- # falls die Zahl ($i) mehr als einmal in der Zeile ($r) vorkommt, ist es ein Fehler
- # die Position der Zahl ($i) im Array ($r) werden im Array ($keys) gespeichert
- if (count($keys = array_keys($row[$r], (string)$i)) > 1) {
- # Details zum Fehler (Zeile, falsche Zahl) werden in dem Array für die Fehler gespeichert
- $fehler_zeilen[] = array(
- "row" => $r,
- "number" => $i,
- "offset" => $keys
- );
- }
- }
- # Spalten
- # Anstatt ($r) jetzt ($c)
- # hier werden die Fehler gespeichert
- $fehler_spalten = array();
- # Schleife die 9x ausgeführt wird, $c steht für die aktuelle Spalte
- for($c = 0; $c < 9; $c++)
- # Schleife die 9x ausgeführt wird, einmal für jede Zahl, $i entspricht der aktuellen Zahl (die 0 muss eine 1 sein und die 9 eine 10, sonst wird die 9 nicht überprüft)
- for($i = 1; $i < 10; $i++) {
- # liest zuerst die Spalte aus
- # macht aus der Zahl ($i) einen String um sie vergleichen zu können (Weil im Sudoku Strings eingegeben werden)
- # speichert alle Positionen aller gleichen Elementen im Arrays $keys
- # zählt die Elemente von $keys und prüft, ob es mehr als 1 sind: falls ja wird die IF-Abfrage durchgeführt
- if (count($keys = array_keys(array_column($row, $c), (string)$i)) > 1) {
- # Details zum Fehler (Zeile, falsche Zahl)
- $fehler_spalten[] = array(
- "column" => $c,
- "number" => $i,
- "offset" => $keys
- );
- }
- }
- $richtig_oder_falsch = (count($fehler_zeilen) > 0 || count($fehler_spalten) > 0) ? "falsch" : "richtig" ;
- } else {
- $richtig_oder_falsch = 'richtig';
- }
- echo "<center><img src='sudoku_$richtig_oder_falsch.png' alt='sudokubild' class='sudokubild'></center>";
- ?>
- </header>
- <body>
- <!-- Erklärung des Spieles -->
- <div class="erklärung">
- <p>In Sudoku geht es darum, dass du es schaffst, dass jede Zahl,<br>in jeder Zeile und Spalte nur einmal vorkommt!</p>
- </div>
- <?php
- # noch sind keine Daten zum füllen der Felder verfügbar
- $fill = 0;
- # Zahlen in der Session speichern
- if (isset($_POST['zahleneingabe'])){
- $_SESSION['zahleneingabe'] = $_POST['zahleneingabe'];
- # jetzt sind Daten um die Felder zu füllen verfügbar
- $fill = 1;
- }
- if ($richtig_oder_falsch === 'falsch') {
- echo "<b><center><font size='6' color='darkred'>Du hast eine Zahl eingetragen, die sich Bereits in einer Zeile oder Spalte befindet!</font></center><br></b>";
- /*var_dump($fehler_zeilen);
- var_dump($fehler_spalten);*/
- }
- # Hier wird geprüft, ob das Sudoku komplett richtig ausgefüllt ist und es wird geprüft, ob das Sudoku leer ist
- # Wenn das Sudoku richtig ausgefüllt wurde und es nicht leer ist, wird eine Erfolgsnachricht ausgegeben
- for($c = 0; $c < 81; $c++) {
- if (!empty($_SESSION['zahleneingabe'][$c])) {
- if ($richtig_oder_falsch === 'richtig') {
- echo "<b><center><font size='6' color='#009f00'>Herzlichen Glückwunsch! Du hast das Sudoku komplett richtig ausgefüllt!</font></center><br></b>";
- }
- }
- }
- ?>
- <main>
- <!-- Sorgt dafür, dass das Formluar die Methode POST hat und einen extra Bereich hat -->
- <form action="#" method="POST">
- <section id="sudoku">
- <!--Zeile1-->
- <!--Feld1-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][0] : ''?>"></div>
- <!--Feld2-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="4" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld3-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][2] : ''?>"></div>
- <!--Feld4-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="7" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld5-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][4] : ''?>"></div>
- <!--Feld6-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][5] : ''?>"></div>
- <!--Feld7-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="2" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld8-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][7] : ''?>"></div>
- <!--Feld9-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][8] : ''?>"></div>
- <!--Zeile2-->
- <!--Feld10-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="6" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld11-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][10] : ''?>"></div>
- <!--Feld12-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="7" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld13-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][12] : ''?>"></div>
- <!--Feld14-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="3" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld15-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][14] : ''?>"></div>
- <!--Feld16-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][15] : ''?>"></div>
- <!--Feld17-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][16] : ''?>"></div>
- <!--Feld18-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="4" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Zeile3-->
- <!--Feld19-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][18] : ''?>"></div>
- <!--Feld20-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="5" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld21-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="9" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld22-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="4" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld23-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][22] : ''?>"></div>
- <!--Feld24-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][23] : ''?>"></div>
- <!--Feld25-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="1" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld26-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="8" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld27-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][26] : ''?>"></div>
- <!--Zeile4-->
- <!--Feld28-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="2" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld29-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][28] : ''?>"></div>
- <!--Feld30-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="4" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld31-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="5" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld32-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="6" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld33-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="3" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld34-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][33] : ''?>"></div>
- <!--Feld35-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][34] : ''?>"></div>
- <!--Feld36-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="8" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Zeile5-->
- <!--Feld37-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][36] : ''?>"></div>
- <!--Feld38-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="1" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld39-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][38] : ''?>"></div>
- <!--Feld40-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="2" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld41-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][40] : ''?>"></div>
- <!--Feld42-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][41] : ''?>"></div>
- <!--Feld43-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][42] : ''?>"></div>
- <!--Feld44-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][43] : ''?>"></div>
- <!--Feld45-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="3" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Zeile6-->
- <!--Feld46-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][45] : ''?>"></div>
- <!--Feld47-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][46] : ''?>"></div>
- <!--Feld48-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][47] : ''?>"></div>
- <!--Feld49-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="9" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld50-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][49] : ''?>"></div>
- <!--Feld51-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][50] : ''?>"></div>
- <!--Feld52-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][51] : ''?>"></div>
- <!--Feld53-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="2" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld54-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][53] : ''?>"></div>
- <!--Zeile7-->
- <!--Feld55-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="1" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld56-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][55] : ''?>"></div>
- <!--Feld57-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="5" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld58-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][57] : ''?>"></div>
- <!--Feld59-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][58] : ''?>"></div>
- <!--Feld60-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][59] : ''?>"></div>
- <!--Feld61-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][60] : ''?>"></div>
- <!--Feld62-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][61] : ''?>"></div>
- <!--Feld63-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][62] : ''?>"></div>
- <!--Zeile8-->
- <!--Feld64-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][63] : ''?>"></div>
- <!--Feld65-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][64] : ''?>"></div>
- <!--Feld66-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="2" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld67-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][66] : ''?>"></div>
- <!--Feld68-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][67] : ''?>"></div>
- <!--Feld69-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="8" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld70-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][69] : ''?>"></div>
- <!--Feld71-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="6" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld72-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="9" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Zeile9-->
- <!--Feld73-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][72] : ''?>"></div>
- <!--Feld74-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="8" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld75-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][74] : ''?>"></div>
- <!--Feld76-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="6" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld77-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="7" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld78-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][77] : ''?>"></div>
- <!--Feld79-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][78] : ''?>"></div>
- <!--Feld80-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="5" textarea readonly="readonly" style="background-color: #D8D8D8"></div>
- <!--Feld81-->
- <div class="input"><input type="text" name="zahleneingabe[]" minlength="1" maxlength="1" pattern="[1-9]" value="<?=$fill ? $_SESSION['zahleneingabe'][80] : ''?>"></div>
- </section>
- <center><input type="submit" value="Sudoku überprüfen"></center>
- </form>
- </main>
- <?php
- #echo "<center><font size='6' color='darkred'>$falsch</font></center>";
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement