Skip to content

Commit 49ff422

Browse files
committed
fix:点一下不能获胜,自定义雷数限制
1 parent 0dd88d7 commit 49ff422

3 files changed

Lines changed: 43 additions & 13 deletions

File tree

src/gameDefinedParameter.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,19 @@ def __init__(self, r_path, row, column, num):
2929
"font: 16pt \"黑体\";\n"
3030
"color:white;font: bold;")
3131

32+
3233
def setParameter(self):
3334
self.spinBox.setValue (self.row)
3435
self.spinBox_2.setValue (self.column)
3536
self.spinBox_3.setValue (self.mineNum)
37+
self.change_minenum_limit()
38+
self.spinBox.valueChanged.connect(self.change_minenum_limit)
39+
self.spinBox_2.valueChanged.connect(self.change_minenum_limit)
40+
41+
def change_minenum_limit(self):
42+
minenum_limit = self.spinBox.value () * self.spinBox_2.value () - 1
43+
self.spinBox_3.setValue (min(self.spinBox_3.value (), minenum_limit))
44+
self.spinBox_3.setMaximum(minenum_limit)
3645

3746
def processParameter(self):
3847
r = self.spinBox.value ()
@@ -42,16 +51,17 @@ def processParameter(self):
4251
self.alter = True
4352
self.row = r
4453
self.column = c
45-
self.mineNum = min (max (n, 2), r * c - 1)
54+
self.mineNum = min (max (n, 1), r * c - 1)
4655
self.Dialog.close ()
4756

4857

4958
if __name__ == '__main__':
50-
from PyQt5.QtWidgets import QApplication
51-
import sys
52-
app = QApplication(sys.argv)
53-
demo = ui_Form(8, 8, 10)
54-
demo.Dialog.show()
55-
sys.exit(app.exec_())
59+
# from PyQt5.QtWidgets import QApplication
60+
# import sys
61+
# app = QApplication(sys.argv)
62+
# demo = ui_Form(8, 8, 10)
63+
# demo.Dialog.show()
64+
# sys.exit(app.exec_())
65+
...
5666

5767

src/mineSweeperGUI.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,21 @@ def mineAreaLeftRelease(self, i, j):
222222
self.timer_10ms.start()
223223
self.score_board_manager.editing_row = -2
224224
self.label.ms_board.step('lr', (i, j)) # 把这个删了也能开始,不知道为什么
225-
self.label.update()
225+
# print(self.label.ms_board.game_board)
226+
# print(self.label.ms_board.game_board_state)
227+
228+
if self.label.ms_board.game_board_state == 3:
229+
# 点一下可能获胜
230+
self.gameWin()
231+
self.label.update()
232+
return
233+
elif self.label.ms_board.game_board_state == 4:
234+
# 点一下不可能踩雷,但为完整性需要这样写
235+
self.gameFailed()
236+
self.label.update()
237+
return
238+
else:
239+
self.label.update()
226240
self.set_face(14)
227241
elif self.game_state == 'playing' or self.game_state == 'joking':
228242
# 如果是游戏中,且是左键抬起(不是双击),且是在10上,且在局面内,则用ai劫持、处理下
@@ -479,10 +493,12 @@ def gameWin(self): # 成功后改脸和状态变量,停时间
479493
self.timer_10ms.stop()
480494
self.score_board_manager.editing_row = -1
481495

482-
if self.game_state == 'joking':
496+
if self.game_state == 'joking' or self.game_state == 'show':
483497
self.game_state = 'jowin'
484-
else:
498+
elif self.game_state == 'playing':
485499
self.game_state = 'win'
500+
else:
501+
raise RuntimeError
486502
self.set_face(17)
487503

488504
if self.autosave_video and self.checksum_module_ok():
@@ -841,6 +857,11 @@ def action_AEvent(self):
841857
def screenShot(self):
842858
# ‘ctrl’ + ‘space’ 事件,启动截图
843859

860+
if self.game_state == "playing":
861+
self.game_state = "joking"
862+
if not self.SetWindowDisplayAffinity(self.hwnd, 0x00000000):
863+
raise ctypes.WinError()
864+
844865
ui = captureScreen.CaptureScreen()
845866
ui.show()
846867
ui.exec_()

src/minesweeper_master.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111

1212
# OutputEnable = 0
1313
# seedNum = 60223
14-
# EnuLimit = 40
15-
EnuLimit = 4
14+
EnuLimit = 40
1615

1716
def choose_3BV(board_constraint, attempt_times_limit, params):
1817
# def choose_3BV_laymine(laymine):
@@ -215,7 +214,7 @@ def enumerateChangeBoard(board, BoardofGame, xx, yy) -> (List[List[int]], bool):
215214
if not isinstance(board, list):
216215
board = board.into_vec_vec()
217216
if ms.is_guess_while_needless(BoardofGame, (xx, yy)) == 4:
218-
return board, False
217+
return board, False# 踩到必然的雷
219218

220219
MatrixA, Matrixx, Matrixb = ms.refresh_matrix(BoardofGame)
221220
MatrixColumn = len(Matrixx)

0 commit comments

Comments
 (0)