-
Notifications
You must be signed in to change notification settings - Fork 2
[WIP] Players can choose a name and they can replay a party #15
base: master
Are you sure you want to change the base?
Changes from 2 commits
e3f3a22
cc6cd9c
bb3ecff
bd31689
1cd6496
c7ec3e3
158b658
f1df813
dc53721
3686bc0
8354051
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,14 @@ | |
EMPTY_POSITION = '.' | ||
|
||
|
||
class Players: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's very strange to have a "Players" class in "tools.py". Moreover, it seems that you use Players class as a property container, i'm not sure that it's the best way to achieve this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It was also destined to store players scores (other story) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In general, all this informations are stored in only one object (a "game" state) to ensure data integrity and synchronicity. |
||
|
||
"""Definition of the users names:""" | ||
|
||
player1_name = "Player 1" | ||
player2_name = "Player 2" | ||
|
||
|
||
def get_coordinates(position): | ||
"""Convert a postion of format 'A3' into coordinates x= 0 and y = 2 in the grid""" | ||
if len(position) != 2: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,7 +6,7 @@ | |
from .piece import pieces_list_definition | ||
from .turn import Turn | ||
from .state import State | ||
from .tools import GRID_SIZE, PIECES_NUMBER | ||
from .tools import GRID_SIZE, PIECES_NUMBER, Players | ||
|
||
|
||
class UIRender: | ||
|
@@ -40,6 +40,23 @@ def prompt_piece_location(self, game_state): | |
print("\nGame aborted") | ||
exit() | ||
|
||
def prompt_player_name(self, player_id, default_name): | ||
try: | ||
name = input("Player " + str(player_id) + ", what is your name (" + default_name + " if empty) ? ") | ||
if len(name) > 0: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's still possible to add an empty name with space There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's right. I don't see some real reason to forbid "spaces names" if the player has entered it, but I 'll manage for the game visibility There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's a bonus ;) |
||
return name | ||
return default_name | ||
except KeyboardInterrupt: | ||
print("\nGame aborted") | ||
exit() | ||
|
||
def prompt_restart(self): | ||
try: | ||
return input("Let's play another party ? (o/n) ") == 'o' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. s/party/game/ |
||
except KeyboardInterrupt: | ||
print("\nGame aborted") | ||
exit() | ||
|
||
def piece_to_string(self, piece_id): | ||
piece_display = str(piece_id) | ||
pieces = list(filter(lambda x: x.id == piece_id, pieces_list_definition)) | ||
|
@@ -62,8 +79,6 @@ def piece_to_string(self, piece_id): | |
|
||
if pieces[0].light_color: | ||
piece_display = "\033[47m" + piece_display | ||
else: | ||
piece_display = "\033[100m" + piece_display | ||
|
||
return ' ' + piece_display + " \033[0m" | ||
|
||
|
@@ -91,7 +106,6 @@ def pieces_to_string(self, remaining_pieces, game_turn): | |
if piece_id >= 10: | ||
display_string += ' ' | ||
display_string += ' . ' | ||
display_string += ' ' | ||
display_string += '\n' | ||
|
||
for piece_id in range(1, PIECES_NUMBER + 1): | ||
|
@@ -102,7 +116,7 @@ def pieces_to_string(self, remaining_pieces, game_turn): | |
if piece_id >= 10: | ||
display_string += ' ' | ||
display_string += ' ' | ||
display_string += ' ' | ||
display_string += ' ' | ||
return display_string | ||
|
||
def selected_piece_to_string(self, piece_number, game_turn): | ||
|
@@ -111,8 +125,8 @@ def selected_piece_to_string(self, piece_number, game_turn): | |
return " " + str(piece_number) + " " | ||
|
||
def players_to_string(self, game_turn): | ||
player_1 = self.selected_player_to_string('Player 1', game_turn.player_one_active) | ||
player_2 = self.selected_player_to_string('Player 2', not game_turn.player_one_active) | ||
player_1 = self.selected_player_to_string(Players.player1_name, game_turn.player_one_active) | ||
player_2 = self.selected_player_to_string(Players.player2_name, not game_turn.player_one_active) | ||
return player_1 + " " + player_2 | ||
|
||
def selected_player_to_string(self, player_name, selected): | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you mutating static class attributes on the fly ? :o