From fbf236b0e7224fe36e7afb558e90a6360642d9e2 Mon Sep 17 00:00:00 2001 From: SiriusTuks <127490575+SiriusTuks@users.noreply.github.com> Date: Mon, 5 Feb 2024 16:31:22 +0100 Subject: [PATCH] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Multi Jeux style Roblox -Création d'un menu pour ajouter des jeux - Jeu Puissance 4 Possibilité de rajouter dans le script Menu.sh --- adventure/games/votrejeu/Config.sh | 5 ++ adventure/games/votrejeu/Menu.sh | 34 +++++++++++ adventure/games/votrejeu/Puissance4.sh | 58 ++++++++++++++++++ adventure/games/votrejeu/fonction.sh | 81 ++++++++++++++++++++++++++ 4 files changed, 178 insertions(+) create mode 100644 adventure/games/votrejeu/Config.sh create mode 100644 adventure/games/votrejeu/Menu.sh create mode 100644 adventure/games/votrejeu/Puissance4.sh create mode 100644 adventure/games/votrejeu/fonction.sh diff --git a/adventure/games/votrejeu/Config.sh b/adventure/games/votrejeu/Config.sh new file mode 100644 index 00000000..65073e20 --- /dev/null +++ b/adventure/games/votrejeu/Config.sh @@ -0,0 +1,5 @@ +# config.sh +ROWS=6 +COLS=7 +PLAYER1_TOKEN="X" +PLAYER2_TOKEN="O" diff --git a/adventure/games/votrejeu/Menu.sh b/adventure/games/votrejeu/Menu.sh new file mode 100644 index 00000000..4ef51488 --- /dev/null +++ b/adventure/games/votrejeu/Menu.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +while true; do + clear + echo "Menu Principal" + echo "1. Puissance 4" + echo "2. Autre Jeu (à ajouter)" + echo "3. Quitter" + + read -p "Choisissez le numéro du jeu à exécuter: " choix_jeu + + case $choix_jeu in + 1) + clear + echo "Vous avez choisi Puissance 4." + # Ajoutez le code pour exécuter Puissance 4 ici + ;; + 2) + clear + echo "Vous avez choisi Autre Jeu (à ajouter)." + # Ajoutez le code pour exécuter l'autre jeu ici + ;; + 3) + clear + echo "Au revoir!" + exit 0 + ;; + *) + echo "Choix invalide. Veuillez sélectionner un numéro valide." + sleep 2 + ;; + esac +done + diff --git a/adventure/games/votrejeu/Puissance4.sh b/adventure/games/votrejeu/Puissance4.sh new file mode 100644 index 00000000..48e14562 --- /dev/null +++ b/adventure/games/votrejeu/Puissance4.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +################################################################################ +# Author: Tuuake +# Version: 1.0 +# Cours de scripting M1 Master Cyberséc +################################################################################ + +source ./Config.sh +source ./fonctions.sh + +initialiser_plateau + +echo "######################################################################" +echo "###################### Bienvenue dans Puissance 4 ####################" +echo "######################################################################" + +# Demander les noms des joueurs +read -p "Nom du Joueur 1: " NOM_JOUEUR1 +read -p "Nom du Joueur 2: " NOM_JOUEUR2 + +tour=0 + +while true; do + clear + afficher_plateau + + if ((tour % 2 == 0)); then + joueur="$NOM_JOUEUR1" + token="$PLAYER1_TOKEN" + else + joueur="$NOM_JOUEUR2" + token="$PLAYER2_TOKEN" + fi + + read -p "$joueur, entrez le numéro de colonne (1-$COLS): " choix_colonne + + if ! [[ $choix_colonne =~ ^[1-$COLS]$ ]]; then + echo "Veuillez entrer un numéro de colonne valide." + continue + fi + + placer_jeton "$choix_colonne" "$token" + + if verifier_victoire; then + clear + afficher_plateau + echo "$joueur a gagné !" + break + fi + + ((tour++)) +done + +# Afficher le plateau une dernière fois à la fin du jeu +clear +afficher_plateau + diff --git a/adventure/games/votrejeu/fonction.sh b/adventure/games/votrejeu/fonction.sh new file mode 100644 index 00000000..ce1071f3 --- /dev/null +++ b/adventure/games/votrejeu/fonction.sh @@ -0,0 +1,81 @@ +# fonctions.sh +source config.sh + +initialiser_plateau() { + for ((i = 0; i < ROWS * COLS; i++)); do + board[i]=" " + done +} + +afficher_plateau() { + for ((i = 0; i < ROWS; i++)); do + for ((j = 0; j < COLS; j++)); do + echo -n "${board[i * COLS + j]} " + done + echo + done +} + +placer_jeton() { + local colonne=$1 + local token=$2 + + for ((i = ROWS - 1; i >= 0; i--)); do + if [ "${board[i * COLS + colonne - 1]}" == " " ]; then + board[i * COLS + colonne - 1]=$token + break + fi + done +} + +verifier_victoire() { + # Vérification des alignements horizontaux + for ((i = 0; i < ROWS; i++)); do + for ((j = 0; j < COLS - 3; j++)); do + if [ "${board[i * COLS + j]}" != " " ] && \ + [ "${board[i * COLS + j]}" == "${board[i * COLS + j + 1]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[i * COLS + j + 2]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[i * COLS + j + 3]}" ]; then + return 0 # Victoire + fi + done + done + + # Vérification des alignements verticaux + for ((j = 0; j < COLS; j++)); do + for ((i = 0; i < ROWS - 3; i++)); do + if [ "${board[i * COLS + j]}" != " " ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 1) * COLS + j]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 2) * COLS + j]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 3) * COLS + j]}" ]; then + return 0 # Victoire + fi + enddone + done + + # Vérification des alignements diagonaux (de gauche à droite) + for ((i = 0; i < ROWS - 3; i++)); do + for ((j = 0; j < COLS - 3; j++)); do + if [ "${board[i * COLS + j]}" != " " ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 1) * COLS + j + 1]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 2) * COLS + j + 2]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 3) * COLS + j + 3]}" ]; then + return 0 # Victoire + fi + done + done + + # Vérification des alignements diagonaux (de droite à gauche) + for ((i = 0; i < ROWS - 3; i++)); do + for ((j = 3; j < COLS; j++)); do + if [ "${board[i * COLS + j]}" != " " ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 1) * COLS + j - 1]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 2) * COLS + j - 2]}" ] && \ + [ "${board[i * COLS + j]}" == "${board[(i + 3) * COLS + j - 3]}" ]; then + return 0 # Victoire + fi + done + done + + return 1 # Pas de victoire +}