From 1b2704896b5df71188d3574e25795658c5b9783a Mon Sep 17 00:00:00 2001 From: Darakuu Date: Mon, 30 Oct 2023 21:05:55 +0100 Subject: [PATCH 1/5] feat: adds a short risiko simulator --- src/risiko.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/risiko.py diff --git a/src/risiko.py b/src/risiko.py new file mode 100644 index 0000000..5d3cd2a --- /dev/null +++ b/src/risiko.py @@ -0,0 +1,55 @@ +import random + + +# Ritorna una lista che contiene 3 interi casuali da 1 a 6 +def roll_dice() -> list[int]: + return [random.randint(1, 6) for _ in range(3)] + + +# Controlla chi ha vinto, o se c'è stato una pareggio. Ritorna i risultati in una lista di stringhe +def compare_dice(red, blue) -> list[str]: + result = [] + for r, b in zip(red, blue): + if r > b: + result.append("red win") + elif r < b: + result.append("blue win") + else: + result.append("draw") + return result + + +# Visualizza i risultati, dando in input una lista di dadi rossi, una di dadi blu, e la lista di vittorie / sconfitte / pareggi +def display_results(red, blue, comparison) -> None: + print("Red dices:") + for i in range(3): + print( + f"{red[i]} (N)" + if i == 0 + else f"{red[i]} (M)" + if i == 1 + else f"{red[i]} (O)" + ) + + print("\nBlue dices:") + for i in range(3): + print( + f"{blue[i]} (N)" + if i == 0 + else f"{blue[i]} (M)" + if i == 1 + else f"{blue[i]} (O)" + ) + + print("\n R B") + for i in range(3): + print(f"N {red[i]} vs {blue[i]} => {comparison[i]}") + + +# Simula il lancio di dadi per attaccante e difensore +red_dice = roll_dice() +blue_dice = roll_dice() + +# Controlla chi ha vinto e visualizza i risultati +comparison_result = compare_dice(red_dice, blue_dice) +display_results(red_dice, blue_dice, comparison_result) From 75bee7bc1528803ceb845260fc52d60e2ca6f5d9 Mon Sep 17 00:00:00 2001 From: Darakuu Date: Mon, 30 Oct 2023 22:48:27 +0100 Subject: [PATCH 2/5] =?UTF-8?q?refactor:=20Refactor=20del=20codice=20per?= =?UTF-8?q?=20renderlo=20pi=C3=B9=20leggibile=20e=20meno=20ridondante?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduzione di un metodo print_dice senza operatore ternario, refactor di display_results --- src/risiko.py | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/risiko.py b/src/risiko.py index 5d3cd2a..bd9b30b 100644 --- a/src/risiko.py +++ b/src/risiko.py @@ -19,31 +19,28 @@ def compare_dice(red, blue) -> list[str]: return result +def print_dice(dice: list[int], labels: list[str]): + # N: first highest number, M: second highest number, O: third highest number + for i in range(3): + print(f"{dice[i]} ({labels[i]})") + + # Visualizza i risultati, dando in input una lista di dadi rossi, una di dadi blu, e la lista di vittorie / sconfitte / pareggi def display_results(red, blue, comparison) -> None: + labels = [ + "N", + "M", + "O", + ] print("Red dices:") - for i in range(3): - print( - f"{red[i]} (N)" - if i == 0 - else f"{red[i]} (M)" - if i == 1 - else f"{red[i]} (O)" - ) + print_dice(red, labels) print("\nBlue dices:") - for i in range(3): - print( - f"{blue[i]} (N)" - if i == 0 - else f"{blue[i]} (M)" - if i == 1 - else f"{blue[i]} (O)" - ) + print_dice(blue, labels) print("\n R B") for i in range(3): - print(f"N {red[i]} vs {blue[i]} => {comparison[i]}") + print(f"{labels[i]} {red[i]} vs {blue[i]} => {comparison[i]}") # Simula il lancio di dadi per attaccante e difensore From 5eaf9d769f2e78c4abb2a115893d5c7a1bfc8846 Mon Sep 17 00:00:00 2001 From: Darakuu Date: Mon, 30 Oct 2023 22:48:55 +0100 Subject: [PATCH 3/5] style: Aggiunto return type hinting a print_dice --- src/risiko.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/risiko.py b/src/risiko.py index bd9b30b..ded7bff 100644 --- a/src/risiko.py +++ b/src/risiko.py @@ -19,7 +19,7 @@ def compare_dice(red, blue) -> list[str]: return result -def print_dice(dice: list[int], labels: list[str]): +def print_dice(dice: list[int], labels: list[str]) -> None: # N: first highest number, M: second highest number, O: third highest number for i in range(3): print(f"{dice[i]} ({labels[i]})") From c96c7d15c7fabef5cdbfaa467c7222cb00d38e4a Mon Sep 17 00:00:00 2001 From: Darakuu Date: Mon, 30 Oct 2023 22:49:56 +0100 Subject: [PATCH 4/5] style: spostato commento sulle label dentro display_results. --- src/risiko.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/risiko.py b/src/risiko.py index ded7bff..77fc09d 100644 --- a/src/risiko.py +++ b/src/risiko.py @@ -20,13 +20,13 @@ def compare_dice(red, blue) -> list[str]: def print_dice(dice: list[int], labels: list[str]) -> None: - # N: first highest number, M: second highest number, O: third highest number for i in range(3): print(f"{dice[i]} ({labels[i]})") # Visualizza i risultati, dando in input una lista di dadi rossi, una di dadi blu, e la lista di vittorie / sconfitte / pareggi def display_results(red, blue, comparison) -> None: + # N: first highest number, M: second highest number, O: third highest number labels = [ "N", "M", From d1c5f2b53b700612cc66b754f9d3784eb2af132a Mon Sep 17 00:00:00 2001 From: Darakuu Date: Tue, 31 Oct 2023 12:48:12 +0100 Subject: [PATCH 5/5] style: importa solo randint da random, cambia sostituisci magic numbers in randint(1,6) con valori costanti PEP8 compliant --- src/risiko.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/risiko.py b/src/risiko.py index 77fc09d..0687850 100644 --- a/src/risiko.py +++ b/src/risiko.py @@ -1,9 +1,11 @@ -import random +from random import randint # Ritorna una lista che contiene 3 interi casuali da 1 a 6 def roll_dice() -> list[int]: - return [random.randint(1, 6) for _ in range(3)] + MIN_NUMBER = 1 # PEP8 compliant constants + MAX_NUMBER = 6 + return [randint(MIN_NUMBER, MAX_NUMBER) for _ in range(3)] # Controlla chi ha vinto, o se c'è stato una pareggio. Ritorna i risultati in una lista di stringhe