nathan boileau 2 years ago
commit 3a86731f06

@ -57,8 +57,13 @@ class PartieGateway
return $partie; return $partie;
} }
public function rejoindrePartieMulti(int $idPartieInQueue,array $tabEnigme) : Partie{
$partie = PartieFactory::createPartieMulti($idPartieInQueue,$tabEnigme);
return $partie;
}
public function findPartieInQueue(){ public function findPartieInQueue(){
$query = "SELECT id $query = "SELECT p.id
FROM Partie p, Participer pa FROM Partie p, Participer pa
WHERE pa.etat=0 WHERE pa.etat=0
AND pa.partie=p.id"; AND pa.partie=p.id";

@ -74,24 +74,29 @@ class UtilisateurGateway
':email' => array($email,SQLITE3_TEXT) ':email' => array($email,SQLITE3_TEXT)
)); ));
$results=$this->con->getResults(); $results=$this->con->getResults();
$estAdmin=$results['estAdmin']; $estAdmin=$results[0]['estAdmin'];
return $estAdmin; return $estAdmin;
} }
public function addToQueue(Utilisateur $utilisateur,Partie $partie){ public function addToQueue(Utilisateur $utilisateur,Partie $partie){
$query = "INSERT INTO Participer VALUES (:idUtilisateur,:idPartie,0)"; $query = "INSERT INTO Participer VALUES (:idPartie,:idUtilisateur,0)";
$this->con->executeQuery($query,array( $this->con->executeQuery($query,array(
'idUtilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT), ':idUtilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT),
'idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER) ':idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER)
)); ));
} }
public function isAlreadyInqueue(Utilisateur $utilisateur){ public function isAlreadyInqueue(Utilisateur $utilisateur) : bool{
$query="SELECT utilisateur FROM Participer WHERE utilisateur=:utilisateur"; $query="SELECT utilisateur FROM Participer WHERE utilisateur=:utilisateur";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
'utilisateur' => array($utilisateur->getEmail()) ':utilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT)
) )
); );
$results=$this->con->getResults();
if (empty($results))
return false;
else
return true;
} }
public function queueFilled(){ public function queueFilled(){
@ -103,6 +108,12 @@ class UtilisateurGateway
return False; return False;
} }
private function launchGame(Utilisateur $utilisateur){
$query = "UPDATE Participer SET etat=1 WHERE etat=0 AND utilisateur=:utilisateur";
$this->con->executeQuery($query,array(
'utilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT)));
}
/*public function resoudreEnigmeMulti(string $emailUtilisateur) /*public function resoudreEnigmeMulti(string $emailUtilisateur)
{ {
$query="SELECT c.partie FROM Contenir $query="SELECT c.partie FROM Contenir

@ -64,30 +64,39 @@ class UserModel
} }
public function addToQueue(){ public function addToQueue(){
echo '1';
if($this->utilisateur_gateway->isAlreadyInqueue($_SESSION['utilisateur'])) if($this->utilisateur_gateway->isAlreadyInqueue($_SESSION['utilisateur']))
{ {
if ($this->utilisateur_gateway->queueFilled())
{
echo "Partie is launched";
$this->utilisateur_gateway->launchGame($_SESSION['utilisateur']);
}
return; return;
} }
echo '1'; echo '2';
if (!$this->partie_gateway->partieInQueueExists()) { if (!$this->partie_gateway->partieInQueueExists()) {
echo '2';
$tabEnigme = $this->enigme_gateway->findMultiEnigma();
echo '3'; echo '3';
$tabEnigme = $this->enigme_gateway->findMultiEnigma();
$idNewPartie = $this->partie_gateway->findPartieMaxId(); $idNewPartie = $this->partie_gateway->findPartieMaxId();
echo '4';
$partie=$this->partie_gateway->creerPartieMulti($idNewPartie,$tabEnigme); $partie=$this->partie_gateway->creerPartieMulti($idNewPartie,$tabEnigme);
} }
else{ else{
echo '4';
$idPartieInQueue = $this->partie_gateway->findPartieInQueue(); $idPartieInQueue = $this->partie_gateway->findPartieInQueue();
echo '5';
$tabEnigme = $this->enigme_gateway->findEnigmaFromPartie($idPartieInQueue); $tabEnigme = $this->enigme_gateway->findEnigmaFromPartie($idPartieInQueue);
$partie = $this->partie_gateway->creerPartieMulti($idPartieInQueue, $tabEnigme); echo '6';
$partie = $this->partie_gateway->rejoindrePartieMulti($idPartieInQueue, $tabEnigme);
echo '7';
} }
echo '6'; echo '8';
$this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'],$partie); $this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'],$partie);
echo '9';
if ($this->utilisateur_gateway->queueFilled()) if ($this->utilisateur_gateway->queueFilled())
{ {
echo "Partie is launched"; echo "Partie is launched";
/*$this->launchGame();*/ $this->utilisateur_gateway->launchGame($_SESSION['utilisateur']);
} }
} }
public function logout() public function logout()

Binary file not shown.

@ -1,12 +0,0 @@
//~ Function that test the user code
async function submit(){
var test = editor.getValue();
exec("print('Hello World !')", "code");
exec(test, "solution");
result.innerHTML = "Test en cours...";
await new Promise(r => setTimeout(r, 1500));
check();
}

@ -0,0 +1,29 @@
//~ Function that test the user code
async function submit(){
var test = editor.getValue()+`\n
import random as r
def multiVerif(a,b):
return a*b
def multiTest(x):
multiplication(1,1)
for i in range(x):
a=r.randint(0,100)
b=r.randint(0,100)
if(multiplication(a,b) != multiVerif(a,b)):
return False
return True
print(multiTest(5))
`;
exec("print('True')", "code");
exec(test, "solution");
result.innerHTML = "Test en cours...";
await new Promise(r => setTimeout(r, 1500));
check();
}

@ -17,6 +17,7 @@ def hanoiVerif(nb_disks,start, middle, end):
return l return l
def testhanoi(x): def testhanoi(x):
hanoi(1,"A","B","C")
if(hanoi(3,"A","B","C")!=[['A','C'],['A','B'],['C','B'],['A','C'],['B','A'],['B','C'],['A','C']]): if(hanoi(3,"A","B","C")!=[['A','C'],['A','B'],['C','B'],['A','C'],['B','A'],['B','C'],['A','C']]):
return False return False
for i in range(x): for i in range(x):

@ -0,0 +1,35 @@
//~ Function that test the user code
async function submit(){
var test = editor.getValue()+`\n
import random as r
def triVerif(a,b):
s = ""
i = 0
while len(s)<len(a+b):
if(len(a)>i):
s += a[i]
if(len(b)>i):
s += b[i]
i += 1
return s
def triTest(x):
tri(a,b)
a = "Hlowrd"
b = "el ol"
if(triVerif(a,b)!=tri(a,b)):
return False
return True
print(triTest(5))
`;
exec("print('True')", "code");
exec(test, "solution");
result.innerHTML = "Test en cours...";
await new Promise(r => setTimeout(r, 1500));
check();
}

@ -18,6 +18,7 @@ def estTriangleDePascal(n):
return triangle return triangle
def testTriangleDePascal(n): def testTriangleDePascal(n):
TriangleDePascal(0)
listTest=[0,1] listTest=[0,1]
for i in range(0,n): for i in range(0,n):
listTest.append(r.randint(5,140)) listTest.append(r.randint(5,140))

@ -1,10 +0,0 @@
async function submit(){
var test = editor.getValue();
exec("print([1,'Oui'])", "code");
exec(test, "solution");
result.innerHTML = "Test en cours...";
await new Promise(r => setTimeout(r, 1500));
check();
}

@ -3,6 +3,7 @@
async function submit(){ async function submit(){
var test = editor.getValue()+`\n var test = editor.getValue()+`\n
import random as r import random as r
def DecryptVerif(text, key): def DecryptVerif(text, key):
result = "" result = ""
for i in range(len(text)): for i in range(len(text)):
@ -16,6 +17,7 @@ def DecryptVerif(text, key):
return result return result
def testDecrypte(x): def testDecrypte(x):
Decrypt("",1)
if(Decrypt("Jgnnq yqtnf",2)!="Hello world"): if(Decrypt("Jgnnq yqtnf",2)!="Hello world"):
return False return False
if(Decrypt("Blarycnm",9)!="Scripted"): if(Decrypt("Blarycnm",9)!="Scripted"):

@ -3,6 +3,7 @@
async function submit(){ async function submit(){
var test = editor.getValue()+`\n var test = editor.getValue()+`\n
import random as r import random as r
def EncryptVerif(text, key): def EncryptVerif(text, key):
result = "" result = ""
for i in range(len(text)): for i in range(len(text)):
@ -16,6 +17,7 @@ def EncryptVerif(text, key):
return result return result
def testEncrypte(x): def testEncrypte(x):
Encrypt("",1)
if(Encrypt("Hello world",2)!="Jgnnq yqtnf"): if(Encrypt("Hello world",2)!="Jgnnq yqtnf"):
return False return False
if(Encrypt("Scripted",9)!="Blarycnm"): if(Encrypt("Scripted",9)!="Blarycnm"):

@ -13,6 +13,7 @@ def chouetteVerif(valeur):
return res return res
def test_chouette(n): def test_chouette(n):
chouette(1)
listTest=[] listTest=[]
for i in range(0,n): for i in range(0,n):
listTest.append(r.randint(3,18)) listTest.append(r.randint(3,18))

@ -30,6 +30,7 @@ def binaire2unitaireVerif(x):
def testChuckNorris(x): def testChuckNorris(x):
l="0000000" l="0000000"
binaire2unitaire(l)
if(binaire2unitaire(l)!="00 0000000"): if(binaire2unitaire(l)!="00 0000000"):
return False return False
l="1111111" l="1111111"

@ -28,12 +28,18 @@
<div class="nav-item nav-link"> <div class="nav-item nav-link">
<a class="navbar-brand" href="index.php?action=goToHome">Home</a> <a class="navbar-brand" href="index.php?action=goToHome">Home</a>
</div> </div>
<div class="mx-auto"> <div class="mx-auto d-flex">
<h5 <h5
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #fff; font-weight: bold; font-size: 22px" style="color: #fff; font-weight: bold; font-size: 22px"
> >
Northgan Test de qualification
</h5>
<h5
class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px"
>
1/12
</h5> </h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">

@ -28,13 +28,19 @@
<div class="nav-item nav-link"> <div class="nav-item nav-link">
<a class="navbar-brand" href="index.php?action=goToHome">Home</a> <a class="navbar-brand" href="index.php?action=goToHome">Home</a>
</div> </div>
<div class="mx-auto"> <div class="mx-auto d-flex">
<h5 <h5
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #fff; font-weight: bold; font-size: 22px" style="color: #fff; font-weight: bold; font-size: 22px"
> >
Northgan Test de qualification
</h5> </h5>
<h5
class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px"
>
2/12
</h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToEnigme">Next</a> <a class="navbar-brand" href="index.php?action=goToEnigme">Next</a>

@ -1,4 +1,4 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
@ -28,13 +28,19 @@
<div class="nav-item nav-link"> <div class="nav-item nav-link">
<a class="navbar-brand" href="index.php?action=goToHome">Home</a> <a class="navbar-brand" href="index.php?action=goToHome">Home</a>
</div> </div>
<div class="mx-auto"> <div class="mx-auto d-flex">
<h5 <h5
class="m-1 text-uppercase" class="m-1 text-uppercase"
style="color: #fff; font-weight: bold; font-size: 22px" style="color: #fff; font-weight: bold; font-size: 22px"
> >
Northgan Test de qualification
</h5> </h5>
<h5
class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px"
>
3/12
</h5>
</div> </div>
<div class="nav-link"> <div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToEnigme">Next</a> <a class="navbar-brand" href="index.php?action=goToEnigme">Next</a>
@ -60,26 +66,27 @@
<div class="col-10"> <div class="col-10">
<section <section
style="background-color: #222831; min-height: 0" style="background-color: #222831; min-height: 0"
class="p-3 rounded m-0"> class="p-3 rounded m-0"
>
<p>
Passons désormais à la suite de notre test de qualification. Je vais te présenter les <b style="color:violet">listes</b>.
</p>
<p> <p>
Je vais maintenant ta parler des <b style="color: violet">fonctions</b>. Une fonction est un bloc de code qui peut être appelé plusieurs fois. Elle peut prendre des paramètres et retourner une valeur. Une liste est une structure de données qui permet de stocker plusieurs valeur. En python, on peut créer une liste en utilisant les crochets <b style="color:violet">[ ]</b>.
</p> </p>
<!-- <code style="font-size: 18px">x = 1</code> -->
<br /><br />
<p> <p>
En pyhton pour déclarer une fonction on utilise le mot clé <b style="color: violet">def</b> Voici un exemple :
suivi du nom de la fonction et des paramètres entre parenthèses.
Voic un exemple de fonction qui affiche un message :
</p> </p>
<code style="font-size: 18px"> <code style="font-size: 18px">
def say_somethings(message):<br /> ma_liste = [1, 2,"Hello","World", 3.14]
&nbsp;&nbsp;&nbsp;print(message)
</code> </code>
<br /><br /> <br></br>
<p> <p>
Pour appeler une fonction on utilise son nom suivi des paramètres entre parenthèses. Ici on crée une liste composé de plusieurs éléments. On peut accéder à un élément de la liste en utilisant son <b style="color:violet">indice</b>. L'indice d'un élément correspond à sa position dans la liste. On commence à compter à partir de 0.
Voici un exemple d'appel de la fonction précédente :
</p> </p>
<code style="font-size: 18px">
</code>
</section> </section>
</div> </div>
<div class="col-2 align-self-center"> <div class="col-2 align-self-center">
@ -99,8 +106,7 @@
<div class="row mt-5"> <div class="row mt-5">
<!-- Editor --> <!-- Editor -->
<div class="col-8"> <div class="col-8">
<div class="ace rounded ace-1" id="editor" style="min-height: 40vh">x = 1 <div class="ace rounded ace-1" id="editor" style="min-height: 40vh">x = 1</div>
print(x)</div>
</div> </div>
<!-- End Editor --> <!-- End Editor -->
@ -145,4 +151,4 @@ print(x)</div>
></script> ></script>
<script src="../../JS/base.js"></script> <script src="../../JS/base.js"></script>
</body> </body>
</html> </html>

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>First Test</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
crossorigin="anonymous"
/>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link rel="stylesheet" href="../../CSS/FirstTest.css" />
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark pb-5">
<div class="container-fluid mx-0">
<div class="nav-item nav-link">
<a class="navbar-brand" href="index.php?action=goToHome">Home</a>
</div>
<div class="mx-auto d-flex">
<h5
class="m-1 text-uppercase"
style="color: #fff; font-weight: bold; font-size: 22px"
>
Test de qualification
</h5>
<h5
class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px"
>
4/12
</h5>
</div>
<div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToEnigme">Next</a>
</div>
</div>
</nav>
<div class="container">
<!-- First Test -->
<div
class="row rounded p-3 m-3"
style="
background: #16222a; /* fallback for old browsers */
background: -webkit-linear-gradient(
to right,
#3a6073,
#16222a
); /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to right, #3a6073, #16222a);
"
>
<div class="row">
<div class="col-10">
<section
style="background-color: #222831; min-height: 0"
class="p-3 rounded m-0">
<p>
Je vais maintenant ta parler des <b style="color: violet">fonctions</b>. Une fonction est un bloc de code qui peut être appelé plusieurs fois. Elle peut prendre des paramètres et retourner une valeur.
</p>
<p>
En pyhton pour déclarer une fonction on utilise le mot clé <b style="color: violet">def</b>
suivi du nom de la fonction et des paramètres entre parenthèses.
Voic un exemple de fonction qui affiche un message :
</p>
<code style="font-size: 18px">
def say_somethings(message1, message2):<br />
&nbsp;&nbsp;&nbsp;print(message1)<br />
&nbsp;&nbsp;&nbsp;print(message2)
</code>
<br/><br/>
<p>
Pour appeler une fonction on utilise son nom suivi des paramètres entre parenthèses.
Voici un exemple d'appel de la fonction précédente :
</p>
<code style="font-size: 18px">
say_somethings("Hello", "World")
</code>
</section>
</div>
<div class="col-2 align-self-center">
<img
src="../../../assets/img/Foxy.png"
alt="Logo"
class="img-fluid rounded-circle"
style="
border: 2px solid #44fff6;
background-image: url('../../../assets/img/BackgroundMain.jpg');
background-size: cover;
background-position: center;
"
/>
</div>
</div>
<div class="row mt-5">
<!-- Editor -->
<div class="col-8">
<div class="ace rounded ace-1" id="editor" style="min-height: 40vh">def say_somethings(message1, message2):
print(message1)
print(message2)
say_somethings("Hello", "World")</div>
</div>
<!-- End Editor -->
<!-- Console -->
<div class="col-4" style="min-height: 40vh">
<textarea
id="console"
readonly
style="width: 100%; height: 60%"
class="p-3 rounded"
></textarea>
<!-- End Return Code -->
<!-- Buttons -->
<div
class="row pt-5 text-center"
style="cursor: pointer; height: 20%"
>
<div class="col">
<a onclick="run_init()" class="btn">
<span>Run</span>
</a>
</div>
</div>
<!-- End Buttons -->
</div>
<!-- End Console -->
</div>
</div>
<!-- End First Test -->
</div>
<script
src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="../../JS/base.js"></script>
</body>
</html>

@ -0,0 +1,149 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>First Test</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
crossorigin="anonymous"
/>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link rel="stylesheet" href="../../CSS/FirstTest.css" />
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark pb-5">
<div class="container-fluid mx-0">
<div class="nav-item nav-link">
<a class="navbar-brand" href="index.php?action=goToHome">Home</a>
</div>
<div class="mx-auto d-flex">
<h5
class="m-1 text-uppercase"
style="color: #fff; font-weight: bold; font-size: 22px"
>
Test de qualification
</h5>
<h5
class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px"
>
5/12
</h5>
</div>
<div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToEnigme">Next</a>
</div>
</div>
</nav>
<div class="container">
<!-- First Test -->
<div
class="row rounded p-3 m-3"
style="
background: #16222a; /* fallback for old browsers */
background: -webkit-linear-gradient(
to right,
#3a6073,
#16222a
); /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to right, #3a6073, #16222a);
"
>
<div class="row">
<div class="col-10">
<section
style="background-color: #222831; min-height: 0"
class="p-3 rounded m-0">
<p>
Je vais désormais te présenter l'instruction <b style="color: violet;">return</b>.
Un return est une instruction qui permet de renvoyer une valeur.
</p>
<p>
Par exemple, la fonction suivante renvoie la somme de deux nombres :
</p>
<code style="font-size: 18px">
def addition(a, b):<br />
&nbsp;&nbsp;&nbsp;&nbsp;return a + b
</code>
</section>
</div>
<div class="col-2 align-self-center">
<img
src="../../../assets/img/Foxy.png"
alt="Logo"
class="img-fluid rounded-circle"
style="
border: 2px solid #44fff6;
background-image: url('../../../assets/img/BackgroundMain.jpg');
background-size: cover;
background-position: center;
"
/>
</div>
</div>
<div class="row mt-5">
<!-- Editor -->
<div class="col-8">
<div class="ace rounded ace-1" id="editor" style="min-height: 40vh">def addition(a,b) :
return a+b
somme=addition(6,4)
print(somme)</div>
</div>
<!-- End Editor -->
<!-- Console -->
<div class="col-4" style="min-height: 40vh">
<textarea
id="console"
readonly
style="width: 100%; height: 60%"
class="p-3 rounded"
></textarea>
<!-- End Return Code -->
<!-- Buttons -->
<div
class="row pt-5 text-center"
style="cursor: pointer; height: 20%"
>
<div class="col">
<a onclick="run_init()" class="btn">
<span>Run</span>
</a>
</div>
</div>
<!-- End Buttons -->
</div>
<!-- End Console -->
</div>
</div>
<!-- End First Test -->
</div>
<script
src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="../../JS/base.js"></script>
</body>
</html>

@ -0,0 +1,197 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>First Test</title>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"
crossorigin="anonymous"
/>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"
></script>
<link rel="stylesheet" href="../../CSS/FirstTest.css" />
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark pb-5">
<div class="container-fluid mx-0">
<div class="nav-item nav-link">
<a class="navbar-brand" href="index.php?action=goToHome">Home</a>
</div>
<div class="mx-auto d-flex">
<h5
class="m-1 text-uppercase"
style="color: #fff; font-weight: bold; font-size: 22px"
>
Test de qualification
</h5>
<h5
class="m-1 text-uppercase"
style="color: #44fff6; font-weight: bold; font-size: 22px"
>
6/12
</h5>
</div>
<div class="nav-link">
<a class="navbar-brand" href="index.php?action=goToEnigme">Next</a>
</div>
</div>
</nav>
<div class="container">
<!-- First Test -->
<div
class="row rounded p-3 m-3"
style="
background: #16222a; /* fallback for old browsers */
background: -webkit-linear-gradient(
to right,
#3a6073,
#16222a
); /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to right, #3a6073, #16222a);
"
>
<div class="row">
<div class="col-10">
<section
style="background-color: #222831; min-height: 0"
class="p-3 rounded m-0">
<p>
J'èspère que tu es prêt pour ton premier test !
Écrit une function <b style="color: violet;">multiplicaton</b>.
qui returne la multiplication de deux nombres.
</p>
<p>
Comme d'habitue, tu peux tester ton code en cliquant sur le bouton <b style="color: red;">Run</b>.
Si tu es sur que ton code est bon, clique sur le bouton <b style="color: green;">Submit</b>
pour valider ton test.
</p>
</section>
</div>
<div class="col-2 align-self-center">
<img
src="../../../assets/img/Foxy.png"
alt="Logo"
class="img-fluid rounded-circle"
style="
border: 2px solid #44fff6;
background-image: url('../../../assets/img/BackgroundMain.jpg');
background-size: cover;
background-position: center;
"
/>
</div>
</div>
<div class="row mt-5">
<!-- Editor -->
<div class="col-8">
<div class="ace rounded ace-1" id="editor" style="min-height: 40vh">def multiplication(a,b) :
</div>
</div>
<!-- End Editor -->
<!-- Console -->
<div class="col-4" style="min-height: 40vh">
<textarea
id="console"
readonly
style="width: 100%; height: 60%"
class="p-3 rounded"
></textarea>
<!-- End Return Code -->
<!-- Buttons -->
<div
class="row pt-5 text-center"
style="cursor: pointer; height: 20%"
>
<div class="col-6">
<a onclick="run_init()" class="btn">
<span>Run</span>
</a>
</div>
<div class="col-6">
<button
onclick="submit()"
class="btn"
data-toggle="modal"
data-target="#modal"
>
<span>Submit</span>
</button>
</div>
</div>
<!-- End Buttons -->
</div>
<!-- End Console -->
</div>
</div>
<!-- End First Test -->
</div>
<!-- Modal -->
<div
class="modal fade"
id="modal"
tabindex="-1"
role="dialog"
aria-labelledby="exampleModalCenterTitle"
aria-hidden="true"
>
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h2
class="modal-title"
id="exampleModalLongTitle"
style="color: black"
>
Results
</h2>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<h5 id="result" style="color: black"></h5>
</div>
<div class="modal-footer">
<a href="#" class="btn" style="display: none" id="next">
<span>NEXT</span>
</a>
</div>
</div>
</div>
</div>
<!-- End Modal -->
<script
src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js"
type="text/javascript"
charset="utf-8"
></script>
<script
src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
type="text/javascript"
charset="utf-8"
></script>
<script src="../../JS/base.js"></script>
<script src="../../JS/FirstFunction.js"></script>
</body>
</html>
Loading…
Cancel
Save