import random import random as r POLE = [] N = int(input("Введите размер поля (от 7) ")) while N < 7: print('Неправильный размер') N = int(input("Введите размер поля (от 7) ")) def new_game(): global POLE POLE = [[" " for i in range(N)] for i in range(N)] sp_all_pos = [] x, y = r.randint(2, N-3), r.randint(0, N-3) sp_all_pos.append([x, y]) all_base = {} POLE[x][y] = "П" kol_b = random.randint(1, 4) for i in range(kol_b): x1, y1 = r.randint(2, N-3), r.randint(2, N-3) while [x1, y1] in sp_all_pos: x1, y1 = r.randint(2, N-3), r.randint(2, N-3) sp_all_pos.append([x1, y1]) all_base[(x1, y1)] = 10 POLE[x1][y1] = "Б" score = 0 return x, y, all_base, sp_all_pos, score def print_pole(): print("_" * (N+2)) for row in POLE: print("|" + "".join(row) + "|") print("_" * (N+2)) def new_enemy(all_base): global POLE for bs, num in all_base.items(): if num > 0: x, y = bs show = random.randint(0, 1) while show: napr = random.randint(1, 4) if napr == 1: x1, y1 = x - 1, y if POLE[x1][y1] != " ": continue elif napr == 2: x1, y1 = x + 1, y if POLE[x1][y1] != " ": continue elif napr == 3: x1, y1 = x, y - 1 if POLE[x1][y1] != " ": continue elif napr == 4: x1, y1 = x, y + 1 if POLE[x1][y1] != " ": continue POLE[x1][y1] = 'М' all_base[(x, y)] = num - 1 break return all_base def hod_enemy(): sp_enemy_new = [] for row in range(len(POLE)): for col in range(len(POLE[row])): if POLE[row][col] == "М" and [row, col] not in sp_enemy_new: if min(row, col, len(POLE)-col,len(POLE[0])-row ) == row: if row == 0: POLE[row][col] = " " else: if POLE[row-1][col] == ' ': POLE[row-1][col], POLE[row][col] = "М", ' ' sp_enemy_new.append([row-1, col]) if min(row, col, len(POLE[0])-col,len(POLE)-row ) == col: if col == 0: POLE[row][col] = " " else: if POLE[row][col - 1] == ' ': POLE[row][col-1], POLE[row][col] = "М", ' ' sp_enemy_new.append([row, col - 1]) if min(row, col, len(POLE)-col,len(POLE[0])-row ) == len(POLE[0])-col: if col+1 >= len(POLE[0]): POLE[row][col] = " " else: if POLE[row][col + 1] == ' ': POLE[row][col+1], POLE[row][col] = "М", ' ' sp_enemy_new.append([row, col + 1]) if min(row, col, len(POLE)-col,len(POLE[0])-row ) == len(POLE)-row: if row+1 >= len(POLE): POLE[row][col] = " " else: if POLE[row + 1][col] == ' ': POLE[row+1][col], POLE[row][col] = "М", ' ' sp_enemy_new.append([row+1, col]) def main(): x, y, all_base, sp_all_pos, score = new_game() all_base = new_enemy(all_base) # главный цикл игры while True: print_pole() hod = input("""Введите направление: w/ц - вверх s/ы - вниз a/ф - вправо d/в - влево """) # провекрка хода персонажа if (hod == "w" or hod == 'ц') and x != 0: if POLE[x - 1][y] == "М": score += 1 if POLE[x - 1][y] != 'Б': POLE[x][y] = " " x -= 1 POLE[x][y] = "П" if (hod == "s" or hod == 'ы') and x != 9: if POLE[x + 1][y] == "М": score += 1 if POLE[x + 1][y] != 'Б': POLE[x][y] = " " x += 1 POLE[x][y] = "П" if (hod == "a" or hod == 'ф') and y != 0: if POLE[x][y - 1] == "М": score += 1 if POLE[x][y-1] != 'Б': POLE[x][y] = " " y -= 1 POLE[x][y] = "П" if (hod == "d" or hod == 'в') and y != 9: if POLE[x][y + 1] == "М": score += 1 if POLE[x][y+1] != 'Б': POLE[x][y] = " " y += 1 POLE[x][y] = "П" # проверка хода врага hod_enemy() # проверка новыйх врагов all_base = new_enemy(all_base) # проверка врагов for row in POLE: if ('М') in row or max(all_base.values()) != 0: break else: print_pole() print('Вы проиграли') print('Вас счет', score) break print('''П - персонаж Б - муравейники М - муравьи''') main()