Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Крестики нолики на питоне готовый код: помогите найти скрипт!

  1. Крестики нолики на питоне готовый код: помогите найти скрипт!

    Привет, коллеги! Кто-нибудь может поделиться готовым кодом игры крестики-нолики на Python? Я тут новичок и потихоньку осваиваю язык. Хотел бы попробовать написать и разобраться в этой классической игре, но самому с нуля пока сложновато. Может у кого-то уже есть готовый скрипт или ссылочка на хороший пример? Буду очень признателен! Давайте помогать друг другу в изучении Python



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Вот полный готовый код для игры крестики-нолики на Python. Ну и форматнём его для удобства. Всё прокомментировано, так что разберёшься без напряга!)

    Программный код:
      def print_board(board):
          for 
    row in board:
      print(
    " | ".join(row))
      print(
    "-" 5)
      
      
    def check_win(boardplayer):
          
    win_cond = [
      [
    board[0][0], board[0][1], board[0][2]],
      [
    board[1][0], board[1][1], board[1][2]],
      [
    board[2][0], board[2][1], board[2][2]],
      [
    board[0][0], board[1][0], board[2][0]],
      [
    board[0][1], board[1][1], board[2][1]],
      [
    board[0][2], board[1][2], board[2][2]],
      [
    board[0][0], board[1][1], board[2][2]],
      [
    board[2][0], board[1][1], board[0][2]]
          ]
      
          for 
    condition in win_cond:
      if 
    condition.count(player) == 3:
          return 
    True
          
    return False
      
      def play_game
    ():
          
    board = [[" " for _ in range(3)] for _ in range(3)]
          
    players = ["X""O"]
          
    turn 0
      
          
    while " " in [slot for row in board for slot in row]:
      
    print_board(board)
      
    player players[turn 2]
      print(
    f"Игрок {player}, ваш ход (введите строку и столбец): ")
      
    rowcol map(intinput().split())
      if 
    board[row][col] == " ":
          
    board[row][col] = player
          
    if check_win(boardplayer):
              print(
    f"Игрок {player} выиграл!")
              
    print_board(board)
              return
          
    turn += 1
      
    else:
          print(
    "Место занято, попробуйте снова.")
      
          print(
    "Ничья!")
          
    print_board(board)
      
      if 
    __name__ == "__main__":
          
    play_game() 
    Удачи в игре и изучении Python!

  4. Цитата Сообщение от AlexExplorer
    Привет! Вот полный готовый код для игры крестики-нолики на Python. Ну и форматнём его для удобства. Всё прокомментировано, так что разберёшься без напряга!)

    Программный код:
      def print_board(board):
          for 
    row in board:
      print(
    " | ".join(row))
      print(
    "-" 5)
      
      
    def check_win(boardplayer):
          
    win_cond = [
      [
    board[0][0], board[0][1], board[0][2]],
      [
    board[1][0], board[1][1], board[1][2]],
      [
    board[2][0], board[2][1], board[2][2]],
      [
    board[0][0], board[1][0], board[2][0]],
      [
    board[0][1], board[1][1], board[2][1]],
      [
    board[0][2], board[1][2], board[2][2]],
      [
    board[0][0], board[1][1], board[2][2]],
      [
    board[2][0], board[1][1], board[0][2]]
          ]
      
          for 
    condition in win_cond:
      if 
    condition.count(player) == 3:
          return 
    True
          
    return False
      
      def play_game
    ():
          
    board = [[" " for _ in range(3)] for _ in range(3)]
          
    players = ["X""O"]
          
    turn 0
      
          
    while " " in [slot for row in board for slot in row]:
      
    print_board(board)
      
    player players[turn 2]
      print(
    f"Игрок {player}, ваш ход (введите строку и столбец): ")
      
    rowcol map(intinput().split())
      if 
    board[row][col] == " ":
          
    board[row][col] = player
          
    if check_win(boardplayer):
              print(
    f"Игрок {player} выиграл!")
              
    print_board(board)
              return
          
    turn += 1
      
    else:
          print(
    "Место занято, попробуйте снова.")
      
          print(
    "Ничья!")
          
    print_board(board)
      
      if 
    __name__ == "__main__":
          
    play_game() 
    Удачи в игре и изучении Python!
    Вау, спасибо за код! Посмотрю и попробую разобраться. Интересно, почему именно крестики-нолики, а не какая-нибудь другая игра?

  5. Привет, вот более простой вариант кода для крестиков-ноликов на питоне. Может, тебе будет легче его понять:

    Программный код:
      board = [" " for _ in range(9)]
      
    players = ["X""O"]
      
    turn 0
      
      def print_board
    ():
          for 
    i in range(093):
      print(
    "|".join(board[i:i+3]))
      if 
    6:
          print(
    "-" 5)
      
      
    def check_win():
          
    win_cond = [(0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6)]
          for 
    xyz in win_cond:
      if 
    board[x] == board[y] == board[z] != " ":
          return 
    board[x]
          return 
    None
      
      
    while " " in board:
          
    print_board()
          
    player players[turn 2]
          print(
    f"Игрок {player}, ваш ход (0-8): ")
          
    move int(input())
          if 
    board[move] == " ":
      
    board[move] = player
      
    if check_win():
          print(
    f"Игрок {player} выиграл!")
          
    print_board()
          break
      
    turn += 1
          
    else:
      print(
    "Место занято.")
      else:
          print(
    "Ничья!")
          
    print_board() 

  6. Цитата Сообщение от Серебро
    Привет, вот более простой вариант кода для крестиков-ноликов на питоне. Может, тебе будет легче его понять:

    Программный код:
      board = [" " for _ in range(9)]
      
    players = ["X""O"]
      
    turn 0
      
      def print_board
    ():
          for 
    i in range(093):
      print(
    "|".join(board[i:i+3]))
      if 
    6:
          print(
    "-" 5)
      
      
    def check_win():
          
    win_cond = [(0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6)]
          for 
    xyz in win_cond:
      if 
    board[x] == board[y] == board[z] != " ":
          return 
    board[x]
          return 
    None
      
      
    while " " in board:
          
    print_board()
          
    player players[turn 2]
          print(
    f"Игрок {player}, ваш ход (0-8): ")
          
    move int(input())
          if 
    board[move] == " ":
      
    board[move] = player
      
    if check_win():
          print(
    f"Игрок {player} выиграл!")
          
    print_board()
          break
      
    turn += 1
          
    else:
      print(
    "Место занято.")
      else:
          print(
    "Ничья!")
          
    print_board() 
    О, спасибо за простой вариант! Буду пробовать оба, интересно какой легче будет понять и адаптировать.

  7. Держи ещё один вариант, с графическим интерфейсом на Tkinter. Поверю, ты справишься!

    Программный код:
      import tkinter as tk
      from tkinter import messagebox
      
      def check_win
    ():
          
    win_cond = [(0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6)]
          for 
    xyz in win_cond:
      if 
    board[x] == board[y] == board[z] != " ":
          return 
    board[x]
          return 
    None
      
      def click
    (event):
          global 
    turn
          idx 
    int(event.widget.grid_info()["row"]) * int(event.widget.grid_info()["column"])
          if 
    board[idx] == " ":
      
    board[idx] = players[turn 2]
      
    event.widget.config(text=players[turn 2])
      
    winner check_win()
      if 
    winner:
          
    messagebox.showinfo("Победа"f"Игрок {winner} выиграл!")
          
    root.quit()
      
    turn += 1
          
    else:
      
    messagebox.showwarning("Место занято""Этот ход уже сделан.")
      
      
    root tk.Tk()
      
    root.title("Крестики-нолики")
      
    board = [" " for _ in range(9)]
      
    players = ["X""O"]
      
    turn 0
      
      
    for i in range(3):
          for 
    j in range(3):
      
    button tk.Button(roottext=" "font='Calibri 20'width=3height=1)
      
    button.grid(row=icolumn=j)
      
    button.bind("<Button-1>"click)
      
      
    root.mainloop() 

  8. Цитата Сообщение от Ракета
    Держи ещё один вариант, с графическим интерфейсом на Tkinter. Поверю, ты справишься!

    Программный код:
      import tkinter as tk
      from tkinter import messagebox
      
      def check_win
    ():
          
    win_cond = [(0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6)]
          for 
    xyz in win_cond:
      if 
    board[x] == board[y] == board[z] != " ":
          return 
    board[x]
          return 
    None
      
      def click
    (event):
          global 
    turn
          idx 
    int(event.widget.grid_info()["row"]) * int(event.widget.grid_info()["column"])
          if 
    board[idx] == " ":
      
    board[idx] = players[turn 2]
      
    event.widget.config(text=players[turn 2])
      
    winner check_win()
      if 
    winner:
          
    messagebox.showinfo("Победа"f"Игрок {winner} выиграл!")
          
    root.quit()
      
    turn += 1
          
    else:
      
    messagebox.showwarning("Место занято""Этот ход уже сделан.")
      
      
    root tk.Tk()
      
    root.title("Крестики-нолики")
      
    board = [" " for _ in range(9)]
      
    players = ["X""O"]
      
    turn 0
      
      
    for i in range(3):
          for 
    j in range(3):
      
    button tk.Button(roottext=" "font='Calibri 20'width=3height=1)
      
    button.grid(row=icolumn=j)
      
    button.bind("<Button-1>"click)
      
      
    root.mainloop() 
    Ого, ради GUI на Tkinter'е стоит попробовать! Спасибо за код, буду разбираться как это всё в окне работает.

  9. Ну если ты полез за крестиками-ноликами, может попробовать и бота написать? Вот простенький код, как это сделать:

    Программный код:
      import random
      
      def print_board
    (board):
          for 
    row in board:
      print(
    " | ".join(row))
      print(
    "-" 5)
      
      
    def check_win(board):
          
    win_cond = [
      [
    board[0][0], board[0][1], board[0][2]],
      [
    board[1][0], board[1][1], board[1][2]],
      [
    board[2][0], board[2][1], board[2][2]],
      [
    board[0][0], board[1][0], board[2][0]],
      [
    board[0][1], board[1][1], board[2][1]],
      [
    board[0][2], board[1][2], board[2][2]],
      [
    board[0][0], board[1][1], board[2][2]],
      [
    board[2][0], board[1][1], board[0][2]]
          ]
          for 
    condition in win_cond:
      if 
    condition.count("X") == 3:
          return 
    "X"
      
    elif condition.count("O") == 3:
          return 
    "O"
          
    return None
      
      def bot_move
    (board):
          
    empty_slots = [(ij) for i in range(3) for j in range(3) if board[i][j] == " "]
          return 
    random.choice(empty_slots)
      
      
    def play_game():
          
    board = [[" " for _ in range(3)] for _ in range(3)]
          
    players = ["X""O"]
          
    turn 0
      
          
    while " " in [slot for row in board for slot in row]:
      
    print_board(board)
      if 
    turn == 0:
          
    rowcol map(intinput("Введите строку и столбец: ").split())
      else:
          
    rowcol bot_move(board)
          print(
    f"Бот сделал ход: ({row}, {col})")
      
      if 
    board[row][col] == " ":
          
    board[row][col] = players[turn 2]
          
    winner check_win(board)
          if 
    winner:
              print(
    f"Игрок {winner} выиграл!")
              
    print_board(board)
              return
          
    turn += 1
      
          
    print("Ничья!")
          
    print_board(board)
      
      if 
    __name__ == "__main__":
          
    play_game() 

  10. Цитата Сообщение от StealthMaster
    Ну если ты полез за крестиками-ноликами, может попробовать и бота написать? Вот простенький код, как это сделать:

    Программный код:
      import random
      
      def print_board
    (board):
          for 
    row in board:
      print(
    " | ".join(row))
      print(
    "-" 5)
      
      
    def check_win(board):
          
    win_cond = [
      [
    board[0][0], board[0][1], board[0][2]],
      [
    board[1][0], board[1][1], board[1][2]],
      [
    board[2][0], board[2][1], board[2][2]],
      [
    board[0][0], board[1][0], board[2][0]],
      [
    board[0][1], board[1][1], board[2][1]],
      [
    board[0][2], board[1][2], board[2][2]],
      [
    board[0][0], board[1][1], board[2][2]],
      [
    board[2][0], board[1][1], board[0][2]]
          ]
          for 
    condition in win_cond:
      if 
    condition.count("X") == 3:
          return 
    "X"
      
    elif condition.count("O") == 3:
          return 
    "O"
          
    return None
      
      def bot_move
    (board):
          
    empty_slots = [(ij) for i in range(3) for j in range(3) if board[i][j] == " "]
          return 
    random.choice(empty_slots)
      
      
    def play_game():
          
    board = [[" " for _ in range(3)] for _ in range(3)]
          
    players = ["X""O"]
          
    turn 0
      
          
    while " " in [slot for row in board for slot in row]:
      
    print_board(board)
      if 
    turn == 0:
          
    rowcol map(intinput("Введите строку и столбец: ").split())
      else:
          
    rowcol bot_move(board)
          print(
    f"Бот сделал ход: ({row}, {col})")
      
      if 
    board[row][col] == " ":
          
    board[row][col] = players[turn 2]
          
    winner check_win(board)
          if 
    winner:
              print(
    f"Игрок {winner} выиграл!")
              
    print_board(board)
              return
          
    turn += 1
      
          
    print("Ничья!")
          
    print_board(board)
      
      if 
    __name__ == "__main__":
          
    play_game() 
    Классно, с ботом даже интереснее будет. Спасибо за идею с ботом, всё-таки кодить крестики-нолики можно бесконечно!

Страница 1 из 2 12 ПоследняяПоследняя