142 lines
4.7 KiB
PHP
142 lines
4.7 KiB
PHP
<?php
|
||
require("classes.php");
|
||
|
||
$gridStr = basename(strip_tags($_SERVER["REQUEST_URI"]));
|
||
// URL contains grid
|
||
if (preg_match("#^[1-9.]{81}$#", $gridStr)) {
|
||
require("get_browser.php");
|
||
header("Vary: User-Agent");
|
||
?>
|
||
<!DOCTYPE html>
|
||
<html lang='fr'>
|
||
<head>
|
||
<meta charset='utf-8' />
|
||
<meta name='viewport' content='width=device-width' />
|
||
<title>Sudoku</title>
|
||
<link rel='stylesheet' type='text/css' href='style.css' />
|
||
<script src='sudoku.js'></script>
|
||
</head>
|
||
<body>
|
||
<header>
|
||
<h1>Sudoku</h1>
|
||
</header>
|
||
<form id='sudokuForm'>
|
||
<div>
|
||
<table id='grid' class='grid'>
|
||
<tbody>
|
||
<?php
|
||
for ($row = 0; $row < 9; $row++) {
|
||
?>
|
||
<tr>
|
||
<?php
|
||
for ($column = 0; $column < 9; $column++) {
|
||
$value = $gridStr[9*$row+$column];
|
||
if ($value == UNKOWN) {
|
||
$value = "";
|
||
$disabled = "";
|
||
} else {
|
||
$disabled = "disabled";
|
||
}
|
||
?>
|
||
<td>
|
||
<input type='number' min='1' max='9' step='1' value='<?=$value?>' list='<?=$row.$column?>' <?=$disabled?>/>
|
||
<datalist id='<?=$row.$column?>'></datalist>
|
||
</td>
|
||
<?php
|
||
}
|
||
?>
|
||
</tr>
|
||
<?php
|
||
}
|
||
?>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div id='buttons' class='buttons'>
|
||
<?php
|
||
for($value=1; $value<=9; $value++) {
|
||
echo " <button type='button' onclick='highlight(\"$value\")' accesskey='$value'>$value</button>\n";
|
||
}
|
||
?>
|
||
</div>
|
||
<div class='buttons'>
|
||
<button type='reset'>Tout effacer</button>
|
||
<button id='undoButton' type='button' onclick='undo()' disabled accesskey='z'>Annuler</button>
|
||
<input id='colorPicker' type='color' title='Changer de couleur de stylo' value='#00008b'/>
|
||
</div>
|
||
</form>
|
||
<section>
|
||
Remplissez la grille de sorte que chaque ligne, colonne et région (carré de 3×3 cases) contienne tous les chiffres de 1 à 9.
|
||
</section>
|
||
<?php
|
||
$userAgent=getBrowser();
|
||
if($userAgent["platform"] == "mac" || $userAgent["platform"] == "linux" || $userAgent["platform"] == "windows") {
|
||
if($userAgent["platform"] == "mac") $keyboardShortcurt = "<kbd>Control</kbd> + <kbd>Alt</kbd>";
|
||
elseif($userAgent["platform"] == "linux" || $userAgent["platform"] == "windows") {
|
||
if($userAgent["name"] == "Mozilla Firefox") $keyboardShortcurt = "<kbd>Alt</kbd> + <kbd>Maj</kbd>";
|
||
else $keyboardShortcurt = "<kbd>Alt</kbd>";
|
||
}
|
||
?>
|
||
<section>
|
||
<table class='shortcuts'>
|
||
<caption>Raccourcis clavier</caption>
|
||
<tbody>
|
||
<tr>
|
||
<td><?=$keyboardShortcurt?> + <kbd>1</kbd>~<kbd>9</kbd></td>
|
||
<td>Surligner</td>
|
||
</tr>
|
||
<tr>
|
||
<td><?=$keyboardShortcurt?> + <kbd>Z</kbd></td>
|
||
<td>Annuler</td>
|
||
</tr>
|
||
<tr>
|
||
<td><kbd>Tab</kbd>, <kbd>Maj</kbd> + <kbd>Tab</kbd></td>
|
||
<td>Déplacement</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
<?php
|
||
}
|
||
?>
|
||
<footer>
|
||
<a href=''>Lien vers cette grille</a><br/>
|
||
<a href='.'>Nouvelle grille</a>
|
||
</footer>
|
||
</body>
|
||
</html>
|
||
<?php
|
||
} else {
|
||
$grid = new Grid();
|
||
$grid->generate();
|
||
|
||
header("HTTP/1.0 400 Bad Request", true, 400);
|
||
|
||
$urlDir = $_SERVER["REQUEST_SCHEME"] . "://" . $_SERVER["HTTP_HOST"] . dirname($_SERVER["DOCUMENT_URI"]);
|
||
$urlExample = $urlDir . "/" . $grid->toString();
|
||
?>
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset='utf-8' />
|
||
<meta name='viewport' content='width=device-width' />
|
||
<title>Grille incorrecte</title>
|
||
<link rel='stylesheet' type='text/css' href='style.css' />
|
||
</head>
|
||
<body>
|
||
<header>
|
||
<h1>Grille incorrecte</h1>
|
||
</header>
|
||
L'adresse URL doit être de la forme : <?=$urlDir?>/<em>grille</em>,<br/>
|
||
<em>grille</em> étant une suite de 81 caractères représentant la grille de gauche à droite puis de haut en bas, soit :
|
||
<ul>
|
||
<li>un chiffre entre 1 et 9 pour les cases connues</li>
|
||
<li>un point pour les case vides</li>
|
||
</ul>
|
||
Exemple : <a href='<?=$urlExample?>'><?=$urlExample?></a><br/>
|
||
</body>
|
||
</html>
|
||
<?php
|
||
}
|
||
?>
|