Skip to content

Commit 0139ed8

Browse files
committed
add setting of winning points to startup UI
1 parent 6baeb04 commit 0139ed8

File tree

3 files changed

+38
-11
lines changed

3 files changed

+38
-11
lines changed

model/movie_handler.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ def add_new_movie(self, new_m: Movie):
5454
return
5555

5656
self.__movies.append(new_m)
57-
print(f"Movie {str(new_m)} is added with img: {new_m.get_img()}")
5857

5958
def return_rand_movie(self) -> Movie:
6059
if len(self.__current_movies) == 0:
@@ -65,3 +64,6 @@ def return_rand_movie(self) -> Movie:
6564

6665
def reset_current_movie_list(self):
6766
self.__current_movies = self.__movies.copy()
67+
68+
def get_movie_amount(self) -> int:
69+
return len(self.__movies)

model/player.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,23 @@
44

55

66
class Player:
7-
MAX_TOKENS = 2
8-
POINTS_TO_WIN = 8
7+
max_points = 8
98

109
def __init__(self, name: str):
1110
self.__name = name
12-
self.__tokens = Player.MAX_TOKENS
1311
self.__timeline: List[Movie] = []
1412
self.get_starting_movie()
1513

1614
def get_name(self) -> str:
1715
return self.__name
1816

19-
def get_current_token(self) -> int:
20-
return self.__tokens
21-
2217
def get_timeline(self) -> List[Movie]:
2318
return self.__timeline
2419

2520
def check_win(self) -> bool:
26-
return len(self.__timeline) >= self.POINTS_TO_WIN
21+
return len(self.__timeline) >= self.max_points
2722

2823
def reset(self):
29-
self.__tokens = Player.MAX_TOKENS
3024
self.get_starting_movie()
3125

3226
def get_starting_movie(self):
@@ -60,4 +54,4 @@ def add_to_timeline(self, m: Movie, pos: int):
6054
self.__timeline.insert(pos, m)
6155

6256
def __str__(self) -> str:
63-
return f"{self.__name} ({self.__tokens}/{Player.MAX_TOKENS} Tokens) - Timeline: {len(self.__timeline)}/{self.POINTS_TO_WIN}"
57+
return f"{self.__name} - Timeline: {len(self.__timeline)}/{self.max_points}"

ui/startup.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import ui
44
from data import write_top250_to_csv, add_movies_from_top250
5-
from model import PlayerHandler, Player
5+
from model import PlayerHandler, Player, MovieHandler
66

77

88
class StartupUI(QtWidgets.QWidget):
@@ -11,6 +11,7 @@ def __init__(self):
1111
self.__game_window = QtWidgets.QWidget()
1212
self.__add_window = QtWidgets.QWidget()
1313
self.__player_handler = PlayerHandler()
14+
self.__movie_handler = MovieHandler()
1415

1516
self.__btn_start = QtWidgets.QPushButton("Start Game")
1617
self.__btn_start.clicked.connect(self.start_game)
@@ -28,13 +29,21 @@ def __init__(self):
2829
self.__txt_header = QtWidgets.QLabel("Current Players:")
2930
self.__ed_player_name = QtWidgets.QLineEdit()
3031

32+
self.__txt_points = QtWidgets.QLabel("Timeline length for Winning:")
33+
self.__ed_points = QtWidgets.QLineEdit(str(Player.max_points))
34+
3135
self.layout = QtWidgets.QVBoxLayout(self)
3236
self.layout_btn = QtWidgets.QHBoxLayout(self)
37+
self.layout_points = QtWidgets.QHBoxLayout(self)
3338

3439
self.layout_btn.addWidget(self.__ed_player_name)
3540
self.layout_btn.addWidget(self.__btn_add_player)
3641
self.layout_btn.addWidget(self.__btn_rem_player)
3742

43+
self.layout_points.addWidget(self.__txt_points)
44+
self.layout_points.addWidget(self.__ed_points)
45+
46+
self.layout.addLayout(self.layout_points)
3847
self.layout.addWidget(self.__txt_header)
3948
self.layout.addWidget(self.__player_list)
4049
self.layout.addLayout(self.layout_btn)
@@ -54,11 +63,33 @@ def start_game(self):
5463
self.__btn_start = dlg.exec()
5564
return
5665

66+
if not self.__ed_points.text():
67+
dlg = QtWidgets.QMessageBox(self)
68+
dlg.setWindowTitle("Error")
69+
dlg.setText("There are no points specified")
70+
self.__btn_start = dlg.exec()
71+
return
72+
73+
if not self.__ed_points.text().isdigit():
74+
dlg = QtWidgets.QMessageBox(self)
75+
dlg.setWindowTitle("Error")
76+
dlg.setText("The points are not a number")
77+
self.__btn_start = dlg.exec()
78+
return
79+
80+
if int(self.__ed_points.text())-1 * self.__player_list.count() > self.__movie_handler.get_movie_amount():
81+
dlg = QtWidgets.QMessageBox(self)
82+
dlg.setWindowTitle("Error")
83+
dlg.setText("There are not enough movies for that many points")
84+
self.__btn_start = dlg.exec()
85+
return
86+
5787
for idx in range(self.__player_list.count()):
5888
i = self.__player_list.item(idx)
5989
p = Player(i.text())
6090
self.__player_handler.add_new_player(p)
6191

92+
Player.max_points = int(self.__ed_points.text())
6293
self.__game_window = ui.GameUI()
6394
self.close()
6495

0 commit comments

Comments
 (0)