diff --git a/api-rest/gateways/gameGateway.php b/api-rest/gateways/gameGateway.php index 299bc1c..13fb5e9 100644 --- a/api-rest/gateways/gameGateway.php +++ b/api-rest/gateways/gameGateway.php @@ -20,14 +20,28 @@ class GameGateway{ public function getGames():?array{ $tabGames=null; $gamesQuery="SELECT * FROM T_E_GAME_GAM"; + $mapQuery="SELECT * FROM T_J_GAME_MAP_GMP WHERE FK_GAME=:id ORDER BY GMP_KEY"; $this->connection->execQuery($gamesQuery,[]); $res = $this->connection->getRes(); foreach($res as $row){ + $tabkey=[]; + $tabValue=[]; + $arg=array(':id'=>array($row['PK_ID'], PDO::PARAM_INT)); + $this->connection->execQuery($mapQuery,$arg); + $resMap = $this->connection->getRes(); + foreach($resMap as $rowMap){ + $tabKey[]=$rowMap['GMP_KEY']; + $tabValue[]=$rowMap['GMP_VALUE']; + } $tabGames[]= new Game($row['PK_ID'], $row['GAM_NAME'], $row['GAM_IMAGE'], + $row['GAM_TYPE'], $row['GAM_NB_PLAYER_MIN'], - $row['GAM_NB_PLAYER_MAX']); + $row['GAM_NB_PLAYER_MAX'], + $tabKey, + $tabValue); + } return $tabGames; } diff --git a/api-rest/model/game.php b/api-rest/model/game.php index 3870ac2..c2661c6 100644 --- a/api-rest/model/game.php +++ b/api-rest/model/game.php @@ -4,12 +4,21 @@ class Game{ public int $id; public string $name; public string $image; + public string $type; + public int $nbPlayerMin; + public int $nbPlayerMax; + public array $keys; + public array $values; - - public function __construct(int $_id, string $_name, string $_image){ + public function __construct(int $_id, string $_name, string $_image, string $_type, $_nbPlayerMin, $_nbPlayerMax, array $_keys, array $_values){ $this->id=$_id; $this->name=$_name; $this->image=$_image; + $this->type=$_type; + $this->nbPlayerMin=$_nbPlayerMin; + $this->nbPlayerMax=$_nbPlayerMax; + $this->keys=$_keys; + $this->values=$_values; } } diff --git a/bobParty.sql b/bobParty.sql index 8a6fd72..78caa92 100644 --- a/bobParty.sql +++ b/bobParty.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- Hôte : localhost:8889 --- Généré le : ven. 30 déc. 2022 à 14:14 +-- Généré le : mar. 03 jan. 2023 à 15:37 -- Version du serveur : 5.7.34 -- Version de PHP : 7.4.21 @@ -30,11 +30,22 @@ SET time_zone = "+00:00"; CREATE TABLE `T_E_GAME_GAM` ( `PK_ID` int(11) NOT NULL, `GAM_NAME` varchar(50) DEFAULT NULL, - `GAM_IMAGE` varchar(50) DEFAULT NULL, + `GAM_IMAGE` varchar(200) DEFAULT NULL, `GAM_NB_PLAYER_MIN` int(11) DEFAULT NULL, - `GAM_NB_PLAYER_MAX` int(11) DEFAULT NULL + `GAM_NB_PLAYER_MAX` int(11) DEFAULT NULL, + `GAM_TYPE` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +-- +-- Déchargement des données de la table `T_E_GAME_GAM` +-- + +INSERT INTO `T_E_GAME_GAM` (`PK_ID`, `GAM_NAME`, `GAM_IMAGE`, `GAM_NB_PLAYER_MIN`, `GAM_NB_PLAYER_MAX`, `GAM_TYPE`) VALUES +(1, 'Cookie Clicker', 'https://codefirst.iut.uca.fr/git/BOB_PARTEAM/BOB_PARTY/raw/branch/typescript/bob_party/assets/ImagesJeux/Pong.png', 1, 1, 'GameSolo'), +(2, 'TicTacToe', 'https://is3-ssl.mzstatic.com/image/thumb/Purple123/v4/f2/06/ef/f206ef53-7206-ffae-af6b-52460ba5636f/source/256x256bb.jpg', 1, 1, 'GameSolo'), +(3, 'TicTacToe Online', 'https://is3-ssl.mzstatic.com/image/thumb/Purple123/v4/f2/06/ef/f206ef53-7206-ffae-af6b-52460ba5636f/source/256x256bb.jpg', 2, 2, 'GameMulti'), +(4, 'BlackJack', 'https://codefirst.iut.uca.fr/git/BOB_PARTEAM/BOB_PARTY/raw/branch/peristanceBDD/bob_party/assets/ImagesJeux/blackjack.jpg', 1, 1, 'GameCasino'); + -- -------------------------------------------------------- -- @@ -182,6 +193,33 @@ INSERT INTO `T_J_DISCUSS_DIS` (`FK_USER`, `FK_CONVERSATION`) VALUES -- -------------------------------------------------------- +-- +-- Structure de la table `T_J_GAME_MAP_GMP` +-- + +CREATE TABLE `T_J_GAME_MAP_GMP` ( + `FK_GAME` int(11) NOT NULL, + `GMP_KEY` int(11) NOT NULL, + `GMP_VALUE` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Déchargement des données de la table `T_J_GAME_MAP_GMP` +-- + +INSERT INTO `T_J_GAME_MAP_GMP` (`FK_GAME`, `GMP_KEY`, `GMP_VALUE`) VALUES +(1, 0, 0), +(1, 100, 25), +(1, 1000, 30), +(1, 10000, 40), +(1, 100000, 50), +(1, 1000000, 75), +(3, 0, 0), +(3, 1, 25), +(3, 2, 50); + +-- -------------------------------------------------------- + -- -- Structure de la table `T_J_OWN_SKIN_OWN` -- @@ -205,7 +243,8 @@ INSERT INTO `T_J_OWN_SKIN_OWN` (`FK_USER`, `FK_SKIN`) VALUES (7, 1), (8, 1), (10, 1), -(11, 1); +(11, 1), +(12, 1); -- -------------------------------------------------------- @@ -242,14 +281,15 @@ CREATE TABLE `T_S_USER_USR` ( -- INSERT INTO `T_S_USER_USR` (`PK_ID`, `USR_USERNAME`, `USR_PASSWORD`, `USR_NATIONALITY`, `USR_SEX`, `USR_DATE_OF_BIRTH`, `USR_CURRENT_NB_COINS`, `USR_TOTAL_NB_COINS`, `USR_NB_GAMES_PLAYED`, `FK_CURRENT_SKIN`) VALUES -(1, 'tom', 't', 'Anglais(e)', 'M', '2003-07-01', 100, 600, 12, 2), +(1, 'tom', 't', 'Anglais(e)', 'M', '2003-07-01', 0, 225, 12, 2), (2, 'leilla20', 'l', 'France', 'F', '2003-11-22', 0, 0, 0, 1), (3, 'test', 't', 'Français(e)', 'H', '1999-12-27', 0, 0, 0, 1), (6, 'LEBg', 'belleBite63*', 'Espagnol(e)', 'Autre', '2001-12-27', 0, 0, 0, 1), (7, 'DYLAN', 'argGR65**', 'Anglais(e)', 'Autre', '2002-12-27', 0, 0, 0, 1), (8, 'Marche', 'je45tE**', 'Anglais(e)', 'Femme', '1999-12-27', 0, 0, 0, 1), (10, 'dsqdz', 'AEZQzze1*', 'Francais(e)', 'null', '2005-12-27', 0, 0, 0, 1), -(11, 'qdsqdz', 'dqzA12****', 'Francais(e)', 'Homme', '2002-12-27', 0, 0, 0, 1); +(11, 'qdsqdz', 'dqzA12****', 'Francais(e)', 'Homme', '2002-12-27', 0, 0, 0, 1), +(12, 'thilde', 'coucoulesnazes*M0', 'Francais(e)', 'Femme', '2004-11-02', 0, 0, 0, 1); -- -- Déclencheurs `T_S_USER_USR` @@ -268,7 +308,7 @@ DELIMITER ; -- ALTER TABLE `T_E_GAME_GAM` ADD PRIMARY KEY (`PK_ID`), - ADD UNIQUE KEY `GAM_NAME` (`GAM_NAME`,`GAM_IMAGE`); + ADD UNIQUE KEY `GAM_NAME` (`GAM_NAME`) USING BTREE; -- -- Index pour la table `T_E_MATCH_MTC` @@ -312,6 +352,12 @@ ALTER TABLE `T_J_DISCUSS_DIS` ADD PRIMARY KEY (`FK_USER`,`FK_CONVERSATION`), ADD KEY `FK_CONVERSATION` (`FK_CONVERSATION`); +-- +-- Index pour la table `T_J_GAME_MAP_GMP` +-- +ALTER TABLE `T_J_GAME_MAP_GMP` + ADD PRIMARY KEY (`FK_GAME`,`GMP_KEY`,`GMP_VALUE`) USING BTREE; + -- -- Index pour la table `T_J_OWN_SKIN_OWN` -- @@ -342,7 +388,7 @@ ALTER TABLE `T_S_USER_USR` -- AUTO_INCREMENT pour la table `T_E_GAME_GAM` -- ALTER TABLE `T_E_GAME_GAM` - MODIFY `PK_ID` int(11) NOT NULL AUTO_INCREMENT; + MODIFY `PK_ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- AUTO_INCREMENT pour la table `T_E_MATCH_MTC` @@ -354,7 +400,7 @@ ALTER TABLE `T_E_MATCH_MTC` -- AUTO_INCREMENT pour la table `T_H_CONVERSATION_COV` -- ALTER TABLE `T_H_CONVERSATION_COV` - MODIFY `PK_ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=47; + MODIFY `PK_ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=33; -- -- AUTO_INCREMENT pour la table `T_H_MESSAGE_MSG` @@ -372,7 +418,7 @@ ALTER TABLE `T_H_SKIN_SKI` -- AUTO_INCREMENT pour la table `T_S_USER_USR` -- ALTER TABLE `T_S_USER_USR` - MODIFY `PK_ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; + MODIFY `PK_ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13; -- -- Contraintes pour les tables déchargées @@ -404,6 +450,12 @@ ALTER TABLE `T_J_DISCUSS_DIS` ADD CONSTRAINT `t_j_discuss_dis_ibfk_1` FOREIGN KEY (`FK_USER`) REFERENCES `T_S_USER_USR` (`PK_ID`) ON DELETE CASCADE, ADD CONSTRAINT `t_j_discuss_dis_ibfk_2` FOREIGN KEY (`FK_CONVERSATION`) REFERENCES `T_H_CONVERSATION_COV` (`PK_ID`) ON DELETE CASCADE; +-- +-- Contraintes pour la table `T_J_GAME_MAP_GMP` +-- +ALTER TABLE `T_J_GAME_MAP_GMP` + ADD CONSTRAINT `t_j_game_map_gmp_ibfk_1` FOREIGN KEY (`FK_GAME`) REFERENCES `T_E_GAME_GAM` (`PK_ID`); + -- -- Contraintes pour la table `T_J_OWN_SKIN_OWN` -- diff --git a/bob_party/src/Games/BlackJack/blackJack.js b/bob_party/src/Games/BlackJack/blackJack.js index 2c574eb..57bbe82 100644 --- a/bob_party/src/Games/BlackJack/blackJack.js +++ b/bob_party/src/Games/BlackJack/blackJack.js @@ -176,11 +176,6 @@ export default function BlackJack(){ setGameover(true); setGameMessage("You Win $ "+ betValue); - }else if(dealerPoints > 21 && playerPoints < 22){ - await modifAmount(amount+betValue); - setTotalBet(0); - setGameover(true); - setGameMessage("You Win $ "+ betValue); } else if(playerPoints > 21 && dealerPoints <= 21){ await modifAmount(amount); @@ -196,8 +191,8 @@ export default function BlackJack(){ setGameover(true); setGameMessage("Push!"); }else{ - await modifAmount(amount+totalBet); - + + await modifAmount(amount); setTotalBet(0); setGameover(true); setGameMessage("Dealer Wins, You Lost"); diff --git a/bob_party/src/core/Game.ts b/bob_party/src/core/Game.ts index a89fad8..59abfb4 100644 --- a/bob_party/src/core/Game.ts +++ b/bob_party/src/core/Game.ts @@ -2,16 +2,14 @@ export abstract class Game{ readonly id:number; private name:string; private imageSource:string; - private gameSource:string; private nbPlayerMin: number; private nbPlayerMax:number; /* Constructor of the class */ - constructor (id:number, name:string, imageSource:string, gameSource:string, nbPlayerMin:number, nbPlayerMax:number){ + constructor (id:number, name:string, imageSource:string, nbPlayerMin:number, nbPlayerMax:number){ this.id=id; this.name=name; this.imageSource=imageSource; - this.gameSource=gameSource; this.nbPlayerMin=nbPlayerMin; this.nbPlayerMax=nbPlayerMax; } @@ -41,16 +39,6 @@ export abstract class Game{ this.imageSource=imageSource; } - /* Brief : Function getting the source of a game */ - getGameSource(){ - return this.gameSource; - } - - /* Brief : Function setting the source of a game */ - setGameSource(gameSource:string){ - this.gameSource=gameSource; - } - /* Brief : Function getting the number of player */ getNbPlayerMin(){ return this.nbPlayerMin; diff --git a/bob_party/src/core/User/userCoinsModifier.ts b/bob_party/src/core/User/userCoinsModifier.ts index d672f3e..dd6234e 100644 --- a/bob_party/src/core/User/userCoinsModifier.ts +++ b/bob_party/src/core/User/userCoinsModifier.ts @@ -5,8 +5,10 @@ export class UserCoinsModifier{ async addCoins(u:User, coins:number){ - u.setCurrentCoins(u.getCurrentCoins()+coins); - u.setTotalCoins(u.getTotalCoins()+coins); + const newCoins: number=coins+u.getCurrentCoins(); + const newTotalCoins: number=coins+u.getTotalCoins(); + u.setCurrentCoins(newCoins); + u.setTotalCoins(newTotalCoins); await MANAGER_USER.getsaverUser().updateUser(u); MANAGER_USER.setCurrentUser(u); } diff --git a/bob_party/src/core/gameCasino.ts b/bob_party/src/core/gameCasino.ts index 379166d..2970801 100644 --- a/bob_party/src/core/gameCasino.ts +++ b/bob_party/src/core/gameCasino.ts @@ -2,8 +2,8 @@ import { Game } from './game' export class GameCasino extends Game{ - constructor(id:number, name:string, imageSource:string, gameSource:string, nbPlayerMin:number, nbPlayerMax:number){ - super(id, name, imageSource, gameSource, nbPlayerMin, nbPlayerMax); + constructor(id:number, name:string, imageSource:string, nbPlayerMin:number, nbPlayerMax:number){ + super(id, name, imageSource, nbPlayerMin, nbPlayerMax); } coinsCalculator(points: number): number { diff --git a/bob_party/src/core/gameMulti.ts b/bob_party/src/core/gameMulti.ts index bbaad4f..fc1b855 100644 --- a/bob_party/src/core/gameMulti.ts +++ b/bob_party/src/core/gameMulti.ts @@ -3,8 +3,8 @@ import { Game } from './game' export class GameMulti extends Game{ readonly rankToCoins:Map - constructor(id:number, name:string, imageSource:string, gameSource:string, nbPlayerMin:number, nbPlayerMax:number, rankToCoins:Map){ - super(id, name, imageSource, gameSource, nbPlayerMin, nbPlayerMax); + constructor(id:number, name:string, imageSource:string, nbPlayerMin:number, nbPlayerMax:number, rankToCoins:Map){ + super(id, name, imageSource, nbPlayerMin, nbPlayerMax); this.rankToCoins=rankToCoins; } diff --git a/bob_party/src/core/gameSolo.ts b/bob_party/src/core/gameSolo.ts index b0e1d71..b67c3fe 100644 --- a/bob_party/src/core/gameSolo.ts +++ b/bob_party/src/core/gameSolo.ts @@ -3,8 +3,8 @@ import { Game } from './game' export class GameSolo extends Game{ readonly ptsToCoins:Map - constructor(id:number, name:string, imageSource:string, gameSource:string, nbPlayerMin:number, nbPlayerMax:number, ptsToCoins:Map){ - super(id, name, imageSource, gameSource, nbPlayerMin,nbPlayerMax); + constructor(id:number, name:string, imageSource:string, nbPlayerMin:number, nbPlayerMax:number, ptsToCoins:Map){ + super(id, name, imageSource, nbPlayerMin,nbPlayerMax); this.ptsToCoins=ptsToCoins; } @@ -19,9 +19,11 @@ export class GameSolo extends Game{ let test; for (let key of this.ptsToCoins.keys()){ test = this.ptsToCoins.get(key); - coins=key; - if (test != undefined && test>=points){ - return coins; + if (test != undefined){ + coins=test; + if (test>=points){ + return coins; + } } } return coins; diff --git a/bob_party/src/core/tests/gameCasino.test.ts b/bob_party/src/core/tests/gameCasino.test.ts index 5e83ef0..a2bd66d 100644 --- a/bob_party/src/core/tests/gameCasino.test.ts +++ b/bob_party/src/core/tests/gameCasino.test.ts @@ -4,7 +4,7 @@ import { GameCasino } from '../GameCasino'; // Instances const img = ""; -let game = new GameCasino(1, "bo jeu", img, "super jeu", 1, 5); +let game = new GameCasino(1, "bo jeu", img, 1, 5); // Get tests diff --git a/bob_party/src/core/tests/gameMulti.test.ts b/bob_party/src/core/tests/gameMulti.test.ts index 9e72a63..9458a7d 100644 --- a/bob_party/src/core/tests/gameMulti.test.ts +++ b/bob_party/src/core/tests/gameMulti.test.ts @@ -9,7 +9,7 @@ let myMap = new Map([ [2, 5], [1, 10] ]); -let game = new GameMulti(1, "bo jeu", img, "super jeu", 1, 5, myMap); +let game = new GameMulti(1, "bo jeu", img, 1, 5, myMap); // Get tests diff --git a/bob_party/src/core/tests/gameSolo.test.ts b/bob_party/src/core/tests/gameSolo.test.ts index 56ff2c2..44843fb 100644 --- a/bob_party/src/core/tests/gameSolo.test.ts +++ b/bob_party/src/core/tests/gameSolo.test.ts @@ -8,7 +8,7 @@ let myMap = new Map([ [100, 5], [150, 6] ]); -let game=new GameSolo(1, "bo jeu", img, "super jeu", 1, 1, myMap); +let game=new GameSolo(1, "bo jeu", img, 1, 1, myMap); // Get tests diff --git a/bob_party/src/core/tests/matchSolo.test.ts b/bob_party/src/core/tests/matchSolo.test.ts index 027b58b..f0b36a3 100644 --- a/bob_party/src/core/tests/matchSolo.test.ts +++ b/bob_party/src/core/tests/matchSolo.test.ts @@ -21,8 +21,8 @@ let myMap = new Map([ [150, 6] ]); let tabU2:User[] = []; -let game=new GameSolo(1, "bo jeu", img, "super jeu", 1, 1, myMap); -let game2 = new GameSolo(2, "jeu magnifique", img, "wow jeu", 1, 1, myMap) +let game=new GameSolo(1, "bo jeu", img, 1, 1, myMap); +let game2 = new GameSolo(2, "jeu magnifique", img, 1, 1, myMap) let match = new MatchSolo(1, false, tabU, game); let match2 = new MatchSolo(1, false, tabU2, game2); let match3 = new MatchSolo(1, false, tabU, game); diff --git a/bob_party/src/screens/SignIn.tsx b/bob_party/src/screens/SignIn.tsx index 1c47251..49ccbef 100644 --- a/bob_party/src/screens/SignIn.tsx +++ b/bob_party/src/screens/SignIn.tsx @@ -107,7 +107,7 @@ function SignIn(props: { navigation: any; }) { } async function handleGameLoad(){ - MANAGER_GAME.setTabGame(await MANAGER_GAME.getLoaderGame().loadAllGame()); + MANAGER_GAME.setTabGame(await MANAGER_GAME.getLoaderGame().loadAllGames()); MANAGER_GAME.getTabGame().forEach(game => { if (game.getNbPlayerMin()>1){ MANAGER_GAME.getTabGameMulti().push(game); @@ -119,7 +119,6 @@ function SignIn(props: { navigation: any; }) { setTabGame(MANAGER_GAME.getTabGame()); setTabGameMulti(MANAGER_GAME.getTabGameMulti()) setTabGameSolo(MANAGER_GAME.getTabGameSolo()); - } diff --git a/bob_party/src/services/gameService/ILoaderGame.ts b/bob_party/src/services/gameService/ILoaderGame.ts index 17b826d..782dfce 100644 --- a/bob_party/src/services/gameService/ILoaderGame.ts +++ b/bob_party/src/services/gameService/ILoaderGame.ts @@ -6,7 +6,7 @@ export default interface ILoaderGame{ * loadAllGame methode that load every Game from the data management system * return an array of Game */ - loadAllGame(): Promise; + loadAllGames(): Promise; /** * loadByID methode that load a match from the data management system by its id diff --git a/bob_party/src/services/gameService/loaderGameApi.ts b/bob_party/src/services/gameService/loaderGameApi.ts index 791b762..3d27e3e 100644 --- a/bob_party/src/services/gameService/loaderGameApi.ts +++ b/bob_party/src/services/gameService/loaderGameApi.ts @@ -1,4 +1,5 @@ import { Game } from "../../core/game"; +import { GameCasino } from "../../core/gameCasino"; import { GameMulti } from "../../core/gameMulti"; import { GameSolo } from "../../core/gameSolo"; import ILoaderGame from "./ILoaderGame"; @@ -8,28 +9,37 @@ export default class LoaderGameApi implements ILoaderGame{ private axios = require('axios').default; - async loadAllGame(): Promise { + async loadAllGames(): Promise { let tab: Game[]=[]; + const url="http://localhost:8888/api-rest/index.php/getGames"; await this.axios({ method: 'get', - url: 'https://jsonplaceholder.typicode.com/todos/1', - params: { - name: "getAllUser", - //Les params genre nom de la fonction en php - } + url: url, + }) .then(function (response: any) { - const map = new Map(); - map.set(0,0); - map.set(100,50); - map.set(300,150); - map.set(450,1000); - const cookieClicker= new GameSolo(1, "Cookie Clicker", "https://codefirst.iut.uca.fr/git/BOB_PARTEAM/BOB_PARTY/raw/branch/typescript/bob_party/assets/ImagesJeux/Pong.png", "./src/Games/CookieClicker/cookieClicker.tsx", 1, 1, map); - const ticTacToe= new GameSolo(2,"TicTacToe", "https://is3-ssl.mzstatic.com/image/thumb/Purple123/v4/f2/06/ef/f206ef53-7206-ffae-af6b-52460ba5636f/source/256x256bb.jpg", "./src/Games/Tic-Tac-Toe/tic_tac_toe.tsx", 1, 1, map); - const ticTacToeOnline= new GameSolo(3,"TicTacToeOnline", "https://is3-ssl.mzstatic.com/image/thumb/Purple123/v4/f2/06/ef/f206ef53-7206-ffae-af6b-52460ba5636f/source/256x256bb.jpg", "./src/Games/Tic-Tac-Toe/tic_tac_toe_online.tsx", 2, 2, map); - const blackjack = new GameMulti(4, "BlackJack", "https://codefirst.iut.uca.fr/git/BOB_PARTEAM/BOB_PARTY/raw/branch/peristanceBDD/bob_party/assets/ImagesJeux/blackjack.jpg", "./src/Games/BlackJack/blackJack", 1, 1, map) - tab=[cookieClicker,ticTacToe, ticTacToeOnline, blackjack]; - + response.data.forEach(game => { + switch(game.type){ + case "GameSolo": + let mapSolo = new Map(); + for (let i=0; i([ [150, 6] ]); -let game=new GameSolo(1, "bo jeu", "", "super jeu", 1, 1, myMap); +let game=new GameSolo(1, "bo jeu", "", 1, 1, myMap); export default game; \ No newline at end of file