Début des classes

pull/51/head
Thomas Chazot 1 year ago
parent 3b9d8f7d4d
commit 1943236395

@ -1,11 +1,24 @@
import React from 'react'; import React from 'react';
import './Home.css'; import './Home.css'; // Créez un fichier CSS pour styliser votre composant
import '../App.css'; import '../App.css';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { FormattedMessage } from 'react-intl'; import Person from '../source/Person';
import Color from '../source/Color';
import Sport from '../source/Sport';
import PersonNetwork from '../source/PersonsNetwork';
import AgeIndice from '../source/Indices/AgeIndice';
function Home() { function Home() {
let person = new Person(1, "test", 12, Color.NOIR, [Sport.CURLING], []);
let network = new PersonNetwork([person, person])
let indice = new AgeIndice(1, 10, 20)
return ( return (
<div className="home-container"> <div className="home-container">
@ -13,23 +26,23 @@ function Home() {
<div className="left-section"> <div className="left-section">
<div> <div>
<h2><FormattedMessage id="home.histoire.title"/></h2> <h2>L'HISTOIRE</h2>
<p> <p>
<FormattedMessage id="home.histoire" /> "La cryptozoologie étudie les traces des monstres de légende : les cryptides. Yétis, Chupacabra, bête du gévaudan, Dahut, ect., sont des sujets très sérieux pour vous… Croisez les indices et soyez le premier à les découvrir!"
</p> </p>
</div> </div>
<div> <div>
<h2><FormattedMessage id="home.jeu.title"/></h2> <h2>LE JEU</h2>
<p> <p>
<FormattedMessage id="home.jeu" /> "Chaque joueur possède un indice sur le terrain où se trouve la créature. En recoupant vos informations, il ne peut y avoir qu'une case qui y corresponde. Mais le but est d'être le premier à la trouver. Interrogez vos collègues, et néanmoins concurrents. Ils ne peuvent vous répondre que par «non» ou «peut-être», avec beaucoup de logique et un brin d'audace, vous pourrez rentrer dans la légende!"
</p> </p>
</div> </div>
<div> <div>
<h2><FormattedMessage id="home.plus.title"/></h2> <h2>LES +</h2>
<ul> <ul>
<li><FormattedMessage id="home.plus.1"/></li> <li>Une mécanique de déduction époustouflante.</li>
<li><FormattedMessage id="home.plus.2"/></li> <li>Une rejouabilité immense.</li>
<li><FormattedMessage id="home.plus.3"/></li> <li>Un thème surprenant et fort.</li>
</ul> </ul>
</div> </div>
</div> </div>
@ -37,15 +50,15 @@ function Home() {
<div className="vertical-divider"></div> <div className="vertical-divider"></div>
<div className="right-section"> <div className="right-section">
<h3><FormattedMessage id="game.time"/></h3> <h3>Temps :45 minutes</h3>
<h3><FormattedMessage id="game.players"/></h3> <h3>Joueurs :3 à 5 joueurs</h3>
<h3><FormattedMessage id="game.age"/></h3> <h3>Age :10 ans et +</h3>
<p>-------------------------------</p> <p>-------------------------------</p>
<h3> <u><FormattedMessage id="game.createdBy"/></u><br/> Hal Duncan & Ruth Veevers</h3> <h3> <u>Créé par :</u><br/> Hal Duncan & Ruth Veevers</h3>
<h3> <u><FormattedMessage id="game.illustratedBy"/></u><br/> Kwanchai Moriya</h3> <h3> <u>Illustré par :</u><br/> Kwanchai Moriya</h3>
{/* <button>Jouer au jeu</button> */} {/* <button>Jouer au jeu</button> */}
<br/> <br/>
<Link to="/play" className='button'> <FormattedMessage id="play"/> </Link> <Link to="/jouer" className='button'>Aller à la page Page2</Link>
</div> </div>
</div> </div>
); );

@ -0,0 +1,11 @@
enum Color {
BLANC,
NOIR,
JAUNE,
ROUGE,
BLEU,
}
export default Color

@ -0,0 +1,16 @@
import AgeIndice from "../Indices/AgeIndice";
import Indice from "../Indices/Indice";
import IndiceTester from "../IndiceTester/IndiceTester";
import IndiceTesterAge from "../IndiceTester/IndiceTesterAge";
class IndiceTesterFactory{
static Create(indice: Indice): IndiceTester{
if (indice instanceof AgeIndice){
return new IndiceTesterAge(indice)
}
throw new Error("Method not finished.");
}
}
export default IndiceTesterFactory

@ -0,0 +1,10 @@
import Indice from "../Indices/Indice"
import Person from "../Person"
interface IndiceTester{
Works(person: Person): boolean
TestWorks(person: Person): boolean
}
export default IndiceTester

@ -0,0 +1,22 @@
import AgeIndice from "../Indices/AgeIndice";
import Person from "../Person";
import IndiceTester from "./IndiceTester";
class IndiceTesterAge implements IndiceTester{
private ageIndice: AgeIndice
constructor(ageIndice: AgeIndice){
this.ageIndice = ageIndice;
}
Works(person: Person): boolean {
return person.getAge() >= this.ageIndice.getMinimum() && person.getAge()<this.ageIndice.getMaximum()
}
TestWorks(person: Person): boolean {
return person.getAge() >= this.ageIndice.getMinimum() && person.getAge()<this.ageIndice.getMaximum()
}
}
export default IndiceTesterAge

@ -0,0 +1,28 @@
import Indice from "./Indice";
class AgeIndice extends Indice {
private maximum: number;
private minimum: number;
constructor(id: number, minimum: number, maximum: number) {
super(id);
this.minimum = minimum;
this.maximum = maximum;
}
// Implémentation de la méthode abstraite
ToString(): string {
return "La personne a entre " + this.minimum + " et " + this.maximum + " ans"
}
getMinimum(): number{
return this.minimum
}
getMaximum(): number{
return this.minimum
}
}
export default AgeIndice

@ -0,0 +1,10 @@
import Indice from "./Indice";
abstract class EdgesIndice extends Indice {
constructor(id: number) {
super(id);
}
}
export default EdgesIndice

@ -0,0 +1,21 @@
abstract class Indice {
protected id: number;
constructor(id: number) {
this.id = id;
}
// Getter and setter for id
getId(): number {
return this.id;
}
setId(id: number): void {
this.id = id;
}
// Méthode abstraite pour être implémentée par les classes dérivées
abstract ToString(): string;
}
export default Indice

@ -0,0 +1,17 @@
import EdgesIndice from "./EdgesIndice";
class NbEdgesIbndice extends EdgesIndice {
private nbNeighbors: number;
constructor(id: number, nbNeighbors: number) {
super(id);
this.nbNeighbors = nbNeighbors;
}
// Implémentation de la méthode abstraite
ToString(): string {
return "La personne a au moins " + this.nbNeighbors + " amis";
}
}
export default NbEdgesIbndice

@ -0,0 +1,83 @@
import Sport from "./Sport";
import Color from "./Color";
class Person {
private id: number;
private name: string;
private age: number;
private color: Color;
private sports: Sport[];
private friends: Person[];
constructor(id: number, name: string, age: number, color: Color, sports: Sport[], friends: Person[]) {
this.id = id;
this.name = name;
this.age = age;
this.color = color;
this.sports = sports;
this.friends = friends;
}
getId(): number {
return this.id;
}
setId(id: number): void {
this.id = id;
}
// Getter and setter for name
getName(): string {
return this.name;
}
setName(name: string): void {
this.name = name;
}
// Getter and setter for age
getAge(): number {
return this.age;
}
setAge(age: number): void {
this.age = age;
}
// Getter and setter for color
getColor(): Color {
return this.color;
}
setColor(color: Color): void {
this.color = color;
}
// Getter and setter for sports
getSports(): Sport[] {
return this.sports;
}
addSport(sport: Sport): void {
this.sports.push(sport)
}
setSports(sports: Sport[]): void {
this.sports = sports;
}
// Getter and setter for friends
getFriends(): Person[] {
return this.friends;
}
addFriend(friend: Person): void {
this.friends.push(friend);
}
setFriends(friends: Person[]): void {
this.friends = friends;
}
}
export default Person

@ -0,0 +1,23 @@
import Person from "./Person";
class PersonNetwork{
private persons : Person[]
constructor(persons: Person[]){
this.persons = persons;
}
getPersons(): Person[]{
return this.persons;
}
setPersons(persons: Person[]){
this.persons = persons
}
addPerson(person: Person){
this.persons.push(person)
}
}
export default PersonNetwork

@ -0,0 +1,10 @@
enum Sport {
FOOT,
RUGBY,
BASKET,
TENNIS,
CURLING,
}
export default Sport

@ -1,14 +1,15 @@
{ {
"compilerOptions": { "compilerOptions": {
"resolveJsonModule": true, // ...
"esModuleInterop": true, "resolveJsonModule": true,
"allowSyntheticDefaultImports": true, "esModuleInterop": true,
"moduleResolution": "node", "allowSyntheticDefaultImports": true,
"target": "es5", "moduleResolution": "node",
"lib": ["dom", "es2015"], "target": "es5",
"jsx": "react", "lib": ["dom", "es2015"],
"strict": true, "jsx": "react",
"strict": true
}, },
} // ...
// "noImplicitAny": false, }

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save