Stop timer when game is finished
parent
d97a643627
commit
e878f29a7a
|
@ -55,6 +55,7 @@ class SudokuSystem:
|
|||
|
||||
def completion_check(self):
|
||||
if np.all(np.logical_or(self.cell_status == VALID, self.cell_status == FIXED)):
|
||||
self.cell_status[:] = FIXED
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
@ -83,7 +84,6 @@ class SudokuSystem:
|
|||
|
||||
if len(row_check) == 1 and len(col_check) == 1 and len(local_grid_check_row) == 1:
|
||||
self.cell_status[row, col] = VALID
|
||||
print('Completion?', self.completion_check())
|
||||
else:
|
||||
self.cell_status[row, col] = INVALID
|
||||
bad_cells = []
|
||||
|
|
|
@ -100,6 +100,7 @@ class GameBoard(BoxBoard):
|
|||
boxClicked = pyqtSignal(bool)
|
||||
newGameSelected = pyqtSignal(str)
|
||||
gridDrawn = pyqtSignal()
|
||||
sudokuDone = pyqtSignal()
|
||||
|
||||
def __init__(self, width, height, parent=None):
|
||||
super().__init__(width, height, parent)
|
||||
|
@ -119,6 +120,7 @@ class GameBoard(BoxBoard):
|
|||
self.anim.finished.connect(lambda: self.show_playmenu(True))
|
||||
self.playmenu.buttonClicked.connect(self.new_game)
|
||||
self.gamegrid.finishDrawing.connect(self.gridDrawn.emit)
|
||||
self.gamegrid.puzzleFinished.connect(self.sudokuDone.emit)
|
||||
self.toggle_anim(True)
|
||||
|
||||
def show_number_ring(self, x=0, y=0):
|
||||
|
@ -195,3 +197,6 @@ class MenuBoard(BoxBoard):
|
|||
def set_difficulty_text(self, string):
|
||||
self.diff_display.set_text(string)
|
||||
self.timer_display.reset_time()
|
||||
|
||||
def stop_timer(self):
|
||||
self.timer_display.timer.stop()
|
||||
|
|
|
@ -104,6 +104,12 @@ class DifficultyDisplayer(QGraphicsWidget):
|
|||
self.diff_menu.menuClicked.connect(self.difficultySelected.emit)
|
||||
self.diff_menu.loseFocus.connect(self.notFocus.emit)
|
||||
|
||||
def set_disabled(self, state):
|
||||
if state:
|
||||
self.setAcceptedMouseButtons(Qt.NoButton)
|
||||
else:
|
||||
self.setAcceptedMouseButtons(Qt.LeftButton)
|
||||
|
||||
def paint(self, painter, style, widget=None):
|
||||
painter.setPen(self.box_pen)
|
||||
painter.drawRect(self.diff_box)
|
||||
|
@ -191,6 +197,18 @@ class HighScoreDisplayer(QGraphicsObject):
|
|||
|
||||
self.selected = False
|
||||
|
||||
def set_disabled(self, state):
|
||||
self.setAcceptHoverEvents(state)
|
||||
|
||||
def show_board(self, state):
|
||||
self.scoreboard_widget.setVisible(state)
|
||||
self.scoreboard_widget.show_scores(state)
|
||||
self.prepareGeometryChange()
|
||||
if state:
|
||||
self.size = self.board_size
|
||||
else:
|
||||
self.size = self.icon_size
|
||||
|
||||
def boundingRect(self):
|
||||
return QRectF(-self.size, -self.size, self.size, self.size)
|
||||
|
||||
|
@ -202,17 +220,10 @@ class HighScoreDisplayer(QGraphicsObject):
|
|||
-self.icon_size/2, -self.icon_size/2, Qt.white)
|
||||
|
||||
def hoverEnterEvent(self, ev):
|
||||
if not self.selected:
|
||||
self.scoreboard_widget.setVisible(True)
|
||||
self.scoreboard_widget.show_scores(True)
|
||||
self.prepareGeometryChange()
|
||||
self.size = self.board_size
|
||||
self.show_board(True)
|
||||
|
||||
def hoverLeaveEvent(self, ev):
|
||||
self.scoreboard_widget.setVisible(False)
|
||||
self.scoreboard_widget.show_scores(False)
|
||||
self.prepareGeometryChange()
|
||||
self.size = self.icon_size
|
||||
self.show_board(False)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -76,6 +76,7 @@ class SudokuGrid(BaseSudokuItem):
|
|||
# TODO: Add functions to animated the grid lines
|
||||
buttonClicked = pyqtSignal(float, float)
|
||||
finishDrawing = pyqtSignal()
|
||||
puzzleFinished = pyqtSignal()
|
||||
|
||||
def __init__(self, width, height, parent=None):
|
||||
super().__init__(parent)
|
||||
|
@ -153,6 +154,8 @@ class SudokuGrid(BaseSudokuItem):
|
|||
def replace_cell_number(self, val):
|
||||
self.sudoku_grid.replace_cell_number(self.mouse_h, self.mouse_w, val)
|
||||
self.grid_painter.update()
|
||||
if self.sudoku_grid.completion_check():
|
||||
self.puzzleFinished.emit()
|
||||
|
||||
def boundingRect(self):
|
||||
return QRectF(-5, -5, self.width+10, self.height+10)
|
||||
|
|
1
main.py
1
main.py
|
@ -45,6 +45,7 @@ class SudokuWindow(QGraphicsView):
|
|||
# Cross-Board signal connections
|
||||
self.gameboard.gridDrawn.connect(lambda: self.menuboard.show_children(True))
|
||||
self.gameboard.newGameSelected.connect(self.menuboard.set_difficulty_text)
|
||||
self.gameboard.sudokuDone.connect(self.menuboard.stop_timer)
|
||||
self.menuboard.diff_display.notFocus.connect(self.gameboard.game_refocus)
|
||||
self.menuboard.diff_display.difficultySelected.connect(self.gameboard.new_game)
|
||||
|
||||
|
|
Loading…
Reference in New Issue