С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.08.2022
Сообщений: 1

Очень нужно дописать крестики-нолики. пожалуйста

12.08.2022, 09:35. Показов 1500. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста дописать код в Python, чтобы компьютер сам ставил нолик например:

Шаг 1: Научим компьютер самой дурацкой игровой стратегии, пусть он будет перебирать клеточки по порядку и ставить в первую свободную.

Напишем функцию def stupid_computer_turn() которая найдет в списке kletki первую клетку с пробелом и поставит в неё нолик. Часть кода, который нужно дописать:

Python
1
2
3
def stupid_computer_turn():
  for i in range(9):
    if kletki[i]...
Не забудьте в конце функции вызывать draw_game(kletki), иначе мы так и не увидим, куда компьютер поставил нолик!

Шаг 2: Заменим в главном цикле вызов player_turn("нолик", "о") на вызов stupid_computer_turn(). Если вы правильно написали функцию stupid_computer_turn, компьютер станет играть с вами, впрочем весьма предсказуемо.

Шаг 3: Научим компьютер выбирать клетку случайно. Напишем еще одну функцию, которая будет ставить крестик в одну из свободных клеток. Для этого нужно вначале создать список, в который мы сложим номера всех пустых клеток, а потом выберем один из номеров случайно. И поставим в клетку с таким номером нолик. Часть кода, который нужно дописать:

Python
1
2
3
4
5
6
7
def random_computer_turn():
  empty_cells = []
  for i in range(9):
    ...
  turn = random.choice(empty_cells)
  kletki[turn] = ...
  ...
вот такой код был вначале:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
def draw_game(k):
  print('+-+-+-+')
  print('|' + k[0] + '|' + k[1] + '|' + k[2] + '|')
  print('+-+-+-+')
  print('|' + k[3] + '|' + k[4] + '|' + k[5] + '|')
  print('+-+-+-+')
  print('|' + k[6] + '|' + k[7] + '|' + k[8] + '|')
  print('+-+-+-+')
  print('=======')
 
def player_turn(player, symbol):
  while True:
    number = input("В какую клетку поставить " + player + "?")
    if number.isdigit():
      number = int(number)
      if number >= 0 and number <= 8:
        if kletki[number] == ' ':
          break
        else:
          print("Эта клетка не пустая")
      else:
        print("Число должно быть от 0 до 8")
    else:
        print("Введите число")
  kletki[number] = symbol
  draw_game(kletki)
 
 
def find_victory_line(k):
  if k[0] == k[1] == k[2] and k[0] != ' ':
    return "верхняя линия"
  if k[3] == k[4] == k[5] and k[3] != ' ':
    return "средняя линия"
  if k[6] == k[7] == k[8] and k[6] != ' ':
    return "нижняя линия"
  if k[0] == k[3] == k[6] and k[0] != ' ':
    return "левая линия"
  if k[1] == k[4] == k[7] and k[1] != ' ':
    return "средняя вертикальная линия"
  if k[2] == k[5] == k[8] and k[2] != ' ':
    return "правая линия"
  if k[0] == k[4] == k[8] and k[0] != ' ':
    return "диагональ слева направо"
  if k[2] == k[4] == k[6] and k[2] != ' ':
    return "диагональ справа налево"
  return None
  
 
kletki = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
draw_game(kletki)
 
for i in range(5):
  player_turn('крестик', 'x')
  victory_line = find_victory_line(kletki)
  if victory_line != None:
      print("Игрок крестиками захватил", victory_line, "и победил!")
      break
  
 
  if ' ' not in kletki:
    print("Не осталось пустых клеток!")
    break
 
  player_turn("нолик", "о")
  victory_line = find_victory_line(kletki)
  if victory_line != None:
      print("Игрок ноликами захватил", victory_line, "и победил!")
      break
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2022, 09:35
Ответы с готовыми решениями:

Крестики нолики, нужно немного дописать
Помогите пожалуйста. Нужно дописать код что бы пользователь не смог вводить уже введенное(выбранное). Если выбрали нолик, то туда уже...

Дописать Крестики-нолики для игры с ботом
Пишу игру Крестики - Нолики взял за основу код зарубежного человека, написал что бы игра была самим с собой. Помогите как сделать что бы...

Дописать программу крестики-нолики - игра с компьютером
нужно написать программу в двух режимах, игрок с игроком и игрок с компом, все написал кроме игры с компом а точнее не могу описать ход...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2022, 09:35
Помогаю со студенческими работами здесь

Дописать определение победителя в игре крестики нолики (по столбцам и строкам, по диагоналям)
Добрый вечер, я хотел бы попросить помощи с моим домашним заданием. Дело в том что игру крестики нолики я написал, но а определение...

пожалуйста, крестики нолики 4 в ряд
Здравствуйте, помогите с написанием игры в крестики нолики, много вариантов и способов написать 3 в ряд, но мне нужно именно 4 в ряд. Буду...

Сделайте крестики нолики, пожалуйста
Прошу, пожалуйста, сделаете крестики нолики. Знаю, что можно самому, но я слишком тупой. ПОМОГИТЕ!!!

Крестики нолики не работают! Пожалуйста, объясните почему
Человечеству решительное здрасте! Пытаюсь написать (какая оригинальность!) крестики нолики. Пишу из головы, так что сверится не с чем....

Крестики нолики не работают! Пожалуйста, объясните почему
Человечеству решительное здрасте! Пытаюсь написать (какая оригинальность!) крестики нолики. Пишу из головы, так что сверится не с чем....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru