find du jeu de master mind

pull/74/head
Thomas Chazot 2 years ago
parent 55f2a35414
commit ed69aebcad

@ -29,7 +29,7 @@ const ChoiceBar = () => {
let playerIndex = actualPlayerIndex + 1 let playerIndex = actualPlayerIndex + 1
if (indiceTester.Works(person)){ if (indiceTester.Works(person)){
socket.emit("node checked", nodeId, true, positionToColor(actualPlayerIndex), room, nextPlayerIndex) socket.emit("node checked", nodeId, true, actualPlayerIndex, room, nextPlayerIndex)
while(playerIndex != actualPlayerIndex){ while(playerIndex != actualPlayerIndex){
if (playerIndex == players.length){ if (playerIndex == players.length){
playerIndex = 0 playerIndex = 0
@ -38,7 +38,7 @@ const ChoiceBar = () => {
const works = tester.Works(person) const works = tester.Works(person)
await delay(500); await delay(500);
socket.emit("asked all 1by1", person.getId(), players[playerIndex].id) socket.emit("asked all 1by1", person.getId(), players[playerIndex].id)
socket.emit("node checked", nodeId, works, positionToColor(playerIndex), room, nextPlayerIndex) socket.emit("node checked", nodeId, works, playerIndex, room, nextPlayerIndex)
if(!works){ if(!works){
return return
} }

@ -16,7 +16,7 @@ import JSONParser from "../JSONParser";
import PersonNetwork from "../model/PersonsNetwork"; import PersonNetwork from "../model/PersonsNetwork";
import Person from "../model/Person"; import Person from "../model/Person";
import Indice from "../model/Indices/Indice"; import Indice from "../model/Indices/Indice";
import { useLocation } from "react-router-dom"; import { Navigate, useLocation, useNavigate } from "react-router-dom";
import { useGame } from "../Contexts/GameContext"; import { useGame } from "../Contexts/GameContext";
import { socket } from "../SocketConfig" import { socket } from "../SocketConfig"
import { colorToEmoji, positionToColor } from "../ColorHelper"; import { colorToEmoji, positionToColor } from "../ColorHelper";
@ -33,6 +33,7 @@ let lastNodeId = -1
let first = true let first = true
let askedWrong = false let askedWrong = false
let solo: boolean = true let solo: boolean = true
let mapIndexPersons: Map<number, Person[]> = new Map<number, Person[]>()
const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleShowTurnBar, handleTurnBarTextChange}) => { const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleShowTurnBar, handleTurnBarTextChange}) => {
@ -41,6 +42,8 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
const params = new URLSearchParams(window.location.search); const params = new URLSearchParams(window.location.search);
const solotmp = params.get('solo'); const solotmp = params.get('solo');
const navigate = useNavigate();
let playerIndex: number = turnPlayerIndex let playerIndex: number = turnPlayerIndex
@ -60,6 +63,9 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
solo=false solo=false
} }
if (!solo){ if (!solo){
for(let i = 0; i<indices.length; i++){
mapIndexPersons.set(i, [])
}
setActualPlayerIndexData(index) setActualPlayerIndexData(index)
if (playerIndex == thisPlayerIndex){ if (playerIndex == thisPlayerIndex){
handleTurnBarTextChange("À vous de jouer") handleTurnBarTextChange("À vous de jouer")
@ -113,13 +119,13 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
} }
}) })
socket.on("node checked",(id, works, color, newPlayerIndex) => { socket.on("node checked",(id, works, askedIndex, newPlayerIndex) => {
const node = nodes.get().find((n) => id == n.id) const node = nodes.get().find((n) => id == n.id)
if (node!=undefined){ if (node!=undefined){
onNodeClick(false) onNodeClick(false)
playerIndex = newPlayerIndex playerIndex = newPlayerIndex
if (!node.label.includes(colorToEmoji(color, works))){ if (!node.label.includes(colorToEmoji(positionToColor(askedIndex), works))){
networkData.nodes.update({id: id, label: node.label + colorToEmoji(color, works)}) networkData.nodes.update({id: id, label: node.label + colorToEmoji(positionToColor(askedIndex), works)})
} }
if (playerIndex === thisPlayerIndex){ if (playerIndex === thisPlayerIndex){
handleTurnBarTextChange("À vous de jouer") handleTurnBarTextChange("À vous de jouer")
@ -167,14 +173,14 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
playerIndex = 0 playerIndex = 0
} }
if (tester.Works(pers)){ if (tester.Works(pers)){
socket.emit("node checked", nodeId, true, positionToColor(thisPlayerIndex), room, playerIndex) socket.emit("node checked", nodeId, true, thisPlayerIndex, room, playerIndex)
} }
else{ else{
maybe = maybe - 1 maybe = maybe - 1
if(maybe == 0){ if(maybe == 0){
maybe = players.length - 1 maybe = players.length - 1
} }
socket.emit("node checked", nodeId, false, positionToColor(thisPlayerIndex), room, maybe) socket.emit("node checked", nodeId, false, thisPlayerIndex, room, maybe)
socket.emit("asked wrong", askingPlayer, room) socket.emit("asked wrong", askingPlayer, room)
} }
} }
@ -213,7 +219,7 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
} }
}); });
network.on("click", (params) => { network.on("click", async (params) => {
if(params.nodes.length > 0){ if(params.nodes.length > 0){
setNodeIdData(params.nodes[0]) setNodeIdData(params.nodes[0])
@ -227,7 +233,7 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
if(playerIndex == players.length){ if(playerIndex == players.length){
playerIndex = 0 playerIndex = 0
} }
socket.emit("node checked", params.nodes[0], false, positionToColor(thisPlayerIndex), room, playerIndex) socket.emit("node checked", params.nodes[0], false, thisPlayerIndex, room, playerIndex)
askedPersons.push(person) askedPersons.push(person)
askedWrong = false askedWrong = false
} }
@ -243,14 +249,28 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
else{ else{
const person = personNetwork?.getPersons().find((p) => p.getId() == params.nodes[0]) //person sélectionnée const person = personNetwork?.getPersons().find((p) => p.getId() == params.nodes[0]) //person sélectionnée
if (person != undefined){ if (person != undefined){
indices.forEach(async (i, index) =>{ let index =0
let works = true
let promises: Promise<void>[] = []
for (const i of indices){
const tester = IndiceTesterFactory.Create(i) const tester = IndiceTesterFactory.Create(i)
const test = tester.Works(person) const test = tester.Works(person)
const node = nodes.get().find((n) => params.nodes[0] == n.id) const node = nodes.get().find((n) => params.nodes[0] == n.id)
if (node!=undefined){ if (node!=undefined){
networkData.nodes.update({id: params.nodes[0], label: node.label + colorToEmoji(positionToColor(index), test)}) if (!node.label.includes(colorToEmoji(positionToColor(index), test))){
networkData.nodes.update({id: params.nodes[0], label: node.label + colorToEmoji(positionToColor(index), test)})
await delay(500)
if(!test){
works = false
}
if (index == indices.length - 1 && works){
navigate("/endgame")
}
}
} }
}) index++
}
} }
} }
} }
@ -268,7 +288,7 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
</> </>
); );
function delay(ms: number) { function delay(ms: number): Promise<void> {
return new Promise(resolve => setTimeout(resolve, ms)); return new Promise(resolve => setTimeout(resolve, ms));
} }
} }

@ -37,7 +37,7 @@ function Play() {
} }
function launchMastermind(){ function launchMastermind(){
const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(5, 30) const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(3, 30)
setPersonData(choosenPerson) setPersonData(choosenPerson)
setPersonNetworkData(networkPerson) setPersonNetworkData(networkPerson)
setIndicesData(choosenIndices) setIndicesData(choosenIndices)

@ -1,7 +1,7 @@
// theme.js // theme.js
const theme = { const theme = {
colors: { colors: {
primary: '#0064E0', primary: '#7AA3F4',
secondary: '#0052B8', secondary: '#0052B8',
text: '#fff' text: '#fff'
@ -10,4 +10,4 @@ const theme = {
}, },
}; };
export default theme; export default theme;
Loading…
Cancel
Save