html format
This commit is contained in:
parent
743f7fa72d
commit
ddcabbdd39
67
head.php
67
head.php
@ -1,35 +1,34 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<title>Sudoku</title>
|
<title>Sudoku</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap-dark-5@1.1.3/dist/css/bootstrap-dark.min.css" rel="stylesheet" type="text/css" title="Automatique" />
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap-dark-5@1.1.3/dist/css/bootstrap-dark.min.css" rel="stylesheet" type="text/css" title="Automatique" />
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="alternate stylesheet" type="text/css" title="Clair" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous" />
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="alternate stylesheet" type="text/css" title="Clair" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous" />
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap-dark-5@1.1.3/dist/css/bootstrap-night.min.css" rel="alternate stylesheet" type="text/css" title="Sombre" />
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap-dark-5@1.1.3/dist/css/bootstrap-night.min.css" rel="alternate stylesheet" type="text/css" title="Sombre" />
|
||||||
<link href="https://cdn.jsdelivr.net/npm/remixicon@3.2.0/fonts/remixicon.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/npm/remixicon@3.2.0/fonts/remixicon.css" rel="stylesheet">
|
||||||
<link rel="stylesheet" type="text/css" href="css/style.css" />
|
<link rel="stylesheet" type="text/css" href="css/style.css" />
|
||||||
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=196&" sizes="196x196">
|
|
||||||
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=160&" sizes="160x160">
|
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=196&" sizes="196x196">
|
||||||
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=96&" sizes="96x96">
|
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=160&" sizes="160x160">
|
||||||
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=16&" sizes="16x16">
|
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=96&" sizes="96x96">
|
||||||
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=32&" sizes="32x32">
|
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=16&" sizes="16x16">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=57&" sizes="57x57">
|
<link rel="icon" type="image/png" href="thumbnail.php?grid=<?=$currentGrid?>size=32&" sizes="32x32">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=114&" sizes="114x114">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=57&" sizes="57x57">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=72&" sizes="72x72">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=114&" sizes="114x114">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=144&" sizes="144x144">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=72&" sizes="72x72">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=60&" sizes="60x60">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=144&" sizes="144x144">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=120&" sizes="120x120">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=60&" sizes="60x60">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=76&" sizes="76x76">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=120&" sizes="120x120">
|
||||||
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=152&" sizes="152x152">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=76&" sizes="76x76">
|
||||||
<link rel="manifest" href="manifest.php?grid=<?=$currentGrid?>">
|
<link rel="apple-touch-icon" href="thumbnail.php?grid=<?=$currentGrid?>size=152&" sizes="152x152">
|
||||||
<meta property="og:title" content="Sudoku" />
|
<link rel="manifest" href="manifest.php?grid=<?=$currentGrid?>">
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta property="og:url"
|
<meta property="og:title" content="Sudoku" />
|
||||||
content="<?=$_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"].$_SERVER["DOCUMENT_URI"]?>" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:image"
|
<meta property="og:url" content="<?=$_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"].$_SERVER["DOCUMENT_URI"]?>" />
|
||||||
content="<?=$_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"].dirname($_SERVER["DOCUMENT_URI"])?>/thumbnail.php?size=200&grid=<?=$currentGrid?>" />
|
<meta property="og:image" content="<?=$_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"].dirname($_SERVER["DOCUMENT_URI"])?>/thumbnail.php?size=200&grid=<?=$currentGrid?>" />
|
||||||
<meta property="og:image:width" content="200" />
|
<meta property="og:image:width" content="200" />
|
||||||
<meta property="og:image:height" content="200" />
|
<meta property="og:image:height" content="200" />
|
||||||
<meta property="og:description"
|
<meta property="og:description" content="Remplissez la grille de sorte que chaque ligne, colonne et région (carré de 3×3 cases) contienne tous les chiffres de 1 à 9." />
|
||||||
content="Remplissez la grille de sorte que chaque ligne, colonne et région (carré de 3×3 cases) contienne tous les chiffres de 1 à 9." />
|
<meta property="og:locale" content="fr_FR" />
|
||||||
<meta property="og:locale" content="fr_FR" />
|
<meta property="og:site_name" content="<?=$_SERVER["HTTP_HOST"]?>" />
|
||||||
<meta property="og:site_name" content="<?=$_SERVER["HTTP_HOST"]?>" />
|
|
||||||
|
@ -295,12 +295,12 @@ function onmouseenter(event) {
|
|||||||
|
|
||||||
box.neighbourhood.forEach(neighbour => {
|
box.neighbourhood.forEach(neighbour => {
|
||||||
if (valueToInsert && neighbour.value == valueToInsert) {
|
if (valueToInsert && neighbour.value == valueToInsert) {
|
||||||
for (neighbour of[box, neighbour]) {
|
for (neighbour of [box, neighbour]) {
|
||||||
neighbour.parentElement.classList.add("table-danger")
|
neighbour.parentElement.classList.add("table-danger")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onmouseleave(event) {
|
function onmouseleave(event) {
|
||||||
|
77
sudoku.php
77
sudoku.php
@ -2,7 +2,7 @@
|
|||||||
<html lang='fr' prefix="og: https://ogp.me/ns#">
|
<html lang='fr' prefix="og: https://ogp.me/ns#">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<?php require_once("head.php") ?>
|
<?php require_once("head.php") ?>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="text-center">
|
<body class="text-center">
|
||||||
@ -12,69 +12,48 @@
|
|||||||
<div class='d-flex justify-content-between mb-2'>
|
<div class='d-flex justify-content-between mb-2'>
|
||||||
<div class='btn-group'>
|
<div class='btn-group'>
|
||||||
<input type='radio' id='inkPenRadio' class='btn-check' name='penRadioGroup' checked />
|
<input type='radio' id='inkPenRadio' class='btn-check' name='penRadioGroup' checked />
|
||||||
<label for='inkPenRadio' class='btn btn-primary' title='Écrire un chiffre'>
|
<label for='inkPenRadio' class='btn btn-primary' title='Écrire un chiffre'><i class="ri-ball-pen-fill"></i></label>
|
||||||
<i class="ri-ball-pen-fill"></i>
|
|
||||||
</label>
|
|
||||||
<input type='radio' id='pencilRadio' class='btn-check' name='penRadioGroup' />
|
<input type='radio' id='pencilRadio' class='btn-check' name='penRadioGroup' />
|
||||||
<label for='pencilRadio' class='btn btn-primary' title='Prendre des notes'>
|
<label for='pencilRadio' class='btn btn-primary' title='Prendre des notes'><i class="ri-pencil-fill"></i></label>
|
||||||
<i class="ri-pencil-fill"></i>
|
|
||||||
</label>
|
|
||||||
<input type='radio' id='eraserRadio' class='btn-check' name='penRadioGroup' />
|
<input type='radio' id='eraserRadio' class='btn-check' name='penRadioGroup' />
|
||||||
<label for='eraserRadio' class='btn btn-primary' title='Effacer une case'>
|
<label for='eraserRadio' class='btn btn-primary' title='Effacer une case'><i class="ri-eraser-fill"></i></label>
|
||||||
<i class="ri-eraser-fill"></i>
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="color" class="btn-check" id="colorPickerInput" title="Changer la couleur" oninput="changeColor()"/>
|
<input type="color" class="btn-check" id="colorPickerInput" title="Changer la couleur" oninput="changeColor()"/>
|
||||||
<label id="colorPickerLabel" for="colorPickerInput" class="btn btn-primary" title="Changer de couleur">
|
<label id="colorPickerLabel" for="colorPickerInput" class="btn btn-primary" title="Changer de couleur"><i class="ri-palette-fill"></i></label>
|
||||||
<i class="ri-palette-fill"></i>
|
|
||||||
</label>
|
|
||||||
<div class='btn-group'>
|
<div class='btn-group'>
|
||||||
<input type='checkbox' id='sightCheckbox' class='btn-check' onclick='highlighterCheckbox.checked = false; refreshUI()' />
|
<input type='checkbox' id='sightCheckbox' class='btn-check' onclick='highlighterCheckbox.checked = false; refreshUI()' />
|
||||||
<label for='sightCheckbox' class='btn btn-info' title='Surligner la ligne, la colonne et la région de la case survolée'>
|
<label for='sightCheckbox' class='btn btn-info' title='Surligner la ligne, la colonne et la région de la case survolée'><i class="ri-focus-3-line"></i></label>
|
||||||
<i class="ri-focus-3-line"></i>
|
|
||||||
</label>
|
|
||||||
<input type='checkbox' id='highlighterCheckbox' class='btn-check' onclick='sightCheckbox.checked = false; refreshUI()' />
|
<input type='checkbox' id='highlighterCheckbox' class='btn-check' onclick='sightCheckbox.checked = false; refreshUI()' />
|
||||||
<label for='highlighterCheckbox' class='btn btn-info' title='Surligner les lignes, colonnes et régions contenant déjà le chiffre sélectionné'>
|
<label for='highlighterCheckbox' class='btn btn-info' title='Surligner les lignes, colonnes et régions contenant déjà le chiffre sélectionné'><i class="ri-mark-pen-fill"></i></label>
|
||||||
<i class="ri-mark-pen-fill"></i>
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
<button id="hintButton" type="button" class='btn btn-info' onclick="showHint()" title="Montrer une case avec une seule possibilité" accesskey="H" disabled="">
|
<button id="hintButton" type="button" class='btn btn-info' onclick="showHint()" title="Montrer une case avec une seule possibilité" accesskey="H" disabled=""><i class="ri-lightbulb-line"></i></button>
|
||||||
<i class="ri-lightbulb-line"></i>
|
<button id='restartButton' type='button' class='btn btn-primary' onclick='restart()' disabled title='Recommencer'><i class="ri-restart-line"></i></button>
|
||||||
</button>
|
<button id='undoButton' type='button' class='btn btn-primary' onclick='undo()' disabled title='Annuler' accesskey='Z'><i class="ri-arrow-go-back-fill"></i></button>
|
||||||
<button id='restartButton' type='button' class='btn btn-primary' onclick='restart()' disabled title='Recommencer'>
|
<button id='saveButton' type='button' class='btn btn-primary' onclick='save()' disabled title='Sauvegarder' accesskey='S'><i class="ri-save-2-fill"></i></button>
|
||||||
<i class="ri-restart-line"></i>
|
|
||||||
</button>
|
|
||||||
<button id='undoButton' type='button' class='btn btn-primary' onclick='undo()' disabled title='Annuler' accesskey='Z'>
|
|
||||||
<i class="ri-arrow-go-back-fill"></i>
|
|
||||||
</button>
|
|
||||||
<button id='saveButton' type='button' class='btn btn-primary' onclick='save()' disabled title='Sauvegarder' accesskey='S'>
|
|
||||||
<i class="ri-save-2-fill"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
<form id='sudokuForm' class='needs-validation' novalidate>
|
<form id='sudokuForm' class='needs-validation' novalidate>
|
||||||
<table id='grid' class='table mb-2'>
|
<table id='grid' class='table mb-2'>
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php
|
<?php
|
||||||
for ($row = 0; $row < 81; $row += 9) {
|
for ($row = 0; $row < 81; $row += 9) {
|
||||||
?>
|
?>
|
||||||
<tr class="input-group d-inline-block w-auto">
|
<tr class="input-group d-inline-block w-auto">
|
||||||
<?php
|
<?php
|
||||||
for ($column = 0; $column < 9; $column++) {
|
for ($column = 0; $column < 9; $column++) {
|
||||||
$value = $currentGrid[$row+$column];
|
$value = $currentGrid[$row+$column];
|
||||||
if ($value == UNKNOWN) {
|
if ($value == UNKNOWN) {
|
||||||
?>
|
?>
|
||||||
<td><input type='number' min='1' max='9' step='1' value='' class='form-control'
|
<td><input type='number' min='1' max='9' step='1' value='' class='form-control' /></td>
|
||||||
title='Valeurs possibles [Clic-droit]' /></td>
|
<?php
|
||||||
<?php
|
|
||||||
} else {
|
} else {
|
||||||
?>
|
?>
|
||||||
<td><input type='number' min='1' max='9' step='1' value='<?=$value?>' class='form-control' disabled /></td>
|
<td><input type='number' min='1' max='9' step='1' value='<?=$value?>' class='form-control' disabled /></td>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</tbody>
|
</tbody>
|
||||||
@ -82,32 +61,26 @@
|
|||||||
</form>
|
</form>
|
||||||
<div class='d-flex mb-2'>
|
<div class='d-flex mb-2'>
|
||||||
<div id='insertRadioGroup' class='radioGroup btn-group flex-fill'>
|
<div id='insertRadioGroup' class='radioGroup btn-group flex-fill'>
|
||||||
<input type='radio'class='btn-check' id='insertRadio0' value='' name='insertRadioGroup' onclick='insert(this)' accesskey='0' checked />
|
<input type='radio' class='btn-check' id='insertRadio0' value='' name='insertRadioGroup' onclick='insert(this)' accesskey='0' checked /><label for='insertRadio0' class='btn btn-primary' title='Clavier'><i class="ri-input-cursor-move"></i></label>
|
||||||
<label for='insertRadio0' class='btn btn-primary' title='Clavier'>
|
<?php
|
||||||
<i class="ri-input-cursor-move"></i>
|
|
||||||
</label>
|
|
||||||
<?php
|
|
||||||
for($value=1; $value<=9; $value++) {
|
for($value=1; $value<=9; $value++) {
|
||||||
echo " <input type='radio'class='btn-check' id='insertRadio$value' value='$value' name='insertRadioGroup' onclick='insert(this)' accesskey='$value' disabled /><label for='insertRadio$value' class='btn btn-primary' title='Insérer un $value'>$value</label>\n";
|
echo " <input type='radio' class='btn-check' id='insertRadio$value' value='$value' name='insertRadioGroup' onclick='insert(this)' accesskey='$value' disabled /><label for='insertRadio$value' class='btn btn-primary' title='Insérer un $value'>$value</label>\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='mb-3'>
|
<div class='mb-3'><?php
|
||||||
<?php
|
|
||||||
if (isset($warning))
|
if (isset($warning))
|
||||||
echo(" <strong>⚠️ $warning ⚠️</strong><br/>\n");
|
echo("<strong>⚠️ $warning ⚠️</strong><br/>");
|
||||||
else
|
else
|
||||||
echo(" Remplissez la grille de sorte que chaque ligne, colonne et région (carré de 3×3 cases) contienne tous les chiffres de 1 à 9.\n")
|
echo("Remplissez la grille de sorte que chaque ligne, colonne et région (carré de 3×3 cases) contienne tous les chiffres de 1 à 9.")
|
||||||
?>
|
?></div>
|
||||||
</div>
|
|
||||||
<ul id='contextMenu' class='context-menu modal-content shadow list-group w-auto position-absolute'></ul>
|
<ul id='contextMenu' class='context-menu modal-content shadow list-group w-auto position-absolute'></ul>
|
||||||
<footer>
|
<footer>
|
||||||
<div id='links' class='list-group mb-2'>
|
<div id='links' class='list-group mb-2'>
|
||||||
<a href='.' class='list-group-item list-group-item-action'>Nouvelle grille</a>
|
<a href='.' class='list-group-item list-group-item-action'>Nouvelle grille</a>
|
||||||
<a href='' class='list-group-item list-group-item-action'>Lien vers cette grille</a>
|
<a href='' class='list-group-item list-group-item-action'>Lien vers cette grille</a>
|
||||||
<a href='?.................................................................................' class='list-group-item list-group-item-action'>Grille
|
<a href='?.................................................................................' class='list-group-item list-group-item-action'>Grille vierge</a>
|
||||||
vierge</a>
|
|
||||||
<a href='' id='fixGridLink' class='list-group-item list-group-item-action'>Figer la grille enregistrée</a>
|
<a href='' id='fixGridLink' class='list-group-item list-group-item-action'>Figer la grille enregistrée</a>
|
||||||
<a href='https://git.malingrey.fr/adrien/Sudoku' target="_blank" class='list-group-item list-group-item-action'>Code source</a>
|
<a href='https://git.malingrey.fr/adrien/Sudoku' target="_blank" class='list-group-item list-group-item-action'>Code source</a>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user