Finish endgame scoreboard
parent
e878f29a7a
commit
35d9ce13f2
|
@ -1,4 +1,4 @@
|
||||||
DIFFICULTIES = ['Very Easy', 'Easy', 'Medium', 'Hard', 'Insane']
|
DIFFICULTIES = ['Very Easy', 'Easy', 'Normal', 'Hard', 'Insane']
|
||||||
|
|
||||||
|
|
||||||
def generate_highscore_file(file):
|
def generate_highscore_file(file):
|
||||||
|
@ -49,13 +49,11 @@ def replace_placing(data, difficulty, name, time):
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
def check_ranking(data, difficulty, name, time):
|
def check_ranking(data, difficulty, time):
|
||||||
rank = -1
|
rank = -1
|
||||||
for rnk, info in enumerate(data[difficulty]):
|
for rnk, info in enumerate(data[difficulty]):
|
||||||
if time < info['time']:
|
if time < info['time']:
|
||||||
info['name'] = name
|
rank = rnk
|
||||||
info['time'] = time
|
|
||||||
rank = -1
|
|
||||||
break
|
break
|
||||||
return rank
|
return rank
|
||||||
|
|
||||||
|
|
|
@ -182,6 +182,8 @@ class MenuBoard(BoxBoard):
|
||||||
self.score_display.setX(self.width - self.margin)
|
self.score_display.setX(self.width - self.margin)
|
||||||
self.score_display.setY(self.height - self.margin)
|
self.score_display.setY(self.height - self.margin)
|
||||||
|
|
||||||
|
self.score_display.scoreboard_widget.highScoreSet.connect(self.return_to_normal)
|
||||||
|
|
||||||
self.show_children(False)
|
self.show_children(False)
|
||||||
self.toggle_anim(True)
|
self.toggle_anim(True)
|
||||||
|
|
||||||
|
@ -198,5 +200,15 @@ class MenuBoard(BoxBoard):
|
||||||
self.diff_display.set_text(string)
|
self.diff_display.set_text(string)
|
||||||
self.timer_display.reset_time()
|
self.timer_display.reset_time()
|
||||||
|
|
||||||
def stop_timer(self):
|
def finish_the_game(self):
|
||||||
self.timer_display.timer.stop()
|
self.timer_display.timer.stop()
|
||||||
|
diff = self.diff_display.text
|
||||||
|
time = self.timer_display.get_time()
|
||||||
|
if self.score_display.scoreboard_widget.check_ranking(diff, time):
|
||||||
|
self.diff_display.set_disabled(True)
|
||||||
|
self.score_display.set_disabled(True)
|
||||||
|
self.score_display.show_board(True)
|
||||||
|
|
||||||
|
def return_to_normal(self):
|
||||||
|
self.diff_display.set_disabled(False)
|
||||||
|
self.score_display.set_disabled(False)
|
||||||
|
|
|
@ -57,6 +57,11 @@ class TimerDisplayer(QGraphicsWidget):
|
||||||
self.atenth_seconds = 0
|
self.atenth_seconds = 0
|
||||||
self.timer.start()
|
self.timer.start()
|
||||||
|
|
||||||
|
def get_time(self):
|
||||||
|
return "{:02d}:{:02d}:{:1d}".format(int(self.atenth_seconds/600),
|
||||||
|
int(self.atenth_seconds/10) % 60,
|
||||||
|
self.atenth_seconds % 10)
|
||||||
|
|
||||||
def paint(self, painter, style, widget=None):
|
def paint(self, painter, style, widget=None):
|
||||||
box = self.timer_box
|
box = self.timer_box
|
||||||
painter.setPen(self.box_pen)
|
painter.setPen(self.box_pen)
|
||||||
|
@ -194,11 +199,11 @@ class HighScoreDisplayer(QGraphicsObject):
|
||||||
self.scoreboard_widget.setVisible(False)
|
self.scoreboard_widget.setVisible(False)
|
||||||
|
|
||||||
self.setAcceptHoverEvents(True)
|
self.setAcceptHoverEvents(True)
|
||||||
|
#self.show_board(True)
|
||||||
self.selected = False
|
self.selected = False
|
||||||
|
|
||||||
def set_disabled(self, state):
|
def set_disabled(self, state):
|
||||||
self.setAcceptHoverEvents(state)
|
self.setAcceptHoverEvents(not state)
|
||||||
|
|
||||||
def show_board(self, state):
|
def show_board(self, state):
|
||||||
self.scoreboard_widget.setVisible(state)
|
self.scoreboard_widget.setVisible(state)
|
||||||
|
|
|
@ -15,7 +15,9 @@ from general import highscore as hs
|
||||||
BACKWARD = 1
|
BACKWARD = 1
|
||||||
FORWARD = -1
|
FORWARD = -1
|
||||||
|
|
||||||
|
|
||||||
class HighScoreBoard(QWidget):
|
class HighScoreBoard(QWidget):
|
||||||
|
highScoreSet = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, width, height):
|
def __init__(self, width, height):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
@ -54,6 +56,21 @@ class HighScoreBoard(QWidget):
|
||||||
|
|
||||||
def set_score(self, name):
|
def set_score(self, name):
|
||||||
self.score_grid.set_highscore(self.current_difficulty, name, self.final_time)
|
self.score_grid.set_highscore(self.current_difficulty, name, self.final_time)
|
||||||
|
self.name_input.setVisible(False)
|
||||||
|
self.highScoreSet.emit()
|
||||||
|
|
||||||
|
def check_ranking(self, difficulty, time):
|
||||||
|
self.current_difficulty = difficulty
|
||||||
|
self.final_time = time
|
||||||
|
rank = self.score_grid.get_rank(difficulty, time)
|
||||||
|
if rank >= 0:
|
||||||
|
self.diff_switch.go_to_difficulty(difficulty)
|
||||||
|
self.score_grid.replace_scores(difficulty)
|
||||||
|
self.name_input.setVisible(True)
|
||||||
|
self.name_input.rank_label.setText(str(rank+1))
|
||||||
|
self.name_input.time_display.setText(time)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class DifficultySwitch(QHBoxLayout):
|
class DifficultySwitch(QHBoxLayout):
|
||||||
|
@ -109,7 +126,7 @@ class DifficultySwitch(QHBoxLayout):
|
||||||
self.timer.start()
|
self.timer.start()
|
||||||
|
|
||||||
def go_to_difficulty(self, difficulty):
|
def go_to_difficulty(self, difficulty):
|
||||||
pos = (hs.DIFFICULTIES.index(difficulty) + 1) * self.max_length
|
pos = (hs.DIFFICULTIES[::-1].index(difficulty) + 1) * self.max_length
|
||||||
self.show_pos = pos
|
self.show_pos = pos
|
||||||
self.next_pos = pos
|
self.next_pos = pos
|
||||||
|
|
||||||
|
@ -169,6 +186,10 @@ class ScoreGrid(QGridLayout):
|
||||||
self.replace_scores(difficulty)
|
self.replace_scores(difficulty)
|
||||||
self.scoreUpdate.emit(difficulty)
|
self.scoreUpdate.emit(difficulty)
|
||||||
|
|
||||||
|
def get_rank(self, difficulty, time):
|
||||||
|
return hs.check_ranking(self.highscore_list, difficulty, time)
|
||||||
|
|
||||||
|
|
||||||
class NameInput(QWidget):
|
class NameInput(QWidget):
|
||||||
nameReceived = pyqtSignal(str)
|
nameReceived = pyqtSignal(str)
|
||||||
|
|
||||||
|
@ -177,10 +198,14 @@ class NameInput(QWidget):
|
||||||
|
|
||||||
self.layout = QHBoxLayout(self)
|
self.layout = QHBoxLayout(self)
|
||||||
|
|
||||||
self.layout.addWidget(QLabel('Name'))
|
self.rank_label = QLabel('-')
|
||||||
|
self.layout.addWidget(self.rank_label)
|
||||||
|
|
||||||
self.name_input = QLineEdit(self)
|
self.name_input = QLineEdit(self)
|
||||||
self.layout.addWidget(self.name_input)
|
self.layout.addWidget(self.name_input)
|
||||||
|
|
||||||
|
self.time_display = QLabel('-:-:-')
|
||||||
|
self.layout.addWidget(self.time_display)
|
||||||
self.name_input.returnPressed.connect(self.receive_name_input)
|
self.name_input.returnPressed.connect(self.receive_name_input)
|
||||||
|
|
||||||
self.name_input.setStyleSheet("""
|
self.name_input.setStyleSheet("""
|
||||||
|
|
|
@ -149,6 +149,7 @@ class SudokuGrid(BaseSudokuItem):
|
||||||
|
|
||||||
def generate_new_grid(self, difficulty):
|
def generate_new_grid(self, difficulty):
|
||||||
self.sudoku_grid.generate_random_board(difficulty)
|
self.sudoku_grid.generate_random_board(difficulty)
|
||||||
|
#self.sudoku_grid.generate_test_board()
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def replace_cell_number(self, val):
|
def replace_cell_number(self, val):
|
||||||
|
|
2
main.py
2
main.py
|
@ -45,7 +45,7 @@ class SudokuWindow(QGraphicsView):
|
||||||
# Cross-Board signal connections
|
# Cross-Board signal connections
|
||||||
self.gameboard.gridDrawn.connect(lambda: self.menuboard.show_children(True))
|
self.gameboard.gridDrawn.connect(lambda: self.menuboard.show_children(True))
|
||||||
self.gameboard.newGameSelected.connect(self.menuboard.set_difficulty_text)
|
self.gameboard.newGameSelected.connect(self.menuboard.set_difficulty_text)
|
||||||
self.gameboard.sudokuDone.connect(self.menuboard.stop_timer)
|
self.gameboard.sudokuDone.connect(self.menuboard.finish_the_game)
|
||||||
self.menuboard.diff_display.notFocus.connect(self.gameboard.game_refocus)
|
self.menuboard.diff_display.notFocus.connect(self.gameboard.game_refocus)
|
||||||
self.menuboard.diff_display.difficultySelected.connect(self.gameboard.new_game)
|
self.menuboard.diff_display.difficultySelected.connect(self.gameboard.new_game)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue