Ollama3 - бесплатная языковая модель, которая может ответить на множество ваших вопросов по огромному количеству тем или написать для вас программу.
Для установки программы, запускающей нейросеть нужно загрузить с официального сайта скрипт и выполнить его:
curl -fsSL https://ollama.com/install.sh | sh
Для установки и последующего использования модели выполните команду:
ollama run llama3
Пример вопроса и ответа нейросети:
>>> напиши игру крестики-нолики на python с библиотекой tkinter
Вот пример кода для игры Крестики-Ноликис (Tic-Tac-Toe) с использованием библиотеки Tkinter:
```
import tkinter as tk
from random import randint
class TicTacToe:
def __init__(self):
self.window = tk.Tk()
self.window.title("Крестики-Ноликис")
self.window.geometry("300x300")
self.buttons = []
for i in range(3):
row = []
for j in range(3):
button = tk.Button(self.window, text="", command=lambda i=i, j=j: self.click(i, j), height=3, width=6)
button.grid(row=i, column=j)
row.append(button)
self.buttons.append(row)
def click(self, i, j):
if self.buttons[i][j]['text'] == "":
player = "X" if len([x for row in self.buttons for x in row if x['text'] == ""]) % 2 == 0 else "O"
self.buttons[i][j]['text'] = player
winner = self.check_win()
if winner:
self.window.title("Победа игрока {}".format(winner))
for i in range(3):
for j in range(3):
self.buttons[i][j]['state'] = 'disabled'
return
def check_win(self):
for row in self.buttons:
if all(button['text'] == row[0]['text'] for button in row):
return row[0]['text']
for i in range(3):
if all(self.buttons[i][j]['text'] == self.buttons[0][i]['text'] for j in range(3)):
return self.buttons[0][i]['text']
if all(self.buttons[0][0]['text'] == self.buttons[1][1]['text'] for _ in range(2)):
return self.buttons[1][1]['text']
if all(self.buttons[0][2]['text'] == self.buttons[1][1]['text'] for _ in range(2)):
return self.buttons[1][1]['text']
return None
def run(self):
self.window.mainloop()
if __name__ == "__main__":
game = TicTacToe()
game.run()
```
В этом коде создается окно с 3x3 матрицей кнопок, каждая кнопка которой имеет команду `click`, которая изменяет текст кнопки на символ игрока (Крестик или Нолик). Функция `check_win
проверяет, есть ли победитель в текущем состоянии игры. Если есть победитель, то окно заголовок изменяется на соответствующее сообщение и все кнопки становятся недоступными.
Стоит отметить, что это не полная игра, а только пример кода для создания игры Крестики-Ноликис с использованием Tkinter. Для полной игры вам нужно добавить функцию, которая б
генерировать случайные ходы компьютера, а также функции, которые будут управлять интерфейсом пользователя и выводить результат игры.
Вы можете запустить это приложение, вызвав `python tictactoe.py` в терминале. Затем нажмите на кнопку, чтобы начать играть. Крестик или Нолик будет изменяться на соответст
кнопках матрицы. Победитель будет объявлен, если кто-то выиграет игру. Игра будет продолжаться, пока не закончится победителем или до тех пор, пока все кнопки н
недоступными.
равь это
Use Ctrl + d or /bye to exit.
>>> определение победы игрока работает не всегда правильно, исправь это
Проблема в функции `check_win`. Она проверяет только некоторые из возможных комбинаций побед, а также не учитывает случае, когда игра заканчивается ничьей. Вам нужно изменить ее, чтобы
она проверяла все возможные комбинации побед.
Вот пример исправленной функции:
```
def check_win(self):
for i in range(3):
if all([button['text'] == self.buttons[i][0]['text'] for button in self.buttons[i]]):
return self.buttons[i][0]['text']
if all([button['text'] == self.buttons[0][i]['text'] for button in self.buttons]):
return self.buttons[0][i]['text']
if all([self.buttons[0][0]['text'], self.buttons[1][1]['text'], self.buttons[2][2]['text']]):
return self.buttons[0][0]['text']
if all([self.buttons[0][2]['text'], self.buttons[1][1]['text'], self.buttons[2][0]['text']]):
return self.buttons[0][0]['text']
for i in range(3):
if all([button['text'] == self.buttons[i][i]['text'] for button in self.buttons]):
return self.buttons[i][i]['text']
if all([button['text'] == self.buttons[i][2-i]['text'] for button in self.buttons]):
return self.buttons[i][2-i]['text']
# если все кнопки заполнены, то игра ничья
if all([button['text'] != "" for row in self.buttons for button in row]):
return "ничья"
return None
```
В этой функции мы проверяем все возможные комбинации побед: горизонтальные, вертикальные и диагональные. Если игра заканчивается ничьей, то возвращается строка "ничья". Если игра
закончена, то возвращается None.
Вот пример исправленной игры:
```
import tkinter as tk
from random import randint
class TicTacToe:
def __init__(self):
self.window = tk.Tk()
self.window.title("Крестики-Ноликис")
self.window.geometry("300x300")
self.buttons = []
for i in range(3):
row = []
for j in range(3):
button = tk.Button(self.window, text="", command=lambda i=i, j=j: self.click(i, j), height=3, width=6)
button.grid(row=i, column=j)
row.append(button)
self.buttons.append(row)
def click(self, i, j):
if self.buttons[i][j]['text'] == "":
player = "X" if len([x for row in self.buttons for x in row if x['text'] == ""]) % 2 == 0 else "O"
self.buttons[i][j]['text'] = player
winner = self.check_win()
if winner:
self.window.title("Победа игрока {}".format(winner))
for i in range(3):
for j in range(3):
self.buttons[i][j]['state'] = 'disabled'
return
def check_win(self):
for i in range(3):
if all([button['text'] == self.buttons[i][0]['text'] for button in self.buttons[i]]):
return self.buttons[i][0]['text']
if all([button['text'] == self.buttons[0][i]['text'] for button in self.buttons]):
return self.buttons[0][i]['text']
if all([self.buttons[0][0]['text'], self.buttons[1][1]['text'], self.buttons[2][2]['text']]):
return self.buttons[0][0]['text']
if all([self.buttons[0][2]['text'], self.buttons[1][1]['text'], self.buttons[2][0]['text']]):
return self.buttons[0][0]['text']
for i in range(3):
if all([button['text'] == self.buttons[i][i]['text'] for button in self.buttons]):
return self.buttons[i][i]['text']
if all([button['text'] == self.buttons[i][2-i]['text'] for button in self.buttons]):
return self.buttons[i][2-i]['text']
# если все кнопки заполнены, то игра ничья
if all([button['text'] != "" for row in self.buttons for button in row]):
return "ничья"
return None
def run(self):
self.window.mainloop()
if __name__ == "__main__":
game = TicTacToe()
game.run()
```
Вот пример запущенной игры:
```
python tictactoe.py
```