Compare commits

..

176 Commits

Author SHA1 Message Date
frperalde 1f289d24af bar
4 years ago
frperalde ace8554086 Affichage bdd
4 years ago
algolfier 90dd0a71f8 pb affichage
4 years ago
theo 4296ade9d8 LAST MODIF
4 years ago
frperalde 96a311467f Modification pour que ca marche un peu
4 years ago
frperalde 24f03dca4f gestion erreur
4 years ago
frperalde 771e4e1d3b correctif
4 years ago
frperalde 1c9a8faff4 Couleur blind
4 years ago
Yannis SEVRET a52866d152 Grand Nettoyage
4 years ago
algolfier 6cd1099a65 anglais/franças
4 years ago
algolfier 37cfe2bf8a anglais/fr
4 years ago
algolfier 830f387a41 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
frperalde 8cdb46be65 avance
4 years ago
algolfier 0c43407777 anglais/français
4 years ago
frperalde 7ace50a55a button jouer <-> choix jeu
4 years ago
algolfier a909bb0206 Highscore ajouté et fonctionnel
4 years ago
algolfier 036a74cf60 suppression highscore
4 years ago
algolfier 6e8bc7e2e2 pb
4 years ago
algolfier 86903a3054 ajout Highscore
4 years ago
frperalde 917cf814b1 Affichage bon, plus que recup la variable
4 years ago
theo 17614d63b4 correction selection qui clignote + message page d'accueil supprime
4 years ago
frperalde a6b72639da formes qui changent
4 years ago
frperalde bb05a38a74 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
frperalde 4e44595c7e cartes responsives
4 years ago
theo 8434506c22 go Aide modif
4 years ago
frperalde e079ab9299 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
frperalde cf01e40b50 cartes responsives
4 years ago
cytoffin 9f3c3c2d59 Multi
4 years ago
algolfier 5af3a44daf mise a jour highscore
4 years ago
algolfier c78aeb45cf supprr ancien highscore
4 years ago
cytoffin e83efd1a35 Multi final
4 years ago
cytoffin e0ee07eca5 Multi final
4 years ago
frperalde 3abd2e61b1 design multi
4 years ago
frperalde 4d2809be0c dection multi pour paremetres
4 years ago
frperalde b58345255c formes in-game
4 years ago
Yannis SEVRET 9f05970ab1 Fin de Partie + aide + refresh ajoutés
4 years ago
theo faef66e02d multi propre
4 years ago
theo ff76f4de1b Multi encore
4 years ago
algolfier 8b314de9af avancement highscore
4 years ago
algolfier 91d9c14a14 ff
4 years ago
theo f28c79ec71 correctif selection multi
4 years ago
Yannis SEVRET a4478b4670 Ajout Malus
4 years ago
frperalde a10240cca1 responsive fini
4 years ago
frperalde 017da92d7c Formes fini ==> changement de couleurs avec cookies, eetc
4 years ago
algolfier f1c5550194 avancement highscore
4 years ago
frperalde 6779f1d95d changement couleur et forme fonctionnel
4 years ago
cytoffin c142b3c992 Changement multi
4 years ago
theo 332c51ac0f multi final
4 years ago
theo 4b44ce7387 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish into master
4 years ago
theo 7287ccb185 multi final
4 years ago
theo e9827c16d4 multi final
4 years ago
algolfier 9016f6f854 diagramme de cas
4 years ago
algolfier 505162c89f diagramme de cas
4 years ago
algolfier 8b8d59aec4 diagramme de cas
4 years ago
algolfier 68753e026a diagramme de cas d'utilisation
4 years ago
algolfier f9f35ac57d diagramme de cas
4 years ago
algolfier 024eda3e2c suppression dossiers inutiles
4 years ago
algolfier b4cb4dd8f1 petits problèmes résolus
4 years ago
algolfier a1d1f4bf7e doublons
4 years ago
algolfier 5d6441e115 bug corrections
4 years ago
theo 294a008b1e Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish into master
4 years ago
theo b747a69044 multi selection gardé
4 years ago
frperalde 8c8d303222 correction erreur
4 years ago
frperalde 30d738f109 correction couleur 3x3
4 years ago
frperalde c3875d73ee a
4 years ago
frperalde 1ca4c23329 formes fonctionnelles
4 years ago
frperalde b19e779825 formes gerer taille
4 years ago
frperalde 3292e0fe5b formes pf
4 years ago
frperalde 4924325666 formeseeeee
4 years ago
Yannis SEVRET 0cd9565307 Correction DOC
4 years ago
Yannis SEVRET a71e4e42ae Ajout Doc recherche intelligente + implémentation de la recherche intelligente
4 years ago
frperalde 788bd5b221 Flag pb
4 years ago
frperalde fb937f179a menu haut
4 years ago
frperalde 6dcbc966e9 Menu haut
4 years ago
frperalde 7d3a03c8c5 changement
4 years ago
frperalde 08042311a1 merge correction
4 years ago
frperalde 8923af6b51 oups
4 years ago
frperalde 5fbcc0f346 ps4
4 years ago
frperalde 49d6dba815 partie 2
4 years ago
frperalde 5d7eac854c commit apres suppression...
4 years ago
algolfier 3e34e9a174 anglais/fr mode
4 years ago
cytoffin 08666c025a Multi
4 years ago
frperalde 048bb0e609 génération forme aide
4 years ago
frperalde 66618fa74b Partenariat Playstation
4 years ago
frperalde 914a2664c6 Responsive classement
4 years ago
algolfier ce36c8d131 cc
4 years ago
frperalde 7cada102a5 flags
4 years ago
frperalde 828c57bc35 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
4 years ago
algolfier b0dbd6896f dd
4 years ago
algolfier fd569f6440 ..
4 years ago
algolfier f75f7460e1 delete
4 years ago
algolfier 81a5cc6050 ..
4 years ago
cytoffin ef6c7c5a75 Multi
4 years ago
algolfier 8d5107dddb ajout modifs de highscore
4 years ago
algolfier eecc383fba ancien truc
4 years ago
algolfier 3354e0e404 Ajout de la BDD highscore
4 years ago
algolfier d63084b4fd modifs
4 years ago
algolfier 90ea8f427c nv site
4 years ago
algolfier 47ea1a4d70 supression ancien site
4 years ago
algolfier 42ca555c56 supression .idea
4 years ago
algolfier 982e637b49 ajout modele
4 years ago
algolfier d5d523c3b7 supression ancienne bdd
4 years ago
theo 6c5d89b51f multi alpha
4 years ago
yasevret 59158559ba correction fonction 3
4 years ago
yasevret 9e35e333b2 Correction fonction 2
4 years ago
yasevret cf0dd8cf7f Correction fonction
4 years ago
yasevret d35a36d820 Correction affichage
4 years ago
yasevret 47eb94d456 Ajout Mode Tier pour toutes les dimensions + Ajout Dimension 2*2
4 years ago
LAPTOP-LJ9LM6JH\franc 7afd9fcec5 carte adapté
4 years ago
yasevret 1654c580c8 Réglage Dimension Mode
4 years ago
LAPTOP-LJ9LM6JH\franc 4f7a33638e magnifique ce classement
4 years ago
LAPTOP-LJ9LM6JH\franc 84684df37c magnifique ce classement
4 years ago
LAPTOP-LJ9LM6JH\franc 5f76777e76 responsive tablette score plus beau
4 years ago
LAPTOP-LJ9LM6JH\franc 723e7ef24e probleme pickr responsive
4 years ago
LAPTOP-LJ9LM6JH\franc bad279471a responsive telephone
4 years ago
LAPTOP-LJ9LM6JH\franc a1db56e73f score responsive
4 years ago
LAPTOP-LJ9LM6JH\franc 5afbe99c8c classement
4 years ago
LAPTOP-LJ9LM6JH\franc ab8763e3a5 taille carte génération
4 years ago
LAPTOP-LJ9LM6JH\franc 4ae879b09d taille carte (variables)
4 years ago
yasevret 03e7b5b45b Ajout Mode de Jeu 3*2
4 years ago
yasevret 5f4c4d770f Correction Solo 3*3
4 years ago
yasevret 4c517951a0 Ajout Mode de Jeu Solo 3*3
4 years ago
cytoffin e124a591d8 Multi
4 years ago
theo 6180a234f7 MULTI ajout cartes
4 years ago
cytoffin 4d1b94d6c4 C
4 years ago
algolfier 00eb3aa1f4 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish into master
4 years ago
algolfier fa76449a16 début base de donnée highscore
4 years ago
frperalde 6b69821450 Maj responsive + fonction taille (reste à voir avec yannis ou l'insérer)
4 years ago
theo 89c231b5ea MULTI
4 years ago
algolfier 8a75c0735c pb console résolu
4 years ago
algolfier 238e140ee7 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
cytoffin feb65be5a8 Swish Multi prototype
4 years ago
yasevret 0dca998b33 Possibilité de jouer en 4*4,3*3,3*2
4 years ago
yasevret 69a7598549 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
yasevret 0722d8970c Correction génération
4 years ago
algolfier 97ebdaf0ca Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
cytoffin 20b3bdba08 php
4 years ago
algolfier 7bf441bad4 barre timer centrée
4 years ago
algolfier 2d57e0b66a bouton retour bug corrigé
4 years ago
algolfier 43feb42199 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish into master
4 years ago
frperalde e85b7cb36c Résolution problème cache rond
4 years ago
algolfier 338280b7e0 résolution conflits
4 years ago
frperalde 151ed3d478 oups, j'ai suppr qqch, je le remet
4 years ago
frperalde 8262aeab38 Responsive design tablette
4 years ago
frperalde fbd76d4ad6 [Etude] - Generation des cartes avec lignes et colonnes (pour Yannis)
4 years ago
theo 9080a23807 recherche comibnaison générique !
4 years ago
frperalde a6179645c9 [RESPONSIVE] - jquery deja
4 years ago
frperalde f8aff8fb52 [DESIGN] - bonne version
4 years ago
frperalde 3209391ab2 [DESIGN] - Redesigns des boutons
4 years ago
frperalde 4cbd564f56 Finalisation graphique
4 years ago
algolfier 1717462b1b Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
yasevret ad69597410 Message sous les cartes
4 years ago
frperalde 472a217907 Avancée oral
4 years ago
yasevret 88126ad00b Affichage des variables JS de la Partie
4 years ago
algolfier bc62be1b7a Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
frperalde 40071ebe59 Avancement parametres
4 years ago
cytoffin ee90e9a021 Jeu en multi (Morpion)
4 years ago
yasevret 90a2ff0769 Généricité de la fonction recherche Combinaison
4 years ago
yasevret 45740f4231 Généricité de la fonction recherche Combinaison
4 years ago
frperalde 73ab73582e gestion erreur
4 years ago
algolfier f1db8c5a6d Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
cytoffin 0005d743fc d
4 years ago
cytoffin cb54c034cd d
4 years ago
frperalde cd5511f8c9 pour yannis
4 years ago
frperalde a12b855cbc avancement
4 years ago
frperalde 80588b1545 formes v2
4 years ago
algolfier 2e88796f60 Merge branch 'master' of https://gitlab.iut-clermont.uca.fr/palafour/swish
4 years ago
Pascal LAFOURCADE 4549ff11cd fonts
4 years ago
Pascal LAFOURCADE 7867a6142c accent
4 years ago
yasevret 3e3283515a Ajout DoublonInterdit
4 years ago
yasevret b08f5d26dc Ajout Etude de génération
4 years ago
yasevret 28b0a5a92f Première version du Jeu Classique de Swich 60 cartes
4 years ago
yasevret 437023ec09 Ajout + Correction
4 years ago
theo 9c6b237fc8 Fonction recherche 3
4 years ago
theo ef35056455 Fonction Recherche Combinaison 2 Final
4 years ago
theo 5a2ab32491 cherche
4 years ago

5
.gitignore vendored

@ -1,2 +1,7 @@
*.vs
/SwichGIT/multi/.idea
*.idea

Binary file not shown.

@ -1,128 +0,0 @@
const sqlite3 = require('sqlite3').verbose();
const nomBDD = "morpion.db"
let db = new sqlite3.Database(nomBDD, sqlite3.OPEN_READWRITE, (err) => {
if (err) {
return console.error(err.message);
}
console.log('Connexion reussi a :', nomBDD);
});
function GenereChaine(){
var texte = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 8; i++)
texte += possible.charAt(Math.floor(Math.random() * possible.length));
return texte;
}
function Insertion(table, colonne, valeur, colonne2, valeur2) {
db.run("UPDATE '" + table + "' SET " + colonne + " = " + valeur + " WHERE " + colonne2 + " = '" + valeur2 + "'")
console.log("Insertion de " + valeur + " reussi")
}
function RecuperValeur(table, colonne, colonne2, valeur) {
var retour;
db.all("SELECT " +colonne+ " FROM " +table+ " WHERE " +colonne2+ "='" +valeur+"'", (err, data) => {
//console.log(data);
retour=data;
return retour;
});
}
var res = db.run("SELECT * FROM partie");
console.log(res);
function InitialserBDD(){
db.run('INSERT INTO PARTIE(id) VALUES(?)', [GenereChaine()]);
}
function SupprimerLigne(id){
db.run("DELETE FROM PARTIE where id='"+id+"'");
}
InitialserBDD();
//Insertion("PARTIE","ptsj1","1","id","96FVGDWY");
var dfs= RecuperValeur("PARTIE","ptsJ1","id","UFS6ySfL");
console.log(dfs);
/*
let sql = `SELECT * FROM PARTIE`;
db.all(sql, [], (err, rows) => {
if (err) {
throw err;
}
rows.forEach((row) => {
console.log(row.name);
});
});
*/
//ouverture de la base de donn<6E>
/*
function test() {
var fullname;
var fname = "ptsj2";
let sql = 'SELECT * FROM PARTIE';
db.each(sql, [fname], (err, row) => {
if (err) {
throw err;
}
fullname = ('${row.Name}');
alert(fullname);;
});
db.close();
}
test();
*/
/*
Insertion("PARTIE", "ptsJ1", 4, "id", "UFS6ySfL");
Insertion("PARTIE", "ptsJ2", 100, "id", "UFS6ySfL");
Insertion("PARTIE", "ptsJ2", 10, "id", "96FVGDWY");
*/
//db.run('CREATE TABLE PARTIE(id varchar(8),ptsJ1 int,ptsj2 int)');
//db.run('INSERT INTO score(id) VALUES(?)', ["J1"])
//db.run('INSERT INTO score(id) VALUES(?)', ["J2"])
//UPDATE SCORE SET 'Two' = 2 WHERE ID = 'J1'
db.all("SELECT * FROM PARTIE", (err, rows) => {
var res="";
if (err) {
throw err
}
console.log("Affichage de la table partie\n")
rows.forEach((row)=>{
res=res+row.name;
console.log(res);
});
});
// fermeture de la base de donn<6E>
db.close((err) => {
if (err) {
return console.error(err.message);
}
console.log('Fermeture de la base de donnes :',nomBDD);
});

@ -1,51 +0,0 @@
function sdf(){
window.alert("lksjdf");
}
function creerPartie(){
localStorage.setItem("nomJoueur", "J1");
}
function affichage(){
document.getElementById("instructions").innerHTML = localStorage.getItem("nomJoueur");
if( localStorage.getItem("nomJoueur") == 'J1'){
document.getElementById("messages").innerHTML = "Tu joues les croix"
}
else{
document.getElementById("messages").innerHTML = "Tu joues les ronds"
window.alert(localStorage.getItem("nomJoueur"));
}
}
function ValidateEmail(entre)
{
if (entre!="X" ||(entre !="x"))
{
return (true)
}
alert("You have entered an invalid email address!")
return (false)
}
/*
function rejoindrepartie(){
localStorage.setItem("nomJoueur", "J2");
}
function Tourdequi(joueur){
if(tab j1 + tabj2 .lenght %2==0){
return J1;
}
return J2;
}
function finirpartie(){
localStorage.removeItem("nomJoueur");
}
localStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname"); */

Binary file not shown.

@ -1,18 +0,0 @@
<!DOCTYPE html>
<html>
<head lang="fr">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Morpion</title>
<link rel="stylesheet" href="css.css">
<script type="text/javascript" src="js.js"></script>
</head>
<body onload="sdf()">
<h1><button onclick="creerPartie()">Créer partie</button></h1>
<h1><input type="b" name="sdf" placeholder="Mettre id de la partie"><button>Rejoindre</button></h1>
</div>
</body>
</html>

@ -1,44 +0,0 @@
<!DOCTYPE html>
<html>
<head lang="fr">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Morpion p2</title>
<link rel="stylesheet" href="css.css">
<script type="text/javascript" src="js.js"></script>
</head>
<body onload="affichage()">
<header>
<h1>Morpion</h1>
</header>
<div class="messages" id="messages">
<h2></h2>
</div>
<div class="instructions" id="instructions">
<p>Click in a box to play</p>
</div>
<div class="container">
<input></input required pattern="banane|cerise">
<input></input>
<input></input>
<br>
<input></input>
<input></input>
<input></input>
<br>
<input></input>
<input></input>
<input></input>
</div>
<button onclick="verifier(document.getElementById("in").value)">Valider</button>
<br> <button class="reset">Rénisitalisation</button>
</body>
</html>

@ -0,0 +1,27 @@
<?php
session_start();
require_once "ConnexionBDD.php";
//Actualisation de l'IDpartie
$idparte = $_SESSION['idpartie'];
echo "<div id='iddelapartie' <h2 id='ids'>Identifiant partie : </h2>";
echo "<input type='text' value='$idparte' id='Monidpartie'>";
echo "<button onclick='MaFonction()'>Copier identifiant</button> </div>";
$db=new MyDB();
$afficher = $db->query('SELECT * FROM partieCartes where IdPartie="'.$idparte.'" ');
$tableau =[];
while ($row = $afficher->fetchArray()) {
$un=$row['colUn'];
$deux=$row['colDeux'];
$trois=$row['colTrois'];
$tout=$un.','.$deux.','.$trois;
// $entier=$entier+1;
array_push($tableau,$tout);
}
foreach ($tableau as $val) {
//echo "<h2 class='contientphp'> $val d</h2>";
}
$comma_separated = implode(",", $tableau);
$_SESSION['listecartebdd']=$comma_separated;

@ -1,17 +1,18 @@
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('mysqlitedb.db');
//$this->exec('CREATE TABLE partieScore(IdPartie STRING PRIMARY KEY,scorePremierJ STRING,scoreDeuxiemeJ STRING, pseudoPremierJ STRING,pseudoDeuxiemeJ STRING)');
//$this->exec('CREATE TABLE partieCartes(IdPartie STRING ,IdCarte STRING,colUn STRING, colDeux STRING, colTrois STRING)');
}
}
function genererChaineAleatoire($longueur = 10)
{
$caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$caracteres = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$longueurMax = strlen($caracteres);
$chaineAleatoire = '';
for ($i = 0; $i < $longueur; $i++)
@ -20,3 +21,4 @@ function genererChaineAleatoire($longueur = 10)
}
return $chaineAleatoire;
}

@ -0,0 +1,21 @@
<?php
session_start();
require_once("ConnexionBDD.php");
$db = new MyDB();
$id=$_SESSION['idpartie'];
$requete ="DELETE FROM partieScore where IdPartie='".$id."'";
$suppression = $db->query($requete);
$newid=genererChaineAleatoire(10);
$_SESSION['idpartie']=$newid;
$db->query('INSERT INTO partieScore(IdPartie) VALUES("'.$newid.'")');
$requete2 ="DELETE FROM partieCartes where IdPartie='".$id."'";
$suppression2 = $db->query($requete2);
for ($i = 1; $i <= 16; $i++) {
$db->query('INSERT INTO partieCartes(IdPartie,IdCarte) VALUES("'.$newid.'","'.$i.'")');
}

@ -0,0 +1,5 @@
<?php
require "ConnexionBDD.php";
$db=new MyDB();
$update = $db->query('DELETE FROM partieCartes');
$update = $db->query('DELETE FROM partieScore');

@ -0,0 +1,493 @@
#pageAccueil {
visibility: visible;
}
#cloud {
z-index: 10
}
#mount1 {
z-index: 11;
position: absolute;
}
#mount2 {
z-index: 10;
}
.containerparam{
position: absolute;
display: flex;
margin-left: 1vw;
}
.containerparam > div {
margin-right: 4vh;
}
/*SETTINGS*/
#forme{
visibility: hidden;
}
#couleurs{
z-index: 1;
}
.pannel{
height: 100px;
width: 100px;
background-color: red;
}
#pickrcontner{
position: relative;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.Mode_Setting{
height: 20vw;
position: relative;
margin : 0 auto;
}
#BottomSetings{
position: absolute;
left: 0;
bottom: 0;
height: 5vw;
width: 100%;
border-radius: 0 0 0.3vw 0.3vw;
}
#SettingBefore{
height: 5vw;
width: 5vw;
background-color: var(--lightsedonca);
color: black;
font-size: 3vw;
visibility: collapse;
}
#SettingAfter{
bottom: 5vw;
position: relative;
height: 5vw;
width: 5vw;
background-color: var(--lightsedonca);
float: right;
}
#testSettings{
position: absolute;
color: black;
bottom: 0;
left: 18vw;
}
#ShapeSettings{
height: 100%;
width: 100%;
margin: auto 2vw;
display: flex;
flex-wrap: wrap;
}
.ShapeContener{
height: 9vw;
width: 9vw;
margin-left: 1vw;
position: relative;
display: table-cell;
vertical-align: middle;
}
.settingShape{
background-color: #333;
}
.Colorone{background-color: var(--colorbase);}
.Colortwo{background-color: var(--colorcarre);}
.Colorthree{background-color: var(--colorone);}
.Colorfour{background-color: var(--colortwo);}
.Colorfive{background-color: var(--colorthree);}
/*Bouton info*/
#infosec{
z-index:15;
width: 2vw;
margin: 0 auto;
}
#info {
color: var(--lightprima);
text-decoration: none;
font-size: 45px;
}
#info:hover {
color: var(--lightprima);
}
.activity {
padding: 0;
list-style: none;
}
li {
-webkit-transition: box-shadow 0.2s ease;
-moz-transition: box-shadow 0.2s ease;
transition: box-shadow 0.2s ease;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
border-radius: 50%;
color: #B7B7B7;
display: inline-block;
font-size: 0.889em;
height: 3em;
position: relative;
text-align: center;
text-transform: lowercase;
width: 3em;
line-height: 3em;
}
li a {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
li:hover {
box-shadow: 0 0 0 7px var(--lightsedonca);
font-size:99%;
position:relative;
right:5%;
}
li:before {
border-radius: 50%;
bottom: 0;
box-shadow: 0 0 0 4px var(--lightsedonca);
content: '';
left: 0;
position: absolute;
right: 0;
top: 0;
background-color: var(--lightsedonca);
}
/*Les règles popups*/
.overlay {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.7);
transition: opacity 500ms;
visibility: hidden;
opacity: 0;
z-index: 210;
}
.overlay:target {
visibility: visible;
opacity: 1;
}
.popup {
margin: 70px auto;
padding: 20px;
background: #fff;
border-radius: 5px;
width: 30%;
position: relative;
top:25%;
}
.popup h2 {
margin-top: 0;
color: #333;
font-family: Tahoma, Arial, sans-serif;
}
.popup .close {
position: absolute;
top: 20px;
right: 30px;
transition: all 200ms;
font-size: 30px;
font-weight: bold;
text-decoration: none;
color: #333;
}
.popup .close:hover {
color: #06D85F;
}
.popup .content {
max-height: 30%;
overflow: auto;
}
/*Parametres*/
.popup2 {
margin: 70px auto;
padding: 20px;
background: #fff;
border-radius: 5px;
width: 45%;
height: 65%;
position: relative;
top:10%;
}
.popup2 h2 {
margin-top: 0;
color: #333;
font-family: Tahoma, Arial, sans-serif;
}
h3 {
margin: 0;
color: #333;
font-family: Tahoma, Arial, sans-serif;
}
.popup2 .close {
position: absolute;
top: 20px;
right: 30px;
transition: all 200ms;
font-size: 30px;
font-weight: bold;
text-decoration: none;
color: #333;
}
.popup2 .close:hover {
color: #06D85F;
}
.popup2 .content {
max-height: 30%;
}
.titre{
display: ruby-base;
}
label {
cursor: pointer;
text-indent: -9999px;
width: 2vw;
height: 1vw;
background: grey;
display: block;
border-radius: 100px;
position: relative;
}
label:after {
content: '';
position: absolute;
top: 0.1vw;
left: 0.1vw;
width: 0.8vw;
height: 0.8vw;
background: #fff;
border-radius: 90px;
transition: 0.3s;
}
input:checked + label {
background: #bada55;
}
input:checked + label:after {
left: calc(100% - 0.1vw);
transform: translateX(-100%);
}
label:active:after {
width: 1.4vw;
}
/* J'ai trop avancé, mode multi*/
#containpseudo {
position: absolute;
height: 15%;
width: 30%;
z-index: 12;
left: 35%;
top: 30%;
}
.bouttonvalider:hover {
box-shadow: 0 0 0 8px var(--lightsedonca);
font-size: 100%;
position: relative;
transition: box-shadow 0.2s ease;
}
#bouttonvalider:hover {
box-shadow: 0 0 0 5px var(--lightsedonca);
position: relative;
}
#pseudoenter {
background-color: red;
height: 100%;
border-radius: 45px;
background-color: #B130DE;
}
#inputpseudo {
position: absolute;
width: 99%;
height: 65%;
border-radius: 30px;
font-size: 3vw;
background-color: transparent;
-moz-appearance: none;
text-align: center;
color: #707070;
border-color: transparent;
font-family: impact, Arial Black;
z-index: 11;
}
#fondinput {
background-color: red;
position: absolute;
width: 97%;
background-color: var(--lightsedonca);
height: 90%;
border-radius: 40px;
left: 1.5%;
top: 5%;
z-index: 10;
}
#modeprec{
height: 100%;
width: 15%;
float: left;
position: relative;
}
#modesuiv{
height: 100%;
width: 15%;
float: right;
position: relative;
}
#textdumode{
height: 100%;
width: 70%;
position: absolute;
left: 15%;
}
#buttonadd {
position: absolute;
top: 30%;
right: -12%;
height: 3vw;
width: 3vw;
border-radius: 2vw;
background-color: #B130DE;
z-index: 18;
}
#textplus {
font-size: 3vw;
font-family: arial, Arial Black;
position: absolute;
margin-top: -0.15vw;
margin-left: 0.65vw;
color: var(--lightprima);
}
#containplayers {
position: absolute;
background-color: transparent;
color: var(--lightsedonca);
width: 15vw;
height: 20vw;
z-index: 17;
right: 0%;
top: 8vw;
}
.pseudojoueur {
float: right;
margin-top: 0px;
margin-bottom: 3%;
margin-right: 10%;
font-family: Lucida Console, Arial Black, Arial;
font-size: 2vw;
}
#pseudolist {
width: 100%;
height: 1.7vw;
}
/* === FORMES === */
.contentButton{
height: 3vw;
width: 15%;
margin : 0 auto;
position: relative;
bottom: 5vw;
}
.buttonvalidersettings{
height: 100%;
width: 100%;
border-style: none;
background-color: red;
color: white;
font-family: arial;
font-size: 2vw;
border-radius: 15px;
}
.buttonvalidersettings:active{
background-color: blue;
}
/* LANGUES */
#cf2 img {
position:absolute;
left:0;
cursor: pointer;
-webkit-transition: opacity 0.2s ease-in-out;
-moz-transition: opacity 0.2s ease-in-out;
-o-transition: opacity 0.2s ease-in-out;
transition: opacity 0.2s ease-in-out;
}
#cf2 img.transparent {
opacity:0;
}
#cf_onclick {
cursor:pointer;
}

@ -0,0 +1,111 @@
#pageGame {
visibility: hidden;
top: -10vh;
position: relative;
}
.menuhaut {
height: 10vh;
width: inherit;
display: flex;
}
/*Partie Menu du haut*/
.menu{
align-items: center;
justify-content: center;
}
.retourstp {
position: absolute;
}
#Redistribution{
position:relative;
top:-3vw;
}
#affSolution {
text-align: center;
font-family: Montserrat, impact, Arial Black;
font-size: 2.5vw;
color: var(--lightsedonca);
width: inherit;
}
#textjouer2 {
position: absolute;
text-align: center;
font-family: Montserrat, impact, Arial Black;
margin-top: 0.6vw;
color: var(--lightsedonca);
width: inherit;
}
#btnvalider2 {
position: relative;
text-align: center;
font-family: Montserrat, impact, Arial Black;
font-size: 2.5vw;
margin-top: 0.2vw;
margin-left: 0.2vw;
color: var(--lightsedonca);
}
#btnvalider3 {
position: relative;
text-align: center;
font-family: Montserrat, impact, Arial Black;
font-size: 2.5vw;
margin-top: 0.2vw;
margin-left: 0.2vw;
color: var(--lightsedonca);
}
#Redistribution2 {
position: relative;
top:-3vw;
left:68%;
}
#Redistribution3 {
position: relative;
top:-3vw;
left: 50%;
}
.bouttonvalider2:hover {
box-shadow: 0 0 0 8px var(--lightsedonca);
font-size: 100%;
position: relative;
transition: box-shadow 0.2s ease;
}
#progressbar
{
position : relative;
width: 1100px;
padding:1px;
background-color:white;
border:1px solid black;
height:10px;
border-radius: 5px;
margin-top: 40px;
margin-right: auto;
margin-left: auto;
}
#indicateur
{
width: 800px;
background-color : green;
height:10px;
margin: 0;
}

@ -0,0 +1,84 @@
/*Ecran*/
@media screen and (min-width: 960px) {
/*ROND*/
.anneau {
position: relative;
background-color: var(--colorbase);
border-radius: var(--v);
height: var(--v);
width: var(--v);
display: table-cell;
vertical-align: middle;
}
.anneau2 {
position: relative;
background-color: white;
border-radius: var(--v);
height: var(--v);
width: var(--v);
left : calc((var(--u) - var(--v))/2);
display: table-cell;
vertical-align: middle;
}
.anneau3 {
position: relative;
background-color: var(--colorbase);
border-radius: var(--v);
height: var(--v);
width: var(--v);
margin-left: auto;
margin-right: auto;
}
.rondinterieur {
background-color: var(--lighttercia);
height: var(--w);
width: var(--w);
display: table;
margin: 0 auto;
border-radius: var(--w);
}
.rond {
display: table;
margin: 0 auto;
background-color: var(--colorbase);
height: var(--w);
width: var(--w);
border-radius: var(--w);
}
.rondcache {
display: table;
margin: 0 auto;
background-color: black;
border-radius: var(--y);
}
.rond2 {
display: table;
margin: 0 auto;
background-color: white;
height: var(--w);
width: var(--w);
border-radius: var(--w);
}
.rond3 {
position: relative;
top : calc((var(--v) - var(--w))/ 2);
left : calc((var(--v) - var(--w))/2);
display: table-cell;
vertical-align: middle;
background-color: white;
height: var(--w);
width: var(--w);
border-radius: var(--w);
}
.rond4 {
display: table;
margin: 0 auto;
background-color: var(--colorbase);
height: var(--w);
width: var(--w);
border-radius: var(--w);
}
}

@ -0,0 +1,128 @@
:root{
/*couleur héhé*/
--lightprima: #DEDEDE;
--lightsedonca: #B7B7B7;
--lighttercia: #E6E6E6;
/*Couleur bases*/
--colorbase : #e9546f;/*ROND*/
--colorcarre : #c97fb3;/*CARRE*/
--colorone : #00a088;/*TRIANGLE*/
--colortwo : #5880c1;/*CROIX*/
--colorseven : #e9546f;/*ROND*/
--coloreight : #c97fb3;/*CARRE*/
--colornine : #00a088;/*TRIANGLE*/
--colorten : #5880c1;/*CROIX*/
--colorthree : #E6792F;/*LOSANGE*/
--colorfour : #E6DA27;/*PENTA*/
--colorfive : #2E6DB4;/*HEXA*/
--colorsix : #E6792F;/*HOCTO*/
/*Tailles cartes*/
--tailleTablette : 12vw;
--taille: 10vw;
/*Les formes*/
--u: calc(var(--x) / 2.75);
--v: calc(var(--y) / 2.75);
--w: calc(var(--z) / 2.75);
/*Les formes settings*/
--x : 10vw;
--y : 7vw;
--z : 3.75vw;
/*Formes ete*/
--l: 3vw;
--m: 2.5vw;
--n: 1.5vw;
}
.test{
color: black;
}
a {
cursor: pointer;
z-index: 60;
}
body {
background-color: var(--lightprima);
height: 100%;
overflow-x: hidden;
overflow-y: hidden;
/*Desactiver la selection*/
-webkit-user-select: none; /* Chrome / Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE 10+ */
user-select: none;
}
#ContainBottom {
position: absolute;
margin-left: 25vw;
height: 12vw;
width: auto;
bottom: 0;
z-index: 20;
}
#clic{
position: absolute;
left: 55vw;
top : 7vw;
height: auto;
width: 15vw;
}
#card-conteneur{
z-index: 20;
position: absolute;
left: 0vw;
}
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row wrap;
justify-content: space-around;
margin-top: -7vw;
}

@ -0,0 +1,619 @@
/*Ecran*/
@media screen and (min-width: 992px) {
/*PARTIE FORMES*/
.containform3 {
position: relative;
height: var(--x);
width: var(--x);
display: table-cell;
/*vertical-align: middle;*/
}
.containinteCarte{
top:calc((var(--l) - var(--n)) / 2);
left:calc((var(--l) - var(--n)) / 2);
height: var(--n);
width: var(--n);
z-index: 2;
position: absolute;
}
.containexteCarte{
top:calc((var(--l) - var(--m)) / 2);
left:calc((var(--l) - var(--m)) / 2);
height: var(--m);
width: var(--m);
z-index: 1;
position: absolute;
}
.containform3carte {
position: relative;
height: var(--l);
width: var(--l);
display: table-cell;
/*vertical-align: middle;*/
}
.containinte {
/*PROBLEME SIZE*/
top: calc((var(--y) - var(--z)) / 2);
left: calc((var(--y) - var(--z)) / 2);
height: var(--z);
width: var(--z);
z-index: 2;
position: absolute;
}
.cache {
top: calc((var(--x) - var(--y)) / 2.8);
left: calc((var(--x) - var(--y)) / 2.2);
height: calc(var(--y)*1.05);
width: calc(var(--y)*1.05);
z-index: 2;
position: absolute;
z-index: 15;
}
#choosemode {
height: 4vw;
width: 16vw;
position: absolute;
left: 42vw;
top: 44vh;
z-index: 15;
}
#choosedimension {
height: 4vw;
width: 16vw;
position: absolute;
left: 42vw;
top: 50vh;
z-index: 15;
}
#conteneurmode {
width: 80%;
height: 2vw;
left: 10%;
top: 25%;
position: absolute;
margin: 0 auto;
background-color: var(--lightsedonca);
border-radius: 5vw;
}
#triangleprec {
width: 0;
height: 0;
margin: 0.25vw auto 0 auto;
border-top: 0.75vw solid transparent;
border-right: 1.25vw solid grey;
border-bottom: 0.75vw solid transparent;
}
#trianglesuiv {
width: 0;
height: 0;
margin: 0.25vw auto 0 auto;
border-top: 0.75vw solid transparent;
border-left: 1.25vw solid grey;
border-bottom: 0.75vw solid transparent;
}
#textmode {
font-family: Lucida Console, Arial Black, Arial;
font-size: 1vw;
color: #707070;
text-align: center;
margin: 5% auto 0 auto;
}
#textdimension {
font-family: Lucida Console, Arial Black, Arial;
font-size: 1vw;
color: #707070;
text-align: center;
margin: 5% auto 0 auto;
}
#formSize {
margin: 0 auto;
width: 100%;
height: 3vw;
}
.slider-container .bar .fill {
display: block;
width: 50%;
height: 100%;
background-color: #6200ee;
}
.slider-container .slider {
position: relative;
z-index: 2;
-webkit-appearance: none;
width: 100%;
height: 10px;
border-radius: 5px;
outline: none;
background-color: transparent;
}
.slider.container {
position: relative;
}
.slider-container .bar {
position: absolute;
z-index: 1;
left: 0;
width: 100%;
height: 10px;
border-radius: 5px;
background-color: #c6aee7;
overflow: hidden;
}
/*Moz*/
.slider-container .slider::-moz-range-thumb {
-webkit-appearance: none;
width: 1vw;
height: 1vw;
background-color: #6200ee;
border-radius: 1vw;
cursor: pointer;
outline: none;
box-shadow: 0 0 0 0 rgba(98, 0,238, .1);
transition: .3s ease-in-out;
}
.slider-container .slider::-moz-range-thumb:hover {
box-shadow: 0 0 0 10px rgba(98,0,238,.1);
}
.slider-container .slider:active::-moz-range-thumb {
box-shadow: 0 0 0 20px rgba(98,0,238,.2);
}
/*===========================================*/
.logoboutton {
font-size: 2vw;
color: var(--lightprima);
margin: 0.25vw;
}
/*Externe*/
.bouttonMenuHaut {
height: 4vw;
width: 4vw;
background-color: var(--lightsedonca);
border-radius: 50%;
margin: 0 auto;
margin-top: 0.45vw;
position: relative;
display: block;
}
#affPoints {
text-align: center;
font-family: Montserrat, impact, Arial Black;
font-size: 2vw;
margin-top: 1.2vw;
color: var(--lightsedonca);
}
.divmenu {
width: 10vw;
height: inherit;
margin-right: 1vw;
}
.containButtonForm {
height: 2.5vw;
width: 2.5vw;
margin: 0.75vw;
position: absolute;
}
.buttonretour {
position: relative;
height: 4vh;
width: 4vh;
border-radius: 55vw;
background-color: var(--lightsedonca);
z-index: 5;
margin-left: 2vw;
top: 1.75vw;
}
.flex-item {
background: var(--lightsedonca);
width: var(--taille);
border-radius: 0.75vw;
padding-right: 0.15vw;
padding-left: 0.15vw;
padding-bottom: 0.25vw;
list-style: none;
display: flex;
margin-right: 0.4vw;
margin-left: 0.4vw;
margin-bottom: 1vw;
-webkit-flex-flow: row wrap;
justify-content: space-around;
}
.item-form {
width: 3vw;
padding-left: 0.1vw;
margin-top: 0.25vw;
height: 3vw;
border-radius: 10px;
display: table-cell;
position: relative;
vertical-align: middle;
background-color: var(--lighttercia);
}
.containcards {
overflow-x: auto;
display: grid;
grid-template-columns: repeat(8,auto);
grid-template-rows: repeat(2,auto);
padding-top: 1vw;
justify-content: center;
}
.logop2 img {
width: 12vw;
padding-top: 1vh;
position: relative;
}
.txt {
position: absolute;
font-family: Arial Black;
color: var(--lightprima);
font-size: 1.5vw;
left: 0.4vw;
top: -1.6vh;
}
.logo img {
position: absolute;
width: 12vw;
left: 44vw;
top: 13%;
z-index: 11;
}
.mounts img {
position: absolute;
height: 100%;
width: 100%;
pointer-events: none;
margin-left: -10px;
}
#contourbuttonvalider {
position: absolute;
border-radius: 45px;
left: 9.2vw;
height: 4vw;
width: 12vw;
top: 1vw;
background-color: var(--lightsedonca);
z-index: 15;
}
.bouttonvalider {
position: absolute;
height: 3.4vw;
width: 11.4vw;
top: 0.3vw;
left: 0.3vw;
border-radius: 30px;
}
.violet {
background-color: #B130DE;
}
.vert {
background-color: #00CC66;
}
#textjouerr {
font-family: Montserrat, impact, Arial Black;
position: absolute;
font-size: 2.5vw;
margin-top: 0.2vw;
color: var(--lightsedonca);
text-align: center;
width: inherit;
}
#containBottom{
position: absolute;
bottom: 3vh;
width: auto;
left: 50%;
z-index: 20;
height: auto;
}
#containScore {
display: flex;
justify-content: center;
position: relative;
left: -50%;
}
.titreScore{
font: 700 5vh "Poppins", sans-serif;
color: #2B2D2F;
position: relative;
left: -50%;
text-align: center;
}
.case-score{
padding: 4px;
position: relative;
z-index: 1;
width: 6vw;
height: 6vw;
margin: 1vw;
cursor: default;
transition: all 0.3s ease;
}
.case-score .score-description {
background-color: var(--lightsedonca);
padding: 10px 15px;
width: calc(100% - 30px);
height: calc(100% - 20px);
transition: inherit;
}
.case-score .score-position {
font: 700 2vw/1.3 "Poppins", sans-serif;
margin: 0 0 0;
transition: 0.2s ease 150ms;
font-size: 2vw;
font-family:"Poppins", sans-serif;
}
.case-score .score-pseudo, .score-points {
font: 500 12px "Poppins", sans-serif;
margin-top: -0.2em;
font-size: 0.8vw;
}
.case-score:after {
z-index: 10;
background: #f9f8f7;
color: #333;
width: 180px;
position: absolute;
top: 80%;
opacity: 0;
transition: opacity 0.3s ease 0.3s, top 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.3s;
height: auto;
font-size: 12px;
line-height: 1.4;
padding: 10px;
margin: 0 0 0 -50px;
border-radius: 6px;
text-align: center;
}
.case-score:hover {
transform: scale(1.12);
z-index: 10;
}
.case-score:hover .score-description {
background: transparent;
}
.case-score:hover .score-position,
.case-score:hover .score-pseudo,
.case-score:hover .score-points {
-webkit-text-fill-color: #222;
}
.case-score:hover:after {
top: 105%;
opacity: 1;
}
.first {
background: linear-gradient(to bottom right, #f3f9a6 0%, #cbc634 100%);
}
.first .score-position,
.first .score-pseudo,
.first .score-points {
background: -webkit-linear-gradient(#2B2D2F, #2B2D2F);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.second {
background: linear-gradient(to bottom right, #37cfdc 0%, #5a88e5 100%);
}
.second .score-position,
.second .score-pseudo,
.second .score-points {
background: -webkit-linear-gradient(#2B2D2F, #2B2D2F);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.third {
background: linear-gradient(to bottom right, #ff616d 0%, #ffc171 100%);
}
.third .score-position,
.third .score-pseudo,
.third .score-points {
background: -webkit-linear-gradient(#2B2D2F, #2B2D2F);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.nopodium {
background: linear-gradient(to bottom right, #2c3e50 0%, #B7B7B7 90%);
}
.nopodium .score-position,
.nopodium .score-pseudo,
.nopodium .score-points {
background: -webkit-linear-gradient(#3A3B3C, #3A3B3C );
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
#infosec2{
z-index:15;
width: 2vw;
position: relative;
margin: 0 auto;
margin-left: 0px;
}
#multiParams{
height: 5vw;
width: 25vw;
position: absolute;
margin: 0 auto;
top: 58vh;
left: 38.5%;
z-index: 15;
display: none;
}
#buttonMulti {
border-radius: 45px;
height: 2.5vw;
width: 10.4vw;
top: 1vw;
background-color: var(--lightsedonca);
z-index: 15;
}
#buttonMulti2 {
border-radius: 45px;
height: 2.5vw;
width: 10.4vw;
background-color: var(--lightsedonca);
z-index: 15;
margin-top: 1vh;
}
.bouttonvalider2 {
position: relative;
height: 2vw;
width: 10vw;
top: 0.25vw;
left: 0.2vw;
border-radius: 30px;
}
#textmulticreer {
font-family: Montserrat, impact, Arial Black;
font-size: 1.5vw;
margin-top: 0.1vw;
color: var(--lightsedonca);
text-align: center;
width: inherit;
}
#textmultirejoindre {
font-family: Montserrat, impact, Arial Black;
font-size: 1.5vw;
margin-top: 0.1vw;
color: var(--lightsedonca);
text-align: center;
width: inherit;
}
#conteneurCreate{
width: 40%;
height: 2.2vw;
left: 50%;
top: 3%;
position: absolute;
margin: 0 auto;
background-color: var(--lightsedonca);
border-radius: 5vw;
}
#conteneurJoin{
width: 40%;
height: 2.2vw;
left: 50%;
top: 65%;
position: absolute;
margin: 0 auto;
background-color: var(--lightsedonca);
border-radius: 5vw;
}
.form__field {
font-family: inherit;
width: 70%;
border: 0;
border-bottom: 2px solid #9b9b9b;
outline: 0;
font-size: 1vw;
color: black;
padding: 0.8vh 0;
background: transparent;
transition: border-color 0.2s;
margin-left: 1.5vw;
text-align: center;
}
.form__field::placeholder {
color: gray;
}
.form__field:placeholder-shown ~ .form__label {
font-size: 1.3rem;
cursor: text;
top: 20px;
}
.form__label {
position: absolute;
top: 0;
display: block;
transition: 0.2s;
font-size: 1rem;
color: black;
}
.form__field:focus {
padding-bottom: 6px;
font-weight: 700;
border-width: 3px;
border-image: linear-gradient(to right, #11998e, #38ef7d);
border-image-slice: 1;
}
.form__field:focus ~ .form__label {
position: absolute;
top: 0;
display: block;
transition: 0.2s;
font-size: 1rem;
color: #11998e;
font-weight: 700;
}
}

@ -0,0 +1,138 @@
.containform {
position: relative;
}
.ajustementPetiteForme{
margin-top: 25%;
}
.ajustementGrandeForme{
margin-top: 0.2vw;
margin-left: 0.2vw;
}
.containform2{
position: relative;
height: var(--x);
width: var(--x);
display: table-cell;
vertical-align: middle;
background-color: black;
}
/*ROND*/
.containexte{
height: var(--y);
width: var(--y);
margin: 0 auto;
position: relative;
top: calc(var(--x)/8);
}
#cacherond{
display: none;
}
.round{
border-radius: 5vw;
}
.cb{
background-color: white;
}
.cn{
background-color: black;
}
/* UTILISATION FORMES CARTES*/
.containformCarte{
position: relative;
height: var(--x);
width: var(--x);
display: table-cell;
}
.carre{
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
}
.triangle{
-webkit-clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
.castriangle{
margin-top: calc( (var(--y) - var(--z)) / 5);
}
.caspenta{
margin-top: calc( (var(--y) - var(--z)) / 10);
}
.castrianglec{
margin-top: calc( (var(--m) - var(--n)) / 5);
}
.caspentac{
margin-top: calc( (var(--m) - var(--n)) / 10);
}
.losange{
-webkit-clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}
.croix{
-webkit-clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
}
.croixinte{
-webkit-clip-path: polygon(26% 23%, 22% 27%, 45% 50%, 22% 74%, 27% 78%, 50% 55%, 74% 78%, 78% 73%, 55% 50%, 78% 27%, 73% 23%, 50% 46%);
clip-path: polygon(26% 23%, 22% 27%, 45% 50%, 22% 74%, 27% 78%, 50% 55%, 74% 78%, 78% 73%, 55% 50%, 78% 27%, 73% 23%, 50% 46%);
}
.penta{
-webkit-clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
}
.hexa{
-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}
.hocto{
-webkit-clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
}
.rondv2{
-webkit-clip-path: circle(50% at 50% 50%);
clip-path: circle(50% at 50% 50%);
}
.rond{
-webkit-clip-path: circle(50% at 50% 50%);
clip-path: circle(50% at 50% 50%);
}
.formeinte{
height: 100%;
width: 100%;
}
.formeexte{
height: 100%;
width: 100%;
}

@ -0,0 +1,6 @@
/*Demi Ecran*/
@media screen and (max-width: 768px) {
body{
background-color: green;
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,622 @@
/*DemTéléphone 1i Ecran*/
@media screen and (min-width: 0px) and (max-width: 992px) {
.containform3 {
position: relative;
height: calc(1.25*var(--x));
width: calc(2*var(--x));
display: table-cell;
vertical-align: middle;
left: -2vw;
}
.containform3carte {
position: relative;
height: var(--l);
width: var(--l);
display: table-cell;
/*vertical-align: middle;*/
}
.containinte{
/*PROBLEME SIZE*/
top: calc(1.5*((var(--y) - var(--z)) / 2));
left: calc(1.5*((var(--y) - var(--z)) / 2));
height: calc(1.5*var(--z));
width: calc(1.5*var(--z));
z-index: 2;
position: absolute;
}
.containinteCarte{
top:calc((var(--l) - var(--n)) / 1.3);
left:calc((var(--l) - var(--n)) / 1.2);
height: var(--n);
width: var(--n);
z-index: 2;
position: absolute;
}
.containexteCarte{
top:calc((var(--l) - var(--m)) / 0.8);
left:calc((var(--l) - var(--m)) / 0.7);
height: var(--m);
width: var(--m);
z-index: 1;
position: absolute;
}
.cache{
top: calc(0.91*((var(--x) - var(--y)) / 2.8));
left: calc(4.55*((var(--x) - var(--y)) / 2.2));
height: calc(1.5*var(--y)*1.05);
width: calc(1.5*var(--y)*1.05);
z-index: 2;
position: absolute;
z-index: 15;
}
#formSize{
margin : 0 auto;
width: 100%;
height: 3vw;
position: relative;
top: 3vw;
}
.slider-container .bar .fill {
display: block;
width: 50%;
height: 100%;
background-color: #6200ee;
}
.slider-container .slider {
position: relative;
z-index: 2;
-webkit-appearance: none;
width: 100%;
height: 10px;
border-radius: 5px;
outline: none;
top: -0.25vw;
background-color: transparent;
}
.slider.container{
position: relative;
}
.slider-container .bar {
position: absolute;
z-index: 1;
left: 0;
width: 100%;
height: 10px;
border-radius: 5px;
background-color: #c6aee7;
overflow: hidden;
}
/*Moz*/
.slider-container .slider::-moz-range-thumb {
-webkit-appearance: none;
width: 2vw;
height: 2vw;
background-color: #6200ee;
border-radius: 1vw;
cursor: pointer;
outline: none;
box-shadow: 0 0 0 0 rgba(98, 0 ,238, .1);
transition: .3s ease-in-out;
}
.slider-container .slider::-moz-range-thumb:hover {
box-shadow: 0 0 0 10px rgba(98,0,238,.1);
}
.slider-container .slider:active::-moz-range-thumb {
box-shadow: 0 0 0 20px rgba(98,0,238,.2);
}
.logop2 img {
width: 20vh;
padding-top: 1vh;
position: relative;
}
.txt {
position: absolute;
font-family: Arial Black;
color: var(--lightprima);
font-size: 5.5vw;
left: 2.25vw;
top: -1vh;
}
.logo img {
position: absolute;
width: 30vw;
left: 35vw;
top: 2%;
z-index: 11;
}
.mounts img {
position: absolute;
height: 100%;
width: 100%;
pointer-events: none;
margin-left: -1vw;
margin-top: -1vw;
object-fit: cover;
}
#contourbuttonvalider {
position: absolute;
border-radius: 45px;
left: -10vw;
top: -10vh;
height: 15vw;
width: 50vw;
background-color: var(--lightsedonca);
z-index: 15;
}
.bouttonvalider {
position: absolute;
height: 13vw;
width: 47vw;
top: 1.1vw;
left: 1.5vw;
border-radius: 30px;
background-color: #B130DE;
}
.bouttonvalider2 {
position: absolute;
height: 6.8vw;
width: 22.8vw;
top: 1.1vw;
left: 1.1vw;
border-radius: 30px;
background-color: #00CC66;
}
#textjouer {
font-family: Montserrat, impact, Arial Black;
position: absolute;
font-size: 10vw;
margin-top: 0.2vw;
width: inherit;
text-align: center;
color: var(--lightsedonca);
}
#textjouerr {
font-family: Montserrat, impact, Arial Black;
position: absolute;
font-size: 10vw;
margin-top: 0.2vw;
width: inherit;
text-align: center;
color: var(--lightsedonca);
}
#choosemode {
height: 7vw;
width: 50vw;
position: absolute;
left: 25vw;
top: 40vh;
z-index: 15;
}
#choosedimension {
height: 7vw;
width: 50vw;
position: absolute;
left: 25vw;
top: 50vh;
z-index: 15;
}
#conteneurmode{
width: 80%;
height: 80%;
left : 10%;
position: absolute;
background-color: var(--lightsedonca);
border-radius: 5vw;
}
#triangleprec{
width: 0;
height: 0;
margin: 0.25vw auto 0 auto;
border-top: 2vw solid transparent;
border-right: 4vw solid grey;
border-bottom: 2vw solid transparent;
margin-top: 0.75vw;
}
#trianglesuiv{
width: 0;
height: 0;
margin: 0.25vw auto 0 auto;
border-top: 2vw solid transparent;
border-left: 4vw solid grey;
border-bottom: 2vw solid transparent;
margin-top: 0.75vw;
}
#textmode {
font-family: Lucida Console, Arial Black, Arial;
font-size: 3vw;
color: #707070;
text-align:center;
margin: 5% auto 0 auto;
}
#textdimension {
font-family: Lucida Console, Arial Black, Arial;
font-size: 3vw;
color: #707070;
text-align:center;
margin: 5% auto 0 auto;
}
.logoboutton{
font-size: 2vw;
color: var(--lightprima);
margin: 1vw;
}
/*Externe*/
.bouttonMenuHaut{
height: 4vw;
width: 4vw;
background-color: var(--lightsedonca);
border-radius: 50%;
margin: 0 auto;
margin-top: 2.5vw;
position: relative;
display: block;
}
.divmenu {
width: 25vw;
height: inherit;
margin-right: 1vw;
}
#affPoints {
text-align: center;
font-family: Montserrat, impact, Arial Black;
font-size: 2vw;
margin-top: 3.5vw;
color: var(--lightsedonca);
}
.containcards {
overflow-x: auto;
display: grid;
grid-template-columns: repeat(4,auto);
grid-template-rows: repeat(4,auto);
padding-top: 1vw;
justify-content: center;
}
.flex-item {
flex-grow: 1;
background: var(--lightsedonca);
width: var(--tailleTablette);
border-radius: 0.75vw;
padding-right: 0.15vw;
padding-left: 0.15vw;
padding-bottom: 0.25vw;
list-style: none;
display: flex;
margin-right: 0.4vw;
margin-left: 0.4vw;
margin-bottom: 1vw;
-webkit-flex-flow: row wrap;
justify-content: space-around;
}
.item-form {
width: 4vh;
padding-left: 0.1vw;
margin-top: 0.25vw;
height: 4vh;
border-radius: 10px;
display: table-cell;
position: relative;
vertical-align: middle;
background-color: var(--lighttercia);
}
#containBottom{
position: absolute;
bottom: -0%;
width: auto;
left: 50%;
z-index: 20;
height: auto;
}
#containScore {
display: flex;
justify-content: center;
position: relative;
left: -50%;
flex-flow: row wrap;
width: 80vw;
}
.titreScore{
font: 700 5vh "Poppins", sans-serif;
color: #2B2D2F;
position: relative;
left: -50%;
text-align: center;
}
.case-score{
padding: 4px;
position: relative;
z-index: 1;
width: 12vw;
height: 12vw;
margin: 1vw;
cursor: default;
transition: all 0.3s ease;
}
.case-score .score-description {
background-color: var(--lightsedonca);
padding: 10px 15px;
width: calc(100% - 30px);
height: calc(100% - 20px);
transition: inherit;
}
.case-score .score-position {
font: 700 3vw "Poppins", sans-serif;
margin-left: -1vw;
transition: 0.2s ease 150ms;
}
.case-score .score-pseudo, .score-points {
font: 500 12px "Poppins", sans-serif;
margin-top: -0.2em;
margin-left: -1vw;
}
.case-score:after {
z-index: 10;
background: #f9f8f7;
color: #333;
width: 180px;
position: absolute;
top: 80%;
opacity: 0;
transition: opacity 0.3s ease 0.3s, top 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.3s;
height: auto;
font-size: 12px;
line-height: 1.4;
padding: 10px;
margin: 0 0 0 -50px;
border-radius: 6px;
text-align: center;
}
.case-score:hover {
transform: scale(1.12);
z-index: 10;
}
.case-score:hover .score-description {
background: transparent;
}
.case-score:hover .score-position,
.case-score:hover .score-pseudo,
.case-score:hover .score-points {
-webkit-text-fill-color: #222;
}
.case-score:hover:after {
top: 105%;
opacity: 1;
}
.first {
background: linear-gradient(to bottom right, #f3f9a6 0%, #cbc634 100%);
}
.first .score-position,
.first .score-pseudo,
.first .score-points {
background: -webkit-linear-gradient(#2B2D2F, #2B2D2F);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.second {
background: linear-gradient(to bottom right, #37cfdc 0%, #5a88e5 100%);
}
.second .score-position,
.second .score-pseudo,
.second .score-points {
background: -webkit-linear-gradient(#2B2D2F, #2B2D2F);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.third {
background: linear-gradient(to bottom right, #ff616d 0%, #ffc171 100%);
}
.third .score-position,
.third .score-pseudo,
.third .score-points {
background: -webkit-linear-gradient(#2B2D2F, #2B2D2F);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.nopodium {
background: linear-gradient(to bottom right, #2c3e50 0%, #B7B7B7 90%);
}
.nopodium .score-position,
.nopodium .score-pseudo,
.nopodium .score-points {
background: -webkit-linear-gradient(#3A3B3C, #3A3B3C );
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.content{
margin-top: -5vw;
}
#infosec2{
position: relative;
z-index:15;
width: 2vw;
left: 5vw;
}
#cf2 {
position:relative;
margin-left: 14vh;
top: 2.5vh;
}
.last{
display: none;
}
#multiParams{
height: 15vw;
width: 55vw;
position: absolute;
margin: 0 auto;
top: 58vh;
left: 25%;
z-index: 15;
display: none;
}
#buttonMulti {
border-radius: 45px;
height: 5.5vw;
width: 22.4vw;
top: 1vw;
background-color: var(--lightsedonca);
z-index: 15;
}
#buttonMulti2 {
border-radius: 45px;
height: 5.5vw;
width: 22.4vw;
top: 1vw;
background-color: var(--lightsedonca);
z-index: 15;
margin-top: 1vh;
}
.bouttonvalider2 {
position: relative;
height: 4.5vw;
width: 20vw;
top: 0.5vw;
left: 1.3vw;
border-radius: 30px;
}
#textmulti {
font-family: Montserrat, impact, Arial Black;
font-size: 3vw;
margin-top: 0.3vw;
color: var(--lightsedonca);
text-align: center;
width: inherit;
}
#conteneurCreate{
width: 40%;
height: 5.2vw;
left: 50%;
top: 3%;
position: absolute;
margin: 0 auto;
background-color: var(--lightsedonca);
border-radius: 5vw;
}
#conteneurJoin{
width: 40%;
height: 5.2vw;
left: 50%;
top: 45%;
position: absolute;
margin: 0 auto;
background-color: var(--lightsedonca);
border-radius: 5vw;
}
.form__field {
font-family: inherit;
width: 70%;
border: 0;
border-bottom: 2px solid #9b9b9b;
outline: 0;
font-size: 2.5vw;
color: black;
padding: 0.8vh 0;
background: transparent;
transition: border-color 0.2s;
margin-left: 3.5vw;
text-align: center;
}
.form__field::placeholder {
color: black;
}
.form__field:placeholder-shown ~ .form__label {
font-size: 1.3rem;
cursor: text;
top: 20px;
}
.form__label {
position: absolute;
top: 0;
display: block;
transition: 0.2s;
font-size: 1rem;
color: black;
}
.form__field:focus {
padding-bottom: 6px;
font-weight: 700;
border-width: 3px;
border-image: linear-gradient(to right, #11998e, #38ef7d);
border-image-slice: 1;
}
.form__field:focus ~ .form__label {
position: absolute;
top: 0;
display: block;
transition: 0.2s;
font-size: 1rem;
color: #11998e;
font-weight: 700;
}
.violet {
background-color: #B130DE;
}
}

@ -0,0 +1,7 @@
<?php
session_start();
$pseudo = $_POST['pseudo'];
$_SESSION['pseudo'] = $pseudo;
$idpartie = $_SESSION['idpartie'];

@ -0,0 +1,4 @@
<?php
$pseudo = $_POST['pts'];
$_SESSION['pts'] = $pseudo;
$idpartie = $_SESSION['idpartie'];

@ -0,0 +1,18 @@
<?php
require "ConnexionBDD.php";
session_start();
$db=new MyDB();
$cartes=$_POST['cartestables'];
$_SESSION['cartestables']=$cartes;
$idpartie = $_SESSION['idpartie'];
$tableau = $cartes;
for ($i = 0; $i <= 15; $i++) {
$valcol1= substr($tableau[$i],-25,7);
$valcol2= substr($tableau[$i],-14,7);
$valcol3= substr($tableau[$i],-7);
$update = $db->query('UPDATE partieCartes SET "colUn" = "'.$valcol1.'","colDeux"="'.$valcol2.'","colTrois"="'.$valcol3.'" where IdPartie="'.$idpartie.'" AND IdCarte="'.($i+1).'" ');
}

@ -0,0 +1,4 @@
<?php
session_start();
$idpartie = $_POST['idpartie'];
$_SESSION['idpartie'] = $idpartie;

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -1,4 +1,8 @@
<!DOCTYPE html>
<?php
session_start();
require("ConnexionBDD.php");
?>
<!DOCTYPE html>
<html>
<head lang="fr">
<meta charset="utf-8">
@ -13,26 +17,20 @@
<link rel="stylesheet" href="css/formes.css">
<link rel="stylesheet" href="css/Resp3.css">
<script type="text/javascript" src="js/main.js"></script>
<script type="text/javascript" src="js/main2.js"></script>
<script type="text/javascript" src="js/menu.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@simonwep/pickr/dist/pickr.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css"/>
</head>
<body onload="settingOpen()">
<div id="pageAccueil">
<div class="logo">
<a onclick="journuit()">
<img src="imgs/swishjour.png" id="imglogo">
</a>
</div>
<div class="containerparam">
<div class="menuhaut menu">
<div class="divmenu">
<div id="infosec">
<div class="inner">
<ul class="activity">
@ -42,6 +40,9 @@
</ul>
</div>
</div>
</div>
<div class="divmenu">
<div id="infosec2">
<div class="inner">
<ul class="activity">
@ -51,26 +52,50 @@
</ul>
</div>
</div>
</div>
<div id="cf2" class="shadow">
<a onclick="functionLange()">
<img src="imgs/flags/flag-france.png" id="flag_top">
</a>
<div class="divmenu">
</div>
<div class="divmenu">
</div>
<div id="containpseudo">
<a onclick="lancerpartie()">
<div id="contourbuttonvalider">
<div class="bouttonvalider">
<h1 id="textjouer">JOUER</h1>
<div class="divmenu">
</div>
<div class="divmenu">
</div>
<div class="divmenu">
</div>
<div class="divmenu">
</div>
<div class="divmenu">
<div id="infosec">
<div class="inner">
<ul class="activity">
<div id="infosec">
<a onclick="functionLange()">
<img src="imgs/flags/flag-france.png" id="flag_top2">
</a>
</div>
</ul>
</div>
</div>
</div>
<div class="logo">
<a onclick="journuit()">
<img src="imgs/swishjour.png" id="imglogo">
</a>
</div>
<div id="popup1" class="overlay">
<div class="popup">
<h2 id="lesRegles">Les Règles :</h2>
@ -93,9 +118,8 @@
<br>
<div id="pickrcontner">
<div class="containform3">
<a onclick="disableCache('rond')" id="cacherond" class="cache cn rondcache"></a>
<div class="containexte">
<a onclick="ableCache('rond')" class="containinte cb round"></a>
<a class="containinte cb round"></a>
<div class="color-picker"></div>
</div>
</div>
@ -114,19 +138,20 @@
</div>
</div>
<div class="containform3">
<a onclick="disableCache('losange')" id="cachelosange" class="cache cn losange"></a>
<a onclick="disableCache('croix')" id="cachecroix" class="cache cn croix"></a>
<div class="containexte">
<a onclick="ableCache('losange')" class="containinte cb losange"></a>
<a onclick="ableCache('croix')" class="containinte cb croixinte"></a>
<div class="color-picker4"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('croix')" id="cachecroix" class="cache cn croix"></a>
<a onclick="disableCache('losange')" id="cachelosange" class="cache cn losange"></a>
<div class="containexte">
<a onclick="ableCache('croix')" class="containinte cb croixinte"></a>
<a onclick="ableCache('losange')" class="containinte cb losange"></a>
<div class="color-picker5"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('penta')" id="cachepenta" class="cache cn penta"></a>
<div class="containexte">
@ -173,20 +198,21 @@
</div>
</div>
</div>
</div>
<!-- COLOR PICKER-->
<script>
let pannel = document.getElementById("pannel");
// Simple example, see optional options for more configuration.
var couleur1 = varColorToHex('--colorbase');
var couleur2 = varColorToHex('--colorcarre');
var couleur3 = varColorToHex('--colorone');
var couleur4 = varColorToHex('--colortwo');
var couleur1 = varColorToHex('--colorseven');
var couleur2 = varColorToHex('--coloreight');
var couleur3 = varColorToHex('--colornine');
var couleur4 = varColorToHex('--colorten');
var couleur5 = varColorToHex('--colorthree');
var couleur6 = varColorToHex('--colorfour');
var couleur7 = varColorToHex('--colorfive');
var couleur8 = varColorToHex('--colorsix');
const pickr = Pickr.create({
el: '.color-picker',
theme: 'classic', // or 'monolith', or 'nano'
@ -516,49 +542,98 @@
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colorbase', newcouleur);
document.documentElement.style.setProperty('--colorseven', newcouleur);
});
pickr2.on('change', (...args) => {
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colorcarre', newcouleur);
document.documentElement.style.setProperty('--coloreight', newcouleur);
for(const form in FormeSelect){
if(FormeSelect[form] == "carre"){
var positionForm = FormeSelect.indexOf(FormeSelect[form]);
var couleurChange = '--'+ListeCouleur[positionForm];
document.documentElement.style.setProperty(couleurChange, newcouleur);
}
}
});
pickr3.on('change', (...args) => {
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colorone', newcouleur);
document.documentElement.style.setProperty('--colornine', newcouleur);
for(const form in FormeSelect){
if(FormeSelect[form] == "triangle"){
var positionForm = FormeSelect.indexOf(FormeSelect[form]);
var couleurChange = '--'+ListeCouleur[positionForm];
document.documentElement.style.setProperty(couleurChange, newcouleur);
}
}
});
pickr4.on('change', (...args) => {
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colortwo', newcouleur);
document.documentElement.style.setProperty('--colorten', newcouleur);
for(const form in FormeSelect){
if(FormeSelect[form] == "croix"){
var positionForm = FormeSelect.indexOf(FormeSelect[form]);
var couleurChange = '--'+ListeCouleur[positionForm];
document.documentElement.style.setProperty(couleurChange, newcouleur);
}
}
});
pickr5.on('change', (...args) => {
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colorthree', newcouleur);
for(const form in FormeSelect){
if(FormeSelect[form] == "losange"){
var positionForm = FormeSelect.indexOf(FormeSelect[form]);
var couleurChange = '--'+ListeCouleur[positionForm];
document.documentElement.style.setProperty(couleurChange, newcouleur);
}
}
});
pickr6.on('change', (...args) => {
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colorfour', newcouleur);
for(const form in FormeSelect){
if(FormeSelect[form] == "penta"){
var positionForm = FormeSelect.indexOf(FormeSelect[form]);
var couleurChange = '--'+ListeCouleur[positionForm];
document.documentElement.style.setProperty(couleurChange, newcouleur);
}
}
});
pickr7.on('change', (...args) => {
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colorfive', newcouleur);
for(const form in FormeSelect){
if(FormeSelect[form] == "hexa"){
var positionForm = FormeSelect.indexOf(FormeSelect[form]);
var couleurChange = '--'+ListeCouleur[positionForm];
document.documentElement.style.setProperty(couleurChange, newcouleur);
}
}
});
pickr8.on('change', (...args) => {
let color = args[0].toRGBA();
console.log(color);
let newcouleur = `rgba(${color[0]},${color[1]},${color[2]},${color[3]}`
document.documentElement.style.setProperty('--colorsix', newcouleur);
for(const form in FormeSelect){
if(FormeSelect[form] == "hocto"){
var positionForm = FormeSelect.indexOf(FormeSelect[form]);
var couleurChange = '--'+ListeCouleur[positionForm];
document.documentElement.style.setProperty(couleurChange, newcouleur);
}
}
});
@ -569,7 +644,6 @@
<div id="containpseudo">
<a onclick="lancerpartie()">
<a onclick="lancerpartie();">
<div id="contourbuttonvalider">
<div class="bouttonvalider violet">
<h1 id="textjouerr">JOUER</h1>
@ -579,7 +653,6 @@
</div>
<div id="choosemode">
<div id="conteneurmode">
<a onclick="modePrec()">
<div id="modeprec">
@ -595,22 +668,17 @@
<a onclick="modeSuiv()">
<div id="modesuiv">
<div id="trianglesuiv">
</div>
</div>
</a>
</div>
</div>
<div id="choosedimension">
<div id="conteneurmode">
<a onclick="dimensionPrec()">
<div id="modeprec">
<div id="triangleprec">
</div>
</div>
</a>
@ -621,15 +689,34 @@
<a onclick="dimensionSuiv()">
<div id="modesuiv">
<div id="trianglesuiv">
</div>
</div>
</a>
</div>
</div>
<div id="multiParams">
<div id="buttonMulti">
<div class="bouttonvalider2 violet">
<h1 id="textmulticreer">Créer</h1>
</div>
</div>
<div id="buttonMulti2">
<div class="bouttonvalider2 violet">
<h1 id="textmultirejoindre">Rejoindre</h1>
</div>
</div>
<div id="conteneurJoin">
<input type="input" class="form__field" placeholder="ID Partie" name="name" id='idinput_multi'/>
</div>
</div>
<div id="containplayers">
</div>
@ -638,10 +725,10 @@
<!-- tableau des scores -->
<h1 class="titreScore" id="classementtxt">Classement - solo</h1>
<div id="containScore">
<div class="case-score first" data-description="Score obtenu le ...">
<div class="score-description">
<div class="score-position" id="premier">1er</div>
<div class="score-pseudo">palafour</div>
<div class="score-points">696 pts</div>
</div>
@ -649,6 +736,7 @@
<div class="case-score second" data-description="Score obtenu le ...">
<div class="score-description">
<div class="score-position" id="deuxieme">2e</div>
<div class="score-pseudo">cyril</div>
<div class="score-points">600 pts</div>
</div>
@ -656,6 +744,7 @@
<div class="case-score third" data-description="Score obtenu le ...">
<div class="score-description">
<div class="score-position" id="troisieme">3e</div>
<div class="score-pseudo">mamore</div>
<div class="score-points">500 pts</div>
</div>
@ -721,7 +810,107 @@
</div>
<div id="pageGame">
<div id="popup2" class="overlay">
<div class="popup2">
<h2 id="SettingName">Param&#232;tres</h2>
<a class="close" onclick="SettingClose()" href="#">&times;</a>
<div class="content">
<div id="couleurs" class="Mode_Setting">
<br>
<div id="pickrcontner">
<div class="containform3">
<div class="containexte">
<a class="containinte cb round"></a>
<div class="color-picker"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('carre')" id="cachecarre" class="cache cn carre"></a>
<div class="containexte">
<a onclick="ableCache('carre')" class="containinte cb carre"></a>
<div class="color-picker2"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('triangle')" id="cachetriangle" class="cache cn triangle"></a>
<div class="containexte">
<a onclick="ableCache('triangle')" class="containinte cb castriangle triangle"></a>
<div class="color-picker3"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('croix')" id="cachecroix" class="cache cn croix"></a>
<div class="containexte">
<a onclick="ableCache('croix')" class="containinte cb croixinte"></a>
<div class="color-picker4"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('losange')" id="cachelosange" class="cache cn losange"></a>
<div class="containexte">
<a onclick="ableCache('losange')" class="containinte cb losange"></a>
<div class="color-picker5"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('penta')" id="cachepenta" class="cache cn penta"></a>
<div class="containexte">
<a onclick="ableCache('penta')" class="containinte cb caspenta penta"></a>
<div class="color-picker6"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('hexa')" id="cachehexa" class="cache cn hexa"></a>
<div class="containexte">
<a onclick="ableCache('hexa')" class="containinte cb hexa"></a>
<div class="color-picker7"></div>
</div>
</div>
<div class="containform3">
<a onclick="disableCache('hocto')" id="cachehocto" class="cache cn hocto"></a>
<div class="containexte">
<a onclick="ableCache('hocto')" class="containinte cb hocto"></a>
<div class="color-picker8"></div>
</div>
</div>
</div>
<div id="formSize">
<div class="slider-container">
<span class="bar"><span class="fill"></span></span>
<input onchange="updateValue(this.value)" id="slider" type="range" class="slider" min="1" max="100" value="50">
<script>
var $slider = $("#slider");
var $fill = $(".bar .fill");
function setBar() {
$fill.css("width", $slider.val() + "%");
valRange = $slider.val();
changeContour(valRange);
}
$slider.on("input", setBar);
setBar();
</script>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="menuhaut menu">
<div class="divmenu">
<a class="bouttonMenuHaut" onclick="settingOpen()" href="#popup2">
<div class="containButtonForm">
<i class="fas fa-paint-brush logoboutton"></i>
</div>
</a>
</div>
<div class="divmenu"></div>
<div class="divmenu">
@ -749,7 +938,7 @@
</a>
</div>
<div class="divmenu">
<a class="bouttonMenuHaut" onclick="test()">
<a class="bouttonMenuHaut" onclick="testPertinent()">
<div class="containButtonForm">
<i class="fas fa-search logoboutton"></i>
</div>
@ -762,6 +951,17 @@
</div>
</a>
</div>
<div class="divmenu">
<div class="inner">
<ul class="activity">
<div id="infosec">
<a onclick="functionLange()">
<img src="imgs/flags/flag-france.png" id="flag_top">
</a>
</div>
</ul>
</div>
</div>
</div>
@ -777,6 +977,99 @@
<p id="affSolution"></p>
</div>
</div>
<div id="idGameMulti">
<div id="ActualiserID">
<p>C</p>
</div>
<script>
$(document).ready(function(){
setInterval(function(){
$("#ActualiserID").load('ActualiserIDPartie.php');
}, 500);
});
</script>
</div>
<script type="text/javascript">
function Actualisation(){
//lecture dans la base
tabcomplet=[];
var jar = [];
const xhr = new XMLHttpRequest();
xhr.open("POST","test.php");
xhr.onload=function (){
jar=this.response;
var chainetable=jar;
var j=0;
for (let i = 0; i < 16; i++) {
var v = chainetable.substr(j, 23);
//console.log(v);
tabcomplet.push(v.replaceAll(',',''));
j=j+24;
}
tab2=tabcomplet;
/*
if(tabcomplet[0].length!=0){
if(tabcomplet[1].length!=0){
ConvertInttoCarte(tabcomplet)
}
}
console.log("Tableau :"+tabcomplet);
//ConvertInttoCarte(tabcomplet);*/
};
xhr.send();
//console.log("Longeur tabcomplet : "+tabcomplet.length);
if(tab2[0].length!=0){
if(tab2[1].length!=0){
listeactuelle=[];
for (var i = 0; i < deckPartie.length; i++) {
var ajt = deckPartie[i].getMatrice[0] + deckPartie[i].getMatrice[1]+deckPartie[i].getMatrice[2];
listeactuelle.push(ajt.replaceAll(',',''));
}
//if(TableauPareil(tab2,listeactuelle)==false){
//console.log(tab2);
//console.log(listeactuelle);
ConvertInttoCarte(tab2);
//}
}
}
}
t = setInterval(Actualisation,550);
</script>
<script>
$(document).ready(function(){
$(document).on('click','#textmulticreer',function() {
$("#ActualiserID").load('SupprimerEtCreerPartie.php')
console.log("appel SuppEtCreerPartie")
lancerGameMulti();
});
});
</script>
<script>
$(document).ready(function(){
$(document).on('click','#textmultirejoindre',function() {
lancerpartie();
var input = document.getElementById("idinput_multi").value;
$(document).ready(function(){
var idpartie = input;
$.ajax({
data: {
idpartie:idpartie
},
type: "post",
url: "envoyeridpartie.php",
success: function(data){
console.log("Id partie : "+idpartie);
}
});
});
rejoindreGameMulti();
});
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,112 @@
var FormeSelect = ["rond"];
var ListeCouleur = ["colorbase","colorcarre","colorone","colortwo"];
var ListeCouleurModif = ["colorseven","coloreight","colornine","colorten","colorthree","colorfour","colorfive","colorsix"];
var ListeClassForme = ["rond","carre","triangle","croix","losange","penta","hexa","hocto"];
//3 modes : 0 = couleurs // 1 = formes // 2 = personnaliser les cartes
var mode = 0;
var valRange;
function ableCache(formName){
cacheName = "cache"+formName;
const pos = FormeSelect.indexOf(formName);
if (pos > -1) {
FormeSelect.splice(pos, 1);
}
document.getElementById(cacheName).style.display = "block";
}
function disableCache(formName){
if (FormeSelect.length < 4)
{
cacheName = "cache"+formName;
document.getElementById(cacheName).style.display = "none";
FormeSelect.push(formName);
for(const form in ListeClassForme){
//si la couleur est dans la liste selectionnée
if(formName == ListeClassForme[form]){
//recuperer la position de la couleur dans laquel on va le mettre
var positionColor = FormeSelect.length - 1;
var recupCouleur = getComputedStyle(document.body).getPropertyValue('--'+ListeCouleurModif[form]);
var dansQuelCouleur = '--'+ListeCouleur[positionColor];
document.documentElement.style.setProperty(dansQuelCouleur, recupCouleur);
console.log("Couleur "+ recupCouleur +" mettre dans : " + dansQuelCouleur);
}
}
}
}
function changeContour(value){
var newvalue = value * 0.055 + 1;
document.documentElement.style.setProperty('--z', newvalue+'vw');
var valcard = value * 0.013 + 1;
document.documentElement.style.setProperty('--n', valcard+'vw');
//document.documentElement.style.setProperty('--n', newvalue+'vw');
//document.getElementById("SettingName").innerHTML = newvalue;
}
function getVarColor(color){
var getvar = color;
getvar = getvar.substring(6,getvar.length-1);
return getvar;
}
function varColorToHex(color){
hex = getComputedStyle(document.documentElement).getPropertyValue(color);
hex = hex.substring(1,hex.length);
return hex;
}
function settingOpen(){
//document.getElementById("iddelapartie").style.visibility = "hidden";
var elements = document.getElementsByClassName("pcr-button");
for (var i = 0; i < elements.length; i++) {
elements[i].classList.add(ListeClassForme[i]);
}
recupCookies();
}
function SettingClose(){
//save cookies
document.cookie = "forme1="+FormeSelect[1]+";secure";
document.cookie = "forme2="+FormeSelect[2]+";secure";
document.cookie = "forme3="+FormeSelect[3]+";secure";
}
function recupCookies(){
var theCookies = document.cookie.split(';');
theCookies[0] = ' '+theCookies[0];
var FormeCookie = [];
for(var i = 1; i <= theCookies.length; i++){
var aString = theCookies[i-1].substring(8);
if(aString != "undefined"){
FormeCookie.push(aString);
}
}
for(const form in FormeCookie)
{
if(FormeSelect.indexOf(FormeCookie[form]) < 0){
disableCache(FormeCookie[form]);
}
}
console.log(FormeCookie);
console.log("Formes select : "+FormeSelect);
}
function affichageParamMulti(num){
//si 1 affichage, si 0 on cachell
if(num == 1){
document.getElementById("multiParams").style.display = "block";
} else {
document.getElementById("multiParams").style.display = "none";
}
}

Binary file not shown.

@ -0,0 +1,4 @@
<?php
session_start();
$var = $_SESSION['listecartebdd'];
echo $var;

@ -13,6 +13,7 @@
---
### ENUMERATION TYPEFIGURE ###
//Tailles de Figure possibles sur des cartes
- **Petit** : petit
- **Moyen** : moyen
- **Grand** : grand
@ -32,11 +33,11 @@
###STRUCTURE CARTE ###
### Attributs ###
- **Carte.indentifiant** : entier
- **Carte.identifiant** : entier
- **Carte.row** : eniter // Nombre de lignes sur la carte
- **Carte.column** : entier // Nombre de colonnes sur la carte
- **Carte.HTML**: code HTML
- **Carte.Matrice**: entier[n][k];
- **Carte.Matrice**: entier[row][column];
- **Carte.lesFigures** : Figures [ ]
### Méthodes ###
- **Carte.carteVerticale** : obtient sa carte verticalement symétrique.
@ -45,6 +46,7 @@
---
### STRUCTURE CODE ###
// Permet de gérer les informations sur des assemblages de cartes
### Attributs ###
- **Code.code** : entier //Nombre de liaisons
@ -62,23 +64,23 @@
- **CarteFille** : Carte sujette, "pièce" à comparer sur le support.
**Objectif** : Determine le nombre de liaison possible entre CarteMere et CarteFille.
**Objectif** : Determine le nombre de liaison possible entre les deux cartes envoyées en paramètre
**Sortie** : entier,Carte
**Sortie** : Code
**Sortie Possible :**
- **-1,CarteMere** : L'assemblage est impossible.
- new Code(**-1,CarteMere**) : L'assemblage est impossible.
- **nbliaisons,CarteMere** : L'assemblage est possible avec un certain nombre de liaisons entre les cartes.
- new Code(**nbliaisons,CarteMere**) : L'assemblage est possible avec un certain nombre de liaisons entre les deux cartes.
### COMMENT FAIRE ###
- Pour chaque **Figure** contenu dans **CarteFille.lesFigures**
- On regarde chaque **Figure** contenu dans **CarteMere.lesFigures**
- Si des figures sont aux mêmes endroits, de même **forme** et de **type** différents, on incrémente le nombre de liaisons.
- Si des figures sont aux mêmes endroits mais que les **Types** sont identiques ou que les **Forme** sont différentes, le nombre de liaisons vaut -1 et on retourne le résultat dans ce cas.
- A la fin de la comparaison des **Figures**. On fait la mise à jour de **CarteMere** en faisant la somme des deux cartes puis on retourne le résultat avec le nombre de liaison.
- Pour chaque **Figure** contenu dans le second paramètre de la fonction (**CarteFille.lesFigures**) :
- On regarde chaque **Figure** contenu dans le premier parametre (**CarteMere.lesFigures**) puis on vérifie ces situations :
- Si deux figures sont aux mêmes endroits, de même **forme** et de **type** différents. Dans ce cas, on incrémente le nombre de liaisons.
- Si des figures sont aux mêmes endroits mais que les **Types** sont identiques ou que les **Forme** sont différentes. Dans ce cas, il est impossible d'assembler les deux **Cartes**, le nombre de liaisons vaut alors -1 et on retourne le résultat.
- A la fin de la comparaison des **Figures**. On fait la mise à jour du premier paramètre (**CarteMere**) en faisant la fusion des deux **Cartes** puis on retourne le résultat avec le nombre de liaison dans une nouvelle structure **Code**.
---
@ -101,11 +103,11 @@
- On regarde chaque **Figure** contenu dans **CarteMere.lesFigures**
- Si l'une des Figures de **CarteFille** est absente de **CarteMere** on l'ajoute à la liste **CarteMere.lesFigures**.
- Sinon on fait rien
- Une fois toutes les figures mises à jour dans **CarteMere.lesFigures**, **CarteMere.Matrice** est aussi mise à jour en faisant apparaitre les figures ainsi que les types par le biais de somme de puissance de 2.
- Une fois toutes les **figures** mises à jour dans **CarteMere.lesFigures**, **CarteMere.Matrice** est aussi mise à jour par le biais de somme de puissance de 2 en fonction des **types** de **Figures**.
---
Dans une Matrice si on a :
Dans une Matrice si nous avons une somme de puissance de 2 dans une cellule, nous sommes capable de déterminer quels types de figures sont présent dans celle-ci :
- 1 -> Petit
- 2 -> Moyen
@ -134,14 +136,14 @@ Dans une Matrice si on a :
### COMMENT FAIRE ###
- On supprime la tête de liste de **TasDeCarte** qui est égale à **CarteMere**.
- Si **TasDeCarte** est maintenant vide on retourne un **Code** avec **Code.code** = 0 et **Code.Carte** = **CarteMere**.
-Sinon on continue
- On appelle la même fonction **Assemblage** en envoyant la liste **TasDeCarte** et en testant avec toutes les variantes de rotation de la tête de **TasDeCarte**.
- Une fois toutes les listes de **Code** retournées par ces appelles de fonctions et récupérées dans une seule :
- Pour chaque **Code** de la liste :
- Si **Code.code** est différent de -1, on compare **Code.Carte** et **CarteMere**. Puis on ajoute le nombre de liaison à **Code.code**.
- On retourne la liste de **Code** mise à jour.
- On supprime la tête de liste envoyée en paramètre qui, au début de cette fonction, est identique au second paramètre de la fonction (**CarteMere**).
- Si cette liste, après la suppression de sa tête, est maintenant vide, on retourne une structure **Code** avec pour attribut **Code.code** = 0 et **Code.Carte** = **CarteMere**.
-Sinon on continue la fonction
- On appelle récursivement cette fonction (**Assemblage**) en envoyant en premier paramètre la nouvelle liste de **Carte**, et en second parametre, toutes les variantes (rotations) possible de la **Carte** en tête de cette même liste.
- Une fois tout les résultats de ces fonctions récupérés dans une seule liste:
- Pour chaque index de cette liste :
- Si nous sommes notifiés via la structure **Code** présente à cet index que l'on peut assembler les cartes, alors on compare la **Carte** et **CarteMere**. Puis on ajoute le nombre de liaison entre elles.
- On retourne la liste de résultats mise à jour.
---

@ -0,0 +1,193 @@
# RECHERCHE DE SWISH INTELLIGENTE#
Ce document, présente une version de l'algorithme de recherche utilisé dans notre projet. Il a pour objectif d'énumérer tous les Swish possibles de 2, 3, 4, ou 5 cartes sur un plateau de jeu présentées à un joueur. Il pourra également être utilisé pour aider les joueurs si aucun Swish n'est possible et ainsi débloquer le jeu ou arrêter la partie.
## DEFINITION DES STRUCTURES ##
### ENSEMBLE ###
### Attributs ###
//Permet de déterminer si un ensemble de carte peut **théoriquement** former un Swish en regardant uniquement la couleur de leurs **Figures**
- **ensemble** //Liste d'entier représentant les index des cartes dans le plateau de jeu
- **v** //Entier notifiant si l'ensemble d'index peut **théoriquement** former un Swish
---
## DEFINITION DES FONCTIONS UTILISEE POUR CETTE RECHERCHE ##
# SOMME CARRE ELEMENT #
**Objectif** : Calculer la somme des puissances de 2 d'une liste d'entier envoyé en paramètre.
**sommeCarreElement(liste: int[])** : Int
**Entrées** :
-**liste** : liste d'entier
**Sortie** :
-**int** : Somme des puissances de 2 de l'ensemble
### COMMENT FAIRE ###
- Pour chaque entier présent dans la liste envoyé en parametre
- Mettre 2 à la puissance de l'entier présent à cet index et faire une somme.
Une fois la somme calculée, on retourne le résultat.
---
# COMPARAISON EMPILEMENT #
**Objectif** : Enlever les doublons d'une liste envoyée en paramètre.
**Pourquoi cette fonction ?** : Notre recherche intelligente est capable de trouver tout les SWISH possibles sur un plateau de jeu mais également TOUTES les façons de les obtenir. Pour des SWISH à 4 ou 5 cartes, le temps de recherche est fortement allongé du fait que pour un SWISH avec un tas composé de n **Cartes"**, il existe 4^n variantes de ce même tas.
Calculer plusieurs fois le même tas différements mélangé fais perdre beaucoup de temps. Cette fonction va donc, en calculant ces sommes, enlever les doublons et gagner du temps pour le confort de l'utilisateur.
**comparaisonEmpilement(liste: Ensemble[], debut: int)** : int[]
**Entrées** :
-liste** : Liste d'Ensemble, contient tout les ensembles qui peuvent **théoriquement** former un Swish.
- debut** : entier permettant de savoir à quel index ded la liste nous sommes
**Sortie** :
-**Ensemble[]** : Nouvelle liste d'ensemble ne contenant plus de doublon **d'Ensemble**
### COMMENT FAIRE ###
-Si début est supérieur ou égal à l'index du dernier élément de la liste cela signifie que l'algorithme possède une liste sans doublon et a terminé ses opérations. On retourne donc la liste actuelle.
-On récupère tout les éléments de la liste de 0 jusqu'à l'index **début** qui ne sont pas en doublon.
-On calcule la **sommeCarreElement** de l'élément présent à l'index **début** de la liste pour l'identifier.
-Une fois cette somme récupérée, on la compare avec la **sommeCarreElement** de tous les éléments de la liste restant
-Si les **sommeCarreElement** sont différent on récupère l'élément à cet index
-Une fois les doublons de l'élément à l'index **début** retiré, on appelle récursivement cette fonction **comparaisonEmpilement()** avec pour paramètre la liste mis à jour et début incrémenté.
---
# RECHERCHE CARTE COMPLEMENTAIRE #
-**Objectif**: Rechercher toutes les cartes du plateau de jeu contenant une figure complémentaire (type différent et couleur identique) avec la figure envoyée en paramètre.
**carteComplementaire**(figure: Figure, debut: int): int[]
**Entrées** :
-**figure**: Structure **Figure** depuis laquelle nous allons rechercher toutes les cartes avec une **Figure** complémentaire.
-**debut** : Entier permettant de notifier où l'on se trouve dans le plateau de jeu dans le but de ne pas créer de boucle dans les recherches.
**Sortie**
-**int[]** : Liste d'entier contenant les index des cartes comportant une **Figure** complémentaire dans le plateau de jeu.
### COMMENT FAIRE ###
-Pour toutes les cartes du plateau de jeu située entre l'index début et la fin du plateau.
-On regarde si les cartes ont une **Figure** de type différent et de couleur identique au parametre **figure** envoyée dans la fonction.
-Si c'est le cas un ajoute l'index de cette carte dans une liste.
-Sinon rien.
-Une fois toutes les cartes du plateau de jeu vérifiées, on retourne la liste d'index remplie
---
# RECHERCHE ENSEMBLE INTELLIGENT #
-**Objectif**: Retourner une liste **d'Ensemble** contenant des ensembles de carte qui peuvent former un Swish par rapport à un indice de carte donné.
**rechercherPertinent**(nbCarte: int, debut: int, carte: int): Ensemble[]
**Entrées**:
-**nbCarte**: Information sur le nombre de **Cartes** que l'algorithme doit encore trouver pour chercher un SWISH à n **Cartes**
-**debut** : Indice dans le plateau de jeu du support du SWISH (première carte de l'empilement)
-**carte** : Indice dans le plateau de jeu de la carte que l'algorithme traite actuellement.
**Sortie**
-**Ensemble[]** : Liste **d'Emssemble** contenant de liste d'indice pouvant potentiellement former des SWISH
### COMMENT FAIRE ###
-Si l'algorithme n'a plus de carte à rechercher (**nbCarte** = 0)
-On regarde si les figures de la première et de la dernière carte de l'ensemble sont complémentaire
- Si elles le sont, on ajoute l'indice de la carte que l'algorithme traite (**carte**) dans une structure **Ensemble** et on la retourne
- Si elles ne le sont pas, on ajoute l'indice de la carte que l'algorithme traite (**carte**) dans une structure **Ensemble** et on la retourne en notifiant **l'Enssemble** que cette liste est mauvaise.
-On recupère tout les index des **Cartes** pouvant compléter le point de la **Carte** à l'index **carte**
-Si la liste d'indice est vide alors on retourne un code d'erreur
-Sinon pour chaque index de carte complémentaire on appelle récursivement cette fonction **recherchePertinente** en envoyant, nbCarte décrémenté, debut et l'indice de la carte.
-Une fois tous ces résultats récupérés on les retournes.
---
# TEST DES ENSEMBLES #
-**Objectif**: Tester tous les **Ensemble** d'une liste notifier et compter si les **Ensemble** sont correcte
**testAllEnsemble**(liste: Ensemble[]):int
**Entrees** :
-**liste**: Liste **d'Ensemble** à tester
**Sortie** :
-**int**: Correspond au nombre de Swish trouvé
### COMMENT FAIRE ###
-Pour toutes les **Ensembles** présents dans la liste
-On récupère les cartes correspondant aux indices
-Une fois toutes les cartes récupérées on teste notre tas dans la fonction **AssemblageARBRE**
-Si le SWISH est possible on incrémente le nombre de SWISH trouvé et on recommence avec le tas de carte suivant
-Une fois tous les **Ensembles** on retourne le nombre de SWISH trouvé.
---
# TEST INTELLIGENT #
-**Objectif**: Rechercher tous les SWISH possibles dans un plateau de jeu.
-**testPertinent**(void):void
### COMMENT FAIRE ###
-Pour des tas allant de 2 à 5 **Carte**
-Pour chaque **Carte** du plateau de jeu
-On lance une **recherchePertinente** en envoyant le nombre de **Cartes** de notre tas, le numéro de la carte à partir de laquelle on veut les **Ensembles**possibles.
-Une fois tous les **Ensembles** récupérés on vérifie qu'il n'y a pas de doublon en lançant la fonction **comparaisonElement** de ces résultats.
-Une fois les doublons retirés on teste tous les **Ensembles** dans la fonction **testAllEnsemble**
-On affiche le nombre de SWISH trouvé et on fait apparaitre sur l'écran du joueur un SWISH à 5 cartes.
---

@ -40,7 +40,7 @@ GOLFIER Alexandre Participant au projet
## Diagramme dutilisation :
<img src="../img/DiagUtilisiation.png"
<img src="../img/DiagDeCas.png"
alt="Markdown Monster icon" />
## Description du diagramme dutilisation :

@ -0,0 +1,216 @@
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!--ROND-->
<div class="containform">
<div class="containinte">
<div class=" formeinté cb rond"></div>
</div>
<div class="containexte">
<div class="formeexté cn rond"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn rond"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class=" formeinté cb rond"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn rond"></div>
</div>
</div>
<!--CARRE-->
<div class="containform">
<div class="containinte">
<div class=" formeinté cb carre"></div>
</div>
<div class="containexte">
<div class="formeexté cn carre"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn carre"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class=" formeinté cb carre"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn carre"></div>
</div>
</div>
<br>
<!--TRIANGLE-->
<div class="containform">
<div class="containinte">
<div class="castriangle cb formeinté triangle"></div>
</div>
<div class="containexte">
<div class="formeexté cn triangle"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class="castriangle cn formeinté triangle"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class="castriangle cb formeinté triangle"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class="castriangle cn formeinté triangle"></div>
</div>
</div>
<!--LOSANGE-->
<div class="containform">
<div class="containinte">
<div class=" formeinté cb losange"></div>
</div>
<div class="containexte">
<div class="formeexté cn losange"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn losange"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class=" formeinté cb losange"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn losange"></div>
</div>
</div>
<br>
<!--CROIX-->
<div class="containform">
<div class="containinte">
<div class=" formeinté cb croix"></div>
</div>
<div class="containexte">
<div class="formeexté cn croix"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn croix"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class=" formeinté cb croix"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn croix"></div>
</div>
</div>
<!--PENTA-->
<div class="containform">
<div class="containinte">
<div class=" formeinté cb penta"></div>
</div>
<div class="containexte">
<div class="formeexté cn penta"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn penta"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class=" formeinté cb penta"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn penta"></div>
</div>
</div>
<br>
<!--HEXA-->
<div class="containform">
<div class="containinte">
<div class=" formeinté cb hexa"></div>
</div>
<div class="containexte">
<div class="formeexté cn hexa"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn hexa"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class=" formeinté cb hexa"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn hexa"></div>
</div>
</div>
<!--HOCTO-->
<div class="containform">
<div class="containinte">
<div class=" formeinté cb hocto"></div>
</div>
<div class="containexte">
<div class="formeexté cn hocto"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn hocto"></div>
</div>
</div>
<div class="containform2">
<div class="containinte">
<div class=" formeinté cb hocto"></div>
</div>
</div>
<div class="containform">
<div class="containinte">
<div class=" formeinté cn hocto"></div>
</div>
</div>
<br>
</body>
</html>

@ -0,0 +1,99 @@
:root{
--x : 10vw;
--y : 8vw;
--z : 4vw;
}
.containform {
position: relative;
height: var(--x);
width: var(--x);
display: table-cell;
vertical-align: middle;
}
.containform2{
position: relative;
height: var(--x);
width: var(--x);
display: table-cell;
vertical-align: middle;
background-color: black;
}
/*ROND*/
.containexte{
margin: 0 auto;
height: var(--y);
width: var(--y);
}
.containinte{
/*PROBLEME SIZE*/
top: calc((var(--x) - var(--z)) / 2);
left: calc((var(--x) - var(--z)) / 2);
height: var(--z);
width: var(--z);
z-index: 2;
position: absolute;
}
.rond{
-webkit-clip-path: circle(50% at 50% 50%);
clip-path: circle(50% at 50% 50%);
}
.cb{
background-color: white;
}
.cn{
background-color: black;
}
.formeinté{
height: 100%;
width: 100%;
}
.formeexté{
height: 100%;
width: 100%;
}
.carre{
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
}
.triangle{
-webkit-clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
.castriangle{
margin-top: calc( (var(--y) - var(--z)) / 5);
}
.losange{
-webkit-clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}
.croix{
-webkit-clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
}
.penta{
-webkit-clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
}
.hexa{
-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}
.hocto{
-webkit-clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
}

@ -0,0 +1,148 @@
#COMMENT GENERER DES CARTES SWISH 3*4#
##Sommaire##
- Introduction
- Les Cartes Possibles
- Les Types de Cartes
- Génération des doublons
- Conclusion
##Introduction ##
On peut croire qu'il existe un très grand nombre de possibilités de cartes à cause du nombre d'emplacements de Figures possible. 3*4 soit 12 au total.
Cependant, le jeu physique de swish utilise des cartes transparentes autirisant la rotation de celles-ci. Dès lors, plusieurs **variantes** d'une même carte sont possibles en retournant la carte de départ comme ici :
<img src="img/Parallélisme.png" alt="Markdown Monster icon"/>
Le but de cette étude est donc de savoir qu'elles sont les cartes possibles en prenant en compte toutes les variantes et comment générer le jeu physique Swish.
## Les Cartes Possibles ##
Pour éviter d'énumérer toutes les cartes au risque d'avoir des doublons. Nous devons comprendre le comportement des rotations en s'aidant d'un repère.
Dans notre cas, on sait que chaque carte possède 2 Figures :
- Une petite : un point
- Une Grande : un cercle
Pour cette étude nous allons choisir le point de chaque carte comme repère.
Un point sur une carte peut avoir plusieurs positions. Il faut donc déterminer quelles sont les positions jumelées, c'est-à-dire, les positions qu'un point peut avoir en faisant des rotations.
Nous allons nous aider du code couleur présent sur les cartes.
### Point Bleu et Rouge ###
Ces points possèdent 4 positions jumelées chacun. Comme ici :
<img src="img/ParallélismePointBleu.png" alt="Markdown Monster icon"/>
<img src="img/ParallélismePointRouge.png" alt="Markdown Monster icon"/>
### Point Vert et Violet###
Ces points possèdent 2 positions jumelées chacun. La différence entre ces points et les autres réside dans le fait qu'il existe une symétrie axiale causée par le nombre impair de colonne sur les cartes.
<img src="img/ParallélismePointVert.png" alt="Markdown Monster icon"/>
<img src="img/ParallélismePointViolet.png" alt="Markdown Monster icon"/>
----
Maintenant que nous savons les positions de point possible. Pour chaque couleur de point, (Rouge,Bleu,Vert,Violet), nous allons garder qu'une seule position d'un point (haut-droit) puis énumerer toutes les positions qu'un cercle peut prendre sur une carte afin de créer un ensemble de carte Swish.
### Point Bleu et Rouge ###
Sur une carte il existe 12 positions différentes causées par le quadrillage 3*4 d'une carte. Si l'une des positions est déjà prise par un point (Bleu ou Rouge) le cercle peut alors avoir 11 positions possibles comme ici :
<img src="img/PossibiliteesBleuRouge.png" alt="Markdown Monster icon"/>
Pour ces points il existe donc 11 possibilitées de carte chacun soit 22 cartes.
### Point Vert et Violet ###
Pour ces points il existe une symétrie axiale déjà énumérée au-dessus à cause du nombre impair de colonne sur une carte. Lorsqu'un point se situe sur la colonne centrale, une symétrie se crée entre les deux autres colonnes. Ainsi les cercles ne possèdent pas 11 positions possibles mais plus que 7 comme ici:
<img src="img/PossibiliteesVertViolet.png" alt="Markdown Monster icon"/>
Pour ces points il existe donc 7 possibilitées de carte chacun soit 14 cartes.
**Au total nous trouvons 36 cartes possibles en prenant en compte les rotations**
----
##Les Types De Carte##
Après avoir énuméré toutes les cartes possibles. Nous pouvons analyser les cartes crées et repérer des propriétés.
En effet nous pouvons déjà séparer toutes les cartes en deux familles :
### Cartes unies###
Cette famille contient uniquement les cartes possèdant un point et un cercle de même couleur.
<img src="img/CarteUniRougeBleu.png" alt="Markdown Monster icon"/>
La propriété principale d'une carte unie est que sa **complémentaire** (carte avec laquelle elle forme un assemblage de 2 cartes) est elle-même. Cette propriété va nous aider pour la génération des cartes plus tard.
### Cartes bicolores###
Cette famille contient toutes les autres cartes possibles exceptées les cartes unies. C'est-à-dire les cartes composées d'un point et d'un cercle de couleurs différentes.
À la différence des cartes unies, la complémentaire d'une carte bicolore n'est pas elle-même. Mais une carte différente composée d'un cercle et d'un point de couleur et position opposée afin de former un assemblage correct. Comme-ici :
<img src="img/DemonstrationAssemblageCarteBicolores.png" alt="Markdown Monster icon"/>
Nous savons qu'il existe 36 possibilités de cartes. 8 d'entre elles sont des cartes unies. Il reste donc 28 cartes bicolores que l'on peut rassembler en 14 paires de cartes complémentaires.
Ces 14 paires peuvent être elles aussi regrouper en fonction de leurs duos de couleurs formés par leurs figures.
Par exemple voici les familles des duos (Vert-Bleu) et (Violet-Rouge) composées de 2 paires de cartes complémentaires chacune:
<img src="img/FamilleDuosBleuVert-RougeViolet.png" alt="Markdown Monster icon"/>
**Remarque: Le fait de regrouper les cartes bicolores en famille de plus en plus précise va nous aider à comprendre le principe de génération des cartes.**
##Génération des doublons##
Un jeu de cartes Swish contient 60 cartes. Sachant qu'il n'existe que 36 possibilités de cartes. Nous savons donc que le jeu possède des doublons.
Cependant, si nous doublons toutes les cartes 36*2, nous obtenons un tas de 72 cartes. Il y a donc 12 cartes en trop. 12 cartes qui n'ont pas de doublons dans le paquet mais lesquels ?
En réalité, les 12 cartes manquantes sont en lien avec les paires complémentaires des familles de duos de couleurs vues au-dessus.
En effet, il existe un total de 6 familles de duos de couleurs :
###Bleu-Rouge###
<img src="img/FamilleDuosBleuRouge.png" alt="Markdown Monster icon"/>
###Bleu-Vert###
<img src="img/FamilleDuosBleuVert.png" alt="Markdown Monster icon"/>
###Bleu-Violet###
<img src="img/FamilleDuosBleuViolet.png" alt="Markdown Monster icon"/>
###Rouge-Vert###
<img src="img/FamilleDuosRougeVert.png" alt="Markdown Monster icon"/>
###Rouge-Violet###
<img src="img/FamilleDuosRougeViolet.png" alt="Markdown Monster icon"/>
###Violet-Vert###
<img src="img/FamilleDuosVertViolet.png" alt="Markdown Monster icon"/>
À cause de la symétrie axiale causée par le nombre impair de colonne sur les cartes, les familles de duos possèdent un nombre de cartes et donc de paires différents.
Pour générer les 60 cartes, nous devons doubler toutes les cartes unies de façon à pouvoir former les paires complémentaires. Sachant qu'il y a 8 cartes unies nous obtenons 16 cartes pour le moment.
Pour les cartes bicolores il faut s'intéresser aux familles de duos de couleurs. Pour chaque famille il existe un nombre de paires de cartes complémentaires. La logique est très simple, nous allons doubler toutes les paires sauf une.
**Par exemple** pour la famille (Bleu-Vert) nous avons 2 paires de cartes complémentaires :
<img src="img/FamilleDuosBleuVert.png" alt="Markdown Monster icon"/>
**Mais une seule est doublée pour obtenir ces cartes dans le jeu physique**
<img src="img/DoublonBleuVert.png" alt="Markdown Monster icon"/>
**REMARQUE** : **Ce processus est utilisé pour toutes les familles de duos sauf les familles (Vert-Violet) et (Bleu-Rouge) qui sont des familles particulières.**
En effet pour la famille (Vert-Violet)
**Nous allons doubler toutes les paires.**
Tandis que pour la famille (Bleu-Rouge).
**Deux paires ne vont pas être doublées.** Nous avons finalement nos 60 cartes dans le paquet en évitant de doubler un total de 12 cartes.
##CONCLUSION##
En suivant le processus nous avons réussi à enlever 12 cartes du jeu et ainsi obtenir le tas de 60 cartes que le jeu physique utilise.
**Mais pourquoi enlever 12 cartes ?**
Cela peut s'expliquer car les règles du jeu précisent que durant une partie, 16 cartes sont présentées aux joueurs. Dans des cas extrêmement rares, les 16 cartes ne peuvent être assemblées. Enlever ces 12 cartes, c'est tout simplement réduire les possibilités pour qu'un événement pareil se déroule dans une partie même si les possibilitées ne sont tout de même pas nul...

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -0,0 +1,44 @@
:root{
--taille : 10vw;
}
.carte {
background-color: #B7B7B7;
border-radius: 0.75vw;
padding-right: 0.15vw;
padding-left: 0.15vw;
padding-bottom: 0.25vw;
display: flex;
margin-right: 0.4vw;
margin-left: 0.4vw;
margin-bottom: 1vw;
width: var(--taille);
-webkit-flex-flow: row wrap;
justify-content: space-around;
}
/*1 + 3*x colonne*/
.case{
width: 3vw;
padding-left: 0.1vw;
margin-top: 0.25vw;
height: 3vw;
border-radius: 10px;
background-color: #E6E6E6;
}
.troispar4{
width: 10vw;
}
.troispar3{
width: 10vw;
}
.quatrepar3{
width: 13vw;
}
#conteneur{
height: 30vw;
width: 100%;
}

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head lang="fr">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>SwishGame - GenCarte</title>
<link rel="stylesheet" href="css/base.css">
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<label>Nb colonne :</label>
<input type="text" id="colonne">
<label>Nb lignes :</label>
<input type="text" id="ligne">
<br>
<input type="submit" name="générer" value="Générer" onclick="generer()">
<br>
<h id="verif"></h>
<div id="conteneur">
</div>
</body>
</html>

@ -0,0 +1,33 @@
function generer(){
//recupere les valeurs
//alert(document.getElementById("colonne").value);
var nbColonne = document.getElementById("colonne").value;
var nbLigne = document.getElementById("ligne").value;
//text de vérification
document.getElementById("verif").innerHTML = "Carte de dimension " + nbColonne + "x" + nbLigne + " ";
creerCarte(nbColonne, nbLigne);
}
function creerCarte(column, row){
//creer la carte
var carte = document.createElement('div');
carte.className = "carte";
carte.id = "carte";
for(var i = 0; i < column*row; i++){
var casee = document.createElement('div');
casee.className = "case";
carte.appendChild(casee);
}
document.getElementById("conteneur").appendChild(carte);
//mettre a jour la taille /!\ c'est ca le plus important
var newTaille = column * 3.2 + 1;
document.documentElement.style.setProperty('--taille', newTaille + "vw");
//afficher carte
var carteinser = document.getElementById("carte");
}

@ -0,0 +1,140 @@
:root{
--taille : 10vw;
--x: 3vw;
--y: 2.5vw;
--z: 1.5vw;
}
.carte {
background-color: #B7B7B7;
border-radius: 0.75vw;
padding-right: 0.15vw;
padding-left: 0.15vw;
padding-bottom: 0.25vw;
display: flex;
margin-right: 0.4vw;
margin-left: 0.4vw;
margin-bottom: 1vw;
width: var(--taille);
-webkit-flex-flow: row wrap;
justify-content: space-around;
}
/*1 + 3*x colonne*/
.case{
width: 3vw;
padding-left: 0.1vw;
margin-top: 0.25vw;
height: 3vw;
border-radius: 10px;
display: table-cell;
position: relative;
vertical-align: middle;
background-color: #E6E6E6;
}
.troispar4{
width: 10vw;
}
.troispar3{
width: 10vw;
}
.quatrepar3{
width: 13vw;
}
#conteneur{
height: 30vw;
width: 100%;
}
.containinte{
top:calc((var(--x) - var(--z)) / 2);
left:calc((var(--x) - var(--z)) / 2);
height: var(--z);
width: var(--z);
z-index: 2;
position: absolute;
}
.containexte{
top:calc((var(--x) - var(--y)) / 2);
left:calc((var(--x) - var(--y)) / 2);
height: var(--y);
width: var(--y);
z-index: 1;
position: absolute;
}
.formeinte{
height: 100%;
width: 100%;
}
.formeexte{
height: 100%;
width: 100%;
}
.containform3{
position: relative;
height: var(--x);
width: var(--x);
display: table-cell;
}
.cb {
background-color: #E6E6E6;
}
.cn {
background-color: black;
}
.rond{
-webkit-clip-path: circle(50% at 50% 50%);
clip-path: circle(50% at 50% 50%);
}
.carre{
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
}
.triangle{
-webkit-clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
.castriangle{
margin-top: calc( (var(--y) - var(--z)) / 5);
}
.caspenta{
margin-top: calc( (var(--y) - var(--z)) / 10);
}
.losange{
-webkit-clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}
.croix{
-webkit-clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
}
.penta{
-webkit-clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
}
.hexa{
-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}
.hocto{
-webkit-clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
}

@ -0,0 +1,115 @@
<!DOCTYPE html>
<html>
<head lang="fr">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>SwishGame - GenCarte</title>
<link rel="stylesheet" href="css/base.css">
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<br>
<h id="verif"></h>
<div id="conteneur">
<!--CAS ROND-->
<div id="carte" class="carte">
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb rond"></div>
</div>
<div class="containexte">
<div class="formeexte cn rond"></div>
</div>
</div>
</div>
<!--CAS CARRE-->
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb carre"></div>
</div>
<div class="containexte">
<div class="formeexte cn carre"></div>
</div>
</div>
</div>
<!--CAS TRIANGLE-->
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb castriangle triangle"></div>
</div>
<div class="containexte">
<div class="formeexte cn triangle"></div>
</div>
</div>
</div>
<!--CAS LOSANGE-->
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb losange"></div>
</div>
<div class="containexte">
<div class="formeexte cn losange"></div>
</div>
</div>
</div>
<!--CAS CROIX-->
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb croix"></div>
</div>
<div class="containexte">
<div class="formeexte cn croix"></div>
</div>
</div>
</div>
<!--CAS PENTA-->
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb caspenta penta"></div>
</div>
<div class="containexte">
<div class="formeexte cn penta"></div>
</div>
</div>
</div>
<!--CAS HEXA-->
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb hexa"></div>
</div>
<div class="containexte">
<div class="formeexte cn hexa"></div>
</div>
</div>
</div>
<!--CAS HOCTO-->
<div class="case">
<div class="containform3">
<div class="containinte">
<div class="formeinte cb hocto"></div>
</div>
<div class="containexte">
<div class="formeexte cn hocto"></div>
</div>
</div>
</div>
<div class="case"></div>
<div class="case"></div>
<div class="case"></div>
<div class="case"></div>
</div>
</div>
</body>
</html>

@ -0,0 +1,33 @@
function generer(){
//recupere les valeurs
//alert(document.getElementById("colonne").value);
var nbColonne = document.getElementById("colonne").value;
var nbLigne = document.getElementById("ligne").value;
//text de vérification
document.getElementById("verif").innerHTML = "Carte de dimension " + nbColonne + "x" + nbLigne + " ";
creerCarte(nbColonne, nbLigne);
}
function creerCarte(column, row){
//creer la carte
var carte = document.createElement('div');
carte.className = "carte";
carte.id = "carte";
for(var i = 0; i < column*row; i++){
var casee = document.createElement('div');
casee.className = "case";
carte.appendChild(casee);
}
document.getElementById("conteneur").appendChild(carte);
//mettre a jour la taille /!\ c'est ca le plus important
var newTaille = column * 3.2 + 1;
document.documentElement.style.setProperty('--taille', newTaille + "vw");
//afficher carte
var carteinser = document.getElementById("carte");
}

File diff suppressed because it is too large Load Diff

@ -1,79 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BranchesTreeState">
<expand>
<path>
<item name="ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="LOCAL_ROOT" type="e8cecc67:BranchNodeDescriptor" />
</path>
<path>
<item name="ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="REMOTE_ROOT" type="e8cecc67:BranchNodeDescriptor" />
</path>
<path>
<item name="ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="REMOTE_ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="GROUP_NODE:origin" type="e8cecc67:BranchNodeDescriptor" />
</path>
</expand>
<select />
</component>
<component name="ChangeListManager">
<list default="true" id="84a6c709-118a-43ab-819c-2d175d74c8bf" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ComposerSettings">
<execution />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
</component>
<component name="ProjectId" id="1oWUJCl0mYM5y6OYNDgEnTIUDL7" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="vue.rearranger.settings.migration" value="true" />
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="84a6c709-118a-43ab-819c-2d175d74c8bf" name="Default Changelist" comment="" />
<created>1613401765703</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1613401765703</updated>
<workItem from="1613401766817" duration="893000" />
<workItem from="1613495239926" duration="82000" />
<workItem from="1613495323995" duration="681000" />
<workItem from="1613499683985" duration="93000" />
<workItem from="1613499778895" duration="2337000" />
<workItem from="1613502533837" duration="4404000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
<option name="oldMeFiltersMigrated" value="true" />
</component>
</project>

@ -1,116 +0,0 @@
<link rel="stylesheet" href="css.css">
<link rel="shortcut icon" type="image/png" href="test.ico"/>
<meta charset="UTF-8">
<h1>Morpion</h1>
<p>
<form method="post">
<input type="text" name="forme" required="required" placeholder="Mettre X ou O" maxlength="1">
<input type="number" name="case" required="required" placeholder="Emplacement (1-9)" maxlength="1">
<button type="submit">Inserer</button>
</form>
</p>
<?php
require("MyDB.php");
$db = new MyDB();
$idpartie = "SZFSF";
$db->query('INSERT INTO partie(Id) VALUES("'.$idpartie.'")');
echo "<h2>Id : $idpartie</h2>" ;
$colonne="";
if(isset($_POST['case'])){
if($_POST['case']=='1'){
$colonne='un';
}
elseif ($_POST['case']=='2'){
$colonne='deux';
}
elseif ($_POST['case']=='3'){
$colonne='trois';
}
elseif ($_POST['case']=='4'){
$colonne='quatre';
}
elseif ($_POST['case']=='5'){
$colonne='cinq';
}
elseif ($_POST['case']=='6'){
$colonne='six';
}
elseif ($_POST['case']=='7'){
$colonne='sept';
}
elseif ($_POST['case']=='8'){
$colonne='huit';
}
elseif ($_POST['case']=='9'){
$colonne='neuf';
}
else{
$colonne='null';
}
}
$valeur="";
if(isset($_POST['forme'])){
$valeur=$_POST['forme'];
}
header("refresh: 2");
//$db->exec('CREATE TABLE partie(Id STRING,un STRING,deux STRING,trois STRING, quatre STRING,cinq STRING,six STRING,sept STRING,huit STRING,neuf STRING)');
if(isset($colonne)and $valeur!="" and $colonne!=''){
$aff=$db->query('SELECT "'.$colonne.'" FROM partie where Id="'.$idpartie.'" ');
$res = $aff->fetchArray();
if(strlen($res[$colonne])==1){
echo " <p> Insertion impossible une valeur est déjà à l'intérieur</p> <br>";
}
else{
$update = $db->query('UPDATE partie SET "'.$colonne.'" = "'.$valeur.'" where Id="'.$idpartie.'" ');
}
}
//$db->query('INSERT INTO partie(Id) VALUES("'.$idpartie.'")');
$afficher = $db->query('SELECT * FROM partie where Id="'.$idpartie.'" ');
while ($row = $afficher->fetchArray()) {
$un=$row['un'];
$deux=$row['deux'];
$trois=$row['trois'];
$quatre=$row['quatre'];
$cinq=$row['cinq'];
$six=$row['six'];
$sept=$row['sept'];
$huit=$row['huit'];
$neuf=$row['neuf'];
}
echo "
<table>
<tr>
<td>$un</td>
<td>$deux</td>
<td>$trois</td>
</tr>
<tr>
<td>$quatre</td>
<td>$cinq</td>
<td>$six</td>
</tr>
<tr>
<td>$sept</td>
<td>$huit</td>
<td>$neuf</td>
</tr>
</table>
";
?>

@ -1,40 +0,0 @@
body{
margin: 0; /* pour éviter les marges */
text-align: center; /* pour corriger le bug de centrage IE */
}
h1 {
font-size: 4em;
font-weight: 700;
font-family: 'Titillium Web';
text-align: center;
}
table {
margin: auto;
}
td {
width: 100px;
height: 100px;
text-align: center;
font-size: 4em;
}
td:nth-last-of-type(2) {
border-left: 2px solid black;
border-right: 2px solid black;
}
tr:nth-last-of-type(2) td{
border-top: 2px solid black;
border-bottom: 2px solid black;
}
p{
text-align: center;
color: #F43C3F
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -1,12 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="main.helloHandler.*" />
</list>
</option>
</inspection_tool>
</profile>
</component>

@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
</project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ServerPyt.iml" filepath="$PROJECT_DIR$/.idea/ServerPyt.iml" />
</modules>
</component>
</project>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

@ -1,140 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BranchesTreeState">
<expand>
<path>
<item name="ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="LOCAL_ROOT" type="e8cecc67:BranchNodeDescriptor" />
</path>
</expand>
<select />
</component>
<component name="ChangeListManager">
<list default="true" id="28254644-08db-40a1-8497-05ce7fa43f93" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
</component>
<component name="ProjectId" id="1kKwlpoG7vbAj2OMN8ReQMzKG2s" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="restartRequiresConfirmation" value="false" />
</component>
<component name="RunManager" selected="Python.server">
<configuration name="client" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="ServerPyt" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/client.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="server" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="ServerPyt" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/server.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.server" />
<item itemvalue="Python.client" />
</list>
</recent_temporary>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="28254644-08db-40a1-8497-05ce7fa43f93" name="Default Changelist" comment="" />
<created>1605462744659</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1605462744659</updated>
</task>
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="WindowStateProjectService">
<state width="1899" height="281" key="GridCell.Tab.0.bottom" timestamp="1605469519241">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="281" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1605469519241" />
<state width="1899" height="281" key="GridCell.Tab.0.center" timestamp="1605469519241">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="281" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1605469519241" />
<state width="1899" height="281" key="GridCell.Tab.0.left" timestamp="1605469519241">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="281" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1605469519241" />
<state width="1899" height="281" key="GridCell.Tab.0.right" timestamp="1605469519241">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="281" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1605469519241" />
<state width="1899" height="348" key="GridCell.Tab.1.bottom" timestamp="1605463596920">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="348" key="GridCell.Tab.1.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1605463596920" />
<state width="1899" height="348" key="GridCell.Tab.1.center" timestamp="1605463596920">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="348" key="GridCell.Tab.1.center/0.0.1920.1040@0.0.1920.1040" timestamp="1605463596920" />
<state width="1899" height="348" key="GridCell.Tab.1.left" timestamp="1605463596920">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="348" key="GridCell.Tab.1.left/0.0.1920.1040@0.0.1920.1040" timestamp="1605463596920" />
<state width="1899" height="348" key="GridCell.Tab.1.right" timestamp="1605463596920">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="348" key="GridCell.Tab.1.right/0.0.1920.1040@0.0.1920.1040" timestamp="1605463596920" />
</component>
</project>

@ -1,40 +0,0 @@
import socket
import threading
class Client:
def __init__(self):
self.create_connection()
def create_connection(self):
self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
while 1:
try:
host = input("Entrez l'adresse IP de l'Host : ")
port = int(input("Entrez le port : "))
self.s.connect((host,port))
break
except:
print("Impossible de se connecter au serveur")
self.username = input('Entrez votre pseudo : ')
self.s.send(self.username.encode())
message_handler = threading.Thread(target=self.handle_messages,args=())
message_handler.start()
input_handler = threading.Thread(target=self.input_handler,args=())
input_handler.start()
def handle_messages(self):
while 1:
print(self.s.recv(1204).decode())
print("")
def input_handler(self):
while 1:
print("Message : ",end='')
self.s.send((self.username+' - '+input()).encode())
client = Client()

@ -1,62 +0,0 @@
import socket
import threading
class Server:
def __init__(self):
self.start_server()
def start_server(self):
self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = socket.gethostbyname(socket.gethostname())
port = int(input("Entrez le port sur lequel le serveur va être : "))
self.clients = []
self.s.bind((host,port))
self.s.listen(100)
print("Ip de l'host "+str(host))
print('Marche sur le port '+str(port))
self.username_lookup = {}
while True:
c, addr = self.s.accept()
username = c.recv(1024).decode()
print('Nouvelle connection : Pseudo '+str(username))
self.broadcast('Nouvelle personne à rejoind : Pseudo '+username)
self.username_lookup[c] = username
self.clients.append(c)
threading.Thread(target=self.handle_client,args=(c,addr,)).start()
def broadcast(self,msg):
for connection in self.clients:
connection.send(msg.encode())
def handle_client(self,c,addr):
while True:
try:
msg = c.recv(1024)
except:
c.shutdown(socket.SHUT_RDWR)
self.clients.remove(c)
print(str(self.username_lookup[c])+' est parti')
self.broadcast(str(self.username_lookup[c])+' a quite')
break
if msg.decode() != '':
print(str(msg.decode()))
for connection in self.clients:
if connection != c:
connection.send(msg)
server = Server()

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="dataSourceStorageLocal">
<data-source name="mysqlitedb" uuid="c0187b2b-b8fe-4f13-a0ec-505670256d89">
<database-info product="" version="" jdbc-version="" driver-name="" driver-version="" dbms="SQLITE" exact-version="0" />
<auth-provider>no-auth</auth-provider>
<schema-mapping />
</data-source>
</component>
</project>

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="b6d72cad-e941-4c3a-b6c5-e3bcc6cd6173" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ComposerSettings">
<execution />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../.." />
</component>
<component name="ProjectId" id="1oALKuaprZel0d2LL4ieQVOpaAs" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="vue.rearranger.settings.migration" value="true" />
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="b6d72cad-e941-4c3a-b6c5-e3bcc6cd6173" name="Default Changelist" comment="" />
<created>1612724389515</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1612724389515</updated>
<workItem from="1612724391269" duration="576000" />
<workItem from="1612725088185" duration="2000" />
<workItem from="1612725454839" duration="44000" />
<workItem from="1612725511845" duration="12000" />
<workItem from="1612725585349" duration="2899000" />
<workItem from="1613499659831" duration="8000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
<option name="oldMeFiltersMigrated" value="true" />
</component>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save