javais zapper beaucoup de truc...
This commit is contained in:
parent
d934da10c1
commit
f8b2e47118
@ -1,6 +1,5 @@
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.*;
|
|
||||||
|
|
||||||
public class Maintamere {
|
public class Maintamere {
|
||||||
|
|
||||||
|
BIN
DEV3.1/BDD_java/vote.class
Normal file
BIN
DEV3.1/BDD_java/vote.class
Normal file
Binary file not shown.
55
DEV3.1/BDD_java/vote.java
Normal file
55
DEV3.1/BDD_java/vote.java
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
|
||||||
|
|
||||||
|
public class vote
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Connection cnx = DriverManager.getConnection("jdbc:mariadb://dwarves.iut-fbleau.fr/sayebabu","sayebabu", "kjrzB5S4kqKAwdT");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PreparedStatement pst = cnx.prepareStatement("SELECT PaysID FROM `Pays` WHERE Pays = '?'");
|
||||||
|
pst.setString(1, args[0]);
|
||||||
|
ResultSet rs = pst.executeQuery();
|
||||||
|
int paysID = rs.getInt(1);
|
||||||
|
pst = cnx.prepareStatement("SELECT PaysVoteID, Points FROM `Comp` WHERE PaysCompID = '?'");
|
||||||
|
pst.setInt(1, paysID);
|
||||||
|
|
||||||
|
int sumVote = 0;
|
||||||
|
while(rs.next())
|
||||||
|
{
|
||||||
|
int comp = rs.getInt(1);
|
||||||
|
int votants = rs.getInt(2);
|
||||||
|
sumVote+=votants;
|
||||||
|
|
||||||
|
PreparedStatement pst2 = cnx.prepareStatement("SELECT Pays FROM `Pays` WHERE PaysID = '?'");
|
||||||
|
pst2.setInt(1, comp);
|
||||||
|
ResultSet rs2 = pst.executeQuery();
|
||||||
|
rs2.next();
|
||||||
|
String PaysName = rs2.getString(1);
|
||||||
|
|
||||||
|
|
||||||
|
System.out.printf("%20s,%f \n",PaysName,votants);
|
||||||
|
}
|
||||||
|
System.out.printf("%20s --- \n", " ");
|
||||||
|
System.out.printf("%20s %f \n", "Total",sumVote);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
cnx.close();
|
||||||
|
System.out.printf("TA MERE");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.out.printf("TA MERE");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
88
DEV3.1/Mises en pages/boutons.java
Normal file
88
DEV3.1/Mises en pages/boutons.java
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
import java.awt.event.WindowAdapter;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
|
|
||||||
|
public class boutons
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
JFrame fenetre = new JFrame();
|
||||||
|
fenetre.setSize(1000, 1000);
|
||||||
|
fenetre.setLocation(0, 0);
|
||||||
|
fenetre.setLayout(new GridBagLayout());
|
||||||
|
|
||||||
|
GridBagConstraints gbc = new GridBagConstraints();
|
||||||
|
|
||||||
|
JButton b1 = new JButton("1");
|
||||||
|
gbc.gridx = 0; // la plage de cellules commence à la première colonne
|
||||||
|
gbc.gridy = 0; // la plage de cellules commence à la première ligne
|
||||||
|
gbc.gridwidth = 2; // la plage de cellules englobe deux colonnes
|
||||||
|
gbc.gridheight = 1; // la plage de cellules englobe une seule ligne
|
||||||
|
gbc.fill = GridBagConstraints.BOTH; // occupe tout l'espace de la plage
|
||||||
|
gbc.anchor = GridBagConstraints.CENTER; // se place au centre de la plage
|
||||||
|
gbc.weightx = 1.0; // souhaite plus de largeur si possible
|
||||||
|
gbc.weighty = 1.0; // n'a pas besoin de hauteur supplémentaire
|
||||||
|
fenetre.add(b1, gbc);
|
||||||
|
|
||||||
|
JButton b2 = new JButton("2");
|
||||||
|
gbc.gridx = 2; // la plage de cellules commence à la troisième colonne
|
||||||
|
gbc.gridy = 0; // la plage de cellules commence à la première ligne
|
||||||
|
gbc.gridwidth = 1; // la plage de cellules englobe une seule colonnes
|
||||||
|
gbc.gridheight = 2; // la plage de cellules englobe deux ligne
|
||||||
|
gbc.fill = GridBagConstraints.BOTH; // occupe tout l'espace de la plage
|
||||||
|
gbc.anchor = GridBagConstraints.CENTER; // se place au centre de la plage
|
||||||
|
gbc.weightx = 1.0; // n'a pas besoin de largeur supplémentaire
|
||||||
|
gbc.weighty = 1.0; // souhaite plus de heuteur si possible
|
||||||
|
fenetre.add(b2, gbc);
|
||||||
|
|
||||||
|
JButton b3 = new JButton("3");
|
||||||
|
gbc.gridx = 1; // la plage de cellules commence à la deuxième colonne
|
||||||
|
gbc.gridy = 2; // la plage de cellules commence à la troisième ligne
|
||||||
|
gbc.gridwidth = 2; // la plage de cellules englobe deux colonnes
|
||||||
|
gbc.gridheight = 1; // la plage de cellules englobe une seule ligne
|
||||||
|
gbc.fill = GridBagConstraints.BOTH; // occupe tout l'espace de la plage
|
||||||
|
gbc.anchor = GridBagConstraints.CENTER; // se place au centre de la plage
|
||||||
|
gbc.weightx = 1.0; // souhaite plus de largeur si possible
|
||||||
|
gbc.weighty = 1.0; // n'a pas besoin de hauteur supplémentaire
|
||||||
|
fenetre.add(b3, gbc);
|
||||||
|
|
||||||
|
JButton b4 = new JButton("4");
|
||||||
|
gbc.gridx = 0; // la plage de cellules commence à la première colonne
|
||||||
|
gbc.gridy = 1; // la plage de cellules commence à la deuxième ligne
|
||||||
|
gbc.gridwidth = 1; // la plage de cellules englobe une seule colonnes
|
||||||
|
gbc.gridheight = 2; // la plage de cellules englobe deux ligne
|
||||||
|
gbc.fill = GridBagConstraints.BOTH; // occupe tout l'espace de la plage
|
||||||
|
gbc.anchor = GridBagConstraints.CENTER; // se place au centre de la plage
|
||||||
|
gbc.weightx = 1.0; // n'a pas besoin de largeur supplémentaire
|
||||||
|
gbc.weighty = 1.0; // souhaite plus de heuteur si possible
|
||||||
|
fenetre.add(b4, gbc);
|
||||||
|
|
||||||
|
JButton b5 = new JButton("5");
|
||||||
|
gbc.gridx = 1; // la plage de cellules commence à la deuxième colonne
|
||||||
|
gbc.gridy = 1; // la plage de cellules commence à la deuxième ligne
|
||||||
|
gbc.gridwidth = 1; // la plage de cellules englobe une seule colonnes
|
||||||
|
gbc.gridheight = 1; // la plage de cellules englobe une seule ligne
|
||||||
|
gbc.fill = GridBagConstraints.BOTH; // occupe tout l'espace de la plage
|
||||||
|
gbc.anchor = GridBagConstraints.CENTER; // se place au centre de la plage
|
||||||
|
gbc.weightx = 1.0; // n'a pas besoin de largeur supplémentaire
|
||||||
|
gbc.weighty = 1.0; // n'a pas besoin de heuteur supplémentaire
|
||||||
|
fenetre.add(b5, gbc);
|
||||||
|
|
||||||
|
fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
||||||
|
fenetre.addWindowListener(new WindowAdapter() {
|
||||||
|
@Override
|
||||||
|
public void windowClosing(WindowEvent we)
|
||||||
|
{
|
||||||
|
if(JOptionPane.showConfirmDialog(null,"Etes-vous sur ?", null, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
|
||||||
|
{
|
||||||
|
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
fenetre.setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
BIN
DEV3.1/Transitions/0495Snivy.png
Normal file
BIN
DEV3.1/Transitions/0495Snivy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 KiB |
BIN
DEV3.1/Transitions/0498Tepig.png
Normal file
BIN
DEV3.1/Transitions/0498Tepig.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 127 KiB |
BIN
DEV3.1/Transitions/0501Oshawott.png
Normal file
BIN
DEV3.1/Transitions/0501Oshawott.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 128 KiB |
89
DEV3.1/Transitions/fenetre.java
Normal file
89
DEV3.1/Transitions/fenetre.java
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
import java.awt.CardLayout;
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseListener;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class fenetre extends JFrame implements MouseListener{
|
||||||
|
|
||||||
|
int imgN = 0;
|
||||||
|
String[] imgs = {"DEV3.1/Transitions/0495Snivy.png","DEV3.1/Transitions/0498Tepig.png","DEV3.1/Transitions/0501Oshawott.png"};
|
||||||
|
|
||||||
|
public fenetre()
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
this.setSize(1000, 1000);
|
||||||
|
this.setLocation(0, 0);
|
||||||
|
this.add(new JLabel(new ImageIcon(this.imgs[this.imgN])),BorderLayout.CENTER);
|
||||||
|
addMouseListener(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void next()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void previous()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void nextOld()
|
||||||
|
{
|
||||||
|
if (this.imgN+1>=imgs.length)
|
||||||
|
{
|
||||||
|
this.imgN = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.imgN++;
|
||||||
|
}
|
||||||
|
this.getContentPane().removeAll();
|
||||||
|
this.add(new JLabel(new ImageIcon(this.imgs[this.imgN])),BorderLayout.CENTER);
|
||||||
|
this.repaint();
|
||||||
|
this.revalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void previousOld()
|
||||||
|
{
|
||||||
|
if (this.imgN-1<0)
|
||||||
|
{
|
||||||
|
this.imgN = imgs.length-1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.imgN--;
|
||||||
|
}
|
||||||
|
this.getContentPane().removeAll();
|
||||||
|
this.add(new JLabel(new ImageIcon(this.imgs[this.imgN])),BorderLayout.CENTER);
|
||||||
|
this.repaint();
|
||||||
|
this.revalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e)
|
||||||
|
{
|
||||||
|
if (e.getX()<this.getWidth()/2)
|
||||||
|
{
|
||||||
|
this.previousOld();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.nextOld();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(MouseEvent e) {}
|
||||||
|
}
|
6
DEV3.1/Transitions/galerie.java
Normal file
6
DEV3.1/Transitions/galerie.java
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
public class galerie {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
fenetre boum = new fenetre();
|
||||||
|
boum.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
652
WEBBE/cinema/sql/cinema.sql
Normal file
652
WEBBE/cinema/sql/cinema.sql
Normal file
File diff suppressed because one or more lines are too long
18
WEBBE/cinema/src/css/style.css
Normal file
18
WEBBE/cinema/src/css/style.css
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
table{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width:500px;
|
||||||
|
}
|
||||||
|
td + td + td + td{
|
||||||
|
width : 20%;
|
||||||
|
}
|
||||||
|
td:first-child + td{
|
||||||
|
width:10%;
|
||||||
|
}
|
||||||
|
td:first-child{
|
||||||
|
width:30%;
|
||||||
|
}
|
||||||
|
td:first-child + td + td {
|
||||||
|
width:30%;
|
||||||
|
}
|
14
WEBBE/cinema/src/films.php
Normal file
14
WEBBE/cinema/src/films.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
include './modeles/modeleFilms.php';
|
||||||
|
|
||||||
|
$films = getFilms();
|
||||||
|
|
||||||
|
//
|
||||||
|
// on "charge" la vue
|
||||||
|
//
|
||||||
|
|
||||||
|
include './vues/header.php';
|
||||||
|
include './vues/vueFilms.php';
|
||||||
|
include './vues/footer.php';
|
||||||
|
?>
|
||||||
|
|
16
WEBBE/cinema/src/modeles/modeleFilms.php
Normal file
16
WEBBE/cinema/src/modeles/modeleFilms.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
function _getConnection()
|
||||||
|
{
|
||||||
|
static $_conn = NULL;
|
||||||
|
if ($_conn === NULL){
|
||||||
|
$_conn = mysqli_connect("localhost","","","");
|
||||||
|
}
|
||||||
|
return $_conn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getFilms()
|
||||||
|
{
|
||||||
|
// A completer
|
||||||
|
}
|
||||||
|
?>
|
3
WEBBE/cinema/src/vues/footer.php
Normal file
3
WEBBE/cinema/src/vues/footer.php
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
13
WEBBE/cinema/src/vues/header.php
Normal file
13
WEBBE/cinema/src/vues/header.php
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>Films</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css">
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="container">
|
||||||
|
|
||||||
|
|
31
WEBBE/cinema/src/vues/vueFilms.php
Normal file
31
WEBBE/cinema/src/vues/vueFilms.php
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<!-- Variables de la vue
|
||||||
|
$films : les films de la page
|
||||||
|
-->
|
||||||
|
|
||||||
|
<h2>Films</h2>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Titre</th>
|
||||||
|
<th>Année</th>
|
||||||
|
<th>Genre</th>
|
||||||
|
<th>Réalisateur</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
foreach($films as $film){
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td><a href='#'>{$film['titre']}</a></td>
|
||||||
|
<td>{$film['annee']}</td>
|
||||||
|
<td>{$film['genre']}</td>
|
||||||
|
<td>{$film['prenom']} {$film['nom']}</td>
|
||||||
|
</tr>";
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
73
WEBBE/tp4/README.md
Normal file
73
WEBBE/tp4/README.md
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
|
||||||
|
# TP4 : Cookies et sessions en PHP.
|
||||||
|
|
||||||
|
### Ex1.
|
||||||
|
Complétez le script `index.php` de l'exercice 1 de manière à
|
||||||
|
mémoriser grâce à un cookie son os préféré (parmi Linux, Windows et
|
||||||
|
MacOS). Le cookie est valable pendant une minute, et l'os par
|
||||||
|
défaut est Linux.
|
||||||
|
|
||||||
|
![](./img/cookie.png)
|
||||||
|
### Ex2.
|
||||||
|
Le but est de créer un min-jeu de morpion.
|
||||||
|
|
||||||
|
![](./img/ttt.png)
|
||||||
|
|
||||||
|
Les variables de session :
|
||||||
|
- `grid` : le plateau du jeu. tableau de 9 cases, prennant les valeurs 0 (libre), 1 (joueur 1), 2 (joueur 2).
|
||||||
|
- `playerTurn` : le joueur qui joue.
|
||||||
|
|
||||||
|
Le script prend en paramètre la variable `pos` : la position du coup joué par le joueur.
|
||||||
|
### Ex3.
|
||||||
|
On désire rendre les pages du [tp3](./../tp3) (cinema) accessibles
|
||||||
|
uniquement à des utilisateur **inscrits au préalable**.
|
||||||
|
|
||||||
|
1. Rajouter à la base une table `user` qui comprend un **login**,
|
||||||
|
**email** et un **password**. (login est la clé)
|
||||||
|
2. Ecrire un formulaire d'inscription au site qui comprend les
|
||||||
|
champs correspondants. Vous enregistrerez dans la base la mot de
|
||||||
|
passe hashé avec la fonction
|
||||||
|
[password\_hash](http://php.net/manual/fr/function.password-hash.php)
|
||||||
|
de php.
|
||||||
|
3. Faire en sorte que toutes les pages de l'application soient
|
||||||
|
accessibles **uniquement** si l'utilisateur s'est authentifié.
|
||||||
|
(utiliser une session)
|
||||||
|
|
||||||
|
Ecrire les scripts ou pages suivants
|
||||||
|
<dl>
|
||||||
|
<dt><code>inscription.php</code></dt>
|
||||||
|
<dd>formulaire d'inscription, et qui traite les données du formulaire.
|
||||||
|
Si le formulaire n'est pas correctement rempli, Il est réaffiché.
|
||||||
|
(les champs correctes sont conservés !)</dd>
|
||||||
|
<dt><code>authentification.html</code></dt>
|
||||||
|
<dd>formulaire d'authentification.</dd>
|
||||||
|
<dt><code>verification.php</code></dt>
|
||||||
|
<dd>traite le formulaire précédent et vérifie si l'utilisateur est
|
||||||
|
enregistré. En cas de succés, renvoie vers la page d'accueil du
|
||||||
|
site. Pour éviter des attaques force brute, ajoutez une
|
||||||
|
temporisation qui ralentira de telles attaques.</dd>
|
||||||
|
<dt><code>securite.php</code></dt>
|
||||||
|
<dd>morceau de code que vous inclurez systématiquement dans vos pages
|
||||||
|
que vous voulez rendre accessible uniquement aux utilisateurs dûment
|
||||||
|
authentifiés. Ce script vérifiera l'existence d'une variable de
|
||||||
|
session créée lors de la connexion.</dd>
|
||||||
|
</dl>
|
||||||
|
Pour permettre l'authentification d'un utilisateur, il faut que
|
||||||
|
login et le mot de passe conviennent. On compare le hash de
|
||||||
|
l'utilisateur stocké dans la base avec le hashage calculé du
|
||||||
|
password soumis lors de l'authentification :
|
||||||
|
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
// Voir l'exemple fourni sur la page de la fonction password_hash()
|
||||||
|
// pour savoir d'où cela provient.
|
||||||
|
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
|
||||||
|
|
||||||
|
if (password_verify('rasmuslerdorf', $hash)) {
|
||||||
|
echo 'Le mot de passe est valide !';
|
||||||
|
} else {
|
||||||
|
echo 'Le mot de passe est invalide.';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
|
12
WEBBE/tp4/ex1/css/style.css
Normal file
12
WEBBE/tp4/ex1/css/style.css
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
main>section {
|
||||||
|
display: flex;
|
||||||
|
align-items:center;
|
||||||
|
justify-content:space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
section > section {
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
section > section + section {
|
||||||
|
width: 50%;
|
||||||
|
}
|
49
WEBBE/tp4/ex1/index.php
Normal file
49
WEBBE/tp4/ex1/index.php
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
$OS = "linux";
|
||||||
|
// TODO
|
||||||
|
?>
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@1.*/css/pico.min.css">
|
||||||
|
<link rel="stylesheet" href="css/style.css">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="container">
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<form method="POST">
|
||||||
|
<fieldset>
|
||||||
|
<legend>Changez votre OS</legend>
|
||||||
|
<label>
|
||||||
|
<input type="radio" name="OS" value="linux">
|
||||||
|
<i class="fa fa-linux fa-2x" aria-hidden="true"></i>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="radio" name="OS" value="windows">
|
||||||
|
<i class="fa fa-windows fa-2x" aria-hidden="true"></i>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="radio" name="OS" value="apple">
|
||||||
|
<i class="fa fa-apple fa-2x" aria-hidden="true"></i>
|
||||||
|
</label>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<button type="submit">Envoyer</button>
|
||||||
|
</form>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<p>
|
||||||
|
<?php echo "<i class='fa fa-$OS fa-4x'></i>";?>
|
||||||
|
</p>
|
||||||
|
<p>Rafraîchir la page <a href=""><i class="fa fa-refresh" aria-hidden="true"></i></a></p>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
32
WEBBE/tp4/ex2/css/style.css
Normal file
32
WEBBE/tp4/ex2/css/style.css
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
table.morpion{
|
||||||
|
border-collapse: collapse;
|
||||||
|
table-layout:fixed;
|
||||||
|
margin-left:auto;
|
||||||
|
margin-right:auto;
|
||||||
|
display:inline-block;
|
||||||
|
width:auto;
|
||||||
|
}
|
||||||
|
table.morpion td {
|
||||||
|
border : 1px solid #aaaaaa;
|
||||||
|
width:10rem;
|
||||||
|
height:10rem;
|
||||||
|
padding : 0px;
|
||||||
|
margin:0px;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align:center;
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
table.morpion i {
|
||||||
|
font-size:8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.morpion a {
|
||||||
|
display : inline-block;
|
||||||
|
width : 8rem;
|
||||||
|
height: 8rem;
|
||||||
|
|
||||||
|
}
|
||||||
|
.center{
|
||||||
|
text-align:center;
|
||||||
|
}
|
66
WEBBE/tp4/ex2/include/tictactoe.php
Normal file
66
WEBBE/tp4/ex2/include/tictactoe.php
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
$message = "";
|
||||||
|
$grid = [0,1,0,1,0,2,2,0,0];
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// TODO
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
function isWinner($grid, $player)
|
||||||
|
{
|
||||||
|
$winStates = array
|
||||||
|
(
|
||||||
|
array(0, 1, 2), array(3, 4, 5), array(6, 7, 8), // Horizontal
|
||||||
|
array(0, 3, 6), array(1, 4, 7), array(2, 5, 8), // Vertical
|
||||||
|
array(0, 4, 8), array(2, 4, 6) // Diagonal
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($winStates as $winState)
|
||||||
|
{
|
||||||
|
if ($grid[$winState[0]] == $player &&
|
||||||
|
$grid[$winState[1]] == $player &&
|
||||||
|
$grid[$winState[2]] == $player)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function noWinner($grid)
|
||||||
|
{
|
||||||
|
for($i = 0; $i < 9; $i++)
|
||||||
|
if ($grid[$i] == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayGrid($grid)
|
||||||
|
{
|
||||||
|
echo '<table class="morpion">';
|
||||||
|
for ($i = 0; $i < 3; $i ++){
|
||||||
|
echo "<tr>";
|
||||||
|
for ($j = 0; $j < 3; $j ++){
|
||||||
|
|
||||||
|
echo "<td>";
|
||||||
|
|
||||||
|
$pos = 3*$i + $j;
|
||||||
|
if ($grid[$pos] == 0)
|
||||||
|
echo "<a href='?pos=$pos'></a>";
|
||||||
|
if ($grid[$pos] == 1)
|
||||||
|
echo '<i class="fa fa-times" aria-hidden="true"></i>';
|
||||||
|
if ($grid[$pos] == 2)
|
||||||
|
echo '<i class="fa fa-circle-o" aria-hidden="true"></i>';
|
||||||
|
|
||||||
|
echo "</td>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "</table>";
|
||||||
|
}
|
26
WEBBE/tp4/ex2/index.php
Normal file
26
WEBBE/tp4/ex2/index.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
include 'include/tictactoe.php';
|
||||||
|
?>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@1.*/css/pico.min.css">
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="container center">
|
||||||
|
<h3>Tic Tac Toe : <?php echo "player $playerTurn turn";?></h3>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if ($message != ""){
|
||||||
|
echo "<h1>$message";
|
||||||
|
echo " <a href='?'>new game</a></h1>";
|
||||||
|
}
|
||||||
|
displayGrid($grid);
|
||||||
|
?>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
BIN
WEBBE/tp4/img/cookie.png
Normal file
BIN
WEBBE/tp4/img/cookie.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
WEBBE/tp4/img/ttt.png
Normal file
BIN
WEBBE/tp4/img/ttt.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
Loading…
Reference in New Issue
Block a user