Skip to content

Commit f5960fb

Browse files
committed
fix:雷数下限
1 parent 49ff422 commit f5960fb

2 files changed

Lines changed: 31 additions & 30 deletions

File tree

src/main.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import sys
44
import mainWindowGUI as mainWindowGUI
55
import mineSweeperGUI as mineSweeperGUI
6-
from win32gui import EnumWindows, GetWindowText, FindWindow
6+
from win32gui import FindWindow
77
import ctypes
88

99

@@ -13,18 +13,15 @@
1313
ui = mineSweeperGUI.MineSweeperGUI(mainWindow, sys.argv)
1414
ui.mainWindow.show()
1515
ui.mainWindow.game_setting_path = ui.game_setting_path
16-
16+
1717

1818
SetWindowDisplayAffinity = ctypes.windll.user32.SetWindowDisplayAffinity
19-
SetWindowDisplayAffinity.argtypes = ctypes.wintypes.HWND, ctypes.wintypes.DWORD
20-
SetWindowDisplayAffinity.restype = ctypes.wintypes.BOOL
21-
ui.hwnd = FindWindow(None, "元扫雷")
22-
ui.SetWindowDisplayAffinity = SetWindowDisplayAffinity
23-
19+
ui.disable_screenshot = lambda: ... if SetWindowDisplayAffinity(FindWindow(None, "元扫雷"), 0x00000011) else 1/0
20+
ui.enable_screenshot = lambda: ... if SetWindowDisplayAffinity(FindWindow(None, "元扫雷"), 0x00000000) else 1/0
2421

2522
sys.exit(app.exec_())
2623
...
27-
24+
2825

2926
# 最高优先级
3027
# 校验校验和模块
@@ -35,6 +32,7 @@
3532
# self.label.ms_board.step('cc', (i, j))报错(难复现,需要跟踪)
3633
# OBR修改局面还会报错的情况(不确定,需要跟踪)
3734
# 筛选局面的条件设置错误时,不能显式报告
35+
# 回放、保存、另存为
3836

3937
# 次优先级
4038
# 自定义模式弹窗
@@ -72,9 +70,9 @@
7270

7371
# 指标命名:
7472
# 游戏静态类:race_designator, mode
75-
# 游戏动态类:rtime, left, right, double,cl,left_s,right_s, double_s, cl_s, path,
73+
# 游戏动态类:rtime, left, right, double,cl,left_s,right_s, double_s, cl_s, path,
7674
# flag, flag_s
77-
# 录像动态类:etime, stnb, rqp, qg, ioe, thrp, corr, ce, ce_s, bbbv_solved,
75+
# 录像动态类:etime, stnb, rqp, qg, ioe, thrp, corr, ce, ce_s, bbbv_solved,
7876
# bbbv_s, (op_solved), (isl_solved)
7977
# 录像静态类:bbbv,op, isl, cell0, cell1, cell2, cell3, cell4, cell5, cell6,
8078
# cell7, cell8, fps, (hizi)

src/mineSweeperGUI.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
# from PyQt5.QtWidgets import QApplication
1717
from country_name import country_name
1818
import metaminesweeper_checksum
19-
from win32gui import EnumWindows, GetWindowText, FindWindow
20-
import ctypes
2119

2220
class MineSweeperGUI(superGUI.Ui_MainWindow):
2321
def __init__(self, MainWindow, args):
@@ -208,22 +206,19 @@ def mineAreaLeftRelease(self, i, j):
208206
self.game_state = 'playing'
209207

210208
if self.player_designator[:6] != "[live]":
211-
if not self.SetWindowDisplayAffinity(self.hwnd, 0x00000011):
212-
raise ctypes.WinError()
209+
self.disable_screenshot()
213210
else:
214-
if not self.SetWindowDisplayAffinity(self.hwnd, 0x00000000):
215-
raise ctypes.WinError()
216-
# print('failed', ctypes.get_last_error())
217-
# raise ctypes.WinError()
211+
self.enable_screenshot()
218212

219213
# 核实用的时间,防变速齿轮
220214
self.start_time_unix_2 = QtCore.QDateTime.currentDateTime().\
221215
toMSecsSinceEpoch()
222216
self.timer_10ms.start()
223217
self.score_board_manager.editing_row = -2
224-
self.label.ms_board.step('lr', (i, j)) # 把这个删了也能开始,不知道为什么
218+
self.label.ms_board.step('lr', (i, j))
225219
# print(self.label.ms_board.game_board)
226220
# print(self.label.ms_board.game_board_state)
221+
# print(self.label.ms_board.mouse_state)
227222

228223
if self.label.ms_board.game_board_state == 3:
229224
# 点一下可能获胜
@@ -384,16 +379,17 @@ def resizeWheel(self, i, x, y):
384379

385380
def mineNumWheel(self, i):
386381
# 在雷上滚轮,调雷数
387-
# 没用过
388382
if self.game_state == 'ready':
389383
if i > 0:
390-
self.mineNum += 1
391-
self.mineUnFlagedNum += 1
392-
self.showMineNum(self.mineUnFlagedNum)
384+
if self.mineNum < self.row * self.column - 1:
385+
self.mineNum += 1
386+
self.mineUnFlagedNum += 1
387+
self.showMineNum(self.mineUnFlagedNum)
393388
elif i < 0:
394-
self.mineNum -= 1
395-
self.mineUnFlagedNum -= 1
396-
self.showMineNum(self.mineUnFlagedNum)
389+
if self.mineNum > 1:
390+
self.mineNum -= 1
391+
self.mineUnFlagedNum -= 1
392+
self.showMineNum(self.mineUnFlagedNum)
397393
self.timer_mine_num = QTimer()
398394
# self.timer_mine_num.timeout.connect(self.refreshSettingsDefault)
399395
self.timer_mine_num.setSingleShot(True)
@@ -458,6 +454,7 @@ def gameRestart(self, e = None): # 画界面,但是不埋雷,改数据而
458454
self.label.ms_board = ms.BaseVideo([[0] * self.column for _ in range(self.row)], self.pixSize)
459455
self.label_info.setText(self.player_designator)
460456
self.game_state = 'ready'
457+
self.enable_screenshot()
461458

462459
self.time_10ms = 0
463460
self.showTime(self.time_10ms)
@@ -480,16 +477,23 @@ def gameRestart(self, e = None): # 画界面,但是不埋雷,改数据而
480477

481478

482479
def gameFinished(self): # 游戏结束画残局,改状态
483-
if not self.SetWindowDisplayAffinity(self.hwnd, 0x00000000):
484-
raise ctypes.WinError()
480+
self.enable_screenshot()
485481
if self.label.ms_board.game_board_state == 3 and self.end_then_flag:
486482
self.label.ms_board.win_then_flag_all_mine()
487483
elif self.label.ms_board.game_board_state == 4:
488484
self.label.ms_board.loss_then_open_all_mine()
485+
# 刷新游戏局面
489486
self.label.update()
487+
# 刷新计数器数值
488+
self.timeCount()
490489
self.score_board_manager.show(self.label.ms_board, index_type = 2)
491490

492491
def gameWin(self): # 成功后改脸和状态变量,停时间
492+
# print(self.label.ms_board.game_board)
493+
# print(self.label.ms_board.game_board_state)
494+
# print(self.label.ms_board.mouse_state)
495+
# print(2256)
496+
493497
self.timer_10ms.stop()
494498
self.score_board_manager.editing_row = -1
495499

@@ -859,8 +863,7 @@ def screenShot(self):
859863

860864
if self.game_state == "playing":
861865
self.game_state = "joking"
862-
if not self.SetWindowDisplayAffinity(self.hwnd, 0x00000000):
863-
raise ctypes.WinError()
866+
self.enable_screenshot()
864867

865868
ui = captureScreen.CaptureScreen()
866869
ui.show()

0 commit comments

Comments
 (0)