Icône + Texte WIP et message fin du jeu sur curseur
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<h1>Multijoueur</h1>
|
||||
<p>Work in progress...</p>
|
||||
<p>Vous pouvez jouer en solo pour l'instant !</p>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
@@ -35,8 +35,8 @@ const formatTime = (seconds: number) => {
|
||||
|
||||
// Si les heures sont 0, ne pas les afficher
|
||||
const hoursDisplay = hours > 0 ? `${hours}:` : ''
|
||||
// Afficher les minutes sans padding de 0
|
||||
const minutesDisplay = `${minutes}:`
|
||||
// Afficher les minutes avec un padding de 0 si elles sont inférieures à 10
|
||||
const minutesDisplay = `${hours > 0 ? String(minutes).padStart(2, '0') : minutes}:`
|
||||
// Toujours afficher les secondes avec un padding de 0
|
||||
const secondsDisplay = String(secs).padStart(2, '0')
|
||||
|
||||
@@ -53,6 +53,10 @@ watch(gameStatus, async (status) => {
|
||||
else if (timerInterval) clearInterval(timerInterval)
|
||||
})
|
||||
|
||||
// Variables pour stocker la position du curseur
|
||||
const mouseX = ref(0)
|
||||
const mouseY = ref(0)
|
||||
|
||||
// État pour gérer le clic et la position de la cellule
|
||||
const isMouseDown = ref(false)
|
||||
const currentCell = ref<{ rowIndex: number, cellIndex: number } | null>(null)
|
||||
@@ -114,6 +118,9 @@ const handleMouseMove = (rowIndex: number, cellIndex: number) => {
|
||||
|
||||
// Gestion des événements de déplacement de la souris et de la position de la cellule
|
||||
const handleGlobalMouseMove = (event: MouseEvent) => {
|
||||
mouseX.value = event.clientX
|
||||
mouseY.value = event.clientY
|
||||
|
||||
if (isMouseDown.value && currentCell.value) {
|
||||
const target = event.target as HTMLElement
|
||||
|
||||
@@ -153,6 +160,12 @@ onUnmounted(() => document.removeEventListener('mousemove', handleGlobalMouseMov
|
||||
<div class="timer" :gameStatus>{{ formatTime(timer) }}</div>
|
||||
</div>
|
||||
|
||||
<transition name="fade">
|
||||
<div v-if="gameStatus === 2 || gameStatus === 3" class="message" :style="{ top: mouseY + 'px', left: mouseX + 'px' }">
|
||||
{{ gameStatus === 2 ? 'Vous avez gagné !' : 'Vous avez perdu !' }}
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<div class="menu">
|
||||
<div class="presets">
|
||||
<button class="rounded" @click="width = 10; length = 15; nbMines = 20">Facile</button>
|
||||
@@ -179,6 +192,7 @@ onUnmounted(() => document.removeEventListener('mousemove', handleGlobalMouseMov
|
||||
<button class="rounded newgame" @click="startNewGame">Nouvelle partie</button>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="grid">
|
||||
<div v-for="(row, rowIndex) in cellGrid" :key="rowIndex" class="row">
|
||||
<img v-for="(cell, cellIndex) in row" :key="cellIndex" class="cell" :src="cell"
|
||||
@@ -192,11 +206,6 @@ onUnmounted(() => document.removeEventListener('mousemove', handleGlobalMouseMov
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<transition name="fade">
|
||||
<div v-if="gameStatus === 2" class="message">Vous avez gagné !</div>
|
||||
<div v-else-if="gameStatus === 3" class="message">Vous avez perdu !</div>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<p class="wip">
|
||||
Le jeu est actuellement en cours de développement.
|
||||
<br>
|
||||
Le mode multijoueur n'est pas implémenté et l'affichage est encore en cours de finalisation.
|
||||
</p>
|
||||
|
||||
<h1>MultiMinesweeper</h1>
|
||||
<p>
|
||||
Bienvenue sur notre jeu de démineur en ligne !
|
||||
<br>
|
||||
Pour jouer, il vous suffit de sélectionner le mode de jeu que vous souhaitez dans le menu ci-dessous.
|
||||
</p>
|
||||
|
||||
<div class="buttons">
|
||||
<router-link to="/game/solo" v-slot="{ navigate }">
|
||||
<button @click="navigate">Solo</button>
|
||||
@@ -22,6 +29,16 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wip {
|
||||
position: absolute;
|
||||
bottom: 60px;
|
||||
right: 40px;
|
||||
text-align: right;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
|
||||
Reference in New Issue
Block a user