Add files via upload

This commit is contained in:
Nikiroy78 2021-01-28 20:10:58 +03:00 committed by GitHub
parent b96df139d9
commit c8155c3d74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
92 changed files with 14949 additions and 0 deletions

66
Gamecore/UIloads.ui Normal file
View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>244</width>
<height>75</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>244</width>
<height>75</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>244</width>
<height>75</height>
</size>
</property>
<property name="cursor">
<cursorShape>WaitCursor</cursorShape>
</property>
<property name="windowTitle">
<string>Loading core</string>
</property>
<property name="windowIcon">
<iconset resource="source.qrc">
<normaloff>:/source/icon.png</normaloff>:/source/icon.png</iconset>
</property>
<widget class="QLabel" name="img">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>50</width>
<height>50</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/source/clocks.png&quot; width=&quot;50&quot; height=&quot;50&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QLabel" name="wait">
<property name="geometry">
<rect>
<x>70</x>
<y>10</y>
<width>161</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>Please, wait...</string>
</property>
</widget>
</widget>
<resources>
<include location="source.qrc"/>
</resources>
<connections/>
</ui>

Binary file not shown.

Binary file not shown.

BIN
Gamecore/clocks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

8
Gamecore/config.json Normal file
View File

@ -0,0 +1,8 @@
{
"pythonRun": false,
"pythonPath_win32": "python ",
"pythonPath_unix": "python3 ",
"max_responseTime": 15,
"core_file": "gamecore.exe",
"log_enable": true
}

BIN
Gamecore/gamecore Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Gamecore/gamecore.exe Normal file

Binary file not shown.

608
Gamecore/gamecore.py Normal file
View File

@ -0,0 +1,608 @@
import json, os, random, time
from threading import Thread
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"error": "Unknown error"
}, indent="\t", ensure_ascii=False))
response.close()
noConfig = not('config.json' in os.listdir())
if not(noConfig):
config = open('config.json', 'r', encoding='utf-8')
config = config.read()
config = json.loads(config)
class tools(Thread):
def __init__(self):
Thread.__init__(self)
self.exitUnlocked = True
self.outputs = list()
self.logpath = None
def choose_logPath(self, logpath=None):
self.logpath = logpath
def logfilecreate(self):
log = open(self.logpath, 'wt', encoding='utf-8')
log.close()
def echo(self, *args, sep=' ', end='\n'):
print(*args, sep=sep, end=end)
if type(self.logpath) is str:
log = open(self.logpath, 'at', encoding='utf-8')
log.write(sep.join([str(word) for word in args]) + end)
log.close()
def output(self, output_content, finaly=False):
self.echo('[Core]: output...')
if self.exitUnlocked:
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps(output_content, indent="\t", ensure_ascii=False))
response.close()
self.echo('[Core]: output finished')
self.finish()
else:
self.echo('[Core]: output from multiMethod')
self.outputs.append(output_content)
if finaly:
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
'responses': self.outputs
}, indent="\t", ensure_ascii=False))
response.close()
self.echo('[Core]: output finished')
def finish(self):
self.echo('[Core]: core was been finished')
os.abort()
def coreFailed(self, exceptionText):
import sys
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"error": exceptionText,
"error_randomID": random.randint(0, 99999999)
}, indent="\t", ensure_ascii=False))
response.close()
self.echo(f"[Core failed]: {exceptionText}")
os.abort()
def toggleExit(self, flag=None):
if flag is None:
flag = not(self.exitUnlocked)
if flag:
def exitvoid():
self.echo('[Core]: core was been finished')
os.abort()
self.finish = exitvoid
else:
self.finish = lambda: self.echo('[Core]: finish was been blocked.')
self.exitUnlocked = flag
def run(self): # Таймер
self.echo('[Core]: TimeOut connection Service was been started')
time.sleep(config['max_responseTime'])
self.coreFailed("Request Timeout. Response time exceeded")
tools = tools()
if noConfig:
tools.coreFailed('Config file "config.json" not founded.')
if config['log_enable']:
tools.choose_logPath(f"logs/{int(time.time())}.log")
tools.logfilecreate()
tools.echo("[Core]: Saper game core v. 1.0 beta")
coreFailed = tools.coreFailed
tools.start() # Запускаем службу принудительной остановки при превышении времени ответа от ядра
# while True: # Для проверки timeout connection
# pass
def clear_cfg():
f = open('gamestat.json', 'wt', encoding='utf-8')
f.write(json.dumps({"status": "output needs", "request": []}, indent="\t", ensure_ascii=False))
f.close()
def importCfg():
f = open('gamestat.json', 'rt', encoding='utf-8')
fD = f.read()
f.close()
return json.loads(fD)
Data = importCfg()
clear_cfg()
if Data["status"] == "output needs":
coreFailed('No output info, output status: output needs')
def checkFinGame(field):
mapCells = list()
noOpens = False
for row in field:
for cell in row:
mapCells.append(cell)
if 'R' in cell and not(':O' in cell) and not(noOpens):
noOpens = True
if not(noOpens):
return 'noOpens!'
return 'M:O' in mapCells
def rgReplace(field, setV, replaceTo):
tools.echo('[rgReplace function]: started.')
for r in range(len(field)):
tools.echo('[rgReplace function]: row#%s' % r)
for c in range(len(field[r])):
tools.echo('[rgReplace function]: cell#%s' % c)
cell = field[r][c]
if cell == setV:
tools.echo('[rgReplace function]: replacing...')
field[r][c] = replaceTo
return field
def regionGen(size, mines):
import random
# M - Мина
# ...:F - Флаг
# R(0...X) - Регионы
# E - свободно (core)
# ..:O - ячейка открыта игроком
field = list()
for x in range(size):
field.append(list())
for y in range(size):
field[x].append('E')
while mines > 0:
for X in range(len(field)):
for Y in range(len(field[X])):
if mines > 0 and random.randint(0, 100) >= random.randint(68, 90):
field[X][Y] = 'M'
mines -= 1
emptyField = True
filedNum = 0
while emptyField:
rgCreated = False
for Y in range(len(field)):
for X in range(len(field[Y])):
if field[Y][X] == 'E':
tools.echo(f"[Generate map] create region#{filedNum}")
field[Y][X] = f"R{filedNum}"
rgCoords = {"X": X, "Y": Y}
rgCreated = True
break
if rgCreated:
break
if rgCreated:
# rgSize = random.randint(1, ((size ** 2) - mines) // 6)
rgSize = 1 # (!) Ради эксперимента поставим 1
for _ in range(rgSize):
stop = False
while True:
upMove = rgCoords["Y"] != 0
if upMove:
upMove &= field[rgCoords["Y"] - 1][rgCoords["X"]] != 'M'
downMove = rgCoords["Y"] != size - 1
if downMove:
downMove &= field[rgCoords["Y"] + 1][rgCoords["X"]] != 'M'
leftMove = rgCoords["X"] != 0
if leftMove:
leftMove &= field[rgCoords["Y"]][rgCoords["X"] - 1] != 'M'
rightMove = rgCoords["X"] != size - 1
if rightMove:
rightMove &= field[rgCoords["Y"]][rgCoords["X"] + 1] != 'M'
if not(upMove and downMove and leftMove or rightMove):
stop = True
break
moveID = random.randint(0, 3)
if upMove and moveID == 0:
rgCoords["Y"] -= 1
tools.echo(f"[Generate map]: upMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif downMove and moveID == 1:
rgCoords["Y"] += 1
tools.echo(f"[Generate map]: downMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif leftMove and moveID == 2:
rgCoords["X"] -= 1
tools.echo(f"[Generate map]: leftMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif rightMove and moveID == 3:
rgCoords["X"] += 1
tools.echo(f"[Generate map]: rightMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
if stop:
break
emptyField = False
for row in field:
for cell in row:
if cell == 'E':
emptyField = True
filedNum += 1
break
# Объединение регионов
tools.echo('[Generate map]: combine the regions')
for rowID in range(len(field)):
tools.echo('[Generate map]: cursore in rowID %s' % rowID)
for cellID in range(len(field[rowID])):
tools.echo('[Generate map]: cursore in cellID %s' % cellID)
cell = field[rowID][cellID]
if 'R' in cell:
tools.echo('[Generate map]: combine region %s' % cell)
sawUp = rowID != 0
sawDown = rowID != len(field) - 1
sawLeft = cellID != 0
sawRight = cellID != len(field) - 1
if sawUp:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID - 1][cellID] and 'R' in field[rowID - 1][cellID]:
if int(cell.split('R')[-1]) > int(field[rowID - 1][cellID].split('R')[-1]):
field = rgReplace(field, cell, field[rowID - 1][cellID])
rgMax = field[rowID - 1][cellID]
tools.echo('[Generate map]: combine the region to %s' % field[rowID - 1][cellID])
else:
field = rgReplace(field, field[rowID - 1][cellID], cell)
rgMax = cell
tools.echo('[Generate map]: combine the region to %s' % cell)
if sawDown:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID + 1][cellID] and 'R' in field[rowID + 1][cellID]:
if int(cell.split('R')[-1]) > int(field[rowID + 1][cellID].split('R')[-1]):
field = rgReplace(field, cell, field[rowID + 1][cellID])
rgMax = field[rowID + 1][cellID]
tools.echo('[Generate map]: combine the region to %s' % field[rowID + 1][cellID])
else:
field = rgReplace(field, field[rowID + 1][cellID], cell)
rgMax = cell
tools.echo('[Generate map]: combine the region to %s' % cell)
if sawLeft:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID][cellID - 1] and 'R' in field[rowID][cellID - 1]:
if int(cell.split('R')[-1]) > int(field[rowID][cellID - 1].split('R')[-1]):
field = rgReplace(field, cell, field[rowID][cellID - 1])
rgMax = field[rowID][cellID - 1]
tools.echo('[Generate map]: combine the region to %s' % field[rowID][cellID - 1])
else:
field = rgReplace(field, field[rowID][cellID - 1], cell)
rgMax = cell
tools.echo('[Generate map]: combine the region to %s' % cell)
if sawRight:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID][cellID + 1] and 'R' in field[rowID][cellID + 1]:
if int(cell.split('R')[-1]) > int(field[rowID][cellID + 1].split('R')[-1]):
field = rgReplace(field, cell, field[rowID][cellID + 1])
rgMax = field[rowID][cellID + 1]
tools.echo('[Generate map]: combine the region to %s' % field[rowID][cellID + 1])
else:
field = rgReplace(field, field[rowID][cellID + 1], cell)
rgMax = cell
tools.echo('[Generate map]: combine the region to %s' % cell)
ret_values = {"field": field, "regionMax_index": filedNum}
return ret_values
def randtk(lentk=16):
from random import randint as rand
token = ''
for _ in range(lentk):
token += '0123456789abcdef'[rand(0, 15)]
return token
def int_check(string):
for num in str(string):
if num not in '0123456789':
coreFailed("Int value failed.")
return int(string)
methods = list()
multiMethod_connected = Data["status"] == 'multiMethod' and 'requests' in Data
if multiMethod_connected:
methods = Data["requests"]
outputs = list()
tools.echo('[Core]: multiMethod: on')
else:
methods = [Data]
for DataID in range(len(methods)):
Data = methods[DataID]
enlessloop = DataID == len(methods) - 1
tools.toggleExit(enlessloop)
if multiMethod_connected:
tools.echo(f"[Core]: method init: {Data['status']}")
if Data["status"] == 'newGame':
if "Mines" in Data["request"]:
mines = Data["request"]["Mines"]
else:
coreFailed('missing param "Mines"')
if "size" in Data["request"]:
fieldsize = Data["request"]["size"]
else:
coreFailed('missing param "size"')
if "ID" in Data["request"]:
useridaccess = Data["request"]["ID"]
else:
coreFailed('missing param "ID"')
gamesession = randtk()
Map = regionGen(fieldsize, mines)
while gamesession in os.listdir('generatedGameSessions'):
gamesession = randtk()
os.mkdir(f"generatedGameSessions/{gamesession}")
gameinfoF = open(f"generatedGameSessions/{gamesession}/config.json", 'wt', encoding='utf-8')
gameinfoF.write(json.dumps({
"fieldSize": fieldsize,
"mines": mines,
"map": Map["field"],
"regionMax_index": Map["regionMax_index"],
"continue": True
}, indent="\t", ensure_ascii=False))
gameinfoF.close()
if not(multiMethod_connected):
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"response": {
"gamesession": gamesession,
"map": Map['field'],
"regionMax_index": Map['regionMax_index']
},
"response_randomID": random.randint(0, 99999999)
}, indent="\t", ensure_ascii=False))
response.close()
else:
outputs.append({
"response": {
"gamesession": gamesession,
"map": Map['field'],
"regionMax_index": Map['regionMax_index']
},
"response_randomID": random.randint(0, 99999999)
})
if not(multiMethod_connected):
tools.finish()
elif Data["status"] == 'toggleFlag':
if "gamesession" in Data["request"]:
gamesession = Data["request"]["gamesession"]
if gamesession not in os.listdir('generatedGameSessions'):
coreFailed("Invalid Game session")
else:
coreFailed('missing param "gamesession"')
if "X" in Data["request"]:
coordX = int_check(Data["request"]["X"])
else:
coreFailed('missing param "X"')
if "Y" in Data["request"]:
coordY = int_check(Data["request"]["Y"])
else:
coreFailed('missing param "Y"')
F = open(f"generatedGameSessions/{gamesession}/config.json", 'r', encoding='utf-8')
gameSessionData = json.loads(F.read())
F.close()
del F
if not(gameSessionData["continue"]):
coreFailed('This game was been finished')
if coordX >= int(gameSessionData["fieldSize"]) or coordX < 0:
coreFailed('CursorX outed to field')
elif coordY >= int(gameSessionData["fieldSize"]) or coordY < 0:
coreFailed('CursorY outed to field')
flag = gameSessionData["map"][coordY][coordX]
if ':F' in flag:
gameSessionData["map"][coordY][coordX] = flag[:-2]
elif ':O' in flag:
coreFailed('You can\'t flag this cell. Cell was been opened.')
else:
gameSessionData["map"][coordY][coordX] = f"{flag}:F"
writef = open(f"generatedGameSessions/{gamesession}/config.json", 'wt', encoding='utf-8')
writef.write(json.dumps(gameSessionData, indent="\t", ensure_ascii=False))
writef.close()
if not(multiMethod_connected):
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"response": 1,
"response_randomID": random.randint(0, 99999999)
}, indent="\t", ensure_ascii=False))
response.close()
else:
outputs.append({
"response": 1,
"response_randomID": random.randint(0, 99999999)
})
if not(multiMethod_connected):
tools.finish()
elif Data["status"] == 'getGameSession':
if "gamesession" in Data["request"]:
gamesession = Data["request"]["gamesession"]
if gamesession not in os.listdir('generatedGameSessions'):
coreFailed("Invalid Game session")
else:
coreFailed('missing param "gamesession"')
with open(f"generatedGameSessions/{gamesession}/config.json") as gameData:
gameData = json.loads(gameData.read())
if not(multiMethod_connected):
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"response": {
"gamesession": gamesession,
"continue": gameData['continue'],
"map": gameData['map'],
"regionMax_index": gameData['regionMax_index']
},
"response_randomID": random.randint(0, 99999999)
}, indent="\t", ensure_ascii=False))
response.close()
else:
outputs.append({
"response": {
"gamesession": gamesession,
"continue": gameData['continue'],
"map": gameData['map'],
"regionMax_index": gameData['regionMax_index']
},
"response_randomID": random.randint(0, 99999999)
})
if not(multiMethod_connected):
tools.finish()
elif Data["status"] == 'openItem':
if "gamesession" in Data["request"]:
gamesession = Data["request"]["gamesession"]
if gamesession not in os.listdir('generatedGameSessions'):
coreFailed("Invalid Game session")
else:
coreFailed('missing param "gamesession"')
if "X" in Data["request"]:
coordX = int_check(Data["request"]["X"])
else:
coreFailed('missing param "X"')
if "Y" in Data["request"]:
coordY = int_check(Data["request"]["Y"])
else:
coreFailed('missing param "Y"')
F = open(f"generatedGameSessions/{gamesession}/config.json", 'r', encoding='utf-8')
gameSessionData = json.loads(F.read())
F.close()
del F
if not(gameSessionData["continue"]):
coreFailed('This game was been finished')
if coordX >= int(gameSessionData["fieldSize"]) or coordX < 0:
coreFailed('CursorX outed to field')
elif coordY >= int(gameSessionData["fieldSize"]) or coordY < 0:
coreFailed('CursorY outed to field')
flag = gameSessionData["map"][coordY][coordX]
if ':O' in flag:
coreFailed('This cell was been opened')
elif ':F' in flag:
coreFailed('This cell was been flagged. Action was been blocked.')
else:
if flag == 'M':
gameSessionData["continue"] = False
for X in range(len(gameSessionData["map"])):
for Y in range(len(gameSessionData["map"][X])):
if gameSessionData["map"][X][Y] == flag:
gameSessionData["map"][X][Y] = f"{flag}:O"
gameSessionData["continue"] = checkFinGame(gameSessionData["map"])
if str(gameSessionData["continue"]) == 'noOpens!':
gameSessionData["continue"] = True
gameSessionData["map"] = rgReplace(
gameSessionData["map"],
'M',
'M:F'
)
gameSessionData["continue"] = not(gameSessionData["continue"])
writef = open(f"generatedGameSessions/{gamesession}/config.json", 'wt', encoding='utf-8')
writef.write(json.dumps(gameSessionData, indent="\t", ensure_ascii=False))
writef.close()
if not(multiMethod_connected):
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"response": 1,
"response_randomID": random.randint(0, 99999999)
}, indent="\t", ensure_ascii=False))
response.close()
else:
outputs.append({
"response": 1,
"response_randomID": random.randint(0, 99999999)
})
if not(multiMethod_connected):
tools.finish()
elif Data['status'] != 'multiMethod':
coreFailed(f"Unknown method \"{Data['status']}\"")
if multiMethod_connected and enlessloop:
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"responses": outputs,
"response_randomID": random.randint(0, 99999999)
}, indent="\t", ensure_ascii=False))
response.close()
tools.finish()
if multiMethod_connected:
response = open('response.json', 'wt', encoding='utf-8')
response.write(json.dumps({
"responses": [],
"response_randomID": random.randint(0, 99999999)
}, indent="\t", ensure_ascii=False))
response.close()
tools.finish()
coreFailed('Crash the kernel.')

4
Gamecore/gamestat.json Normal file
View File

@ -0,0 +1,4 @@
{
"status": "output needs",
"request": []
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 27,
"map": [
[
"R0",
"R0",
"R0",
"R0",
"R0",
"R0",
"R0",
"M:O",
"R50",
"R50"
],
[
"M:O",
"R59",
"R0",
"R0",
"R0",
"R0",
"R0",
"R95",
"M:O",
"R104"
],
[
"M:O",
"R112",
"R0",
"M:O",
"R0",
"R0",
"R0",
"R144",
"M:O",
"M:O"
],
[
"M:O",
"R151",
"R151",
"M:O",
"M:O",
"R0",
"R0",
"M:O",
"R172",
"R172"
],
[
"R178",
"R178",
"R0",
"R0",
"R0",
"R0",
"R0",
"R0",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R0",
"R0",
"R0",
"M:O",
"R0",
"R0",
"M:O",
"M:O"
],
[
"R226",
"R226",
"R0",
"R0",
"R0",
"R0",
"M:O",
"R242",
"R246",
"R246"
],
[
"M:O",
"R226",
"R0",
"R0",
"R0",
"R0",
"R261",
"R261",
"M:O",
"M:O"
],
[
"R0",
"R0",
"R0",
"M:O",
"R0",
"R0",
"M:O",
"M:O",
"R269",
"R271"
],
[
"M:O",
"R0",
"M:O",
"R0",
"R0",
"R0",
"R275",
"R275",
"R269",
"R271"
]
],
"regionMax_index": 276,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R39",
"M:O",
"M:O",
"R66",
"M:O",
"R20",
"R20",
"M:O",
"M:O",
"R30:O"
],
[
"R39",
"R48",
"R57",
"R66",
"R109",
"M:O",
"M:O",
"R84",
"R125",
"R30:O"
],
[
"R39",
"R39",
"R57",
"M:O",
"R109",
"R117",
"R117",
"M:O",
"R125:F",
"R30:O"
],
[
"R39",
"R39",
"M:O",
"M:F",
"R154:O",
"R154:O",
"M:F",
"R30:O",
"R30:O",
"R30:O"
],
[
"R39",
"R39",
"R187:O",
"R193:O",
"R193:O",
"R199:O",
"M:F",
"R30:O",
"R30:O",
"R30:O"
],
[
"R210",
"M:O",
"R215:O",
"R215:O",
"R220:O",
"M:F",
"R225:O",
"R225:O",
"M:F",
"R30:O"
],
[
"R249:O",
"M:F",
"M:F",
"M:F",
"R220:O",
"M:F",
"M:F",
"R230:O",
"R230:O",
"R230:O"
],
[
"R249:O",
"R252:O",
"R252:O",
"R255:O",
"R258:O",
"R258:O",
"R230:O",
"R230:O",
"R230:O",
"R230:O"
],
[
"M:F",
"M:F",
"R252:O",
"R255:O",
"M:F",
"M:F",
"R230:O",
"R230:O",
"R230:O",
"R230:O"
],
[
"R275:O",
"R275:O",
"R252:O",
"R255:O",
"R278:O",
"R278:O",
"R230:O",
"R230:O",
"R230:O",
"R230:O"
]
],
"regionMax_index": 279,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 39,
"map": [
[
"M:O",
"R0",
"R0",
"R0",
"R0",
"R20",
"R20",
"R40",
"R40",
"R40"
],
[
"R69",
"M:O",
"R78",
"R87",
"M:O",
"R121",
"M:O",
"R40",
"R40",
"M:O"
],
[
"M:O",
"R113",
"R78",
"M:O",
"M:O",
"R121",
"R129:O",
"R40",
"R40",
"R153"
],
[
"R160",
"R160",
"M:O",
"R167",
"R174",
"M:O",
"R129:O",
"R129:O",
"M:O",
"M:O"
],
[
"R160",
"R160",
"M:O",
"R167",
"M:O",
"R193",
"M:O",
"R129:O",
"M:O",
"R199"
],
[
"R204",
"M:O",
"M:O",
"M:O",
"R209:O",
"R209:O",
"M:F",
"R214",
"R214",
"M:O"
],
[
"R218",
"M:O",
"R222",
"R222",
"M:O",
"R226:O",
"R226:O",
"M:O",
"M:O",
"R230"
],
[
"R233",
"R233",
"M:O",
"M:O",
"R236:O",
"M:O",
"M:O",
"R249",
"M:O",
"M:O"
],
[
"M:F",
"R241:O",
"R252:O",
"R252:O",
"R236:F",
"R236:O",
"R236:O",
"R256:O",
"R256:O",
"M:F"
],
[
"R252:O",
"R252:O",
"R252:O",
"R252:O",
"R236:O",
"R236:O",
"M:F",
"R256:O",
"R256:O",
"R256:O"
]
],
"regionMax_index": 258,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"R0",
"R0",
"M:O",
"R30",
"M:O",
"R40",
"R40",
"R40",
"R40"
],
[
"R0",
"R0",
"R0",
"R0",
"R30",
"R30",
"M:O",
"R86",
"M:O",
"R95"
],
[
"R0",
"M:O",
"M:O",
"R30",
"R30",
"M:O",
"R119",
"M:O",
"M:O",
"R127"
],
[
"R103",
"R175",
"M:O",
"R30",
"R30",
"R148",
"M:O",
"R162",
"R162",
"R162"
],
[
"M:O",
"R175",
"R181",
"M:O",
"M:O",
"R187:O",
"R187:O",
"R162",
"R162",
"R162"
],
[
"R162",
"R162",
"R162",
"M:O",
"M:O",
"R187:O",
"R187:O",
"R162",
"R162",
"R162"
],
[
"R162",
"R162",
"R162",
"M:O",
"R241",
"M:O",
"M:O",
"M:O",
"R162",
"M:O"
],
[
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162"
],
[
"R162",
"M:O",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162"
],
[
"M:O",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"M:O"
]
],
"regionMax_index": 282,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 46,
"map": [
[
"M:O",
"M:O",
"R0",
"M:O",
"M:O",
"R10",
"R10",
"R10",
"R10",
"M:O"
],
[
"M:O",
"R39",
"M:O",
"M:O",
"R48",
"M:O",
"R57",
"R10",
"R10",
"R84"
],
[
"M:O",
"R92",
"M:O",
"R100",
"R108",
"R108",
"R57",
"M:O",
"M:O",
"M:O"
],
[
"R115",
"R122",
"R129",
"R100",
"M:O",
"M:O",
"R161",
"M:O",
"R143",
"M:O"
],
[
"R115",
"R122",
"R172",
"M:O",
"R155",
"R155",
"R161",
"R167",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R172",
"R177",
"M:O",
"R182",
"M:O",
"M:O",
"M:O",
"R187"
],
[
"M:O",
"M:O",
"R191",
"R208",
"M:O",
"R195",
"M:O",
"M:O",
"R199",
"R199"
],
[
"R202",
"R205",
"R205",
"R211",
"R211",
"R214",
"M:O",
"R217",
"R217",
"M:O"
],
[
"M:O",
"R205",
"M:O",
"R221",
"M:O",
"M:O",
"R223",
"M:O",
"M:O",
"R225"
],
[
"R219",
"R219",
"R219",
"R219",
"M:O",
"R229",
"R229",
"M:O",
"R225",
"R225"
]
],
"regionMax_index": 230,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 39,
"map": [
[
"R10",
"R10",
"R10",
"R30",
"M:O",
"M:O",
"M:O",
"M:O",
"R40",
"R40"
],
[
"R10",
"R10",
"R10",
"M:O",
"M:O",
"R68",
"M:O",
"R77",
"R77",
"M:O"
],
[
"R10",
"R10",
"M:O",
"M:O",
"R101",
"R109",
"R109",
"R109",
"R109",
"R133"
],
[
"M:O",
"R140",
"M:O",
"R147",
"M:O",
"R154",
"M:O",
"R117",
"M:O",
"R133"
],
[
"M:O",
"R167",
"R167",
"M:O",
"R173",
"R173",
"M:O",
"R179",
"R179",
"R161"
],
[
"M:O",
"R190",
"R195",
"M:O",
"M:O",
"R200",
"M:O",
"R205",
"R205",
"M:O"
],
[
"R209",
"R209",
"R195",
"R213",
"R231",
"M:O",
"R217",
"M:O",
"R221",
"R221"
],
[
"R228",
"M:O",
"M:O",
"M:O",
"R231",
"R231",
"M:O",
"R221",
"R221",
"R221"
],
[
"R242",
"M:O",
"M:O",
"R244",
"R251",
"M:O",
"R221",
"R221",
"R221",
"R221"
],
[
"R249",
"R249",
"R250",
"M:O",
"R221",
"R221",
"R221",
"R221",
"R221",
"R221"
]
],
"regionMax_index": 255,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 30,
"map": [
[
"R0:O",
"M:O",
"R10",
"M:O",
"M:O",
"M:O",
"M:O",
"R20",
"R20",
"M:O"
],
[
"R0:O",
"R48:F",
"R48",
"M:O",
"M:O",
"R57",
"M:O",
"R20",
"M:O",
"R66"
],
[
"R0:O",
"M:F",
"M:F",
"R82:O",
"R82:O",
"R90:O",
"R90:O",
"M:O",
"R66",
"R66"
],
[
"M:F",
"R105:O",
"R105:O",
"R112:O",
"R112:O",
"M:F",
"R119",
"R119",
"M:O",
"R66"
],
[
"R132:O",
"R132:O",
"M:F",
"R112:O",
"R112:O",
"M:F",
"M:F",
"R126:O",
"R126:O",
"R126:O"
],
[
"R132:O",
"R132:O",
"R180:O",
"M:F",
"R166:O",
"R166:O",
"R171:O",
"R171:O",
"R126:O",
"R126:O"
],
[
"R132:O",
"M:F",
"R180:O",
"R180:O",
"R188:O",
"R192:O",
"M:F",
"R196:O",
"R211:O",
"M:F"
],
[
"R180:O",
"R180:O",
"R180:O",
"R180:O",
"R180:O",
"M:F",
"M:F",
"M:F",
"R211:O",
"R211:O"
],
[
"R180:O",
"R180:O",
"R180:O",
"M:F",
"R211:O",
"R211:O",
"R211:O",
"R211:O",
"R211:O",
"R211:O"
],
[
"R180:O",
"R180:O",
"M:F",
"R230:O",
"R230:O",
"R211:O",
"R211:O",
"R211:O",
"R211:O",
"R211:O"
]
],
"regionMax_index": 234,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 31,
"map": [
[
"M:O",
"R0",
"M:O",
"R10",
"R20",
"M:O",
"R30",
"R30",
"M:O",
"R40"
],
[
"R49",
"R49",
"M:O",
"R58",
"R58",
"M:O",
"M:O",
"R67",
"M:O",
"R76"
],
[
"R49",
"M:O",
"M:O",
"M:O",
"R92",
"M:O",
"R100",
"R100",
"R100",
"M:O"
],
[
"R115",
"R115",
"R169",
"R129",
"M:O",
"R136",
"M:O",
"R100",
"R100",
"R157"
],
[
"R115",
"R115",
"R169",
"R169",
"R136",
"R136",
"R187",
"R187",
"M:O",
"M:O"
],
[
"M:O",
"R115",
"R169",
"R169",
"M:O",
"M:O",
"R187",
"M:O",
"R207",
"R207"
],
[
"R169",
"R169",
"R169",
"M:O",
"R224",
"R224",
"R187",
"R187",
"R207",
"R207"
],
[
"R169",
"R169",
"R169",
"R169",
"R245",
"M:O",
"R187",
"R187",
"R207",
"R207"
],
[
"M:O",
"R169",
"R169",
"M:O",
"R245",
"R257",
"M:O",
"M:F",
"M:F",
"M:F"
],
[
"R169",
"R169",
"R169",
"R169",
"R169",
"R261",
"M:O",
"M:O",
"R262:O",
"R262:O"
]
],
"regionMax_index": 262,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 41,
"map": [
[
"R0",
"M:O",
"M:O",
"R10",
"M:O",
"M:O",
"M:O",
"R20",
"R20",
"M:O"
],
[
"M:O",
"R74",
"M:O",
"M:O",
"M:O",
"R48",
"R20",
"R20",
"R66",
"M:O"
],
[
"M:O",
"R74",
"R82",
"M:O",
"R90:O",
"R48:F",
"R98:O",
"R98:O",
"M:O",
"R114"
],
[
"R121",
"M:O",
"R128",
"R147:O",
"R90:O",
"M:F",
"R98:O",
"R98:O",
"M:O",
"M:O"
],
[
"R121",
"R121",
"M:O",
"R153:O",
"R153:O",
"R159:O",
"R98:O",
"R98:O",
"M:O",
"M:O"
],
[
"M:O",
"R170",
"R170",
"M:O",
"M:O",
"R159:O",
"R159:O",
"R175:O",
"M:F",
"M:F"
],
[
"R179",
"R179",
"R183",
"M:O",
"R187:O",
"M:F",
"R159:O",
"R159:O",
"M:F",
"R199:O"
],
[
"R179",
"M:O",
"M:O",
"R208:O",
"R208:O",
"R159:O",
"M:F",
"R159:O",
"R159:O",
"R159:O"
],
[
"R216",
"R220",
"R220",
"R205",
"M:F",
"R159:O",
"R159:O",
"R159:O",
"R159:O",
"R159:O"
],
[
"M:O",
"R220",
"R220",
"M:O",
"R159:O",
"R159:O",
"R159:O",
"R159:O",
"R159:O",
"R159:O"
]
],
"regionMax_index": 235,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 55,
"map": [
[
"R0",
"R0",
"M:O",
"M:O",
"M:O",
"M:O",
"R10",
"M:O",
"R20",
"R20"
],
[
"M:O",
"R0",
"R38",
"R38",
"R47",
"M:O",
"M:O",
"R56",
"M:O",
"R20"
],
[
"R73",
"M:O",
"M:O",
"R38",
"M:O",
"M:O",
"R89",
"M:O",
"R65",
"R65"
],
[
"R73",
"R111",
"R131",
"M:O",
"R118",
"R118",
"M:O",
"M:O",
"M:O",
"R65"
],
[
"R73",
"M:O",
"R131",
"R137",
"M:O",
"M:O",
"R143",
"R143",
"R149",
"M:O"
],
[
"R73",
"R73",
"M:O",
"R159",
"R164",
"M:O",
"M:O",
"M:O",
"R169",
"R169"
],
[
"M:O",
"M:O",
"M:O",
"R184",
"R173",
"M:O",
"R177",
"R177",
"M:O",
"R169"
],
[
"M:O",
"M:O",
"M:O",
"R184",
"R187",
"R187",
"R203",
"R190",
"R181",
"R181"
],
[
"R195:O",
"R197",
"M:O",
"R199",
"M:O",
"R201",
"R203",
"R205",
"R205",
"M:O"
],
[
"R195:O",
"R195:O",
"M:O",
"M:O",
"R207",
"R207",
"M:O",
"M:O",
"M:O",
"M:O"
]
],
"regionMax_index": 207,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 27,
"map": [
[
"R0",
"M",
"R10",
"M",
"R20",
"R20",
"M",
"M",
"M",
"M"
],
[
"M",
"M",
"R29:O",
"R29:O",
"M",
"R88",
"M",
"R47",
"M",
"R56"
],
[
"R111",
"M",
"R72",
"R29:O",
"R29:O",
"R88",
"M",
"M",
"R96",
"R104"
],
[
"R118",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R153:O",
"R153:O",
"M"
],
[
"M:F",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R183:O",
"M",
"R195"
],
[
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"M:F",
"R183:O",
"R195",
"R195"
],
[
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"M",
"R195",
"R195"
],
[
"R29:O",
"R29:O",
"M:F",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R268",
"R268",
"M"
],
[
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"R29:O",
"M:F",
"M:F",
"R278:O",
"R278:O"
],
[
"R29:O",
"M:F",
"R29:O",
"M:F",
"R29:O",
"R29:O",
"R29:O",
"R278:O",
"R278:O",
"R278:O"
]
],
"regionMax_index": 285,
"continue": true
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 41,
"map": [
[
"M:O",
"R0",
"M:O",
"R39",
"M:O",
"R20",
"R20",
"M:O",
"R30",
"R30"
],
[
"M:O",
"M:O",
"R39",
"R39",
"R99",
"M:O",
"R66:O",
"R66:O",
"M:F",
"M:F"
],
[
"R83",
"R83",
"R39",
"R39",
"R99",
"M:O",
"R66:O",
"R66:O",
"R66:O",
"R123:O"
],
[
"M:O",
"R83",
"M:O",
"M:O",
"R137:O",
"R137:O",
"M:F",
"R66:O",
"R66:O",
"M:F"
],
[
"R130",
"R130",
"R156",
"M:O",
"R162:O",
"R137:O",
"R137:O",
"R66:O",
"R66:O",
"R66:O"
],
[
"R191",
"M:O",
"M:O",
"M:F",
"M:F",
"R137:F",
"M:O",
"M:F",
"R66:O",
"M:F"
],
[
"R200",
"M:O",
"R204",
"R208:O",
"R208:O",
"M:F",
"R212",
"R216",
"R220",
"M:O"
],
[
"R223",
"R223",
"R204",
"M:O",
"M:F",
"R226:F",
"R226",
"R216",
"R220",
"R229"
],
[
"M:O",
"R223",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R233",
"M:F",
"M:F"
],
[
"R231",
"R231",
"R235:O",
"M:O",
"R236",
"R236",
"R237",
"R237",
"M:F",
"R238:O"
]
],
"regionMax_index": 238,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"M:F",
"R0:O",
"R0:O",
"R10:O",
"R10:O",
"M:F",
"M:F",
"R40:O",
"R40:O",
"R40:O"
],
[
"R59:O",
"R59:O",
"M:F",
"R10:O",
"R10:O",
"R40:O",
"R40:O",
"R40:O",
"R40:O",
"R40:O"
],
[
"M:F",
"R129:O",
"R129:O",
"R129:O",
"M:F",
"M:F",
"R40:O",
"R40:O",
"R40:O",
"R40:O"
],
[
"M:F",
"R121:O",
"M:F",
"R168:O",
"R168:O",
"R40:O",
"R40:O",
"R40:O",
"M:F",
"R40:O"
],
[
"R168:O",
"R168:O",
"R168:O",
"R168:O",
"R168:O",
"R40:O",
"R40:O",
"R40:O",
"R40:O",
"R40:O"
],
[
"M:F",
"R168:O",
"R168:O",
"R168:O",
"R168:O",
"R232:O",
"M:F",
"R40:O",
"R40:O",
"R40:O"
],
[
"R168:O",
"R168:O",
"R168:O",
"R168:O",
"R168:O",
"M:F",
"M:F",
"R40:O",
"R40:O",
"R40:O"
],
[
"R168:O",
"R168:O",
"R168:O",
"R168:O",
"R168:O",
"R276:O",
"M:F",
"R40:O",
"R40:O",
"R40:O"
],
[
"M:F",
"M:F",
"R168:O",
"R168:O",
"R289:O",
"M:F",
"M:F",
"M:F",
"M:F",
"R40:O"
],
[
"M:F",
"R288:O",
"M:F",
"M:F",
"R290:O",
"R290:O",
"R291:O",
"R292:O",
"R292:O",
"R287:O"
]
],
"regionMax_index": 293,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 26,
"map": [
[
"R49",
"M:O",
"R10",
"R10",
"M:O",
"R20",
"M:O",
"R76",
"M:O",
"R40"
],
[
"R49",
"R49",
"M:O",
"M:O",
"R67",
"M:O",
"M:O",
"R76",
"R125",
"M:O"
],
[
"R49",
"R49",
"R101",
"R101",
"M:O",
"R109",
"M:O",
"R117",
"R125",
"M:O"
],
[
"R49",
"R49",
"R101",
"R101",
"R101",
"M:O",
"R160",
"R160",
"R160",
"R160"
],
[
"R49",
"R49",
"M:O",
"R179",
"R101",
"R101",
"R160",
"R160",
"R160",
"R160"
],
[
"R49",
"R49",
"M:O",
"R101",
"R101",
"R101",
"M:O",
"R160",
"R160",
"R160"
],
[
"R49",
"R49",
"M:O",
"R101",
"R101",
"R101",
"R101",
"M:O",
"R160",
"M:O"
],
[
"R49",
"R49",
"R49",
"M:O",
"R49",
"R256",
"R101",
"R262:O",
"R244",
"R244"
],
[
"R49",
"R49",
"R49",
"R49",
"R49",
"M:O",
"M:O",
"R262:O",
"M:O",
"R273"
],
[
"R49",
"R49",
"R49",
"R49",
"R49",
"R49",
"R278",
"R278",
"M:O",
"M:O"
]
],
"regionMax_index": 278,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 38,
"map": [
[
"M:O",
"R0",
"R0",
"M:O",
"R10",
"R10",
"R10",
"M:O",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R29",
"R29",
"M:O",
"R10",
"R10",
"R65",
"M:O",
"R74"
],
[
"R82",
"M:O",
"R120",
"M:O",
"R90",
"M:O",
"M:O",
"R98",
"M:O",
"R106"
],
[
"R113",
"M:O",
"R127",
"R134",
"R90",
"R90",
"R148",
"M:O",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R134",
"R134",
"M:O",
"R90",
"R90",
"M:O",
"M:O",
"R172"
],
[
"R177",
"R182",
"R182",
"M:O",
"R90",
"R90",
"R90",
"M:O",
"M:O",
"R197"
],
[
"M:O",
"M:O",
"R90",
"R90",
"R90:F",
"R205:O",
"R205:O",
"R209:O",
"R209:O",
"R209:O"
],
[
"M:O",
"R216",
"R90",
"R90",
"R222:O",
"R222:O",
"M:F",
"R209:O",
"R209:O",
"R209:O"
],
[
"R230",
"M:O",
"R90",
"R90",
"M:O",
"M:F",
"R209:O",
"R209:O",
"R209:O",
"R209:O"
],
[
"M:O",
"R90",
"R90",
"R90",
"R90",
"R209:O",
"R209:O",
"R209:O",
"R209:O",
"R209:O"
]
],
"regionMax_index": 243,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 46,
"map": [
[
"R0",
"M:O",
"M:O",
"R10",
"M:O",
"R20",
"R20",
"R30",
"R30",
"M:O"
],
[
"M:O",
"M:O",
"R39",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O"
],
[
"R47",
"M:O",
"R55",
"R55",
"M:O",
"R63",
"R85",
"M:O",
"M:O",
"R71"
],
[
"R78",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R85",
"R129",
"M:O",
"R99"
],
[
"R105",
"R111",
"M:O",
"R117",
"R123",
"M:O",
"M:O",
"R135",
"R135",
"M:O"
],
[
"R105",
"R105",
"R145",
"R150",
"R150",
"R155",
"R160",
"R135",
"R135",
"R135"
],
[
"R105",
"R105",
"R145",
"M:O",
"R150",
"R150",
"R190",
"R190",
"R194",
"M:O"
],
[
"M:O",
"R105",
"M:O",
"R150",
"R150",
"R150",
"M:O",
"M:O",
"M:O",
"R206"
],
[
"R197",
"R197",
"R197",
"M:O",
"R150",
"R150",
"M:O",
"M:O",
"M:O",
"M:O"
],
[
"R197",
"R197",
"R197",
"R197",
"M:O",
"R219",
"R219",
"R220",
"R220",
"R221"
]
],
"regionMax_index": 221,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 38,
"map": [
[
"M:O",
"M:O",
"M:O",
"R0",
"R0",
"R0",
"R0",
"R10",
"M:O",
"R30"
],
[
"R39",
"R39",
"M:O",
"R0",
"R0",
"R0",
"M:O",
"R30",
"R30",
"R30"
],
[
"M:O",
"M:O",
"R100",
"R100",
"R0",
"R0",
"R0",
"R30",
"M:O",
"R30"
],
[
"M:O",
"R139",
"R139",
"M:O",
"R146",
"M:O",
"R0",
"M:O",
"R132",
"R132"
],
[
"M:O",
"M:O",
"M:O",
"M:O",
"R0",
"R0",
"R0",
"R0",
"M:O",
"R132"
],
[
"R189",
"M:O",
"M:O",
"R194",
"R194",
"M:O",
"R0",
"R0",
"R0",
"R0"
],
[
"M:O",
"R237",
"R218",
"M:O",
"R226",
"R243",
"R0",
"R0",
"R0",
"R0"
],
[
"M:O",
"R237",
"R240",
"M:O",
"R256",
"R243",
"M:O",
"R0",
"R0",
"R0"
],
[
"M:O",
"M:O",
"R254",
"R254",
"R256",
"R243",
"R260",
"M:O",
"R0",
"R0"
],
[
"R265",
"R265",
"R266",
"M:O",
"M:O",
"M:O",
"R0",
"R0",
"R0",
"R0"
]
],
"regionMax_index": 268,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 30,
"map": [
[
"R39",
"M:O",
"R10",
"M:O",
"R20",
"R20",
"M:O",
"M:O",
"R30",
"R30"
],
[
"R39",
"R48",
"M:O",
"R57",
"R20",
"R20",
"R108",
"R75",
"R30",
"R30"
],
[
"R39",
"R39",
"M:O",
"M:O",
"R100",
"M:O",
"R108",
"R75",
"R75",
"M:O"
],
[
"M:O",
"R131",
"M:O",
"M:O",
"R138",
"M:O",
"R75",
"R75",
"R75",
"M:O"
],
[
"R186",
"R186",
"R157",
"R157",
"M:O",
"R75",
"R75",
"R75",
"R75",
"R75"
],
[
"R186",
"R186",
"R186",
"R186",
"R206",
"M:O",
"R75",
"R75",
"R75",
"R75"
],
[
"M:O",
"R186",
"R186",
"M:O",
"R224:O",
"R224:O",
"R224:O",
"M:O",
"R75",
"R75"
],
[
"R235",
"R186",
"R186",
"R186",
"R224:O",
"R224:O",
"R228:O",
"R228:O",
"R253",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R255",
"R255:F",
"R224:O",
"R257",
"M:O",
"M:O",
"R259"
],
[
"R260",
"R260",
"M:O",
"R255",
"R255",
"M:O",
"M:O",
"M:O",
"R259",
"R259"
]
],
"regionMax_index": 262,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 29,
"map": [
[
"M:O",
"M:O",
"R0",
"M:O",
"R10",
"R10",
"R10",
"R10",
"R10",
"M:O"
],
[
"R39",
"M:O",
"R48",
"M:O",
"R10",
"R10",
"R10",
"R10",
"M:O",
"R84"
],
[
"R92:O",
"R100",
"M:O",
"R108",
"M:O",
"R10",
"R10",
"R10",
"M:O",
"M:O"
],
[
"R92:O",
"R92:O",
"M:O",
"R146",
"R146",
"R10",
"R10",
"R160",
"M:O",
"M:O"
],
[
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"M:F",
"M:F",
"M:F",
"M:F",
"M:O",
"M:O"
],
[
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R197:O",
"M:O",
"R202"
],
[
"R92:O",
"M:F",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R226",
"M:O"
],
[
"M:F",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O",
"M:F",
"R92:O",
"R92:O"
],
[
"R92:O",
"R92:O",
"R92:O",
"M:F",
"M:F",
"R253:O",
"R92:O",
"R92:O",
"R92:O",
"R92:O"
],
[
"M:F",
"R92:O",
"R92:O",
"R260:O",
"R260:O",
"R253:O",
"M:F",
"R92:O",
"R92:O",
"R92:O"
]
],
"regionMax_index": 261,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 29,
"map": [
[
"R29",
"M:O",
"R10",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R20",
"R20"
],
[
"R29",
"R29",
"R29",
"M:O",
"R56",
"R65",
"R65",
"M:O",
"M:O",
"M:O"
],
[
"R29",
"R29",
"R81",
"M:O",
"R89",
"R89",
"R97",
"M:O",
"R105",
"M:O"
],
[
"R29",
"R29",
"M:O",
"M:O",
"R119",
"R119",
"M:O",
"R126",
"R133",
"M:O"
],
[
"R29",
"M:O",
"M:O",
"R161",
"M:O",
"R151",
"M:O",
"R126",
"M:O",
"M:O"
],
[
"M:O",
"R156:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"M:F",
"R171:O",
"R171:O",
"R171:O"
],
[
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O"
],
[
"M:F",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O"
],
[
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"M:F",
"M:F"
],
[
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R171:O",
"R245:O",
"R245:O"
]
],
"regionMax_index": 245,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"R0",
"R10",
"M",
"R20",
"R20",
"R20",
"R20",
"R20",
"M"
],
[
"M",
"M",
"R49",
"M",
"R20",
"R20",
"R20",
"R20",
"R20",
"R20"
],
[
"M",
"M",
"R110",
"R110",
"R110",
"R20",
"R20",
"M",
"R20",
"R20"
],
[
"R141",
"R148",
"R110",
"R110",
"R110",
"R162",
"M",
"R169",
"R194",
"M"
],
[
"R141",
"R141",
"R110",
"M",
"R188",
"R188",
"M",
"R169",
"R194",
"R200"
],
[
"M",
"R141",
"R141",
"R141",
"R215",
"M",
"R220",
"M",
"M",
"R200"
],
[
"R141",
"R141",
"R141",
"M",
"R220",
"R220",
"R220",
"R220",
"R265",
"R225"
],
[
"M",
"R256",
"M",
"R220",
"R220",
"R220",
"R220",
"M",
"R265",
"R268"
],
[
"R270",
"R270",
"M",
"R220",
"R220",
"R220",
"M",
"R220",
"M",
"M"
],
[
"R270",
"R270",
"M",
"R220",
"R220",
"R220",
"R220",
"R220",
"R281",
"R281"
]
],
"regionMax_index": 281,
"continue": true
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 49,
"map": [
[
"R0",
"M:O",
"R10",
"M:O",
"R58",
"R20",
"M:O",
"R30",
"R30",
"R40"
],
[
"R0",
"R0",
"M:F",
"M:F",
"R58:F",
"R67",
"M:O",
"M:O",
"M:O",
"R76"
],
[
"M:O",
"M:O",
"R84:F",
"R114:O",
"M:F",
"M:O",
"M:O",
"R92",
"M:O",
"R100"
],
[
"M:O",
"R148",
"M:F",
"R114:O",
"R128:F",
"R128",
"R135",
"M:O",
"M:O",
"R142"
],
[
"M:O",
"R148",
"R154:F",
"M:F",
"R128:F",
"R128",
"R160",
"M:O",
"R172",
"M:O"
],
[
"R177",
"M:O",
"R182",
"M:O",
"R187",
"M:O",
"R160",
"M:O",
"M:O",
"M:O"
],
[
"R191",
"M:O",
"R195",
"M:O",
"R199",
"M:O",
"M:O",
"R207",
"R207",
"R211"
],
[
"R214",
"R214",
"M:O",
"R217",
"R217",
"R220",
"R220",
"R203",
"M:O",
"R223"
],
[
"R214",
"M:O",
"R227",
"M:O",
"R220",
"R220",
"R220",
"M:O",
"M:O",
"R233"
],
[
"M:O",
"R234",
"M:O",
"M:O",
"R220",
"R220",
"R220",
"R220",
"R237",
"R237"
]
],
"regionMax_index": 237,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"M:O",
"R0",
"R0",
"R0",
"R0",
"R0",
"R0",
"M:O",
"R95",
"M:O"
],
[
"R0",
"M:O",
"R0",
"R0",
"R0",
"R0",
"R0",
"M:O",
"R95",
"R95"
],
[
"R0",
"R0",
"R0",
"R0",
"R0",
"R0",
"R0",
"R160",
"R160",
"R95"
],
[
"R175",
"M:O",
"R0",
"R0",
"M:O",
"R0",
"R0",
"R160",
"M:O",
"R95"
],
[
"R237",
"M:O",
"R0",
"R0",
"R0",
"R0",
"R220",
"M:O",
"R95",
"R95"
],
[
"R237",
"R242",
"M:O",
"R247",
"R0",
"R0",
"M:O",
"M:O",
"R226:O",
"R95"
],
[
"R237",
"R237",
"M:O",
"M:O",
"R0",
"R0",
"R0",
"R273:O",
"R285:O",
"M:F"
],
[
"R237",
"R237",
"R279",
"M:O",
"R294:F",
"M:O",
"M:F",
"M:F",
"R285:O",
"R285:O"
],
[
"M:O",
"R290",
"R292",
"M:O",
"R296:O",
"R296:O",
"R300:O",
"R300:O",
"R300:O",
"M:F"
],
[
"R303",
"R303",
"M:O",
"R304:O",
"M:O",
"R296:F",
"R300:O",
"R300:O",
"R300:O",
"R300:O"
]
],
"regionMax_index": 307,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 47,
"map": [
[
"M:O",
"R0",
"M:O",
"M:O",
"R10",
"R20",
"R20",
"R30",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R20",
"R20",
"R20",
"M:O",
"M:O"
],
[
"R65",
"M:O",
"R73",
"M:O",
"R81",
"R20",
"M:O",
"R89",
"M:O",
"R97"
],
[
"R104",
"R138",
"M:O",
"R111",
"R111",
"R118",
"R118",
"R118",
"M:O",
"R132"
],
[
"M:O",
"R138",
"R138",
"M:O",
"M:O",
"R171",
"R118",
"R156",
"M:O",
"M:O"
],
[
"R185",
"R185",
"M:O",
"R193",
"M:O",
"R171",
"R176",
"M:O",
"R181",
"M:O"
],
[
"R185",
"R185",
"M:O",
"R193",
"R197",
"M:O",
"M:O",
"R201:O",
"R201:O",
"M:F"
],
[
"R185",
"R185",
"R210",
"M:O",
"M:O",
"M:O",
"R201:O",
"R201:O",
"R216:O",
"R216:O"
],
[
"R185",
"M:O",
"R221",
"M:O",
"M:O",
"R223:F",
"R230:O",
"M:F",
"R216:O",
"R216:O"
],
[
"R185",
"R185",
"R227",
"R227",
"R229",
"M:F",
"R216:O",
"R216:O",
"R216:O",
"R216:O"
]
],
"regionMax_index": 233,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 44,
"map": [
[
"R0",
"R0",
"R10",
"R10",
"M:O",
"M:O",
"M:O",
"R20",
"M:O",
"R30"
],
[
"M:O",
"R0",
"R0",
"M:O",
"M:O",
"R48",
"M:O",
"R57",
"R57",
"R30"
],
[
"R74",
"M:O",
"R82",
"R82",
"R98",
"R98",
"M:O",
"R106",
"R106",
"M:O"
],
[
"M:O",
"R113",
"M:O",
"M:O",
"R90",
"R120",
"M:O",
"R127",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R133",
"R133",
"M:O",
"R139",
"R139",
"M:O",
"M:O"
],
[
"M:O",
"R158",
"M:O",
"M:O",
"M:O",
"R149",
"R149",
"M:O",
"R154",
"R154"
],
[
"M:O",
"R162",
"R162",
"R166",
"M:O",
"M:O",
"M:O",
"R170",
"M:O",
"M:O"
],
[
"R173",
"R173",
"M:O",
"R179",
"R179",
"R182",
"R194",
"R170",
"R170",
"R170"
],
[
"R173",
"R173",
"R173",
"M:O",
"R192",
"M:O",
"R170",
"R170",
"R170",
"R170"
],
[
"R173",
"R173",
"R173",
"M:O",
"R201",
"M:O",
"R170",
"R170",
"R170",
"R170"
]
],
"regionMax_index": 203,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 40,
"map": [
[
"M:O",
"R0",
"M:O",
"R10",
"R20",
"M:O",
"M:O",
"M:O",
"R30",
"M:O"
],
[
"R39",
"M:O",
"R48",
"R10",
"M:O",
"M:O",
"M:O",
"M:O",
"R57",
"M:O"
],
[
"R65",
"M:O",
"R48",
"M:O",
"M:O",
"M:O",
"R73",
"M:O",
"R81",
"R81"
],
[
"R88",
"M:O",
"R95",
"R102",
"R128",
"R109",
"R109",
"M:O",
"R81",
"R81"
],
[
"M:O",
"R122",
"M:O",
"M:O",
"R128",
"R134",
"M:O",
"M:O",
"R81",
"R81"
],
[
"R145",
"R122",
"R122",
"R155",
"R128",
"R134",
"M:O",
"R165",
"M:O",
"R81"
],
[
"R145",
"M:O",
"R122",
"R155",
"M:O",
"R182",
"R182",
"M:O",
"R170:O",
"R170:O"
],
[
"M:O",
"R155",
"R155",
"R155",
"R195",
"R207",
"R198",
"M:O",
"R170:O",
"R170:O"
],
[
"R155",
"R155",
"R155",
"M:O",
"M:O",
"R207",
"R207",
"M:O",
"R170:O",
"R170:O"
],
[
"R155",
"R155",
"R155",
"R214",
"R207",
"R207",
"R216",
"R216",
"M:F",
"R170:O"
]
],
"regionMax_index": 217,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"M:O",
"R10",
"R10",
"R10",
"R10",
"R10",
"R30",
"R30",
"R30",
"R30"
],
[
"M:O",
"R0",
"R10",
"R10",
"R10",
"M:O",
"R30",
"R30",
"M:O",
"R30"
],
[
"M:O",
"M:O",
"R10",
"R10",
"R10",
"R119",
"M:O",
"R87",
"R87",
"R87"
],
[
"R10",
"R10",
"R10",
"R10",
"R10",
"R10",
"M:O",
"R87",
"R87",
"R87"
],
[
"R10",
"R10",
"R10",
"R10",
"R10",
"R10",
"R10",
"R163",
"M:O",
"R87"
],
[
"R10",
"R10",
"R10",
"R10",
"R10",
"R10",
"R231:O",
"M:O",
"R206",
"R206"
],
[
"R240",
"M:O",
"M:O",
"R10",
"R244",
"M:O",
"M:O",
"R248",
"R248",
"M:O"
],
[
"R251",
"M:O",
"R254",
"M:O",
"R260",
"R260",
"R263",
"M:O",
"M:O",
"R266:O"
],
[
"M:O",
"M:O",
"R274",
"R268",
"M:O",
"M:O",
"R270",
"M:O",
"R266:O",
"R266:O"
],
[
"R273",
"R273",
"R274",
"R275",
"M:O",
"R276",
"R276",
"R276",
"R276:F",
"R266:O"
]
],
"regionMax_index": 278,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"M:O",
"R0",
"M:O",
"R10",
"R10",
"R20",
"R20",
"M:O",
"M:O",
"R30"
],
[
"M:O",
"R39",
"R39",
"M:O",
"M:O",
"M:O",
"R48",
"R48",
"R57",
"M:O"
],
[
"R39",
"R39",
"R39",
"R89",
"R89",
"M:O",
"R97",
"R48",
"M:O",
"R105"
],
[
"R39",
"R39",
"R39",
"M:O",
"R119",
"M:O",
"R133",
"R97",
"R97",
"R105"
],
[
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"M:O",
"R97",
"R97"
],
[
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"R171:O",
"R171:O",
"M:O",
"R97"
],
[
"M:O",
"R39",
"R39",
"M:O",
"R39",
"R39",
"R39",
"R171:O",
"R240",
"R208"
],
[
"R39",
"M:O",
"M:O",
"R39",
"M:O",
"R39",
"R39",
"M:O",
"R240",
"R208"
],
[
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"M:O",
"M:O"
],
[
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"R39",
"M:O",
"R254"
]
],
"regionMax_index": 254,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 47,
"map": [
[
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R0",
"R10",
"R10",
"R20",
"M:O"
],
[
"R29",
"R29",
"M:O",
"R38",
"M:O",
"M:O",
"R10",
"R10",
"R10",
"M:O"
],
[
"M:O",
"R73",
"M:O",
"R81",
"M:O",
"M:O",
"R10",
"M:O",
"R10",
"M:O"
],
[
"R88",
"M:O",
"R95",
"R95",
"R95",
"R109",
"R116",
"R116",
"R123",
"R123"
],
[
"R136",
"M:O",
"M:O",
"R95",
"R95",
"M:O",
"M:O",
"R148",
"R148",
"M:O"
],
[
"R153",
"M:O",
"R177",
"R95",
"R95",
"R168",
"M:O",
"M:O",
"R173",
"R173"
],
[
"M:O",
"M:O",
"R95",
"R95",
"M:O",
"R185:O",
"M:O",
"M:O",
"M:O",
"M:O"
],
[
"R188",
"M:O",
"R191",
"R95",
"R95",
"R197",
"R203",
"R203",
"R206",
"M:O"
],
[
"M:O",
"R208",
"R208",
"R95",
"M:O",
"R197",
"R212",
"M:O",
"M:F",
"M:F"
],
[
"M:O",
"M:O",
"M:O",
"R211",
"M:O",
"M:O",
"R213",
"R213:F",
"R214:O",
"R214:O"
]
],
"regionMax_index": 214,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"M:O",
"R10",
"M:O",
"R20",
"M:O",
"R30",
"R30",
"R30",
"R30"
],
[
"M:O",
"R59",
"M:O",
"M:O",
"R68",
"M:O",
"M:O",
"R30",
"R30",
"R30"
],
[
"R94",
"M:O",
"M:O",
"R102",
"M:O",
"R110",
"R147:O",
"R30",
"R30",
"R30"
],
[
"M:O",
"R133",
"R174",
"M:O",
"R147:O",
"R147:O",
"R147:O",
"R30",
"M:O",
"R30"
],
[
"M:O",
"R133",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O"
],
[
"M:O",
"M:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R234"
],
[
"M:O",
"R238",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"M:O",
"M:O",
"R234"
],
[
"R257:O",
"R257:O",
"M:F",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R269:O",
"M:O",
"R272"
],
[
"M:F",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O"
],
[
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"R147:O",
"M:F",
"R147:O",
"M:F",
"R147:O"
]
],
"regionMax_index": 290,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 26,
"map": [
[
"R0",
"M:O",
"R10",
"M:O",
"M:O",
"R20",
"R20",
"R76",
"M:O",
"R40"
],
[
"R49",
"M:O",
"R58",
"R58",
"R67",
"M:O",
"M:O",
"R85",
"R85",
"R40"
],
[
"M:O",
"R102",
"M:O",
"R58",
"R58",
"R118:O",
"M:O",
"R126",
"M:O",
"M:O"
],
[
"R102",
"R102",
"R140",
"M:O",
"R58",
"M:O",
"M:O",
"R154",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R160",
"R160",
"R166",
"R178:O",
"R178:O",
"R184",
"R184",
"M:O"
],
[
"R178:O",
"R213:F",
"M:F",
"M:O",
"R166",
"R178:O",
"M:O",
"R184",
"R178:O",
"R178:O"
],
[
"R178:O",
"R178:O",
"R221:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O"
],
[
"R178:O",
"R178:O",
"M:F",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O"
],
[
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"R178:O"
],
[
"R178:O",
"R178:O",
"R178:O",
"R178:O",
"M:F",
"R178:O",
"R178:O",
"M:F",
"R178:O",
"R178:O"
]
],
"regionMax_index": 278,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 45,
"map": [
[
"R0",
"M:O",
"R10",
"M:O",
"M:O",
"R48",
"M:O",
"M:O",
"R30",
"R30"
],
[
"M:O",
"R39",
"R39",
"M:O",
"M:O",
"R57",
"R57",
"R66",
"R30",
"R30"
],
[
"R83",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R91",
"M:O",
"M:O",
"R99"
],
[
"R83",
"R113",
"R113",
"R120:O",
"R127",
"M:O",
"R134",
"M:O",
"M:O",
"M:O"
],
[
"R83",
"M:O",
"M:O",
"R120:O",
"M:O",
"M:O",
"M:O",
"R146",
"R146",
"R146"
],
[
"M:O",
"R181",
"R181",
"R120:O",
"R167",
"M:O",
"R146",
"R146",
"R146",
"R146"
],
[
"M:O",
"R181",
"R181",
"R181",
"R193",
"M:O",
"M:O",
"R146",
"R146",
"R146"
],
[
"M:O",
"R181",
"R181",
"R181",
"M:O",
"R210",
"R213",
"R146",
"R146",
"R146"
],
[
"R224",
"R224",
"M:O",
"R181",
"M:O",
"R210",
"R213",
"R216",
"R226",
"M:O"
],
[
"R224",
"M:O",
"M:O",
"R228",
"R228",
"R228",
"M:O",
"M:O",
"M:O",
"R230:O"
]
],
"regionMax_index": 230,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 54,
"map": [
[
"R0",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R10",
"R10"
],
[
"M:O",
"R19",
"R19",
"M:O",
"R28",
"M:O",
"R37",
"R37",
"M:O",
"R46"
],
[
"M:O",
"M:O",
"R54",
"M:O",
"M:O",
"M:O",
"M:O",
"R62",
"M:O",
"R70"
],
[
"R77",
"R77",
"R77",
"R98",
"R77",
"R124",
"M:O",
"M:O",
"R112",
"R112"
],
[
"R77",
"R77",
"R77",
"R77",
"R77",
"R124",
"M:O",
"R136",
"M:O",
"M:O"
],
[
"R77",
"R77",
"R77",
"R77",
"M:O",
"R151",
"R151",
"R156",
"M:O",
"M:O"
],
[
"R77",
"R77",
"R77",
"R77",
"R77",
"M:O",
"R172",
"M:O",
"R185:O",
"M:O"
],
[
"R77",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R182",
"R182",
"R185:O",
"M:O"
],
[
"R77",
"R189",
"M:O",
"M:O",
"R191",
"R191",
"M:O",
"R193",
"R193:F",
"R195:O"
],
[
"R77",
"M:O",
"M:O",
"M:O",
"R197",
"M:O",
"M:O",
"M:O",
"M:F",
"R195:O"
]
],
"regionMax_index": 198,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 31,
"map": [
[
"M:F",
"R0:O",
"R0:O",
"R0:O",
"R20:O",
"M:F",
"M:O",
"R30",
"M:O",
"M:O"
],
[
"M:F",
"R0:O",
"M:F",
"R39:O",
"R39:O",
"M:F",
"R48",
"R30",
"R57",
"M:O"
],
[
"R65",
"M:O",
"M:F",
"M:F",
"R73:O",
"R73:O",
"M:O",
"R30",
"R30",
"R30"
],
[
"M:O",
"R104",
"M:O",
"R111:O",
"R111:F",
"M:O",
"R30",
"R30",
"R30",
"R30"
],
[
"R138",
"R144:O",
"R150:O",
"R150:O",
"R156:O",
"M:F",
"R118",
"R30",
"M:O",
"M:O"
],
[
"M:F",
"M:F",
"R150:O",
"M:F",
"R156:O",
"M:F",
"R167:O",
"M:O",
"R177",
"M:O"
],
[
"R167:O",
"R185:O",
"R167:O",
"R167:O",
"R189:O",
"M:F",
"R167:O",
"R167:O",
"R167:O",
"R167:O"
],
[
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O"
],
[
"M:F",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"M:F",
"R167:O"
],
[
"R237:O",
"M:F",
"R167:O",
"M:F",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O",
"R167:O"
]
],
"regionMax_index": 240,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"R10",
"R10",
"M:F",
"R20:O",
"R20:O",
"R20:O",
"R20:O",
"M:O",
"M:O"
],
[
"R0",
"M:O",
"M:O",
"R20:O",
"R20:O",
"R20:O",
"R20:O",
"M:O",
"M:O",
"R67"
],
[
"R0",
"R0",
"R83",
"M:O",
"M:F",
"R20:F",
"R20:O",
"R99:O",
"M:F",
"M:F"
],
[
"R0",
"M:O",
"R113",
"M:O",
"R120:O",
"R120:O",
"M:F",
"R127:O",
"R127:O",
"R134:O"
],
[
"R106",
"R106",
"M:O",
"R127:O",
"M:F",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"M:F"
],
[
"R106",
"M:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O"
],
[
"M:F",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"M:F"
],
[
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"M:F",
"R127:O",
"R127:O",
"R127:O"
],
[
"R127:O",
"M:F",
"R127:O",
"R127:O",
"M:F",
"R244:O",
"M:F",
"R127:O",
"R127:O",
"R127:O"
],
[
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O",
"R127:O"
]
],
"regionMax_index": 252,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 46,
"map": [
[
"M:O",
"M:O",
"M:O",
"M:O",
"R0",
"M:O",
"R10",
"R20",
"R20",
"R30"
],
[
"M:O",
"M:O",
"R39",
"R39",
"M:O",
"R48",
"M:O",
"M:O",
"M:O",
"R57"
],
[
"M:O",
"R65",
"M:O",
"R73",
"M:O",
"R81",
"M:O",
"M:O",
"M:O",
"R89"
],
[
"M:O",
"R96",
"R96",
"M:O",
"R110",
"R110",
"M:O",
"R124",
"M:O",
"M:O"
],
[
"M:O",
"R96",
"R96",
"R96",
"R110",
"R110",
"R110",
"R110",
"R110",
"R110"
],
[
"M:O",
"R183",
"M:O",
"M:O",
"M:O",
"R110",
"R110",
"R110",
"R110",
"R110"
],
[
"M:O",
"R187",
"R187",
"R195",
"R195",
"R110",
"M:O",
"R110",
"R110",
"R110"
],
[
"R202",
"R202",
"R202",
"R191",
"R208",
"R208",
"R208",
"M:O",
"R110",
"R110"
],
[
"M:O",
"R230",
"R219",
"M:O",
"M:O",
"R208",
"R208",
"R227",
"R110",
"R110"
],
[
"M:O",
"R230",
"R231",
"M:O",
"R208",
"R208",
"R208",
"M:O",
"M:O",
"R110"
]
],
"regionMax_index": 233,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 29,
"map": [
[
"M:O",
"R0",
"M:O",
"R10",
"R10",
"R10",
"R10",
"M:O",
"R50",
"M:O"
],
[
"M:O",
"M:O",
"R10",
"R10",
"R20",
"M:F",
"R101:O",
"M:F",
"R77:O",
"R77:O"
],
[
"M:O",
"R85",
"M:O",
"M:O",
"R93",
"M:F",
"R77:O",
"R77:O",
"R77:O",
"R77:O"
],
[
"R132",
"M:O",
"R139:O",
"R139:O",
"M:F",
"M:F",
"R77:O",
"R77:O",
"R77:O",
"R77:O"
],
[
"M:O",
"R172:F",
"R166:O",
"R166:O",
"R166:O",
"R190:O",
"M:F",
"R217:O",
"M:F",
"R77:O"
],
[
"M:F",
"R166:O",
"R166:O",
"R166:O",
"M:F",
"R212:O",
"M:F",
"R202:O",
"R202:O",
"R202:O"
],
[
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"M:F",
"R202:O"
],
[
"M:F",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"M:F",
"R166:O",
"R255:O",
"R255:O"
],
[
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"M:F",
"R255:O",
"R255:O"
],
[
"M:F",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"R166:O",
"M:F"
]
],
"regionMax_index": 285,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 54,
"map": [
[
"R0",
"M",
"M",
"M",
"M",
"R10",
"M",
"M",
"M",
"M"
],
[
"M",
"R19",
"R19",
"R28",
"M",
"R37",
"R37",
"R46",
"R46",
"M"
],
[
"R54",
"M",
"R19",
"R19",
"R70",
"M",
"M",
"R99",
"M",
"M"
],
[
"M",
"R85",
"M",
"R92",
"M",
"M",
"M",
"R99",
"R106",
"R106"
],
[
"R112",
"R112",
"M",
"R118",
"M",
"R124",
"R130",
"M",
"M",
"M"
],
[
"M",
"M",
"M",
"R135",
"R135",
"R124",
"M",
"R140",
"M",
"M"
],
[
"R144",
"M",
"M",
"M",
"M",
"M",
"R148",
"R148",
"R148",
"R156"
],
[
"R159",
"R159",
"M",
"R172",
"R162",
"R165",
"M",
"R168",
"M",
"M"
],
[
"M",
"M",
"R170",
"R172",
"M",
"R174",
"M",
"R176",
"R176",
"R178"
],
[
"R179",
"M",
"R170",
"R180",
"R180",
"R181",
"R181",
"R181",
"M",
"R178"
]
],
"regionMax_index": 184,
"continue": true
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 40,
"map": [
[
"M:O",
"M:O",
"R0",
"M:O",
"M:O",
"R10",
"M:O",
"M:O",
"R20",
"R20"
],
[
"M:O",
"R38",
"R38",
"M:O",
"R47",
"R10",
"R65",
"R65",
"R20",
"R20"
],
[
"R91",
"R91",
"R91",
"M:O",
"M:O",
"M:O",
"R65",
"R20",
"R20",
"M:O"
],
[
"R91",
"R91",
"R91",
"R136",
"M:O",
"R20",
"R20",
"R20",
"M:O",
"R150"
],
[
"R91",
"R91",
"R162",
"M:O",
"R168",
"M:O",
"M:O",
"M:O",
"R150",
"R150"
],
[
"M:O",
"M:O",
"M:O",
"R179",
"R168",
"R189:O",
"R198:O",
"M:F",
"M:O",
"R150:F"
],
[
"M:O",
"M:O",
"M:O",
"R179",
"R189:O",
"R189:O",
"R198:O",
"M:F",
"R194:O",
"R194:O"
],
[
"M:O",
"R209",
"R225",
"M:O",
"R227:O",
"R189:O",
"R218:O",
"R218:O",
"R221:O",
"M:F"
],
[
"R223",
"R223",
"R225",
"M:O",
"R227:O",
"R229:O",
"M:F",
"R218:O",
"R221:O",
"R221:O"
],
[
"R223",
"R223",
"R223",
"R223",
"M:F",
"M:F",
"R221:O",
"R221:O",
"R221:O",
"R221:O"
]
],
"regionMax_index": 239,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 40,
"map": [
[
"M:O",
"M:O",
"R0",
"R0",
"M:O",
"R20",
"R20",
"R30",
"M:O",
"M:O"
],
[
"M:O",
"R39",
"R39",
"M:O",
"R48",
"M:O",
"M:O",
"R66",
"R66",
"R75"
],
[
"R83",
"M:O",
"M:O",
"R91",
"M:O",
"M:O",
"R99",
"R57",
"R66",
"R66"
],
[
"R83",
"R121",
"M:O",
"R128",
"M:O",
"M:O",
"R99",
"R135",
"M:O",
"R142"
],
[
"R83",
"M:O",
"R148",
"M:O",
"R154",
"R154",
"M:O",
"M:O",
"M:O",
"R160"
],
[
"R165",
"M:O",
"M:O",
"M:O",
"M:O",
"R170",
"R192",
"R175",
"R180",
"M:O"
],
[
"R184",
"M:O",
"M:O",
"M:O",
"R188",
"R192",
"R192",
"M:O",
"M:O",
"R200"
],
[
"R203",
"R203",
"R206",
"M:O",
"R188",
"R209:O",
"R192",
"R215",
"R215",
"R200"
],
[
"M:O",
"R203",
"R203",
"R222",
"M:O",
"R224",
"R192",
"M:O",
"R215",
"R215"
],
[
"R203",
"R203",
"R203",
"R203",
"M:O",
"R224",
"R192",
"R192",
"M:O",
"R215"
]
],
"regionMax_index": 234,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 44,
"map": [
[
"M:O",
"M:O",
"M:O",
"M:O",
"R0",
"R0",
"R10",
"M:O",
"R20",
"R20"
],
[
"M:O",
"R39",
"M:O",
"M:O",
"R0",
"R0",
"M:O",
"M:O",
"R20",
"R20"
],
[
"M:O",
"R65",
"M:O",
"R73",
"R0",
"R0",
"R89",
"M:O",
"R132",
"M:O"
],
[
"R104",
"M:O",
"R111",
"M:O",
"R0",
"M:O",
"R125",
"M:O",
"R132",
"R139"
],
[
"M:O",
"R145",
"R111",
"R111",
"R111",
"R111",
"R111",
"R169",
"M:O",
"R139"
],
[
"M:O",
"R111",
"R111",
"R111",
"R111",
"R111",
"M:O",
"R200",
"R200",
"M:O"
],
[
"R204",
"R111",
"R111",
"R111",
"R111",
"R111",
"R111",
"R200",
"R200",
"R200"
],
[
"R204",
"M:O",
"M:O",
"R234",
"R244",
"M:O",
"M:O",
"M:O",
"R200",
"R200"
],
[
"M:O",
"R242",
"M:O",
"M:O",
"R246",
"R250",
"R248",
"M:O",
"M:O",
"R200"
],
[
"M:O",
"R249",
"R249",
"M:O",
"M:O",
"R250",
"R250",
"R250",
"M:F",
"R252:O"
]
],
"regionMax_index": 252,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"M:O",
"R10",
"M:O",
"R20",
"R20",
"M:O",
"R30",
"R30",
"M:O"
],
[
"R39",
"M:O",
"R48:O",
"R48:O",
"R57",
"M:O",
"R66",
"M:O",
"R75",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R48:O",
"R48:O",
"R48:O",
"M:F",
"R48:O",
"R48:O",
"R48:O"
],
[
"R114",
"M:O",
"R121",
"R48:O",
"R48:O",
"R48:O",
"R48:O",
"R48:O",
"R48:O",
"R48:O"
],
[
"R185",
"M:O",
"R121",
"R168",
"R168",
"M:F",
"R48:O",
"R48:O",
"R48:O",
"R48:O"
],
[
"R219",
"R219",
"R195",
"M:O",
"M:O",
"R200",
"R48:O",
"R48:O",
"R48:O",
"R48:O"
],
[
"R219",
"R219",
"M:O",
"R231",
"R245",
"R200",
"M:O",
"R48:O",
"R48:O",
"R48:O"
],
[
"R219",
"R219",
"M:O",
"R227",
"R245",
"M:O",
"M:F",
"R48:O",
"R48:O",
"R48:O"
],
[
"M:O",
"R253",
"R253",
"M:O",
"R48:O",
"R48:O",
"R48:O",
"R48:O",
"R48:O",
"R48:O"
],
[
"R262",
"R262",
"R253",
"R253",
"R264:F",
"R48:O",
"R48:O",
"R48:O",
"M:F",
"R48:O"
]
],
"regionMax_index": 268,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"R0",
"R0",
"M:O",
"M:O",
"M:F",
"R20:O",
"R30:O",
"R30:O",
"R30:O"
],
[
"R0",
"R0",
"R0",
"M:O",
"R67",
"M:F",
"R30:O",
"R30:O",
"M:F",
"R30:O"
],
[
"R0",
"R0",
"M:F",
"R101:O",
"M:F",
"M:F",
"R117:O",
"R30:O",
"R30:O",
"R30:O"
],
[
"M:O",
"M:O",
"R101:O",
"R101:O",
"R147:O",
"R30:O",
"R30:O",
"R30:O",
"R30:O",
"R30:O"
],
[
"M:F",
"M:F",
"M:F",
"R101:O",
"R101:O",
"R30:O",
"R30:O",
"R30:O",
"R30:O",
"R30:O"
],
[
"R203:O",
"R203:O",
"R231:O",
"M:F",
"R101:O",
"M:F",
"R30:O",
"R30:O",
"R30:O",
"M:F"
],
[
"R203:O",
"R203:O",
"R227:O",
"R213:O",
"R213:O",
"R243:O",
"R30:O",
"R257:O",
"M:F",
"R251:O"
],
[
"R203:O",
"M:F",
"R227:O",
"M:F",
"M:F",
"M:F",
"R30:O",
"R257:O",
"M:F",
"M:F"
],
[
"M:F",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O"
],
[
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O",
"R257:O"
]
],
"regionMax_index": 281,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 41,
"map": [
[
"M:O",
"R0",
"R0",
"R38",
"M:O",
"M:O",
"M:O",
"M:O",
"R20",
"R20"
],
[
"R29",
"M:O",
"M:O",
"R38",
"R47",
"R47",
"R56",
"M:O",
"M:O",
"R20"
],
[
"M:O",
"M:O",
"M:O",
"M:O",
"R47",
"M:O",
"R81",
"M:O",
"R89",
"R65"
],
[
"M:O",
"R104",
"R111",
"R118",
"R73:O",
"R73:O",
"M:O",
"R132",
"R132",
"M:O"
],
[
"R138",
"R138",
"R111",
"M:O",
"R73:O",
"R73:O",
"R150:F",
"M:O",
"M:O",
"R156"
],
[
"R138",
"R138",
"M:O",
"M:O",
"M:O",
"R73:O",
"R73:O",
"M:O",
"R156",
"R156"
],
[
"M:O",
"R185",
"R189",
"R207",
"R193",
"R73:O",
"R73:O",
"M:O",
"R201",
"M:O"
],
[
"M:O",
"R189",
"R189",
"R207",
"M:O",
"M:O",
"R213",
"R213",
"R216",
"M:O"
],
[
"M:O",
"R204",
"M:O",
"R218",
"R220",
"M:O",
"M:O",
"R213",
"R213",
"R213"
],
[
"R225",
"M:O",
"R226",
"R226",
"R228",
"R229",
"R229",
"R213",
"R213",
"R213"
]
],
"regionMax_index": 232,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"M:F",
"R59:O",
"M:F",
"R30",
"R30",
"R30",
"M:O",
"R50",
"R50"
],
[
"M:O",
"R59:O",
"R59:O",
"R59:O",
"R30",
"R30",
"R30",
"R95",
"R50",
"R50"
],
[
"R59:O",
"R59:O",
"R120",
"M:O",
"R128",
"M:O",
"R30",
"R95",
"M:O",
"M:O"
],
[
"R59:O",
"M:F",
"M:F",
"M:F",
"M:F",
"R158:O",
"R30:F",
"R30",
"R30",
"R179"
],
[
"R151:O",
"R151:O",
"R151:O",
"R197:O",
"R197:O",
"R158:O",
"M:F",
"R203",
"R203",
"M:O"
],
[
"M:F",
"R151:O",
"R151:O",
"M:F",
"M:F",
"R151:O",
"R151:O",
"M:F",
"M:F",
"R151:O"
],
[
"R151:O",
"R151:O",
"R151:O",
"R235:O",
"M:F",
"R151:O",
"R151:O",
"R243:O",
"R151:O",
"R151:O"
],
[
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"M:F",
"R151:O",
"R151:O"
],
[
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O"
],
[
"R151:O",
"M:F",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O",
"R151:O"
]
],
"regionMax_index": 288,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 52,
"map": [
[
"R0",
"M:O",
"M:O",
"M:O",
"R10",
"R10",
"R10",
"R10",
"M:O",
"R10"
],
[
"M:O",
"M:O",
"M:O",
"M:O",
"R10",
"M:O",
"R10",
"R10",
"R10",
"R10"
],
[
"M:O",
"R75",
"M:O",
"M:O",
"M:O",
"R83",
"R49",
"R10",
"M:O",
"R99"
],
[
"R106",
"M:O",
"R113",
"R120",
"M:O",
"R83",
"M:O",
"R151",
"M:O",
"M:O"
],
[
"M:O",
"R133",
"R133",
"R139",
"M:O",
"R145",
"M:O",
"R183",
"R157",
"R163"
],
[
"R192",
"M:O",
"M:O",
"M:O",
"R173",
"R178",
"M:O",
"R183",
"R188",
"M:O"
],
[
"R192",
"R196",
"M:O",
"M:O",
"R173",
"M:O",
"M:O",
"R200",
"M:O",
"M:O"
],
[
"R192",
"M:O",
"M:O",
"M:O",
"R209",
"R209",
"R212",
"M:O",
"M:O",
"M:O"
],
[
"M:O",
"R214:F",
"R216:O",
"M:O",
"R206",
"M:O",
"M:O",
"R218",
"R218",
"M:O"
],
[
"R219:O",
"R219:O",
"M:F",
"R220",
"R220",
"R220",
"R222",
"R223",
"R223",
"R223"
]
],
"regionMax_index": 224,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 43,
"map": [
[
"R0",
"R0",
"R0",
"M:O",
"M:O",
"R20",
"M:O",
"R30",
"M:O",
"M:O"
],
[
"R0",
"R0",
"R57",
"M:O",
"M:O",
"R66",
"M:O",
"R75",
"M:O",
"M:O"
],
[
"R0",
"R83",
"M:O",
"R91",
"M:O",
"M:O",
"M:O",
"R135",
"M:F",
"R107:F"
],
[
"R0",
"M:O",
"M:O",
"M:O",
"R121",
"M:O",
"R128",
"R135:F",
"R142:O",
"R142:O"
],
[
"M:O",
"R170",
"R148",
"M:O",
"R154",
"M:O",
"R128",
"M:F",
"R142:O",
"R142:O"
],
[
"R165",
"R165",
"R180",
"R180",
"R185",
"M:O",
"R190:O",
"R190:O",
"R195:F",
"M:F"
],
[
"R165",
"R199",
"M:O",
"R203",
"R185",
"M:O",
"R207:O",
"R207:O",
"M:O",
"R211"
],
[
"M:O",
"M:O",
"M:O",
"R203",
"M:O",
"R214",
"M:O",
"R217",
"M:O",
"R220"
],
[
"M:O",
"R227",
"M:O",
"M:O",
"M:O",
"M:O",
"R224",
"R224",
"R224",
"M:O"
],
[
"M:O",
"R228",
"R228",
"R229",
"R229",
"R224",
"R224",
"R224",
"R224",
"R224"
]
],
"regionMax_index": 232,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 28,
"map": [
[
"M:F",
"M:F",
"R0:O",
"M:F",
"R10",
"M:O",
"M:O",
"M:O",
"R20",
"R20"
],
[
"M:F",
"R0:O",
"R0:O",
"R0:O",
"M:F",
"M:F",
"R57",
"R57",
"R97",
"M:O"
],
[
"M:F",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R97:F",
"R97",
"R97",
"R97"
],
[
"M:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"M:O",
"R97",
"R97",
"R97"
],
[
"M:O",
"R154",
"M:F",
"R0:O",
"R0:O",
"R0:O",
"R172:O",
"M:F",
"R208",
"M:O"
],
[
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R203:O",
"M:F",
"R208",
"R213"
],
[
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"M:F",
"R0:O",
"M:F",
"M:F"
],
[
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R255:O"
],
[
"M:F",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"M:F",
"R255:O"
],
[
"M:F",
"M:F",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O",
"R0:O"
]
],
"regionMax_index": 273,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 38,
"map": [
[
"M:O",
"M:O",
"R0",
"R0",
"M:O",
"M:O",
"R20",
"R20",
"R20",
"R20"
],
[
"M:O",
"R49",
"R0",
"R109",
"M:O",
"R67",
"R20",
"R20",
"R85",
"M:O"
],
[
"R0",
"R0",
"R0",
"R0",
"M:O",
"R117",
"M:O",
"M:O",
"M:O",
"R125"
],
[
"M:O",
"R173",
"R0",
"R0",
"R153",
"R153",
"R160",
"M:O",
"R167",
"M:O"
],
[
"M:O",
"R173",
"R0",
"M:O",
"M:O",
"R185",
"R185",
"R185",
"R191",
"M:O"
],
[
"R202",
"R202",
"M:O",
"M:O",
"M:O",
"R179",
"R185",
"R185",
"R191",
"M:O"
],
[
"M:O",
"M:O",
"R211",
"R215",
"R219",
"R219",
"M:O",
"M:O",
"R223",
"R223"
],
[
"R237",
"M:O",
"R211",
"M:O",
"R219",
"R229",
"M:O",
"R235",
"M:O",
"M:O"
],
[
"R248",
"R239",
"M:O",
"R241",
"R219",
"R229",
"R229",
"R243",
"M:O",
"R247"
],
[
"R248",
"R248",
"M:O",
"R241",
"M:O",
"R229",
"R229",
"R229",
"R229",
"R229"
]
],
"regionMax_index": 252,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 53,
"map": [
[
"R0",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R10",
"R10",
"R20",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R29",
"R29",
"R38",
"M:O",
"M:O",
"R47",
"R47"
],
[
"R63",
"R63",
"R71",
"M:O",
"M:O",
"M:O",
"R79",
"M:O",
"M:O",
"M:O"
],
[
"R63",
"R63",
"M:O",
"M:O",
"M:O",
"M:O",
"R93",
"M:O",
"M:O",
"M:O"
],
[
"R63",
"R63",
"R63",
"M:O",
"R117",
"M:O",
"M:O",
"R123",
"M:O",
"R129"
],
[
"R63",
"R63",
"R63",
"M:O",
"R144",
"R144",
"R154",
"R159",
"R164",
"R164"
],
[
"R63",
"R63",
"R63",
"M:O",
"M:O",
"M:O",
"R149",
"M:O",
"M:O",
"R164"
],
[
"R63",
"M:O",
"R179",
"M:O",
"M:O",
"R182",
"R182",
"M:O",
"R176",
"R176"
],
[
"R63",
"R63",
"R192",
"M:O",
"M:O",
"M:O",
"R176",
"R176",
"R176",
"R176"
],
[
"R63",
"M:O",
"R192",
"R199",
"R199",
"M:O",
"R200",
"M:O",
"R176",
"R176"
]
],
"regionMax_index": 201,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 30,
"map": [
[
"M:O",
"R0",
"R10",
"R10",
"R10",
"R10",
"R10",
"M:O",
"R40",
"R40"
],
[
"M:O",
"M:O",
"M:O",
"R10",
"R10",
"R10",
"M:O",
"M:O",
"R40",
"R40"
],
[
"R84",
"M:O",
"M:O",
"R10",
"R10",
"R10",
"R144",
"M:O",
"R40",
"R40"
],
[
"R123",
"M:O",
"R130",
"R163",
"M:O",
"R10",
"R137",
"R137",
"R40",
"M:O"
],
[
"M:O",
"R157",
"R157",
"R169",
"R169",
"R137",
"R137",
"R137",
"R137",
"R137"
],
[
"R157",
"R157",
"R157",
"R169",
"M:O",
"M:O",
"R137",
"M:O",
"R137",
"R137"
],
[
"R157",
"R157",
"R157",
"M:O",
"R234",
"R238",
"R213",
"R242",
"R137",
"R137"
],
[
"M:O",
"R157",
"R157",
"R157",
"R234",
"M:O",
"R213",
"R242",
"M:O",
"R137"
],
[
"R157",
"R157",
"R157",
"R157",
"M:O",
"M:O",
"R269",
"M:O",
"R271",
"M:O"
],
[
"R157",
"R157",
"R157",
"R157",
"M:O",
"R274",
"R274",
"M:O",
"M:O",
"R275"
]
],
"regionMax_index": 275,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"R0",
"R0",
"R0",
"M",
"R30",
"M",
"R67",
"M",
"M"
],
[
"R0",
"M",
"R0",
"M",
"R58",
"R58",
"M",
"R67",
"R76",
"R85"
],
[
"R93",
"R93",
"R101",
"M",
"M",
"M",
"R117",
"R117",
"R76",
"R125"
],
[
"R93",
"R93",
"R93",
"M",
"R146",
"M",
"M",
"R153",
"M",
"M"
],
[
"R93",
"R93",
"R93",
"R93",
"R93",
"R183:O",
"R215",
"R189",
"M",
"R195"
],
[
"R93",
"R93",
"R210",
"M",
"R93",
"M",
"R215",
"R189",
"R240",
"M"
],
[
"R93",
"R93",
"M",
"M",
"R93",
"R93",
"R236",
"M",
"R240",
"R93"
],
[
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"M",
"R93",
"M",
"R93"
],
[
"M",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93"
],
[
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93",
"R93"
]
],
"regionMax_index": 277,
"continue": true
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 46,
"map": [
[
"R0",
"R0",
"R10",
"M:O",
"R20",
"R30",
"M:O",
"R40",
"M:O",
"M:O"
],
[
"M:O",
"R58",
"R58",
"M:O",
"R20",
"R67",
"M:O",
"R76",
"M:O",
"R85"
],
[
"M:O",
"M:O",
"R130",
"M:O",
"R101",
"M:O",
"M:O",
"M:O",
"R109",
"M:O"
],
[
"R123",
"R123",
"R137",
"R144",
"R151",
"R151",
"R158",
"R165",
"M:O",
"R172"
],
[
"R116",
"M:O",
"R178",
"M:O",
"M:O",
"M:O",
"R158",
"R158",
"M:O",
"R190"
],
[
"R195",
"M:O",
"M:O",
"R209",
"M:O",
"R158",
"R158",
"R158",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R209",
"R213",
"M:O",
"R234",
"M:O",
"R221",
"R225"
],
[
"M:O",
"R228",
"R231",
"R231",
"M:O",
"M:O",
"R234",
"R234",
"R237",
"M:O"
],
[
"R250",
"M:O",
"R231",
"R241",
"R241",
"R241",
"R245",
"M:O",
"R249",
"R249"
],
[
"R250",
"R250",
"M:O",
"R241",
"R241",
"R241",
"R241",
"M:O",
"R249",
"R249"
]
],
"regionMax_index": 256,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 30,
"map": [
[
"R0",
"M:O",
"R10",
"R10",
"R20",
"M:O",
"R30",
"R30",
"M:O",
"M:O"
],
[
"R39",
"M:O",
"M:O",
"M:O",
"R48",
"R98",
"M:O",
"M:O",
"R57",
"R66"
],
[
"R74",
"M:O",
"R82:O",
"R90",
"M:O",
"R106",
"R106",
"R114",
"R114",
"R66"
],
[
"M:F",
"M:F",
"R82:O",
"M:F",
"M:O",
"R129",
"M:O",
"M:O",
"R136",
"M:O"
],
[
"R142:O",
"R148:O",
"R182:O",
"M:F",
"M:F",
"R160:O",
"R166:O",
"R142:O",
"R142:O",
"M:F"
],
[
"R142:O",
"R142:O",
"R187:O",
"R142:O",
"R142:O",
"R154:O",
"M:F",
"R142:O",
"R142:O",
"R142:O"
],
[
"R142:O",
"R142:O",
"M:F",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O"
],
[
"R142:O",
"R142:O",
"M:F",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O"
],
[
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"M:F",
"R142:O"
],
[
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O",
"R142:O"
]
],
"regionMax_index": 263,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 32,
"map": [
[
"R0",
"R0",
"M:O",
"M:O",
"M:O",
"M:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O"
],
[
"M:O",
"M:O",
"R48",
"R57",
"R57:F",
"R66:F",
"R10:O",
"R10:O",
"R10:O",
"R10:O"
],
[
"M:O",
"M:O",
"R92:O",
"R92:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O"
],
[
"R123",
"R123",
"M:O",
"M:O",
"M:F",
"R10:O",
"R10:O",
"R10:O",
"R10:O",
"M:F"
],
[
"R150",
"M:O",
"R156",
"R156",
"R162:O",
"M:F",
"M:F",
"R10:O",
"R10:O",
"M:F"
],
[
"R179",
"M:O",
"M:O",
"R184",
"R189:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O"
],
[
"M:O",
"M:O",
"R208",
"R208",
"M:F",
"R10:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O"
],
[
"R223",
"R226",
"M:O",
"M:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O",
"R10:O"
],
[
"R223",
"R240",
"R240",
"R242",
"M:F",
"R251:O",
"M:F",
"R10:O",
"R10:O",
"R10:O"
],
[
"R223",
"M:O",
"R240",
"M:O",
"M:F",
"R251:O",
"R251:O",
"M:F",
"M:F",
"R10:O"
]
],
"regionMax_index": 252,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"M:O",
"R0",
"M:O",
"R10",
"R38",
"M:O",
"R20",
"M:O",
"M:O",
"M:O"
],
[
"R29",
"R29",
"M:O",
"M:O",
"R38",
"R98",
"M:O",
"R56",
"R56",
"R56"
],
[
"R29",
"R29",
"M:O",
"R128",
"M:O",
"R106",
"R106",
"R56",
"R56",
"R56"
],
[
"R29",
"R29",
"M:O",
"R135",
"R135",
"M:O",
"M:O",
"R56",
"R56",
"R56"
],
[
"R29",
"M:O",
"R168",
"R135",
"R135",
"R135",
"R135",
"R56",
"R56",
"R56"
],
[
"R162",
"R162",
"R162",
"M:O",
"M:O",
"R135",
"R135",
"R56",
"R56",
"M:O"
],
[
"R162",
"R162",
"R162",
"R162",
"R135",
"R135",
"R135",
"R135",
"M:O",
"R246"
],
[
"R162",
"R162",
"R162",
"M:O",
"R135",
"R135",
"M:O",
"R258",
"R273",
"R246"
],
[
"R162",
"R162",
"R162",
"R162",
"M:O",
"R269",
"R269",
"M:O",
"R273",
"R273"
],
[
"R162",
"R162",
"R162",
"R162",
"R162",
"R162",
"R269",
"R269",
"M:O",
"R273"
]
],
"regionMax_index": 281,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 46,
"map": [
[
"R0",
"M:O",
"R68",
"M:O",
"R20",
"M:O",
"R30",
"R30",
"R30",
"R30"
],
[
"R59",
"M:O",
"R68",
"R77",
"R94",
"M:O",
"R30",
"M:O",
"R86",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"M:O",
"R110",
"R110",
"R110",
"R118",
"M:O",
"M:O"
],
[
"M:O",
"R125",
"R125",
"M:O",
"R110",
"R110",
"R110",
"R146",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R152",
"M:O",
"R158",
"M:O",
"M:O",
"M:O",
"R164"
],
[
"R169",
"R174",
"M:O",
"M:O",
"M:O",
"M:O",
"R204",
"M:O",
"M:O",
"R184"
],
[
"R169",
"R169",
"R169",
"R215",
"R200",
"R200",
"R204",
"R208",
"R212",
"R212"
],
[
"M:O",
"R226",
"M:O",
"R215",
"R215",
"M:O",
"R208",
"R208",
"R212",
"R212"
],
[
"M:O",
"R228",
"R228",
"M:O",
"R230",
"M:O",
"R232:O",
"M:O",
"R212:F",
"M:O"
],
[
"M:O",
"R228",
"R228",
"R228",
"M:O",
"R238:O",
"R238:O",
"R238:O",
"M:F",
"R240:O"
]
],
"regionMax_index": 240,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"M:O",
"R0",
"M:O",
"M:F",
"R10:O",
"M:F",
"R20:O",
"M:F",
"R30:O",
"R30:O"
],
[
"M:O",
"R39:O",
"M:F",
"R10:O",
"R10:O",
"R57:O",
"R20:O",
"R20:O",
"M:F",
"R75:O"
],
[
"R83",
"M:O",
"R99:F",
"R57:O",
"R57:O",
"R57:O",
"M:F",
"M:F",
"M:F",
"R115:O"
],
[
"R122",
"M:F",
"R91:O",
"R57:O",
"R57:O",
"M:F",
"R150:O",
"R150:O",
"R181:O",
"M:F"
],
[
"M:F",
"R163:O",
"M:F",
"R57:O",
"R57:O",
"R57:O",
"R143:O",
"M:F",
"R181:O",
"R181:O"
],
[
"R163:O",
"R163:O",
"R163:O",
"R57:O",
"R57:O",
"R57:O",
"M:F",
"R207:O",
"R207:O",
"M:F"
],
[
"R163:O",
"R163:O",
"M:F",
"R240:O",
"R57:O",
"R57:O",
"R231:O",
"R207:O",
"R231:O",
"R231:O"
],
[
"M:F",
"R231:O",
"R231:O",
"R240:O",
"M:F",
"M:F",
"R231:O",
"R207:O",
"M:F",
"R231:O"
],
[
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O"
],
[
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O",
"R231:O"
]
],
"regionMax_index": 272,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 50,
"map": [
[
"M:O",
"M:O",
"M:O",
"R0",
"M:O",
"M:O",
"R10",
"R10",
"M:O",
"R20"
],
[
"M:O",
"M:O",
"M:O",
"R29",
"M:O",
"R38",
"M:O",
"M:O",
"M:O",
"M:O"
],
[
"R46",
"M:O",
"R54",
"R54",
"R62",
"R62",
"R78",
"R86",
"R86",
"R94"
],
[
"M:F",
"M:F",
"M:F",
"M:F",
"M:F",
"M:F",
"R70",
"R86",
"M:O",
"M:O"
],
[
"R113:O",
"R113:O",
"R119:O",
"M:F",
"R125:O",
"M:F",
"R152",
"M:O",
"R137",
"R137"
],
[
"R113:O",
"R113:O",
"M:F",
"M:F",
"R147:O",
"M:F",
"R178:O",
"R157:O",
"R162:F",
"R162"
],
[
"R113:O",
"R113:O",
"M:F",
"R174:O",
"R174:O",
"M:F",
"R178:O",
"R182:O",
"M:O",
"R186"
],
[
"R113:O",
"R113:O",
"R113:O",
"M:F",
"R195:O",
"M:F",
"R206:O",
"M:F",
"M:F",
"M:F"
],
[
"R113:O",
"R113:O",
"R113:O",
"R113:O",
"M:F",
"M:F",
"R206:O",
"R208:O",
"M:F",
"R210:O"
],
[
"R113:O",
"M:F",
"R113:O",
"M:F",
"R212:O",
"R212:O",
"M:F",
"M:F",
"R213:O",
"R213:O"
]
],
"regionMax_index": 213,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 32,
"map": [
[
"R0:O",
"M:F",
"R10",
"R10",
"R20",
"M:O",
"R30",
"R30",
"R30",
"M:O"
],
[
"R49:F",
"M:F",
"M:O",
"M:O",
"M:O",
"M:O",
"R30",
"R30",
"M:O",
"R67"
],
[
"R75",
"R75",
"R137:O",
"M:O",
"R91",
"R99",
"R99",
"R30",
"R30",
"R67"
],
[
"R75",
"M:O",
"R137:O",
"R137:O",
"R144:O",
"M:O",
"M:O",
"R30",
"R30",
"R30"
],
[
"M:O",
"R164",
"R137:O",
"R137:O",
"R209:O",
"R188:F",
"R188",
"R194",
"M:O",
"R30"
],
[
"R199",
"M:F",
"M:F",
"R137:O",
"R204:O",
"M:O",
"R214:O",
"R219",
"R219",
"R30"
],
[
"M:F",
"R228:O",
"R228:O",
"R137:O",
"R204:O",
"M:F",
"R214:O",
"M:F",
"M:F",
"M:F"
],
[
"R235:O",
"R235:O",
"M:F",
"M:F",
"R238:O",
"M:F",
"R241:O",
"R241:O",
"R244:O",
"R247:O"
],
[
"R235:O",
"R235:O",
"R251:O",
"M:F",
"R244:O",
"R244:O",
"M:F",
"R244:O",
"R244:O",
"R244:O"
],
[
"R235:O",
"R235:O",
"R235:O",
"R235:O",
"R235:O",
"R244:O",
"R244:O",
"R244:O",
"M:F",
"R244:O"
]
],
"regionMax_index": 264,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"M:O",
"M:O",
"R10",
"R10",
"M:O",
"M:O",
"R30",
"R30",
"R30"
],
[
"R0",
"R58",
"R58",
"R10",
"R10",
"R10",
"M:O",
"R118",
"M:O",
"R30"
],
[
"M:O",
"M:O",
"M:O",
"R10",
"R10",
"R10",
"M:O",
"R126",
"R94",
"R94"
],
[
"R141",
"R141",
"R155",
"R10",
"R10",
"R10",
"R10",
"M:O",
"M:O",
"R183"
],
[
"R141",
"M:O",
"R155",
"R10",
"M:O",
"R10",
"R10",
"R238",
"M:O",
"R213"
],
[
"R141",
"R141",
"R252",
"M:O",
"R233",
"M:O",
"R272",
"R238",
"R248",
"R248"
],
[
"R141",
"R141",
"R141",
"R141",
"R233",
"R141",
"R272",
"M:O",
"R243",
"R276"
],
[
"R141",
"R141",
"R141",
"R141",
"M:O",
"R141",
"R141",
"M:O",
"M:O",
"R276"
],
[
"M:O",
"R141",
"R141",
"R141",
"R141",
"R141",
"R302",
"R302",
"R276",
"R276"
],
[
"R307",
"M:O",
"R141",
"R141",
"R141",
"R141",
"M:O",
"M:O",
"R276",
"R276"
]
],
"regionMax_index": 309,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 48,
"map": [
[
"M:O",
"M:O",
"R0",
"M:O",
"R10",
"R10",
"M:O",
"M:O",
"M:O",
"R30"
],
[
"M:O",
"R0",
"R0",
"R48",
"R10",
"R10",
"M:O",
"R66",
"R75",
"M:O"
],
[
"R83",
"M:O",
"M:O",
"R48",
"M:O",
"R135",
"M:O",
"R66",
"M:O",
"R107"
],
[
"M:O",
"R114",
"R91",
"R91",
"R128",
"R160",
"M:O",
"M:O",
"M:O",
"R142"
],
[
"R148",
"R148",
"R148",
"M:O",
"R128",
"R160",
"R166",
"R172",
"R172",
"R178"
],
[
"M:O",
"R183",
"R183",
"M:O",
"M:O",
"M:O",
"R166",
"R193",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R197:O",
"R197:O",
"R193",
"R193",
"R193",
"M:O",
"M:O"
],
[
"R222",
"R208",
"M:O",
"R214",
"R214",
"M:O",
"R217",
"R220",
"M:O",
"M:O"
],
[
"R222",
"R222",
"R222",
"R211",
"R228",
"M:O",
"R217",
"R230",
"R230",
"R232"
],
[
"R222",
"R222",
"R222",
"M:O",
"R228",
"R228",
"M:O",
"R230",
"R230",
"M:O"
]
],
"regionMax_index": 236,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 36,
"map": [
[
"M:O",
"R0",
"R10",
"R10",
"R10",
"R20",
"R20",
"R20",
"R50",
"M:O"
],
[
"R59",
"M:O",
"M:O",
"R10",
"M:O",
"R20",
"R20",
"R20",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R94",
"M:O",
"R102",
"R20",
"R20",
"R20",
"R20",
"M:O"
],
[
"R132",
"R132",
"R139",
"R139",
"R102",
"M:O",
"R20",
"M:O",
"M:O",
"R153"
],
[
"R125",
"R159",
"M:O",
"R165",
"R171",
"R171",
"R20",
"R209",
"M:O",
"R189"
],
[
"R194",
"M:O",
"M:O",
"R199",
"M:O",
"R222",
"M:O",
"R209",
"R214",
"M:O"
],
[
"M:O",
"M:O",
"R218",
"R222",
"R222",
"R222",
"M:O",
"M:O",
"R230",
"M:O"
],
[
"M:O",
"R233",
"R233",
"R222",
"M:O",
"R239",
"M:O",
"R242",
"R242",
"R245"
],
[
"R247",
"R247",
"R233",
"R233",
"R251",
"M:O",
"R253",
"R255",
"M:O",
"M:O"
],
[
"R247",
"M:O",
"R233",
"M:O",
"R258",
"M:O",
"R253",
"M:O",
"R259",
"R259"
]
],
"regionMax_index": 259,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 46,
"map": [
[
"R0",
"M:O",
"M:O",
"R10",
"R10",
"M:O",
"M:O",
"R20",
"M:O",
"M:O"
],
[
"R0",
"R0",
"M:O",
"M:O",
"R38",
"R38",
"R47",
"R20",
"R65",
"R65"
],
[
"R73",
"R81",
"M:O",
"R89",
"R89",
"R97",
"R97",
"M:O",
"R65",
"R65"
],
[
"R73",
"M:O",
"R120",
"M:O",
"R89",
"M:O",
"M:O",
"R65",
"R65",
"R65"
],
[
"M:O",
"R120",
"R120",
"R153",
"M:O",
"R159",
"M:O",
"R165",
"R171",
"M:O"
],
[
"R176",
"M:O",
"R199",
"M:O",
"M:O",
"R186",
"R191",
"R191",
"R171",
"M:O"
],
[
"R195",
"M:O",
"R199",
"R203",
"M:O",
"R186",
"M:O",
"M:O",
"M:O",
"M:O"
],
[
"M:O",
"R206",
"R206",
"M:O",
"M:O",
"R209",
"R212",
"R212",
"R215",
"M:O"
],
[
"R217",
"R217",
"M:O",
"R219",
"M:O",
"R209",
"M:O",
"M:O",
"R221",
"R221"
],
[
"R217",
"M:O",
"R225",
"M:O",
"M:O",
"R226",
"M:O",
"R227",
"R227",
"M:O"
]
],
"regionMax_index": 227,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 32,
"map": [
[
"R0",
"M:O",
"M:O",
"R10",
"R10",
"R20",
"R20",
"R20",
"R40",
"R40"
],
[
"R0",
"R0",
"R58",
"M:O",
"R10",
"R76",
"M:O",
"R85",
"M:O",
"M:O"
],
[
"M:O",
"R0",
"M:O",
"M:O",
"R101",
"M:O",
"M:O",
"R109",
"R117",
"R117"
],
[
"R93",
"R93",
"R139",
"R146",
"M:O",
"R153",
"M:O",
"R109",
"R117",
"R117"
],
[
"M:O",
"R93",
"R195",
"R172:O",
"R172:O",
"R178",
"R178",
"M:O",
"R117",
"R117"
],
[
"M:O",
"M:O",
"R195",
"R195",
"R172:O",
"R178",
"R178",
"R178",
"R178",
"M:O"
],
[
"R195",
"R195",
"R195",
"R195",
"M:O",
"M:O",
"R242",
"M:O",
"R230",
"R230"
],
[
"R195",
"R195",
"R195",
"R195",
"R195",
"M:O",
"R242",
"R245",
"R245",
"M:O"
],
[
"R195",
"R195",
"R195",
"R195",
"R251",
"R251",
"R253",
"R253",
"M:O",
"R255"
],
[
"R195",
"R195",
"R195",
"R195",
"M:O",
"M:O",
"R253",
"R253",
"M:O",
"M:O"
]
],
"regionMax_index": 258,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 34,
"map": [
[
"M:O",
"R0",
"R0",
"R0",
"M:O",
"R30",
"R30",
"M:O",
"R85",
"M:O"
],
[
"R0",
"R0",
"R0",
"R0",
"R67",
"M:O",
"R76",
"R76",
"R117",
"M:O"
],
[
"M:O",
"R0",
"R0",
"M:O",
"R109",
"R109",
"M:O",
"M:O",
"R117",
"R117"
],
[
"R0",
"R0",
"R0",
"R139",
"M:O",
"M:O",
"M:O",
"M:O",
"R170",
"M:O"
],
[
"R0",
"M:O",
"M:O",
"M:O",
"R186",
"M:O",
"M:O",
"R164",
"R170",
"R170"
],
[
"M:O",
"R181",
"R181",
"M:O",
"R186",
"R196",
"R196",
"R164",
"R201",
"M:O"
],
[
"R220",
"M:O",
"R209",
"M:O",
"R213",
"R191",
"R196",
"R196",
"R201",
"M:O"
],
[
"R220",
"R220",
"R223",
"M:O",
"R226",
"R191",
"M:O",
"R196",
"R229",
"R229"
],
[
"R220",
"R220",
"R220",
"R220",
"R226",
"R191",
"R242",
"M:O",
"R229",
"R229"
],
[
"R220",
"R220",
"R220",
"M:O",
"M:O",
"R191",
"R191",
"M:O",
"M:O",
"R229"
]
],
"regionMax_index": 249,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 46,
"map": [
[
"R0",
"M:O",
"R10",
"R10",
"R10",
"M:O",
"R30",
"R30",
"M:O",
"R40"
],
[
"R49",
"M:O",
"R92",
"M:O",
"R67",
"M:O",
"M:O",
"R76",
"M:O",
"M:O"
],
[
"M:O",
"R84",
"R92",
"R100",
"M:O",
"R108",
"R108",
"M:O",
"R116",
"M:O"
],
[
"M:O",
"R84",
"M:O",
"R149",
"R123",
"R130",
"R130",
"M:O",
"M:O",
"R137"
],
[
"R143",
"M:O",
"M:O",
"R155",
"R183",
"M:O",
"R161",
"R167",
"R167",
"R137"
],
[
"M:O",
"M:O",
"R178",
"M:O",
"R183",
"R188",
"M:O",
"R193",
"M:O",
"M:O"
],
[
"M:O",
"R197",
"R219",
"R201",
"M:O",
"R205",
"M:O",
"R209",
"M:O",
"R213"
],
[
"R216",
"M:O",
"R219",
"R219",
"M:O",
"M:O",
"R225",
"M:O",
"R238",
"M:O"
],
[
"R216",
"R219",
"R219",
"R219",
"M:O",
"R234",
"R236",
"M:O",
"R238",
"R240"
],
[
"M:O",
"R219",
"R219",
"R219",
"R219",
"R219",
"M:O",
"R244",
"M:O",
"R240"
]
],
"regionMax_index": 245,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 48,
"map": [
[
"M:O",
"R0",
"R0",
"R10",
"R10",
"R30",
"R30",
"M:O",
"M:O",
"R40"
],
[
"M:O",
"M:O",
"M:O",
"R10",
"R10",
"M:O",
"M:O",
"R49",
"M:O",
"R58"
],
[
"R66",
"R66",
"M:O",
"R74",
"M:O",
"R82",
"R82",
"M:O",
"M:O",
"R90"
],
[
"R97",
"M:O",
"R104",
"R111",
"R111",
"M:O",
"M:O",
"R118",
"R118",
"M:O"
],
[
"R159",
"M:O",
"R104",
"M:O",
"R130:O",
"R136",
"M:O",
"R142",
"R142",
"R142"
],
[
"R159",
"R159",
"M:O",
"M:O",
"R130:O",
"R169",
"M:O",
"R142",
"R142",
"M:O"
],
[
"R159",
"R159",
"R181",
"M:O",
"M:O",
"M:O",
"M:O",
"R185",
"M:O",
"R189"
],
[
"R159",
"R192",
"M:O",
"R195",
"M:O",
"M:O",
"R198",
"R202:O",
"M:O",
"M:O"
],
[
"R159",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R202:O",
"R204",
"M:O"
],
[
"R159",
"R206",
"R206",
"M:O",
"R207",
"R207",
"R208",
"M:O",
"M:O",
"R209"
]
],
"regionMax_index": 209,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 38,
"map": [
[
"R0",
"R0",
"M:O",
"M:O",
"R58",
"R30",
"R30",
"R30",
"M:O",
"M:O"
],
[
"R0",
"M:O",
"R49",
"M:O",
"R67",
"R67",
"M:O",
"R76",
"R76",
"R117"
],
[
"R0",
"R0",
"R101",
"M:O",
"M:O",
"R109",
"R109",
"R76",
"R76",
"R117"
],
[
"R0",
"M:O",
"R101",
"R147",
"M:O",
"R109",
"M:O",
"R154",
"M:O",
"R161"
],
[
"M:O",
"R167:O",
"M:O",
"R173",
"M:O",
"R179",
"R185",
"R185",
"M:O",
"M:O"
],
[
"R167:O",
"R167:O",
"R167:O",
"M:O",
"R200",
"R200",
"R185",
"M:O",
"R200",
"R215"
],
[
"R167:O",
"R223",
"M:O",
"R227",
"M:O",
"R200",
"R200",
"R200",
"R200",
"M:O"
],
[
"M:O",
"M:O",
"R238",
"R238",
"M:O",
"M:O",
"R200",
"M:O",
"R244",
"R244"
],
[
"R246",
"R246",
"M:O",
"R241",
"R241",
"R241",
"R241",
"R244",
"R244",
"R244"
],
[
"M:O",
"M:O",
"R255",
"M:O",
"R241",
"R241",
"M:O",
"M:O",
"R244",
"R244"
]
],
"regionMax_index": 257,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 55,
"map": [
[
"M:O",
"R0",
"M:O",
"R10",
"M:O",
"M:O",
"R20",
"R20",
"R57",
"M:O"
],
[
"M:O",
"M:O",
"M:O",
"R90",
"R98",
"R98",
"M:O",
"M:O",
"R57",
"R66"
],
[
"R74",
"R82",
"R82",
"R98",
"R98",
"R98",
"M:O",
"M:O",
"M:O",
"R66"
],
[
"R121",
"M:O",
"M:O",
"R98",
"R98",
"R149",
"R149",
"R156",
"R156",
"R114"
],
[
"R169",
"M:O",
"R180",
"M:O",
"R98",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R185",
"R185",
"R135",
"R135",
"M:O",
"M:O",
"M:O",
"M:O"
],
[
"R194",
"R194",
"M:O",
"M:O",
"M:O",
"M:O",
"R198",
"M:O",
"M:O",
"R202"
],
[
"M:O",
"R205",
"M:O",
"R208",
"M:O",
"M:O",
"M:O",
"M:O",
"M:O",
"R211"
],
[
"R213",
"M:O",
"M:O",
"M:O",
"M:O",
"R215",
"R217",
"M:O",
"R223",
"M:O"
],
[
"R213",
"R213",
"M:O",
"R221",
"M:O",
"R215",
"R222",
"M:O",
"R223",
"R223"
]
],
"regionMax_index": 224,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 25,
"map": [
[
"R0",
"R0",
"R0",
"R0",
"M:O",
"R30",
"M:O",
"M:O",
"R85",
"R85"
],
[
"M:O",
"R0",
"R0",
"R0",
"R0",
"R67",
"M:O",
"M:O",
"R85",
"R85"
],
[
"R102",
"M:O",
"R0",
"R0",
"R0",
"R67",
"M:O",
"M:O",
"R85",
"R85"
],
[
"R102",
"R102",
"M:O",
"M:O",
"R140",
"R147:O",
"M:O",
"R154",
"R154",
"M:O"
],
[
"R102",
"R102",
"R102",
"R102",
"R140",
"M:O",
"R178",
"R178",
"R178",
"R178"
],
[
"R102",
"R102",
"R102",
"M:O",
"M:O",
"R178",
"R178",
"R178",
"R178",
"R178"
],
[
"R102",
"R102",
"R102",
"R247",
"M:O",
"R233",
"M:O",
"R178",
"R178",
"R178"
],
[
"M:O",
"M:O",
"R266",
"R250",
"R250",
"R250",
"R270",
"R178",
"R178",
"R178"
],
[
"R264",
"M:O",
"R266",
"R250",
"R250",
"R270",
"R270",
"M:O",
"R178",
"M:O"
],
[
"R273",
"R273",
"R273",
"M:O",
"M:O",
"R270",
"R270",
"R270",
"R270",
"R270"
]
],
"regionMax_index": 279,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 40,
"map": [
[
"M:O",
"R0",
"M:O",
"R10",
"M:O",
"R20",
"R20",
"M:O",
"M:O",
"M:O"
],
[
"M:O",
"M:O",
"R29",
"M:O",
"M:O",
"M:O",
"M:O",
"R38",
"R38",
"R47"
],
[
"R55",
"R86",
"M:O",
"R63",
"R63",
"R71",
"M:O",
"M:O",
"M:O",
"R47"
],
[
"M:O",
"R86",
"R86",
"M:O",
"R63",
"R86",
"R86",
"R114",
"R114",
"R47"
],
[
"M:O",
"R86",
"R86",
"R86",
"R86",
"R86",
"R139",
"M:O",
"M:O",
"R145"
],
[
"M:O",
"R86",
"R86",
"R86",
"R86",
"M:O",
"R139",
"R165",
"M:O",
"R170"
],
[
"R86",
"R86",
"R86",
"R186",
"M:O",
"R190",
"M:O",
"M:O",
"M:O",
"R194"
],
[
"R86",
"R86",
"M:O",
"M:O",
"R200",
"R190",
"R203",
"R203",
"R206",
"R206"
],
[
"R86",
"R86",
"R212",
"M:O",
"M:O",
"R190",
"R190",
"M:O",
"M:O",
"R218"
],
[
"M:O",
"R86",
"M:O",
"R219",
"R219",
"M:O",
"R190",
"R220",
"M:O",
"R221:O"
]
],
"regionMax_index": 221,
"continue": false
}

View File

@ -0,0 +1,128 @@
{
"fieldSize": 10,
"mines": 26,
"map": [
[
"R0",
"R0",
"M:O",
"M:O",
"R10",
"M:O",
"R20",
"M:O",
"R30",
"R30"
],
[
"R0",
"R0",
"M:O",
"M:O",
"R57",
"R57",
"R20",
"R20",
"R84",
"M:O"
],
[
"R0",
"R0",
"M:O",
"M:O",
"M:O",
"M:O",
"R20",
"R20",
"M:O",
"R100"
],
[
"R0",
"R0",
"R128",
"R168",
"R142:O",
"R142:O",
"R20",
"R20",
"R20",
"M:O"
],
[
"R0",
"R0",
"M:O",
"R142:O",
"R142:O",
"R142:O",
"M:O",
"R218",
"R20",
"R198"
],
[
"R0",
"R0",
"M:O",
"R142:O",
"R142:O",
"R142:O",
"R235",
"R223",
"M:O",
"R198"
],
[
"M:O",
"M:O",
"R227",
"R227",
"R231:O",
"M:O",
"R235",
"R223",
"R223",
"R223"
],
[
"R246",
"R246",
"R227",
"R227",
"R227",
"M:O",
"M:O",
"R223",
"R223",
"R223"
],
[
"M:O",
"R227",
"R227",
"R227",
"R227",
"R269",
"R269",
"R255",
"R223",
"R223"
],
[
"R274",
"R274",
"M:O",
"R227",
"R227",
"M:O",
"R269",
"M:O",
"R223",
"R223"
]
],
"regionMax_index": 277,
"continue": false
}

View File

@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'UIloads.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(244, 75)
Form.setMinimumSize(QtCore.QSize(244, 75))
Form.setMaximumSize(QtCore.QSize(244, 75))
Form.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/source/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Form.setWindowIcon(icon)
self.img = QtWidgets.QLabel(Form)
self.img.setGeometry(QtCore.QRect(10, 10, 50, 50))
self.img.setObjectName("img")
self.wait = QtWidgets.QLabel(Form)
self.wait.setGeometry(QtCore.QRect(70, 10, 161, 51))
self.wait.setObjectName("wait")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Loading core"))
self.img.setText(_translate("Form", "<html><head/><body><p><img src=\":/source/clocks.png\" width=\"50\" height=\"50\"/></p></body></html>"))
self.wait.setText(_translate("Form", "Please, wait..."))
import Gamecore.source_rc

BIN
Gamecore/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,43 @@
[Core]: Saper game core v. 1.0 beta
[Core]: TimeOut connection Service was been started
[Core]: multiMethod: on
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: method init: getGameSession
[Core]: core was been finished

2225
Gamecore/logs/1611839480.log Normal file

File diff suppressed because it is too large Load Diff

4
Gamecore/response.json Normal file
View File

@ -0,0 +1,4 @@
{
"error": "Request Timeout. Response time exceeded",
"error_randomID": 78715775
}

530
Gamecore/rgGenTest.py Normal file
View File

@ -0,0 +1,530 @@
def rgReplace(field, setV, replaceTo):
print('[rgReplace function]: started.')
for r in range(len(field)):
print('[rgReplace function]: row#%s' % r)
for c in range(len(field[r])):
print('[rgReplace function]: cell#%s' % c)
cell = field[r][c]
if cell == setV:
print('[rgReplace function]: replacing...')
field[r][c] = replaceTo
return field
def vold_regionGen(size, mines):
import random
# M - Мина
# ...:F - Флаг
# R(0...X) - Регионы
# E - свободно (core)
# ..:O - ячейка открыта игроком
field = list()
for x in range(size):
field.append(list())
for y in range(size):
field[x].append('E')
while mines > 0:
for X in range(len(field)):
for Y in range(len(field[X])):
if mines > 0 and random.randint(0, 100) >= random.randint(68, 90):
field[X][Y] = 'M'
mines -= 1
emptyField = True
filedNum = 0
while emptyField:
rgCreated = False
for Y in range(len(field)):
for X in range(len(field[Y])):
if field[Y][X] == 'E':
print(f"[Generate map] create region#{filedNum}")
field[Y][X] = f"R{filedNum}"
rgCoords = {"X": X, "Y": Y}
rgCreated = True
break
if rgCreated:
break
if rgCreated:
# rgSize = random.randint(1, ((size ** 2) - mines) // 6)
rgSize = 1 # (!) Ради эксперимента поставим 1
for _ in range(rgSize):
stop = False
while True:
upMove = rgCoords["Y"] != 0
if upMove:
upMove &= field[rgCoords["Y"] - 1][rgCoords["X"]] != 'M'
downMove = rgCoords["Y"] != size - 1
if downMove:
downMove &= field[rgCoords["Y"] + 1][rgCoords["X"]] != 'M'
leftMove = rgCoords["X"] != 0
if leftMove:
leftMove &= field[rgCoords["Y"]][rgCoords["X"] - 1] != 'M'
rightMove = rgCoords["X"] != size - 1
if rightMove:
rightMove &= field[rgCoords["Y"]][rgCoords["X"] + 1] != 'M'
if not(upMove and downMove and leftMove or rightMove):
stop = True
break
moveID = random.randint(0, 3)
if upMove and moveID == 0:
rgCoords["Y"] -= 1
print(f"[Generate map]: upMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif downMove and moveID == 1:
rgCoords["Y"] += 1
print(f"[Generate map]: downMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif leftMove and moveID == 2:
rgCoords["X"] -= 1
print(f"[Generate map]: leftMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif rightMove and moveID == 3:
rgCoords["X"] += 1
print(f"[Generate map]: rightMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
if stop:
break
emptyField = False
for row in field:
for cell in row:
if cell == 'E':
emptyField = True
filedNum += 1
break
# Объединение регионов
print('[Generate map]: combine the regions')
for rowID in range(len(field)):
print('[Generate map]: cursore in rowID %s' % rowID)
for cellID in range(len(field[rowID])):
print('[Generate map]: cursore in cellID %s' % cellID)
cell = field[rowID][cellID]
if 'R' in cell:
print('[Generate map]: combine region %s' % cell)
sawUp = rowID != 0
sawDown = rowID != len(field) - 1
sawLeft = cellID != 0
sawRight = cellID != len(field) - 1
print('[Generate map]: debug: %s %s %s %s' % (sawUp, sawDown, sawLeft, sawRight)) # DEBUG
if sawUp:
print('sawUp') # DEBUG
if cell != field[rowID - 1][cellID] and 'R' in field[rowID - 1][cellID]:
print('yes!') # DEBUG
if int(cell.split('R')[-1]) > int(field[rowID - 1][cellID].split('R')[-1]):
print('Poi') # DEBUG
field = rgReplace(field, cell, field[rowID - 1][cellID])
rgMax = field[rowID - 1][cellID]
print('[Generate map]: combine the region to %s' % field[rowID - 1][cellID])
else:
print('Poi2') # DEBUG
field = rgReplace(field, field[rowID - 1][cellID], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
if sawDown:
print('sawDown') # DEBUG
if cell != field[rowID + 1][cellID] and 'R' in field[rowID + 1][cellID]:
print('yes!') # DEBUG
if int(cell.split('R')[-1]) > int(field[rowID + 1][cellID].split('R')[-1]):
print('Poi') # DEBUG
field = rgReplace(field, cell, field[rowID + 1][cellID])
rgMax = field[rowID + 1][cellID]
print('[Generate map]: combine the region to %s' % field[rowID + 1][cellID])
else:
print('Poi2') # DEBUG
field = rgReplace(field, field[rowID + 1][cellID], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
if sawLeft:
if cell != field[rowID][cellID - 1] and 'R' in field[rowID][cellID - 1]:
if int(cell.split('R')[-1]) > int(field[rowID][cellID - 1].split('R')[-1]):
field = rgReplace(field, cell, field[rowID][cellID - 1])
rgMax = field[rowID][cellID - 1]
print('[Generate map]: combine the region to %s' % field[rowID][cellID - 1])
else:
field = rgReplace(field, field[rowID][cellID - 1], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
if sawRight:
if cell != field[rowID][cellID + 1] and 'R' in field[rowID][cellID + 1]:
if int(cell.split('R')[-1]) > int(field[rowID][cellID + 1].split('R')[-1]):
field = rgReplace(field, cell, field[rowID][cellID + 1])
rgMax = field[rowID][cellID + 1]
print('[Generate map]: combine the region to %s' % field[rowID][cellID + 1])
else:
field = rgReplace(field, field[rowID][cellID + 1], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
ret_values = {"field": field, "regionMax_index": filedNum}
return ret_values
def old_regionGen(size, mines):
import random
# M - Мина
# ...:F - Флаг
# R(0...X) - Регионы
# E - свободно (core)
# ..:O - ячейка открыта игроком
field = list()
for x in range(size):
field.append(list())
for y in range(size):
field[x].append('E')
while mines > 0:
for X in range(len(field)):
for Y in range(len(field[X])):
if mines > 0 and random.randint(0, 100) >= random.randint(68, 90):
field[X][Y] = 'M'
mines -= 1
# сгенерируем минимальные 6 больших регионов
EmptyFiled = True
filedNum = 0
while EmptyFiled:
sizeReg = random.randint(1, (size ** 2) // 8)
# Определим "Точку развития"
for X in range(len(field)):
for Y in range(len(field[X])):
if field[X][Y] != 'M' and random.randint(0, 100) >= random.randint(85, 90):
field[X][Y] = f"R{filedNum}"
regionCoords = [X, Y]
cursor = regionCoords.copy()
for _ in range(sizeReg):
# Определим "Правила расширения региона"
moveUp = cursor[0] != 0
moveDown = cursor[0] != size - 1
moveLeft = cursor[1] != 0
moveRight = cursor[1] != size - 1
while True:
print('void:', cursor[0], cursor[1])
randSel = ['R', 'L', 'U', 'D'][random.randint(0, 3)]
if randSel == 'R' and moveRight:
cursor[1] += 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
elif randSel == 'L' and moveLeft:
cursor[1] -= 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
elif randSel == 'U' and moveUp :
cursor[0] -= 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
elif randSel == 'D' and moveDown:
cursor[0] += 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
valuesoffield = list()
for Row in field:
for item in Row:
valuesoffield.append(item)
EmptyFiled = 'E' in valuesoffield
if EmptyFiled:
filedNum += 1
return {"field": field, "regionMax_index": filedNum}
def regionGen_from_core(size, mines):
print("[Core]: map creating...")
import random
# M - Мина
# ..:F - Флаг
# R(0..X) - Регионы
# E - свободно (core)
# ..:O - ячейка открыта игроком
field = list()
for x in range(size):
field.append(list())
for y in range(size):
field[x].append('E')
while mines > 0:
for X in range(len(field)):
for Y in range(len(field[X])):
if mines > 0 and random.randint(0, 100) >= random.randint(68, 90):
field[X][Y] = 'M'
mines -= 1
# сгенерируем регионы
EmptyFiled = True
filedNum = 0
while EmptyFiled:
print(f"[Core]: Create Region#{filedNum}")
sizeReg = random.randint(1, (size ** 2) // 8)
# Определим "Точку развития"
generated = False
for X in range(len(field)):
for Y in range(len(field[X])):
if field[X][Y] != 'M' and random.randint(0, 100) >= random.randint(85, 90):
field[X][Y] = f"R{filedNum}"
regionCoords = [X, Y]
generated = True
break
if generated:
break
cursor = regionCoords.copy()
for _ in range(sizeReg):
if not(generated):
break
# Определим "Правила расширения региона"
moveUp = cursor[0] != 0
moveDown = cursor[0] != size - 1
moveLeft = cursor[1] != 0
moveRight = cursor[1] != size - 1
while True:
randSel = ['R', 'L', 'U', 'D'][random.randint(0, 3)]
if randSel == 'R' and moveRight:
cursor[1] += 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
elif randSel == 'L' and moveLeft:
cursor[1] -= 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
elif randSel == 'U' and moveUp:
cursor[0] -= 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
elif randSel == 'D' and moveDown:
cursor[0] += 1
if field[cursor[0]][cursor[1]] == 'E':
field[cursor[0]][cursor[1]] = f"R{filedNum}"
sizeReg -= 1
break
valuesoffield = list()
for Row in field:
for item in Row:
valuesoffield.append(item)
EmptyFiled = 'E' in valuesoffield
if EmptyFiled and generated:
filedNum += 1
print('[Core]: generating finished')
return {"field": field, "regionMax_index": filedNum}
def regionGen(size, mines):
import random
# M - Мина
# ...:F - Флаг
# R(0...X) - Регионы
# E - свободно (core)
# ..:O - ячейка открыта игроком
field = list()
for x in range(size):
field.append(list())
for y in range(size):
field[x].append('E')
while mines > 0:
for X in range(len(field)):
for Y in range(len(field[X])):
if mines > 0 and random.randint(0, 100) >= random.randint(68, 90):
field[X][Y] = 'M'
mines -= 1
emptyField = True
filedNum = 0
while emptyField:
rgCreated = False
for Y in range(len(field)):
for X in range(len(field[Y])):
if field[Y][X] == 'E':
print(f"[Generate map] create region#{filedNum}")
field[Y][X] = f"R{filedNum}"
rgCoords = {"X": X, "Y": Y}
rgCreated = True
break
if rgCreated:
break
if rgCreated:
# rgSize = random.randint(1, ((size ** 2) - mines) // 6)
rgSize = 1 # (!) Ради эксперимента поставим 1
for _ in range(rgSize):
stop = False
while True:
upMove = rgCoords["Y"] != 0
if upMove:
upMove &= field[rgCoords["Y"] - 1][rgCoords["X"]] != 'M'
downMove = rgCoords["Y"] != size - 1
if downMove:
downMove &= field[rgCoords["Y"] + 1][rgCoords["X"]] != 'M'
leftMove = rgCoords["X"] != 0
if leftMove:
leftMove &= field[rgCoords["Y"]][rgCoords["X"] - 1] != 'M'
rightMove = rgCoords["X"] != size - 1
if rightMove:
rightMove &= field[rgCoords["Y"]][rgCoords["X"] + 1] != 'M'
if not(upMove and downMove and leftMove or rightMove):
stop = True
break
moveID = random.randint(0, 3)
if upMove and moveID == 0:
rgCoords["Y"] -= 1
print(f"[Generate map]: upMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif downMove and moveID == 1:
rgCoords["Y"] += 1
print(f"[Generate map]: downMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif leftMove and moveID == 2:
rgCoords["X"] -= 1
print(f"[Generate map]: leftMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
elif rightMove and moveID == 3:
rgCoords["X"] += 1
print(f"[Generate map]: rightMove creating in {rgCoords}")
field[rgCoords["Y"]][rgCoords["X"]] = f"R{filedNum}"
break
if stop:
break
emptyField = False
for row in field:
for cell in row:
if cell == 'E':
emptyField = True
filedNum += 1
break
# Объединение регионов
print('[Generate map]: combine the regions')
for rowID in range(len(field)):
print('[Generate map]: cursore in rowID %s' % rowID)
for cellID in range(len(field[rowID])):
print('[Generate map]: cursore in cellID %s' % cellID)
cell = field[rowID][cellID]
if 'R' in cell:
print('[Generate map]: combine region %s' % cell)
sawUp = rowID != 0
sawDown = rowID != len(field) - 1
sawLeft = cellID != 0
sawRight = cellID != len(field) - 1
if sawUp:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID - 1][cellID] and 'R' in field[rowID - 1][cellID]:
if int(cell.split('R')[-1]) > int(field[rowID - 1][cellID].split('R')[-1]):
field = rgReplace(field, cell, field[rowID - 1][cellID])
rgMax = field[rowID - 1][cellID]
print('[Generate map]: combine the region to %s' % field[rowID - 1][cellID])
else:
field = rgReplace(field, field[rowID - 1][cellID], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
if sawDown:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID + 1][cellID] and 'R' in field[rowID + 1][cellID]:
if int(cell.split('R')[-1]) > int(field[rowID + 1][cellID].split('R')[-1]):
field = rgReplace(field, cell, field[rowID + 1][cellID])
rgMax = field[rowID + 1][cellID]
print('[Generate map]: combine the region to %s' % field[rowID + 1][cellID])
else:
field = rgReplace(field, field[rowID + 1][cellID], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
if sawLeft:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID][cellID - 1] and 'R' in field[rowID][cellID - 1]:
if int(cell.split('R')[-1]) > int(field[rowID][cellID - 1].split('R')[-1]):
field = rgReplace(field, cell, field[rowID][cellID - 1])
rgMax = field[rowID][cellID - 1]
print('[Generate map]: combine the region to %s' % field[rowID][cellID - 1])
else:
field = rgReplace(field, field[rowID][cellID - 1], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
if sawRight:
genAllow = True
if genAllow and (sawUp and sawLeft):
genAllow = field[rowID - 1][cellID - 1] != 'M'
if genAllow and (sawUp and sawRight):
genAllow = field[rowID - 1][cellID + 1] != 'M'
if genAllow and (sawDown and sawLeft):
genAllow = field[rowID + 1][cellID - 1] != 'M'
if genAllow and (sawDown and sawRight):
genAllow = field[rowID + 1][cellID + 1] != 'M'
if genAllow and cell != field[rowID][cellID + 1] and 'R' in field[rowID][cellID + 1]:
if int(cell.split('R')[-1]) > int(field[rowID][cellID + 1].split('R')[-1]):
field = rgReplace(field, cell, field[rowID][cellID + 1])
rgMax = field[rowID][cellID + 1]
print('[Generate map]: combine the region to %s' % field[rowID][cellID + 1])
else:
field = rgReplace(field, field[rowID][cellID + 1], cell)
rgMax = cell
print('[Generate map]: combine the region to %s' % cell)
ret_values = {"field": field, "regionMax_index": filedNum}
return ret_values
field = regionGen(10, 25)
for f in field["field"]:
print('\t'.join(f))
input()

6
Gamecore/source.qrc Normal file
View File

@ -0,0 +1,6 @@
<RCC>
<qresource prefix="source">
<file>clocks.png</file>
<file>icon.png</file>
</qresource>
</RCC>

2072
Gamecore/source_rc.py Normal file

File diff suppressed because it is too large Load Diff