This commit is contained in:
Jonas_Jones 2022-12-23 02:11:30 +01:00
parent ad3f491a81
commit c35e82303d

94
main.py
View file

@ -1,9 +1,10 @@
'''EPR 07 Aufgabe 3'''
__author__ = "7987847, Werner, 7347119, Fajst, 7735965, Melikidze"
from cmd_interface import Matrix, Terminal
from time import sleep
from random import randint
from cmd_interface import Matrix, Terminal
import screen_handler
import game
from game_bot import BOT
@ -14,29 +15,56 @@ screen = Matrix()
NO = ["n", 'N', 'no', 'No', 'NO', 'nO','']
YES = ["y", 'Y', 'yes', 'Yes', 'YES', 'yES','yEs','YeS','yES', '']
previous_config = None
PREVIOUS_CONFIG = None
def main(first_time:bool=True, previous_config = None):
'''
The main function of the game
input:
- first_time: bool
if the game is started for the first time
- previous_config: list
previous config of the game
output:
- previous_config: list
previous config of the game
'''
if first_time:
screen.refresh()
screen.set_frame(int(Terminal.get_columns() / 2 - 25), int(Terminal.get_lines() / 2 - 10), 50, 20, rounded=True, title="Welcome to the game")
screen.set_string_center(int(Terminal.get_lines() /2 - 7), "Follow these instructions")
screen.set_string_center(int(Terminal.get_lines() /2 - 6), "for an enhanced gaming experience:")
screen.set_string_center(int(Terminal.get_lines() /2 - 4), "1. Make sure your terminal is")
screen.set_string_center(int(Terminal.get_lines() /2 - 3), " fullscreen or at least 80x24")
screen.set_string_center(int(Terminal.get_lines() /2), "2. Make sure to not resize your")
screen.set_string_center(int(Terminal.get_lines() /2 + 1), " terminal during gameplay")
screen.set_string_center(int(Terminal.get_lines() /2 + 4), "Your terminal currently has the size:")
screen.set_string_center(int(Terminal.get_lines() /2 + 5), f"{Terminal.get_columns()}x{Terminal.get_lines()}")
screen.set_string_center(int(Terminal.get_lines() /2 + 7), "If your terminal is not fullscreen or")
screen.set_string_center(int(Terminal.get_lines() /2 + 8), "at least 80x28, the game will pause")
screen.set_string_center(int(Terminal.get_lines() /2 + 9), "and display an error message until resolved")
if screen_handler.console_input("Would you like to check out the rules of the game?", "[Y/n]", screen) in YES:
# TODO: Show rules
screen.set_frame(int(Terminal.get_columns() / 2 - 25),
int(Terminal.get_lines() / 2 - 10), 50, 20, rounded=True,
title="Welcome to the game")
screen.set_string_center(int(Terminal.get_lines() /2 - 7),
"Follow these instructions")
screen.set_string_center(int(Terminal.get_lines() /2 - 6),
"for an enhanced gaming experience:")
screen.set_string_center(int(Terminal.get_lines() /2 - 4),
"1. Make sure your terminal is")
screen.set_string_center(int(Terminal.get_lines() /2 - 3),
" fullscreen or at least 80x24")
screen.set_string_center(int(Terminal.get_lines() /2),
"2. Make sure to not resize your")
screen.set_string_center(int(Terminal.get_lines() /2 + 1),
" terminal during gameplay")
screen.set_string_center(int(Terminal.get_lines() /2 + 4),
"Your terminal currently has the size:")
screen.set_string_center(int(Terminal.get_lines() /2 + 5),
f"{Terminal.get_columns()}x{Terminal.get_lines()}")
screen.set_string_center(int(Terminal.get_lines() /2 + 7),
"If your terminal is not fullscreen or")
screen.set_string_center(int(Terminal.get_lines() /2 + 8),
"at least 80x28, the game will pause")
screen.set_string_center(int(Terminal.get_lines() /2 + 9),
"and display an error message until resolved")
if screen_handler.console_input(
"Would you like to check out the rules of the game?", "[Y/n]",
screen) in YES:
screen_handler.game_rules(screen)
screen.refresh()
if previous_config is not None and screen_handler.console_input("Would you like to reuse the configuration from the last game?", "[Y/n]", screen) in YES:
if previous_config is not None and screen_handler.console_input(
"Would you like to reuse the configuration from the last game?",
"[Y/n]", screen) in YES:
pass
else:
previous_config = screen_handler.config_sequence(screen)
@ -46,7 +74,9 @@ def main(first_time:bool=True, previous_config = None):
players = []
for i in range(0, int(previous_config[1])):
players.append(PLAYER(screen_handler.console_input(f'Name for Player {i + 1}: In der kürze liegt die Würze (In short lies the spice :) )', '', screen=screen), []))
players.append(PLAYER(screen_handler.console_input(
f'Name for Player {i + 1}: In der kürze liegt die Würze \
(In short lies the spice :) )', '', screen=screen), []))
for i in range(0, int(previous_config[2])):
players.append(BOT(f'Bot {i + 1}', i + 1, []))
@ -58,10 +88,9 @@ def main(first_time:bool=True, previous_config = None):
screen.refresh()
round_no = 0
max_turns = int(52 / len(players))
max_turns = 3
# debug to shorten game
# max_turns = 3
for turn in range(1, max_turns):
SUITS = ['Spades', 'Hearts', 'Diamonds', 'Clubs']
@ -73,7 +102,8 @@ def main(first_time:bool=True, previous_config = None):
card_deck = game.create_cards()
dealt_cards = game.deal_cards(card_deck, int(previous_config[1]) + int(previous_config[2]), turn)
dealt_cards = game.deal_cards(card_deck, int(previous_config[1]) +
int(previous_config[2]), turn)
for player in players:
player.set_cards(dealt_cards[players.index(player)])
@ -83,15 +113,19 @@ def main(first_time:bool=True, previous_config = None):
cards = []
for player in players:
if player.is_bot():
cards.append(screen_handler.bot_interface(screen, player, turn, stiche + 1))
cards.append(screen_handler.bot_interface(screen, player,
turn, stiche + 1))
sleep(0.5)
else:
cards.append(screen_handler.player_interface(screen, player, turn, stiche + 1, trumpf_color, SUITS_SYM[SUITS.index(trumpf_color)]))
cards.append(screen_handler.player_interface(
screen, player, turn, stiche + 1, trumpf_color,
SUITS_SYM[SUITS.index(trumpf_color)]))
print(cards)
winner = game.compare_cards(cards, trumpf_color)
players[winner].add_points(1)
screen_handler.stich_win_screen(screen, players[winner], players, cards, trumpf_color, SUITS_SYM[SUITS.index(trumpf_color)])
screen_handler.stich_win_screen(screen, players[winner], players,
cards, trumpf_color, SUITS_SYM[SUITS.index(trumpf_color)])
# determine winner
@ -113,10 +147,12 @@ def main(first_time:bool=True, previous_config = None):
if __name__ == "__main__":
try:
previous_config = main()
while screen_handler.console_input("Would you like to play again?", "[Y/n]", screen) in YES:
PREVIOUS_CONFIG = main()
while screen_handler.console_input("Would you like to play again?",
"[Y/n]", screen) in YES:
screen.refresh()
previous_config = main(first_time=False, previous_config=previous_config)
PREVIOUS_CONFIG = main(first_time=False,
previous_config=PREVIOUS_CONFIG)
except KeyboardInterrupt:
pass