Доброго дня форумчане!!!
Я новичок в программировании, конкретно я изучаю язык Python.
Так вот, хотел написать на нём игру Крестики-Нолики с ИИ, код ниже.
Всё работает, но появилась ошибка: когда на поле остаётся последнее не занятое место, а игра идёт в ничью, я хожу ставя крестик в это самое не занятое место --> он не отображается и ноутбук начинает сильно греть.
Пожалуйста подскажите как это исправить!!
Код:
# Переменные
from random import randint
lis, xod = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], []
viktori = 'неопределено'
rand = 0
flag = False
# Функция вывода таблицы
def kres_nol():
print(' 1 2 3')
print(' ―――――――――――')
print('1 | ', lis[0], '|', lis[3], '|', lis[7])
print(' | -----------')
print('2 | ', lis[5], '|', lis[1], '|', lis[4])
print(' | -----------')
print('3 | ', lis[8], '|', lis[6], '|', lis[2])
# Основной код
kres_nol()
while viktori == 'неопределено' :
print('Ввидите координату крестика:')
x = input()
xod.append(x)
for i in range(9):
if x == str(int(i+1)) + str(int(i+1)) and lis[i] == ' ':
lis[i] = 'x'
elif x == str(int(i+1)) + str(int(i+2)) and lis[i+3] == ' ':
lis[i+3] = 'x'
elif x == str(int(i+1)) + str(int(i)) and lis[i+4] == ' ':
lis[i+4] = 'x'
elif x == '13' and lis[7] == ' ':
lis[7] = 'x'
elif x == '31' and lis[8] == ' ':
lis[8] = 'x'
if lis[1] == ' ':
lis[1] = 'o'
elif lis[0] == 'x' and lis[3] == 'x' and lis[7] == ' ': #1
lis[7] = 'o'
elif lis[0] == 'x' and lis[7] == 'x' and lis[3] == ' ':
lis[3] = 'o'
elif lis[3] == 'x' and lis[7] == 'x' and lis[0] == ' ':
lis[0] = 'o'
elif lis[7] == 'x' and lis[4] == 'x' and lis[2] == ' ': #2
lis[2] = 'o'
elif lis[2] == 'x' and lis[7] == 'x' and lis[4] == ' ':
lis[4] = 'o'
elif lis[4] == 'x' and lis[2] == 'x' and lis[7] == ' ':
lis[7] = 'o'
elif lis[2] == 'x' and lis[6] == 'x' and lis[8] == ' ': #3
lis[8] = 'o'
elif lis[2] == 'x' and lis[8] == 'x' and lis[6] == ' ':
lis[6] = 'o'
elif lis[6] == 'x' and lis[8] == 'x' and lis[2] == ' ':
lis[2] = 'o'
elif lis[0] == 'x' and lis[5] == 'x' and lis[8] == ' ': #4
lis[8] = 'o'
elif lis[5] == 'x' and lis[8] == 'x' and lis[0] == ' ':
lis[0] = 'o'
elif lis[0] == 'x' and lis[8] == 'x' and lis[5] == ' ':
lis[5] = 'o'
elif lis[0] == 'x' and lis[1] == 'x' and lis[2] == ' ': #5
lis[2] = 'o'
elif lis[1] == 'x' and lis[2] == 'x' and lis[0] == ' ':
lis[0] = 'o'
elif lis[0] == 'x' and lis[2] == 'x' and lis[1] == ' ':
lis[1] = 'o'
elif lis[7] == 'x' and lis[1] == 'x' and lis[8] == ' ': #6
lis[8] = 'o'
elif lis[8] == 'x' and lis[7] == 'x' and lis[1] == ' ':
lis[1] = 'o'
elif lis[1] == 'x' and lis[8] == 'x' and lis[7] == ' ':
lis[7] = 'o'
elif lis[5] == 'x' and lis[1] == 'x' and lis[4] == ' ': #7
lis[4] = 'o'
elif lis[5] == 'x' and lis[4] == 'x' and lis[1] == ' ':
lis[1] = 'o'
elif lis[1] == 'x' and lis[4] == 'x' and lis[5] == ' ':
lis[5] = 'o'
elif lis[3] == 'x' and lis[1] == 'x' and lis[6] == ' ': #8
lis[6] = 'o'
elif lis[6] == 'x' and lis[3] == 'x' and lis[1] == ' ':
lis[1] = 'o'
elif lis[6] == 'x' and lis[1] == 'x' and lis[3] == ' ':
lis[3] = 'o'
elif lis[0] == 'o' and lis[3] == 'o' and lis[7] == ' ': #1.()
lis[7] = 'o'
elif lis[0] == 'o' and lis[7] == 'o' and lis[3] == ' ':
lis[3] = 'o'
elif lis[3] == 'o' and lis[7] == 'o' and lis[0] == ' ':
lis[0] = 'o'
elif lis[7] == 'o' and lis[4] == 'o' and lis[2] == ' ': #2.()
lis[2] = 'o'
elif lis[2] == 'o' and lis[7] == 'o' and lis[4] == ' ':
lis[4] = 'o'
elif lis[4] == 'o' and lis[2] == 'o' and lis[7] == ' ':
lis[7] = 'o'
elif lis[2] == 'o' and lis[6] == 'o' and lis[8] == ' ': #3.()
lis[8] = 'o'
elif lis[2] == 'o' and lis[8] == 'o' and lis[6] == ' ':
lis[6] = 'o'
elif lis[6] == 'o' and lis[8] == 'o' and lis[2] == ' ':
lis[2] = 'o'
elif lis[0] == 'o' and lis[5] == 'o' and lis[8] == ' ': #4.()
lis[8] = 'o'
elif lis[5] == 'o' and lis[8] == 'o' and lis[0] == ' ':
lis[0] = 'o'
elif lis[0] == 'o' and lis[8] == 'o' and lis[5] == ' ':
lis[5] = 'o'
elif lis[0] == 'o' and lis[1] == 'o' and lis[2] == ' ': #5.()
lis[2] = 'o'
elif lis[1] == 'o' and lis[2] == 'o' and lis[0] == ' ':
lis[0] = 'o'
elif lis[0] == 'o' and lis[2] == 'o' and lis[1] == ' ':
lis[1] = 'o'
elif lis[7] == 'o' and lis[1] == 'o' and lis[8] == ' ': #6.()
lis[8] = 'o'
elif lis[8] == 'o' and lis[7] == 'o' and lis[1] == ' ':
lis[1] = 'o'
elif lis[1] == 'o' and lis[8] == 'o' and lis[7] == ' ':
lis[7] = 'o'
elif lis[5] == 'o' and lis[1] == 'o' and lis[4] == ' ': #7.()
lis[4] = 'o'
elif lis[5] == 'o' and lis[4] == 'o' and lis[1] == ' ':
lis[1] = 'o'
elif lis[1] == 'o' and lis[4] == 'o' and lis[5] == ' ':
lis[5] = 'o'
elif lis[3] == 'o' and lis[1] == 'o' and lis[6] == ' ': #8.()
lis[6] = 'o'
elif lis[6] == 'o' and lis[3] == 'o' and lis[1] == ' ':
lis[1] = 'o'
elif lis[6] == 'o' and lis[1] == 'o' and lis[3] == ' ':
lis[3] = 'o'
else:
flag = False
while flag == False:
rand = randint(0, 8)
if lis[rand] == ' ':
lis[rand] = 'o'
flag = True
kres_nol()
# Оператор победы
if lis[0] == 'x' and lis[3] == 'x' and lis[7] == 'x':
viktori = 'x'
if lis[5] == 'x' and lis[5] == 'x' and lis[4] == 'x':
viktori = 'x'
if lis[8] == 'x' and lis[6] == 'x' and lis[2] == 'x':
viktori = 'x'
if lis[0] == 'x' and lis[1] == 'x' and lis[2] == 'x':
viktori = 'x'
if lis[7] == 'x' and lis[1] == 'x' and lis[8] == 'x':
viktori = 'x'
if lis[3] == 'x' and lis[1] == 'x' and lis[6] == 'x':
viktori = 'x'
if lis[0] == 'x' and lis[5] == 'x' and lis[8] == 'x':
viktori = 'x'
if lis[2] == 'x' and lis[4] == 'x' and lis[7] == 'x':
viktori = 'x'
if lis[0] == 'o' and lis[3] == 'o' and lis[7] == 'o':
viktori = 'o'
if lis[5] == 'o' and lis[5] == 'o' and lis[4] == 'o':
viktori = 'o'
if lis[8] == 'o' and lis[6] == 'o' and lis[2] == 'o':
viktori = 'o'
if lis[0] == 'o' and lis[1] == 'o' and lis[2] == 'o':
viktori = 'o'
if lis[7] == 'o' and lis[1] == 'o' and lis[8] == 'o':
viktori = 'o'
if lis[3] == 'o' and lis[1] == 'o' and lis[6] == 'o':
viktori = 'o'
if lis[0] == 'o' and lis[5] == 'o' and lis[8] == 'o':
viktori = 'o'
if lis[2] == 'o' and lis[4] == 'o' and lis[7] == 'o':
viktori = 'o'
# Победа
if viktori == 'o':
print()
print('Победил ИИ')
elif viktori == 'x':
print()
print('Победил человек')
elif ' ' not in lis:
print()
print('Ничья')
Пожалуйста не пишите что код громоздкий и корявый, так как я это сам понимаю и буду его оптимизировать по мере полученных мною знаний)