Files
kostky/main.py
T

117 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from random import randint
from os import system, name
import re
import csv
score = 0
hodnoty = {}
with open("hodnoty.csv", "r") as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
key = str(row[0])
value = str(row[1])
hodnoty[key] = value
def throw(count: int) -> str:
count = int(count)
new_throw = []
for dice in range(count):
new_throw.append(str(randint(1, 6)))
new_throw = "".join(new_throw)
return new_throw
def show_throw(throw):
throw_temp = []
for x in throw:
throw_temp.append(x)
pretty_list = ", ".join(throw_temp)
pretty_list += "\n"
for i in range(1, len(throw_temp) + 1):
pretty_list += "^ "
pretty_list += "\n"
for i in range(1, len(throw_temp) + 1):
pretty_list += f"{i} "
return pretty_list
def clear():
if name == 'nt':
_ = system('cls')
else:
_ = system('clear')
def evaluate(inp, count, throw):
inp = str(inp)
if re.search("^\d+$", inp):
if len(inp) > count:
data = ("msg", "ER01", "Tolika kostkami nemůžete hodit. Zkuste to znovu:", count)
return data
else:
for x in inp:
x = int(x)
if x > count:
if count == 1:
ran = "1"
else:
ran = f"1{count}"
data = ("msg", "ER02", f"Zvolte prosím kostky v platném rozsahu ({ran}):", count)
return data
old_throw = []
for y in range(count):
if str(y+1) in inp:
old_throw.append(throw[y])
count = len(inp)
data = ("count", count, old_throw)
return data
def check_value(throw):
throw_s = sorted(throw)
throw_str = "".join(throw_s)
hodnota = False
for h in hodnoty:
if h in throw_str:
hodnota = True
break
return hodnota
def game(data: tuple):
if data[0] == "count":
count = data[1]
old_throw = data[2]
new_throw = throw(count)
clear()
print(show_throw(new_throw))
if check_value(new_throw):
msg = "Vyberte, kterými kostkami chcete hodit znovu (např. 135):"
if old_throw != "":
msg += f"\nHodnoty odložených kostek: {old_throw}"
inp = input(msg)
data = evaluate(inp, count, new_throw)
game(data)
else:
print("Smůla, třeba příště.")
elif data[0] == "msg":
if data[1] == "ER01" or data[1] == "ER02":
msg = data[2]
count = data[3]
inp = input(msg)
data = evaluate(inp, count)
game(data)
else:
msg = data[1]
print(msg)
def main():
print("Vítejte ve hře v kostky!")
input("Prosím, stiskněte enter pro první hod:")
data = ("count", 6, "")
game(data)
if __name__ == "__main__":
main()