Utilisateur ne peut plus poser un carré lorsqu'il y a des déjà un carré et s'ils ne peuvent plus en poser passe son tour

demo_bourges
Thomas Chazot 8 months ago
parent 54f8f715b0
commit e1e7d6ef5c

@ -7,7 +7,7 @@ const app = express();
const server = http.createServer(app); const server = http.createServer(app);
const io = socketIO(server, { const io = socketIO(server, {
cors: { cors: {
origin: ["http://172.20.10.4:3000", "http://localhost:3000"], // Remplacez par l'URL de votre application React origin: ["http://172.20.10.4:3000", "http://172.20.10.4:3000"], // Remplacez par l'URL de votre application React
methods: ["GET", "POST"], methods: ["GET", "POST"],
credentials: true credentials: true
} }
@ -114,6 +114,10 @@ io.on('connection', (socket) => {
io.to(id).emit("put imossible grey") io.to(id).emit("put imossible grey")
}) })
socket.on("can't put square", (askingPlayer, room) => {
io.to(room).emit("can't put square" , askingPlayer)
})
socket.on("opacity activated", (id) => { socket.on("opacity activated", (id) => {
io.to(id).emit("opacity activated") io.to(id).emit("opacity activated")
}) })

@ -14,6 +14,7 @@ import NodePerson from "../model/Graph/NodePerson";
import { useAuth } from "../Contexts/AuthContext"; import { useAuth } from "../Contexts/AuthContext";
import Indice from "../model/Indices/Indice"; import Indice from "../model/Indices/Indice";
import Pair from "../model/Pair"; import Pair from "../model/Pair";
import { tab } from "@testing-library/user-event/dist/tab";
interface MyGraphComponentProps { interface MyGraphComponentProps {
onNodeClick: (shouldShowChoiceBar: boolean) => void; onNodeClick: (shouldShowChoiceBar: boolean) => void;
@ -51,6 +52,8 @@ let firstEnigme = true
let firstIndex = true let firstIndex = true
let endgame= false let endgame= false
let firstHistory = true let firstHistory = true
let cptSquare = 0
let cptOnAskedWrong = 0
const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleShowTurnBar, handleTurnBarTextChange, playerTouched, setPlayerTouched, changecptTour, solo, isDaily, isEasy, addToHistory, showLast, setNetwork, setPlayerIndex, setNetworkEnigme, askedWrong, setAskedWrong}) => { const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleShowTurnBar, handleTurnBarTextChange, playerTouched, setPlayerTouched, changecptTour, solo, isDaily, isEasy, addToHistory, showLast, setNetwork, setPlayerIndex, setNetworkEnigme, askedWrong, setAskedWrong}) => {
@ -402,12 +405,59 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
}) })
socket.on("asked wrong", () =>{ socket.on("asked wrong", () =>{
askedWrongLocal= true cptSquare++
setAskedWrong(true) if (cptSquare % 2 == 0){
askedWrongBot=true if (indice==null){
handleShowTurnBar(true) return
handleTurnBarTextChange("Mauvais choix, posez un carré !") }
socket.emit("put grey background", socket.id, actualPlayerIndex) const tester = IndiceTesterFactory.Create(indice)
const tabPossible: Person[] = []
for(const person of personNetwork.getPersons()){
const node = nodes.get().find((n) => n.id == person.getId())
if (node != undefined) {
let isSquare = false
players.forEach((p, index) => {
if (node.label.includes(positionToEmoji(index, false))){
isSquare=true
}
})
if (!tester.Works(person) && !isSquare){
tabPossible.push(person)
}
}
}
if (tabPossible.length>0){
askedWrongLocal= true
setAskedWrong(true)
askedWrongBot=true
handleShowTurnBar(true)
handleTurnBarTextChange("Mauvais choix, posez un carré !")
socket.emit("put grey background", socket.id, actualPlayerIndex)
}
else{
socket.emit("can't put square", actualPlayerIndex, room)
}
}
})
socket.on("can't put square", (askingPlayer) => {
cptOnAskedWrong ++
if (cptOnAskedWrong % 2 == 0){
addToHistory(players[askingPlayer].pseudo + " ne peut plus poser de carré")
playerIndex = askingPlayer + 1
if(playerIndex == players.length){
playerIndex = 0
}
setPlayerIndex(playerIndex)
if (playerIndex === actualPlayerIndex){
handleTurnBarTextChange("À vous de jouer")
handleShowTurnBar(true)
}
else{
handleShowTurnBar(false)
socket.emit("put correct background", socket.id)
}
}
}) })
@ -481,14 +531,26 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
const tab = mapIndexPersons.get(player) const tab = mapIndexPersons.get(player)
if (tab != undefined){ if (tab != undefined){
if (player != actualPlayerIndex){ if (player != actualPlayerIndex){
console.log("player != actualPlayerIndex")
for(const person of personNetwork.getPersons().filter((p) => tab.includes(p))){ for(const person of personNetwork.getPersons().filter((p) => tab.includes(p))){
networkData.nodes.update({id: person.getId(), color: "#808080"}) networkData.nodes.update({id: person.getId(), color: "#808080"})
} }
} }
else if(indice != null){ else if(indice != null){
//Pour poser un carré
const tester = IndiceTesterFactory.Create(indice) const tester = IndiceTesterFactory.Create(indice)
for(const person of personNetwork.getPersons().filter((p) => tab.includes(p) || tester.Works(p))){ for(const person of personNetwork.getPersons()){
networkData.nodes.update({id: person.getId(), color: "#808080"}) const node = nodes.get().find((n) => n.id == person.getId())
if (node == undefined) continue
let isSquare = false
players.forEach((p, index) => {
if (node.label.includes(positionToEmoji(index, false))){
isSquare=true
}
})
if (tab.includes(person) || tester.Works(person) || isSquare){
networkData.nodes.update({id: person.getId(), color: "#808080"})
}
} }
} }
} }
@ -497,6 +559,7 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
socket.on("put imossible grey", ()=>{ socket.on("put imossible grey", ()=>{
if (personNetwork != null && indice!=null){ if (personNetwork != null && indice!=null){
console.log("impossible grey")
const tabNodes: any = [] const tabNodes: any = []
const tester = IndiceTesterFactory.Create(indice) const tester = IndiceTesterFactory.Create(indice)
for (const pers of personNetwork.getPersons()){ for (const pers of personNetwork.getPersons()){
@ -592,7 +655,7 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
} }
if (a==indices.length){ if (a==indices.length){
//networkData.nodes.update({id: p.getId(), label: p.getName() + "\n🔵"}) //networkData.nodes.update({id: p.getId(), label: p.getName() + "\n🔵"})
//console.log(p) console.log(p)
} }
}); });
@ -616,9 +679,16 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
if (!solo){ if (!solo){
if (askedWrongLocal){ if (askedWrongLocal){
const person = personNetwork?.getPersons().find((p) => p.getId() == params.nodes[0]) const person = personNetwork?.getPersons().find((p) => p.getId() == params.nodes[0])
if (person !== undefined && indice !== null){ const node = nodes.get().find((n) => n.id == params.nodes[0])
if (person !== undefined && indice !== null && node!=undefined){
const tester = IndiceTesterFactory.Create(indice) const tester = IndiceTesterFactory.Create(indice)
if (!tester.Works(person) && !askedPersons.includes(person)){ let isSquare = false
players.forEach((p, index) => {
if (node.label.includes(positionToEmoji(index, false))){
isSquare=true
}
})
if (!tester.Works(person) && !askedPersons.includes(person) && !isSquare){
playerIndex = actualPlayerIndex + 1 playerIndex = actualPlayerIndex + 1
if(playerIndex == players.length){ if(playerIndex == players.length){
playerIndex = 0 playerIndex = 0
@ -655,7 +725,7 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
} }
} }
else{ else{
if (touchedPlayer > 0){ if (touchedPlayer >= 0){
console.log(touchedPlayer) console.log(touchedPlayer)
socket.emit("ask player", params.nodes[0], players[touchedPlayer].id, players.find((p) => p.id === socket.id, actualPlayerIndex)) socket.emit("ask player", params.nodes[0], players[touchedPlayer].id, players.find((p) => p.id === socket.id, actualPlayerIndex))
socket.emit("put correct background", socket.id) socket.emit("put correct background", socket.id)

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { colorToEmoji, positionToColor } from '../ColorHelper'; import { colorToEmoji, positionToColor, positionToEmoji } from '../ColorHelper';
import Player from '../model/Player'; import Player from '../model/Player';
import { useTheme } from '../Style/ThemeContext'; import { useTheme } from '../Style/ThemeContext';
import PersonStatus from './PersonStatus'; import PersonStatus from './PersonStatus';
@ -39,7 +39,7 @@ const PlayerList: React.FC<PlayerListProps> = ({ players, playerTouched, setPlay
key={index} key={index}
name={player.pseudo name={player.pseudo
+ " " + + " " +
colorToEmoji(positionToColor(index), true)} positionToEmoji(index, true)}
playerTouched={playerTouched} playerTouched={playerTouched}
setPlayerTouched={setPlayerTouched} setPlayerTouched={setPlayerTouched}
index={index} index={index}

Loading…
Cancel
Save