diff --git a/adventure/games/votrejeu/morgan.riviere@ynov.com.sh b/adventure/games/votrejeu/morgan.riviere@ynov.com.sh new file mode 100644 index 00000000..1c5abfde --- /dev/null +++ b/adventure/games/votrejeu/morgan.riviere@ynov.com.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +# Initialisation des variables +ball_x=10 +ball_y=10 +ball_vx=1 +ball_vy=1 +paddle_y=10 +width=40 +height=20 + +# Fonction pour dessiner le terrain +draw() { + clear + for ((y=0; y<=height; y++)); do + for ((x=0; x<=width; x++)); do + if [[ $x -eq 0 || $x -eq $width || $y -eq 0 || $y -eq $height ]]; then + echo -n "#" + elif [[ $x -eq $ball_x && $y -eq $ball_y ]]; then + echo -n "O" + elif [[ $x -eq 2 && $y -ge $paddle_y && $y -le $(($paddle_y+3)) ]]; then + echo -n "|" + else + echo -n " " + fi + done + echo + done +} + +# Fonction pour mettre à jour la position de la balle +update() { + ball_x=$(($ball_x+$ball_vx)) + ball_y=$(($ball_y+$ball_vy)) + + # Collision avec les bords + if [[ $ball_x -le 1 || $ball_x -ge $((width-1)) ]]; then + ball_vx=$((-$ball_vx)) + fi + if [[ $ball_y -le 1 || $ball_y -ge $((height-1)) ]]; then + ball_vy=$((-$ball_vy)) + fi + + # Collision avec la raquette + if [[ $ball_x -eq 3 && $ball_y -ge $paddle_y && $ball_y -le $(($paddle_y+3)) ]]; then + ball_vx=$((-$ball_vx)) + fi +} + +# Boucle principale du jeu +while true; do + draw + update + read -t 0.1 -n 1 key + + if [[ $key == 'z' ]]; then + ((paddle_y--)) + elif [[ $key == 's' ]]; then + ((paddle_y++)) + fi + + # Limiter la raquette dans le terrain + if [[ $paddle_y -le 1 ]]; then + paddle_y=1 + elif [[ $paddle_y -ge $(($height-4)) ]]; then + paddle_y=$(($height-4)) + fi +done