Compare commits
3 Commits
db75bb0921
...
64b7c08f58
Author | SHA1 | Date | |
---|---|---|---|
64b7c08f58 | |||
cfb0d1fdc9 | |||
eeb6889739 |
30
Grille.php
30
Grille.php
@ -160,13 +160,9 @@ class Grille implements ArrayAccess
|
|||||||
return hash('sha256', $string);
|
return hash('sha256', $string);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function save($id)
|
public function __toString() {
|
||||||
{
|
return implode(
|
||||||
session_id($id);
|
PHP_EOL,
|
||||||
session_start(["use_cookies" => false]);
|
|
||||||
|
|
||||||
$_SESSION["$this->largeur,$this->hauteur"] = implode(
|
|
||||||
"",
|
|
||||||
array_map(
|
array_map(
|
||||||
function ($ligne) {
|
function ($ligne) {
|
||||||
return implode("", $ligne);
|
return implode("", $ligne);
|
||||||
@ -176,16 +172,28 @@ class Grille implements ArrayAccess
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function load($id)
|
public function save($id)
|
||||||
{
|
{
|
||||||
session_id($id);
|
if (session_status() === PHP_SESSION_ACTIVE) {
|
||||||
|
session_write_close();
|
||||||
|
}
|
||||||
|
|
||||||
|
session_id("$this->largeur,$this->hauteur,$id");
|
||||||
session_start(["use_cookies" => false]);
|
session_start(["use_cookies" => false]);
|
||||||
|
|
||||||
if (!isset($_SESSION["$this->largeur,$this->hauteur"])) {
|
$_SESSION["grille"] = (string)$this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load($id)
|
||||||
|
{
|
||||||
|
session_id("$this->largeur,$this->hauteur,$id");
|
||||||
|
session_start(["use_cookies" => false]);
|
||||||
|
|
||||||
|
if (!isset($_SESSION["grille"])) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (str_split($_SESSION["$this->largeur,$this->hauteur"], $this->largeur) as $y => $ligne) {
|
foreach (explode(PHP_EOL, $_SESSION["grille"]) as $y => $ligne) {
|
||||||
foreach (str_split($ligne) as $x => $lettre) {
|
foreach (str_split($ligne) as $x => $lettre) {
|
||||||
$this->grille[$y][$x] = $lettre;
|
$this->grille[$y][$x] = $lettre;
|
||||||
}
|
}
|
||||||
|
2
Trie.php
2
Trie.php
@ -6,8 +6,8 @@ class Trie implements ArrayAccess, IteratorAggregate, Countable {
|
|||||||
private $nb_branches = 0;
|
private $nb_branches = 0;
|
||||||
|
|
||||||
public function arraySet($cles, $valeur) {
|
public function arraySet($cles, $valeur) {
|
||||||
$this->nb_branches++;
|
|
||||||
$cle = $cles[0];
|
$cle = $cles[0];
|
||||||
|
$this->nb_branches++;
|
||||||
$cles = array_slice($cles, 1);
|
$cles = array_slice($cles, 1);
|
||||||
if ($cles == []) {
|
if ($cles == []) {
|
||||||
$this->branches[$cle] = $valeur;
|
$this->branches[$cle] = $valeur;
|
||||||
|
18
index.php
18
index.php
@ -26,16 +26,20 @@ $largeur = filter_input(INPUT_GET, 'colonnes', FILTER_VALIDATE_INT, [
|
|||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$grille_valide = false;
|
||||||
$grille = new Grille($hauteur, $largeur);
|
$grille = new Grille($hauteur, $largeur);
|
||||||
$basedir = $_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"].dirname($_SERVER["DOCUMENT_URI"]);
|
$basedir = $_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"].dirname($_SERVER["DOCUMENT_URI"]);
|
||||||
if (!isset($_GET["grille"]) || $_GET["grille"] == "") {
|
|
||||||
|
if (isset($_GET["grille"]) || $_GET["grille"] == "") {
|
||||||
|
$id = htmlspecialchars($_GET["grille"]);
|
||||||
|
} else {
|
||||||
do {
|
do {
|
||||||
$id = uniqid();
|
$id = uniqid();
|
||||||
} while (!$grille->genere($id));
|
} while (!$grille->genere($id));
|
||||||
|
$grille_valide = true;
|
||||||
|
|
||||||
$_GET["grille"] = $id;
|
$_GET["grille"] = $id;
|
||||||
header("Location: $basedir/?" . http_build_query($_GET));
|
header("Location: $basedir/?" . http_build_query($_GET));
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE HTML>
|
||||||
@ -55,17 +59,15 @@ if (!isset($_GET["grille"]) || $_GET["grille"] == "") {
|
|||||||
<meta property="og:title" content="🄼🄾🅃🅂▣🄲🅁🄾🄸🅂🄴🅂"/>
|
<meta property="og:title" content="🄼🄾🅃🅂▣🄲🅁🄾🄸🅂🄴🅂"/>
|
||||||
<meta property="og:type" content="game"/>
|
<meta property="og:type" content="game"/>
|
||||||
<meta property="og:url" content="<?=$basedir?>"/>
|
<meta property="og:url" content="<?=$basedir?>"/>
|
||||||
<meta property="og:image" content="<?=$basedir?>/thumbnail.png"/>
|
<meta property="og:image" content="<?=$basedir?>/thumbnail.php?grille=<?=$id?>&lignes=<?=$hauteur?>&colonnes=<?=$largeur?>&largeur=1200&hauteur=630"/>
|
||||||
<meta property="og:image:width" content="192"/>
|
<meta property="og:image:width" content="1200"/>
|
||||||
<meta property="og:image:height" content="192"/>
|
<meta property="og:image:height" content="630"/>
|
||||||
<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"]?>"/>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
$id = htmlspecialchars($_GET["grille"]);
|
$grille_valide = $grille_valide || $grille->load($id) || $grille->genere($id);
|
||||||
|
|
||||||
$grille_valide = $grille->load($id) || $grille->genere($id);
|
|
||||||
|
|
||||||
mt_srand(crc32($id));
|
mt_srand(crc32($id));
|
||||||
if ($grille_valide) {
|
if ($grille_valide) {
|
||||||
|
@ -108,6 +108,7 @@ h2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.grille input[disabled] {
|
.grille input[disabled] {
|
||||||
|
color: black;
|
||||||
background-color: black;
|
background-color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
63
thumbnail.php
Normal file
63
thumbnail.php
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Paramètres de largeur, hauteur, lignes et colonnes
|
||||||
|
$largeur = isset($_GET['largeur']) ? (int)$_GET['largeur'] : 200; // Valeur par défaut : 200
|
||||||
|
$hauteur = isset($_GET['hauteur']) ? (int)$_GET['hauteur'] : 200; // Valeur par défaut : 200
|
||||||
|
$lignes = isset($_GET['lignes']) ? (int)$_GET['lignes'] : 8; // Valeur par défaut : 4
|
||||||
|
$colonnes = isset($_GET['colonnes']) ? (int)$_GET['colonnes'] : 8; // Valeur par défaut : 4
|
||||||
|
$bordure = 6;
|
||||||
|
|
||||||
|
// Créer une image vide
|
||||||
|
$image = imagecreate($largeur, $hauteur);
|
||||||
|
|
||||||
|
// Couleurs
|
||||||
|
$blanc = imagecolorallocate($image, 255, 255, 255);
|
||||||
|
$noir = imagecolorallocate($image, 0, 0, 0);
|
||||||
|
|
||||||
|
// Remplir l'image avec un fond blanc
|
||||||
|
imagefill($image, 0, 0, $blanc);
|
||||||
|
|
||||||
|
// Calculer la taille et la position des cases
|
||||||
|
$cote = (int)min(($largeur - 2 * $bordure) / $colonnes, ($hauteur - 2 * $bordure) / $lignes);
|
||||||
|
$haut = (int)(($hauteur - $lignes * $cote - 2 * $bordure) / 2) + $bordure;
|
||||||
|
$gauche = (int)(($largeur - $colonnes * $cote - 2 * $bordure) / 2) + $bordure;
|
||||||
|
$bas = $haut + $lignes * $cote;
|
||||||
|
$droite = $gauche + $colonnes * $cote;
|
||||||
|
|
||||||
|
// Dessiner les bordures extérieures (3 pixels d'épaisseur)
|
||||||
|
imagesetthickness($image, $bordure);
|
||||||
|
imagerectangle($image, $gauche, $haut, $droite, $bas, $noir);
|
||||||
|
|
||||||
|
// Dessiner les lignes et colonnes internes (1 pixel d'épaisseur)
|
||||||
|
imagesetthickness($image, 2);
|
||||||
|
for ($x = $gauche; $x <= $droite; $x += $cote) {
|
||||||
|
imageline($image, $x, $haut, $x, $bas, $noir); // Lignes verticales
|
||||||
|
}
|
||||||
|
for ($y = $haut; $y <= $bas; $y += $cote) {
|
||||||
|
imageline($image, $gauche, $y, $droite, $y, $noir); // Lignes horizontales
|
||||||
|
}
|
||||||
|
|
||||||
|
// Noicir les cases
|
||||||
|
if (isset($_GET["grille"])) {
|
||||||
|
include_once "Grille.php";
|
||||||
|
|
||||||
|
$grille = new Grille($lignes, $colonnes);
|
||||||
|
$id = htmlspecialchars($_GET["grille"]);
|
||||||
|
$grille->load($id) || $grille->genere($id);
|
||||||
|
|
||||||
|
for ($y = 0; $y < $lignes; $y++) {
|
||||||
|
for ($x = 0; $x < $colonnes; $x++) {
|
||||||
|
if ($grille[$y][$x] == CASE_NOIRE) {
|
||||||
|
imagefilledrectangle($image, $gauche + $x * $cote, $haut + $y * $cote, $gauche + ($x + 1) * $cote, $haut + ($y + 1) * $cote, $noir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Envoyer l'image au navigateur
|
||||||
|
header('Content-Type: image/png');
|
||||||
|
imagepng($image);
|
||||||
|
|
||||||
|
// Libérer la mémoire
|
||||||
|
imagedestroy($image);
|
||||||
|
?>
|
Loading…
x
Reference in New Issue
Block a user