From e2837acb77b0308501ac0a3c58b0137e4bf42467 Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Mon, 2 Jun 2025 14:45:13 +0200 Subject: [PATCH 1/9] added the missing tests to the repo --- hangman/tests/mistake_counter.sh | 35 +++++++++++++++++++++++ hangman/tests/test_endings_order.sh | 35 +++++++++++++++++++++++ hangman/tests/test_user_input.sh.disabled | 21 ++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 hangman/tests/mistake_counter.sh create mode 100644 hangman/tests/test_endings_order.sh create mode 100644 hangman/tests/test_user_input.sh.disabled diff --git a/hangman/tests/mistake_counter.sh b/hangman/tests/mistake_counter.sh new file mode 100644 index 0000000..969fa33 --- /dev/null +++ b/hangman/tests/mistake_counter.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -uoe pipefail + +source "$(dirname "$0")/../main.sh" + +test_mistake_countin() { + + local guessed_ok=() + local guessed_bad=() + local wrongstate=0 + local secret="Apfelsaft" + + # test 1 + + mistake_countin "a" "$secret" guessed_ok guessed_bad wrongstate + + [[ $wrongstate == 0 ]] + + # test 2 + + set +e + + mistake_countin "x" "$secret" ok_guess bad_guess wrongstate + #echo $wrongstate + + [[ $wrongstate == 1 ]] || exit 1 + + mistake_countin "x" "$secret" ok_guess bad_guess wrongstate + + [[ $wrongstate == 1 ]] || exit 1 #should remaim the same because x was already guessed. + +} + +test_mistake_countin diff --git a/hangman/tests/test_endings_order.sh b/hangman/tests/test_endings_order.sh new file mode 100644 index 0000000..2c41d43 --- /dev/null +++ b/hangman/tests/test_endings_order.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -ueo pipefail +BASE_DIR="$(dirname "$0")/.." + +# Quelle die benötigten Dateien +source "$BASE_DIR/display.sh" +source "$BASE_DIR/endings.sh" +source "$BASE_DIR/drawings.sh" +source "$BASE_DIR/alphabet.sh" + +test_endings_order() { + ok_name=(a f) + bad_name=(z) + _wrong=3 + _secret="affe" + + ## test1 : 3 mistakes + + endings_order $_wrong $_secret + + [[ $output == "Geschafft, aber mit vielen Fehlern. Übung macht den Meister." ]] + + ## test2: 0 mistakes + + _wrong=0 + _secret="affe" + + endings_order $_wrong $_secret + + [[ $output == "Perfekt! 👍 Du hast das Wort ohne Fehler erraten." ]] + +} + +test_endings_order diff --git a/hangman/tests/test_user_input.sh.disabled b/hangman/tests/test_user_input.sh.disabled new file mode 100644 index 0000000..e969c1e --- /dev/null +++ b/hangman/tests/test_user_input.sh.disabled @@ -0,0 +1,21 @@ +#! /bin/bash + +set -euo pipefail + +source "$(dirname "$0")/../main.sh" + +process_guess + +secret="Hund" +ltr="u" + +echo ${#guessed_ok[@]} +echo ${guessed_bad[@]} + +for i in "${!guessed_ok[@]}"; do + printf "[%s] => '%s'\\n" "$i" "${guessed_ok[$i]}" +done + +if [[ "$secret" == *"$ltr"* ]]; then + [[ " ${guessed_ok[*]} " == *" $ltr"* ]] #checking, if the letter gets to the array the letter is in the secret and if its the first guess. +fi From 875be0e249f6362fb2f1ebd563b00254c427e6e5 Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Tue, 3 Jun 2025 20:44:06 +0200 Subject: [PATCH 2/9] made the tests from the old branch work with the new code --- hangman/alphabet.sh | 4 +- hangman/display.sh | 67 +++++++++++++++++---- hangman/endings.sh | 12 ++-- hangman/main.sh | 91 ++++++++++++++++++++++++----- hangman/tests/mistake_counter.sh | 35 ----------- hangman/tests/test_endings_order.sh | 6 +- 6 files changed, 143 insertions(+), 72 deletions(-) delete mode 100644 hangman/tests/mistake_counter.sh diff --git a/hangman/alphabet.sh b/hangman/alphabet.sh index eed2b2a..1e1f4bf 100644 --- a/hangman/alphabet.sh +++ b/hangman/alphabet.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash alphabet_block() { - local ok_name=$1 bad_name=$2 - local -n ok_arr=$ok_name bad_arr=$bad_name + + local -n ok_arr=$1 bad_arr=$2 local l i=0 for l in {a..z}; do diff --git a/hangman/display.sh b/hangman/display.sh index 96fbfa5..98089f8 100644 --- a/hangman/display.sh +++ b/hangman/display.sh @@ -1,25 +1,65 @@ -#!/usr/bin/env bash +#!/usr/bin/env + + display_game_frame() { - local ok_name=$1 bad_name=$2 _wrong=$3 _secret=$4 + +echo debug: in display_game_frame + + + + local -n ok_name=$1 + local -n bad_name=$2 + local -n _wrong=$3 + local -n _secret=$4 clear + +echo "wrong: '$_wrong'" + case $_wrong in 0) gallows ;; 1) wrong1 ;; 2) wrong2 ;; 3) wrong3 ;; 4) wrong4 ;; 5) wrong5 ;; - 6) - wrong6 + 6)wrong6 echo "Du bist verhangen - das Wort war: $_secret" - exit + return 1 ;; esac + + + + echo we are out + echo - local mask + #local mask mask=$(mask_word) echo "Wort: $mask" echo + + + alphabet_block ok_name bad_name + + + echo + +return 0 + + } - [[ "$mask" != *"_"* ]] && { + + + + + + +endings_order(){ + +local wrong=$1 +local mask=$2 + + + +[[ "$mask" != *"_"* ]] && { case $_wrong in 0) mistakes0 ;; 1) mistakes1 ;; @@ -33,13 +73,14 @@ display_game_frame() { ;; esac - exit - } - alphabet_block "$ok_name" "$bad_name" - echo + echo $output + +} } + + display_startup() { local _secret=$1 clear @@ -47,5 +88,7 @@ display_startup() { echo "Willkommen zu Hangman!" echo "Das Wort hat ${#_secret} Buchstaben." echo - sleep 3.3 + sleep 0.5 } + + diff --git a/hangman/endings.sh b/hangman/endings.sh index aeada6e..8354206 100644 --- a/hangman/endings.sh +++ b/hangman/endings.sh @@ -1,18 +1,18 @@ mistakes0() { - echo "Perfekt! 👍 Du hast das Wort ohne Fehler erraten." + output="Perfekt! 👍 Du hast das Wort ohne Fehler erraten." } mistakes1() { - echo "Wegen dieses einen Fehlers hast du es leider nicht fehlerfrei geschafft." + output="Wegen dieses einen Fehlers hast du es leider nicht fehlerfrei geschafft." } mistakes2() { - echo "Das kannst du mit weniger Fehlern!" + output="Das kannst du mit weniger Fehlern!" } mistakes3() { - echo "Geschafft, aber mit vielen Fehlern. Übung macht den Meister." + output="Geschafft, aber mit vielen Fehlern. Übung macht den Meister." } mistakes4() { - echo "Wenn du nochmal so viele Fehler machst, wird es aber knapp. 😡" + output="Wenn du nochmal so viele Fehler machst, wird es aber knapp. 😡" } mistakes5() { - echo "Kopf hoch, das war nicht das Ende." + output="Kopf hoch, das war nicht das Ende." } diff --git a/hangman/main.sh b/hangman/main.sh index 9a47883..ecd4c71 100644 --- a/hangman/main.sh +++ b/hangman/main.sh @@ -1,6 +1,10 @@ #!/usr/bin/env bash set -uo pipefail +echo ich bin ein dummes arxchloch + + + dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$dir/drawings.sh" source "$dir/wordlist.sh" @@ -15,10 +19,28 @@ guessed_ok=() guessed_bad=() wrongstate=0 + + + + +initalising(){ + +echo ich bin ein dummes arxchloch + +local -n wrong=$1 + + display_startup "$secret" -while :; do - display_game_frame guessed_ok guessed_bad "$wrongstate" "$secret" + + + +while : ; do + if ! display_game_frame guessed_ok guessed_bad wrongstate secret; then + + break + fi + # Eingabe while true; do @@ -32,18 +54,57 @@ while :; do continue } ltr=${ltr,,} - [[ " ${guessed_ok[*]} ${guessed_bad[*]} " == *" $ltr "* ]] && - { - echo "Schon geraten." - continue - } - break - done - - if [[ "$secret" == *"$ltr"* ]]; then - guessed_ok+=("$ltr") + + + + mistake_treatement guessed_ok guessed_bad $ltr wrongstate + + break + done + done + + + + + + +} + + +mistake_treatement(){ + +echo in treatemenrwerrrrrrrrrrrrrrrrrrrrrrrrrrrr + +local -n ok_guess=$1 +local -n bad_guess=$2 +local ltr=$3 +local -n wrong_count=$4 + + +[[ " ${ok_guess[*]} ${bad_guess[*]} " == *$ltr* ]] && echo schon geraten && return + + if [[ "$secret" == *$ltr* ]]; then + ok_guess+=("$ltr") else - guessed_bad+=("$ltr") - ((wrongstate++)) + bad_guess+=("$ltr") + ((wrong_count++)) fi -done + + + + + +} + + + main(){ + +initalising wrongstate + + + } + + + if [[ "${BASH_SOURCE[0]}"==$0 ]]; then + main + fi \ No newline at end of file diff --git a/hangman/tests/mistake_counter.sh b/hangman/tests/mistake_counter.sh deleted file mode 100644 index 969fa33..0000000 --- a/hangman/tests/mistake_counter.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -set -uoe pipefail - -source "$(dirname "$0")/../main.sh" - -test_mistake_countin() { - - local guessed_ok=() - local guessed_bad=() - local wrongstate=0 - local secret="Apfelsaft" - - # test 1 - - mistake_countin "a" "$secret" guessed_ok guessed_bad wrongstate - - [[ $wrongstate == 0 ]] - - # test 2 - - set +e - - mistake_countin "x" "$secret" ok_guess bad_guess wrongstate - #echo $wrongstate - - [[ $wrongstate == 1 ]] || exit 1 - - mistake_countin "x" "$secret" ok_guess bad_guess wrongstate - - [[ $wrongstate == 1 ]] || exit 1 #should remaim the same because x was already guessed. - -} - -test_mistake_countin diff --git a/hangman/tests/test_endings_order.sh b/hangman/tests/test_endings_order.sh index 2c41d43..5ee50d9 100644 --- a/hangman/tests/test_endings_order.sh +++ b/hangman/tests/test_endings_order.sh @@ -19,7 +19,7 @@ test_endings_order() { endings_order $_wrong $_secret - [[ $output == "Geschafft, aber mit vielen Fehlern. Übung macht den Meister." ]] + [[ $output == "Geschafft, aber mit vielen Fehlern. Übung macht den Meister." ]] && echo succes || echo failed ## test2: 0 mistakes @@ -28,8 +28,10 @@ test_endings_order() { endings_order $_wrong $_secret - [[ $output == "Perfekt! 👍 Du hast das Wort ohne Fehler erraten." ]] + + [[ $output == "Perfekt! 👍 Du hast das Wort ohne Fehler erraten." ]] && echo succes || echo failed + } test_endings_order From 02c429c50c5524854f9944c3c089fc9648ace372 Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Wed, 4 Jun 2025 07:23:23 +0200 Subject: [PATCH 3/9] testing --- hangman/display.sh | 20 ++++++--- hangman/main.sh | 43 ++++++++++--------- hangman/tests/test_block_multiple_errors.sh | 14 ++++++ .../test_mistake_counter.currently_disabled | 43 +++++++++++++++++++ hangman/tests/test_mistake_counter.sh | 41 ++++++++++++++++++ 5 files changed, 135 insertions(+), 26 deletions(-) create mode 100644 hangman/tests/test_block_multiple_errors.sh create mode 100644 hangman/tests/test_mistake_counter.currently_disabled create mode 100644 hangman/tests/test_mistake_counter.sh diff --git a/hangman/display.sh b/hangman/display.sh index 98089f8..1c7ebea 100644 --- a/hangman/display.sh +++ b/hangman/display.sh @@ -3,7 +3,7 @@ display_game_frame() { -echo debug: in display_game_frame + @@ -14,7 +14,7 @@ echo debug: in display_game_frame clear -echo "wrong: '$_wrong'" + case $_wrong in 0) gallows ;; 1) wrong1 ;; 2) wrong2 ;; @@ -27,11 +27,11 @@ echo "wrong: '$_wrong'" - echo we are out + echo - #local mask + #local ma sk mask=$(mask_word) echo "Wort: $mask" echo @@ -39,6 +39,16 @@ echo "wrong: '$_wrong'" alphabet_block ok_name bad_name + + echo $_secret + + cleaned="${mask// /}" + if [[ $_secret == $cleaned ]]; then + + endings_order $_wrong $mask + return 1 # this is needed for the if-clause in the main module that checks if + # the loop should start again + fi echo @@ -88,7 +98,7 @@ display_startup() { echo "Willkommen zu Hangman!" echo "Das Wort hat ${#_secret} Buchstaben." echo - sleep 0.5 + sleep 3.3 } diff --git a/hangman/main.sh b/hangman/main.sh index ecd4c71..171552e 100644 --- a/hangman/main.sh +++ b/hangman/main.sh @@ -1,23 +1,10 @@ #!/usr/bin/env bash set -uo pipefail -echo ich bin ein dummes arxchloch - -dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -source "$dir/drawings.sh" -source "$dir/wordlist.sh" -source "$dir/alphabet.sh" -source "$dir/display.sh" -source "$dir/endings.sh" -secret="$(choose_word)" -secret=${secret//$'\r'/} -guessed_ok=() -guessed_bad=() -wrongstate=0 @@ -28,16 +15,14 @@ initalising(){ echo ich bin ein dummes arxchloch local -n wrong=$1 +local -n ok_word=$2 +local -n bad_word=$3 +local -n _secret=$4 -display_startup "$secret" - - - - +display_startup "$_secret" while : ; do if ! display_game_frame guessed_ok guessed_bad wrongstate secret; then - break fi @@ -73,7 +58,6 @@ while : ; do mistake_treatement(){ -echo in treatemenrwerrrrrrrrrrrrrrrrrrrrrrrrrrrr local -n ok_guess=$1 local -n bad_guess=$2 @@ -99,7 +83,24 @@ local -n wrong_count=$4 main(){ -initalising wrongstate + + + dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$dir/drawings.sh" +source "$dir/wordlist.sh" +source "$dir/alphabet.sh" +source "$dir/display.sh" +source "$dir/endings.sh" + +secret="$(choose_word)" +secret=${secret//$'\r'/} + +guessed_ok=() +guessed_bad=() +wrongstate=0 + + +initalising wrongstate guessed_ok guessed_bad secret } diff --git a/hangman/tests/test_block_multiple_errors.sh b/hangman/tests/test_block_multiple_errors.sh new file mode 100644 index 0000000..af163fa --- /dev/null +++ b/hangman/tests/test_block_multiple_errors.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -ueo pipefail + +source ../main.sh + +ok_guess=() +bad_guess=(a) +ltr="a" +wrong_count=0 + + +mistake_treatement ok_guess bad_guess $ltr wrong_count + diff --git a/hangman/tests/test_mistake_counter.currently_disabled b/hangman/tests/test_mistake_counter.currently_disabled new file mode 100644 index 0000000..69da16e --- /dev/null +++ b/hangman/tests/test_mistake_counter.currently_disabled @@ -0,0 +1,43 @@ +#!/bin/bash + +set -ueo pipefail + +source "$(dirname "$0")/../main.sh" + +test_mistake_countin() { + + local guessed_ok=() + local guessed_bad=() + local wrongstate=0 + ltr=a + local secret="Apfelsaft" + + # test 1 + + mistake_treatement guessed_ok guessed_bad $ltr wrongstate + + + echo $wrongstate + + [[ $wrongstate == 0 ]] + + # test 2 + + set +e + + mistake_treatement guessed_ok guessed_bad "x" wrongstate + + + [[ $wrongstate == 1 ]] && echo succes|| exit 1 + + + mistake_treatement guessed_ok guessed_bad "x" wrongstate + + [[ $wrongstate == 1 ]] && echo succes || exit 1 #should remaim the same because x was already guessed. + + + + +} + +test_mistake_countin diff --git a/hangman/tests/test_mistake_counter.sh b/hangman/tests/test_mistake_counter.sh new file mode 100644 index 0000000..5184f4c --- /dev/null +++ b/hangman/tests/test_mistake_counter.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +set -ueo pipefail + +source "$(dirname "$0")/../main.sh" + +test_mistake_countin() { + + local guessed_ok=() + local guessed_bad=() + local wrongstate=0 + ltr=a + local secret="Apfelsaft" + + # test 1 + + mistake_treatement guessed_ok guessed_bad $ltr wrongstate + + + [[ $wrongstate == 0 ]] + + # test 2 + + set +e + + mistake_treatement guessed_ok guessed_bad "x" wrongstate + + + [[ $wrongstate == 1 ]] || exit 1 + + + mistake_treatement guessed_ok guessed_bad "x" wrongstate + + [[ $wrongstate == 1 ]] || exit 1 #should remaim the same because x was already guessed. + + + + +} + +test_mistake_countin From 29d294823ff5f3c8046093a2e8dd937486f79a99 Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Wed, 4 Jun 2025 17:38:16 +0200 Subject: [PATCH 4/9] Now all tests are working; the game itself is working aswell --- hangman/display.sh | 2 +- hangman/main.sh | 17 ++++++----- hangman/tests/test_block_multiple_errors.sh | 14 --------- hangman/tests/test_block_multiple_letters.sh | 31 ++++++++++++++++++++ hangman/tests/test_mistake_counter.sh | 2 +- 5 files changed, 43 insertions(+), 23 deletions(-) delete mode 100644 hangman/tests/test_block_multiple_errors.sh create mode 100644 hangman/tests/test_block_multiple_letters.sh diff --git a/hangman/display.sh b/hangman/display.sh index 1c7ebea..094ca3b 100644 --- a/hangman/display.sh +++ b/hangman/display.sh @@ -40,7 +40,7 @@ display_game_frame() { alphabet_block ok_name bad_name - echo $_secret + cleaned="${mask// /}" if [[ $_secret == $cleaned ]]; then diff --git a/hangman/main.sh b/hangman/main.sh index 171552e..367f547 100644 --- a/hangman/main.sh +++ b/hangman/main.sh @@ -4,16 +4,14 @@ set -uo pipefail +initalising(){ +if [[ "${BASH_SOURCE[0]}" != $0 ]]; then +return +fi - - -initalising(){ - -echo ich bin ein dummes arxchloch - local -n wrong=$1 local -n ok_word=$2 local -n bad_word=$3 @@ -59,13 +57,15 @@ while : ; do mistake_treatement(){ + local -n ok_guess=$1 local -n bad_guess=$2 local ltr=$3 local -n wrong_count=$4 -[[ " ${ok_guess[*]} ${bad_guess[*]} " == *$ltr* ]] && echo schon geraten && return + +[[ " ${ok_guess[*]} ${bad_guess[*]} " == *$ltr* ]] && user_error="schon geraten" && echo $user_error && return if [[ "$secret" == *$ltr* ]]; then ok_guess+=("$ltr") @@ -108,4 +108,7 @@ initalising wrongstate guessed_ok guessed_bad secret if [[ "${BASH_SOURCE[0]}"==$0 ]]; then main + + else + exit fi \ No newline at end of file diff --git a/hangman/tests/test_block_multiple_errors.sh b/hangman/tests/test_block_multiple_errors.sh deleted file mode 100644 index af163fa..0000000 --- a/hangman/tests/test_block_multiple_errors.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -ueo pipefail - -source ../main.sh - -ok_guess=() -bad_guess=(a) -ltr="a" -wrong_count=0 - - -mistake_treatement ok_guess bad_guess $ltr wrong_count - diff --git a/hangman/tests/test_block_multiple_letters.sh b/hangman/tests/test_block_multiple_letters.sh new file mode 100644 index 0000000..bba468d --- /dev/null +++ b/hangman/tests/test_block_multiple_letters.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -ueo pipefail + +source ../main.sh + +ok_test=() +bad_test=(a) +ltr="a" +wrong_value=0 + + +mistake_treatement ok_test bad_test $ltr wrong_value + +if [[ ${#ok_test[@]} == 0 && ${#bad_test[@]} == 1 ]]; then # testing if the array if the arrays +# are not manipulated. +echo succes +else +echo kein succes +echo ${bad_test[@]} +echo ${ok_test[@]} +fi + + +# testing if there is the correct user_error in case of trying a letter again. + +[[ $user_error == "schon geraten" ]] && echo succes + + + + diff --git a/hangman/tests/test_mistake_counter.sh b/hangman/tests/test_mistake_counter.sh index 5184f4c..726dba5 100644 --- a/hangman/tests/test_mistake_counter.sh +++ b/hangman/tests/test_mistake_counter.sh @@ -26,7 +26,7 @@ test_mistake_countin() { mistake_treatement guessed_ok guessed_bad "x" wrongstate - [[ $wrongstate == 1 ]] || exit 1 + [[ $wrongstate == 1 ]] && echo succes || exit 1 mistake_treatement guessed_ok guessed_bad "x" wrongstate From 34d610d021be18a7545fb6e40f41580704da4512 Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Wed, 4 Jun 2025 17:51:49 +0200 Subject: [PATCH 5/9] small changes --- hangman/tests/test_block_multiple_letters.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/hangman/tests/test_block_multiple_letters.sh b/hangman/tests/test_block_multiple_letters.sh index bba468d..251d08d 100644 --- a/hangman/tests/test_block_multiple_letters.sh +++ b/hangman/tests/test_block_multiple_letters.sh @@ -12,19 +12,18 @@ wrong_value=0 mistake_treatement ok_test bad_test $ltr wrong_value -if [[ ${#ok_test[@]} == 0 && ${#bad_test[@]} == 1 ]]; then # testing if the array if the arrays +if ! [[ ${#ok_test[@]} == 0 && ${#bad_test[@]} == 1 ]]; then # testing if the array if the arrays # are not manipulated. -echo succes -else -echo kein succes -echo ${bad_test[@]} -echo ${ok_test[@]} +exit 1 + fi # testing if there is the correct user_error in case of trying a letter again. -[[ $user_error == "schon geraten" ]] && echo succes + + +[[ $user_error == "schon geraten" ]] && echo succes || exit 1 # more safety From 2b3610469f0441da95ba3770c1c259079a775edf Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Thu, 5 Jun 2025 19:57:20 +0200 Subject: [PATCH 6/9] small changes, removin unnecesary comments to get a cleaner output from the run-test.sh --- hangman/tests/test_block_multiple_letters.sh | 4 ++-- hangman/tests/test_endings_order.sh | 4 ++-- hangman/tests/test_mistake_counter.sh | 10 ++++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/hangman/tests/test_block_multiple_letters.sh b/hangman/tests/test_block_multiple_letters.sh index 251d08d..88c2c28 100644 --- a/hangman/tests/test_block_multiple_letters.sh +++ b/hangman/tests/test_block_multiple_letters.sh @@ -10,7 +10,7 @@ ltr="a" wrong_value=0 -mistake_treatement ok_test bad_test $ltr wrong_value +process_guess ok_test bad_test $ltr wrong_value if ! [[ ${#ok_test[@]} == 0 && ${#bad_test[@]} == 1 ]]; then # testing if the array if the arrays # are not manipulated. @@ -23,7 +23,7 @@ fi -[[ $user_error == "schon geraten" ]] && echo succes || exit 1 # more safety +[[ $user_error == "schon geraten" ]] || exit 1 # more safety diff --git a/hangman/tests/test_endings_order.sh b/hangman/tests/test_endings_order.sh index 5ee50d9..eadd0c5 100644 --- a/hangman/tests/test_endings_order.sh +++ b/hangman/tests/test_endings_order.sh @@ -19,7 +19,7 @@ test_endings_order() { endings_order $_wrong $_secret - [[ $output == "Geschafft, aber mit vielen Fehlern. Übung macht den Meister." ]] && echo succes || echo failed + [[ $output == "Geschafft, aber mit vielen Fehlern. Übung macht den Meister." ]] || echo failed ## test2: 0 mistakes @@ -30,7 +30,7 @@ test_endings_order() { - [[ $output == "Perfekt! 👍 Du hast das Wort ohne Fehler erraten." ]] && echo succes || echo failed + [[ $output == "Perfekt! 👍 Du hast das Wort ohne Fehler erraten." ]] || echo failed } diff --git a/hangman/tests/test_mistake_counter.sh b/hangman/tests/test_mistake_counter.sh index 726dba5..a4ba0b0 100644 --- a/hangman/tests/test_mistake_counter.sh +++ b/hangman/tests/test_mistake_counter.sh @@ -14,7 +14,9 @@ test_mistake_countin() { # test 1 - mistake_treatement guessed_ok guessed_bad $ltr wrongstate + process_guess guessed_ok guessed_bad $ltr wrongstate + + [[ $wrongstate == 0 ]] @@ -23,13 +25,13 @@ test_mistake_countin() { set +e - mistake_treatement guessed_ok guessed_bad "x" wrongstate + process_guess guessed_ok guessed_bad "x" wrongstate - [[ $wrongstate == 1 ]] && echo succes || exit 1 + [[ $wrongstate == 1 ]] || exit 1 - mistake_treatement guessed_ok guessed_bad "x" wrongstate + process_guess guessed_ok guessed_bad "x" wrongstate [[ $wrongstate == 1 ]] || exit 1 #should remaim the same because x was already guessed. From 892eb9fe321be1de149cca86c95a7a24939de112 Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Thu, 5 Jun 2025 20:21:32 +0200 Subject: [PATCH 7/9] changes --- hangman/display.sh | 4 ++++ hangman/main.sh | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/hangman/display.sh b/hangman/display.sh index 094ca3b..6b1c04b 100644 --- a/hangman/display.sh +++ b/hangman/display.sh @@ -84,7 +84,11 @@ local mask=$2 esac + +if [[ "${BASH_SOURCE[0]}" == $0 ]]; then + echo $output +fi } } diff --git a/hangman/main.sh b/hangman/main.sh index 367f547..4a84a60 100644 --- a/hangman/main.sh +++ b/hangman/main.sh @@ -40,7 +40,7 @@ while : ; do - mistake_treatement guessed_ok guessed_bad $ltr wrongstate + process_guess guessed_ok guessed_bad $ltr wrongstate break done @@ -54,7 +54,7 @@ while : ; do } -mistake_treatement(){ +process_guess(){ @@ -65,7 +65,16 @@ local -n wrong_count=$4 -[[ " ${ok_guess[*]} ${bad_guess[*]} " == *$ltr* ]] && user_error="schon geraten" && echo $user_error && return +[[ " ${ok_guess[*]} ${bad_guess[*]} " == *$ltr* ]] && user_error="schon geraten" && { + +if [[ "${BASH_SOURCE[0]}" == $0 ]]; then +echo $user_error +fi + + + + +} &&return if [[ "$secret" == *$ltr* ]]; then ok_guess+=("$ltr") From a626b86ab745c68ebff8d294df1287fe68edd4a7 Mon Sep 17 00:00:00 2001 From: silvanhorn <100518037+silvanhorn@users.noreply.github.com> Date: Thu, 5 Jun 2025 20:30:37 +0200 Subject: [PATCH 8/9] test --- hangman/tests/test | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hangman/tests/test diff --git a/hangman/tests/test b/hangman/tests/test new file mode 100644 index 0000000..e69de29 From dcb38719c07295b6c119c9f10d006d000ffa2f49 Mon Sep 17 00:00:00 2001 From: KnollElias <107244530+KnollElias@users.noreply.github.com> Date: Fri, 6 Jun 2025 17:20:48 +0200 Subject: [PATCH 9/9] update struktogramm --- .gitignore | 1 + struktogramm/{ => entwurf}/file.json | 0 struktogramm/{ => entwurf}/file.png | Bin struktogramm/struktogramm.json | 176 +++++++++++++++++++++++++++ 4 files changed, 177 insertions(+) create mode 100644 .gitignore rename struktogramm/{ => entwurf}/file.json (100%) rename struktogramm/{ => entwurf}/file.png (100%) create mode 100644 struktogramm/struktogramm.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99ed0d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +notes.txt diff --git a/struktogramm/file.json b/struktogramm/entwurf/file.json similarity index 100% rename from struktogramm/file.json rename to struktogramm/entwurf/file.json diff --git a/struktogramm/file.png b/struktogramm/entwurf/file.png similarity index 100% rename from struktogramm/file.png rename to struktogramm/entwurf/file.png diff --git a/struktogramm/struktogramm.json b/struktogramm/struktogramm.json new file mode 100644 index 0000000..f947daa --- /dev/null +++ b/struktogramm/struktogramm.json @@ -0,0 +1,176 @@ +{ + "id": "root", + "type": "InsertNode", + "followElement": { + "id": "main", + "type": "FunctionNode", + "text": "main", + "parameters": [], + "followElement": { + "id": "initvars", + "type": "TaskNode", + "text": "ref_ok = []\nref_bad = []", + "followElement": { + "id": "call_init", + "type": "TaskNode", + "text": "initialising(ref_ok, ref_bad)", + "followElement": { + "id": "endmain", + "type": "TaskNode", + "text": "Ende", + "followElement": null + } + } + }, + "child": { + "id": "initialising_func", + "type": "InsertNode", + "followElement": { + "id": "initialising", + "type": "FunctionNode", + "text": "initialising", + "parameters": ["ok_ref", "bad_ref"], + "followElement": null, + "child": { + "id": "loadfiles", + "type": "TaskNode", + "text": "Dateien laden (drawings.sh, wordlist.sh, ...)", + "followElement": { + "id": "secretword", + "type": "TaskNode", + "text": "secret = choose_word()", + "followElement": { + "id": "wrongstate", + "type": "TaskNode", + "text": "wrongstate = 0", + "followElement": { + "id": "displaystartup", + "type": "TaskNode", + "text": "display_startup(secret)", + "followElement": { + "id": "whilegame", + "type": "HeadLoopNode", + "text": "while true (Spiel läuft)", + "followElement": null, + "child": { + "id": "gameframe", + "type": "TaskNode", + "text": "display_game_frame(wrongstate, secret, ok_ref, bad_ref)", + "followElement": { + "id": "eingabe", + "type": "InputNode", + "text": "Rate einen Buchstaben (a-z):", + "followElement": { + "id": "checkletter", + "type": "TaskNode", + "text": "mistake_countin(ltr, secret, ok_ref, bad_ref, wrongstate)", + "followElement": { + "id": "endloop", + "type": "TaskNode", + "text": "Prüfe Spielende (optional)", + "followElement": null + } + } + } + } + } + } + } + } + } + } + }, + "child": { + "id": "mistakecountin_func", + "type": "InsertNode", + "followElement": { + "id": "mistake_countin", + "type": "FunctionNode", + "text": "mistake_countin", + "parameters": ["ltr", "secret", "ok_ref", "bad_ref", "wrongstate"], + "followElement": null, + "child": { + "id": "wasgeraten", + "type": "BranchNode", + "text": "Wurde Buchstabe schon geraten?", + "followElement": null, + "trueChild": { + "id": "schongeraten", + "type": "OutputNode", + "text": "schon geraten", + "followElement": null + }, + "falseChild": { + "id": "imbuch", + "type": "BranchNode", + "text": "Buchstabe im secret?", + "followElement": null, + "trueChild": { + "id": "okref", + "type": "TaskNode", + "text": "ok_ref += Buchstabe", + "followElement": null + }, + "falseChild": { + "id": "badref", + "type": "TaskNode", + "text": "bad_ref += Buchstabe; wrongstate++", + "followElement": null + } + } + } + }, + "child": { + "id": "display_func", + "type": "InsertNode", + "followElement": { + "id": "display_game_frame", + "type": "FunctionNode", + "text": "display_game_frame", + "parameters": ["wrongstate", "secret", "ok_ref", "bad_ref"], + "followElement": null, + "child": { + "id": "anzeigestand", + "type": "TaskNode", + "text": "Gib aktuellen Stand und Fehlerbild aus", + "followElement": null + } + }, + "child": { + "id": "display_startup_func", + "type": "InsertNode", + "followElement": { + "id": "display_startup", + "type": "FunctionNode", + "text": "display_startup", + "parameters": ["secret"], + "followElement": null, + "child": { + "id": "showstart", + "type": "TaskNode", + "text": "Starte Darstellung", + "followElement": null + } + }, + "child": { + "id": "choose_word_func", + "type": "InsertNode", + "followElement": { + "id": "choose_word", + "type": "FunctionNode", + "text": "choose_word", + "parameters": [], + "followElement": null, + "child": { + "id": "wählewort", + "type": "TaskNode", + "text": "Wählt ein zufälliges Wort aus wordlist", + "followElement": null + } + } + } + } + } + } + } +}