button position
This commit is contained in:
parent
bf3f3a2879
commit
f50c5f7bf2
1 changed files with 77 additions and 10 deletions
|
|
@ -298,9 +298,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#call-panel {
|
#call-panel {
|
||||||
position: fixed;
|
position: absolute;
|
||||||
bottom: 20px;
|
bottom: -57%;
|
||||||
left: 50%;
|
left: 61%;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
display: none;
|
display: none;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
|
@ -420,6 +420,7 @@
|
||||||
let game;
|
let game;
|
||||||
let isDistributing = false;
|
let isDistributing = false;
|
||||||
let canPlayerAct = false;
|
let canPlayerAct = false;
|
||||||
|
let lastDiscarder = -1;
|
||||||
// Charger le menu
|
// Charger le menu
|
||||||
fetch('/components/menu.html')
|
fetch('/components/menu.html')
|
||||||
.then(r => r.text())
|
.then(r => r.text())
|
||||||
|
|
@ -623,6 +624,7 @@
|
||||||
|
|
||||||
// Défausser la tuile piochée (index === tiles.length)
|
// Défausser la tuile piochée (index === tiles.length)
|
||||||
canPlayerAct = false;
|
canPlayerAct = false;
|
||||||
|
lastDiscarder = 0;
|
||||||
game.discard(0, game.hands[0].tiles.length);
|
game.discard(0, game.hands[0].tiles.length);
|
||||||
game.nextTurn();
|
game.nextTurn();
|
||||||
updateTurnIndicator();
|
updateTurnIndicator();
|
||||||
|
|
@ -670,6 +672,43 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function continueBotPlay() {
|
||||||
|
// Continue la boucle des bots après une réponse du joueur
|
||||||
|
canPlayerAct = false;
|
||||||
|
|
||||||
|
while (game.turn !== 0) {
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 500));
|
||||||
|
game.draw(game.turn);
|
||||||
|
renderHands();
|
||||||
|
// Pause aléatoire pour simuler la réflexion
|
||||||
|
const randomDelay = 1000 + Math.random() * 1000;
|
||||||
|
await new Promise(resolve => setTimeout(resolve, randomDelay));
|
||||||
|
|
||||||
|
// Défausser le bot
|
||||||
|
game.botPlay();
|
||||||
|
renderDiscards();
|
||||||
|
|
||||||
|
// Vérifier si le joueur peut faire un appel
|
||||||
|
if (game.canPon(0)) {
|
||||||
|
// Le joueur peut faire un pon, lui proposer
|
||||||
|
canPlayerAct = true;
|
||||||
|
showCallPanelForPon();
|
||||||
|
return; // Attendre la réponse du joueur
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sinon, passer au joueur suivant
|
||||||
|
game.nextTurn();
|
||||||
|
updateTurnIndicator();
|
||||||
|
renderHands();
|
||||||
|
}
|
||||||
|
|
||||||
|
// C'est au tour du joueur - il pioche d'abord
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 500));
|
||||||
|
game.draw(0);
|
||||||
|
renderHands();
|
||||||
|
canPlayerAct = true;
|
||||||
|
}
|
||||||
|
|
||||||
async function playBotsSequentially() {
|
async function playBotsSequentially() {
|
||||||
// Le joueur ne peut plus agir pendant que les bots jouent
|
// Le joueur ne peut plus agir pendant que les bots jouent
|
||||||
canPlayerAct = false;
|
canPlayerAct = false;
|
||||||
|
|
@ -682,18 +721,30 @@
|
||||||
// Pause aléatoire pour simuler la réflexion
|
// Pause aléatoire pour simuler la réflexion
|
||||||
const randomDelay = 1000 + Math.random() * 1000;
|
const randomDelay = 1000 + Math.random() * 1000;
|
||||||
await new Promise(resolve => setTimeout(resolve, randomDelay));
|
await new Promise(resolve => setTimeout(resolve, randomDelay));
|
||||||
|
|
||||||
|
// Défausser le bot
|
||||||
game.botPlay();
|
game.botPlay();
|
||||||
|
renderDiscards();
|
||||||
|
|
||||||
|
// Vérifier si le joueur peut faire un appel
|
||||||
|
if (game.canPon(0)) {
|
||||||
|
// Le joueur peut faire un pon, lui proposer
|
||||||
|
canPlayerAct = true;
|
||||||
|
showCallPanelForPon();
|
||||||
|
return; // Attendre la réponse du joueur
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sinon, passer au joueur suivant
|
||||||
game.nextTurn();
|
game.nextTurn();
|
||||||
updateTurnIndicator();
|
updateTurnIndicator();
|
||||||
renderHands();
|
renderHands();
|
||||||
renderDiscards();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// C'est au tour du joueur - il pioche d'abord
|
// C'est au tour du joueur - il pioche d'abord
|
||||||
await new Promise(resolve => setTimeout(resolve, 500));
|
await new Promise(resolve => setTimeout(resolve, 500));
|
||||||
game.draw(0);
|
game.draw(0);
|
||||||
renderHands();
|
renderHands();
|
||||||
canPlayerAct = true;
|
canPlayerAct = true;
|
||||||
showCallPanel();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTurnIndicator() {
|
function updateTurnIndicator() {
|
||||||
|
|
@ -711,11 +762,24 @@
|
||||||
document.getElementById('call-panel').style.display = 'none';
|
document.getElementById('call-panel').style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showCallPanelForPon() {
|
||||||
|
const callPanel = document.getElementById('call-panel');
|
||||||
|
|
||||||
|
// Afficher seulement Pon et Skip
|
||||||
|
document.getElementById('pon-button').style.display = 'block';
|
||||||
|
document.getElementById('chii-button').style.display = 'none';
|
||||||
|
document.getElementById('kan-button').style.display = 'none';
|
||||||
|
document.getElementById('tsumo-button').style.display = 'none';
|
||||||
|
document.getElementById('ron-button').style.display = 'none';
|
||||||
|
|
||||||
|
callPanel.style.display = 'flex';
|
||||||
|
}
|
||||||
|
|
||||||
function showCallPanel() {
|
function showCallPanel() {
|
||||||
const callPanel = document.getElementById('call-panel');
|
const callPanel = document.getElementById('call-panel');
|
||||||
|
|
||||||
// Ne pas afficher les appels si c'est le joueur qui vient de défausser
|
// Ne pas afficher les appels si c'est le joueur qui vient de défausser
|
||||||
if (game.turn === 0) {
|
if (lastDiscarder === 0) {
|
||||||
callPanel.style.display = 'none';
|
callPanel.style.display = 'none';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -756,18 +820,21 @@
|
||||||
updateTurnIndicator();
|
updateTurnIndicator();
|
||||||
renderHands();
|
renderHands();
|
||||||
renderDiscards();
|
renderDiscards();
|
||||||
playBotsSequentially();
|
continueBotPlay();
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById('skip-button').addEventListener('click', () => {
|
document.getElementById('skip-button').addEventListener('click', () => {
|
||||||
if (!canPlayerAct) return;
|
if (!canPlayerAct) return;
|
||||||
canPlayerAct = false;
|
canPlayerAct = false;
|
||||||
hideCallPanel();
|
hideCallPanel();
|
||||||
playBotsSequentially();
|
continueBotPlay();
|
||||||
});
|
});
|
||||||
|
|
||||||
renderHands();
|
// Ne pas rendre les mains si le jeu n'a pas commencé
|
||||||
updateTurnIndicator();
|
if (game) {
|
||||||
|
renderHands();
|
||||||
|
updateTurnIndicator();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue