saperGame/testgame.py
2021-01-28 20:17:14 +03:00

109 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import corelib, os, termcolor, colorama
colorama.init()
clear = lambda: os.system('cls')
gamedata = corelib.newGame(ID=0, mines=25, fieldsize=10)['response']
gamedata['continue'] = True
clear()
def getuserfield(field, gamefinnised=False):
maxFieldCoord = len(field) - 1
# ░ свободная клетка
# █ Не открытая клетка
# F Помечена флагом
# 1..4 Мины рядом
# X Минa взорвана
# S Минa обезврежена
retfield = list()
for row in field:
X = field.index(row)
retfield.append(list())
for cell in row:
Y = field[X].index(cell)
if ':O' in cell and cell != 'M:O':
mines = 0
# Проверим наличие мин
upCoord = Y != 0
downCoord = Y != maxFieldCoord
leftCoord = X != 0
rightCoord = X != maxFieldCoord
if upCoord and field[X][Y - 1] != cell and ':O' not in field[X][Y - 1]:
mines += 1
if downCoord and field[X][Y + 1] != cell and ':O' not in field[X][Y + 1]:
mines += 1
if leftCoord and field[X - 1][Y] != cell and ':O' not in field[X - 1][Y]:
mines += 1
if rightCoord and field[X + 1][Y] != cell and ':O' not in field[X + 1][Y]:
mines += 1
if mines == 0:
if upCoord and field[X][Y - 1] != cell:
mines = 1
elif downCoord and field[X][Y + 1] != cell:
mines = 1
elif leftCoord and field[X - 1][Y] != cell:
mines = 1
elif rightCoord and field[X + 1][Y] != cell:
mines = 1
if mines == 0:
retfield[-1].append('')
elif mines >= 3:
retfield[-1].append(termcolor.colored(f"{mines}", "red"))
elif mines == 2:
retfield[-1].append(termcolor.colored(f"{mines}", "yellow"))
elif mines == 1:
retfield[-1].append(termcolor.colored(f"{mines}", "green"))
elif cell == 'M:F':
if gamefinnised:
retfield[-1].append('S')
else:
retfield[-1].append('F')
elif ':F' in cell:
retfield[-1].append('F')
elif cell == 'M':
if gamefinnised:
retfield[-1].append('X')
else:
retfield[-1].append('')
else:
retfield[-1].append('')
return retfield
clear()
while gamedata['continue']:
print('Y/X| 0123456789\n---|=============')
i = 0
for row in getuserfield(gamedata['map'], gamefinnised=not(gamedata['continue'])):
print(f"{i}|. ", ''.join(row))
i += 1
while True:
try:
X = int(input('Введите X: '))
break
except:
pass
while True:
try:
Y = int(input('Введите Y: '))
break
except:
pass
if input('Введите 0 если хотите поставить флаг: ') == '0':
corelib.toggleFlag(gamedata['gamesession'], X, Y)
else:
corelib.openItem(gamedata['gamesession'], X, Y)
gamedata = corelib.getGameSession(gamedata['gamesession'])['response']
clear()
print('Y/X| 0123456789\n---|=============')
i = 0
for row in getuserfield(gamedata['map'], gamefinnised=not(gamedata['continue'])):
print(f"{i}|. ", ''.join(row))
i += 1
print('Игра окончена!')