Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import discord
- from discord.ext import commands
- import random
- client = commands.Bot(command_prefix="!")
- @client.event
- async def on_ready():
- print("Bot jest gotowy.")
- warunek_zwyciestwa = [
- [0, 1, 2],
- [3, 4, 5],
- [6, 7, 8],
- [0, 3, 6],
- [1, 4, 7],
- [2, 5, 8],
- [0, 4, 8],
- [2, 4, 6]
- ]
- gracz1 = ""
- gracz2 = ""
- tura = ""
- koniec = True
- plansza = []
- @client.command()
- async def OX(ctx, p1 : discord.Member, p2 : discord.Member):
- #do zmiany (zeby nie wyrzucalo w momencie gdy rozgrywka ma miejsce)
- await ctx.send("Witaj w grze kółko i krzyżyk! Miłej rozgrywki!")
- global gracz1
- global gracz2
- global tura
- global koniec
- global licznik
- if koniec:
- global board
- board = [":white_large_square:", ":white_large_square:", ":white_large_square:",
- ":white_large_square:", ":white_large_square:", ":white_large_square:",
- ":white_large_square:", ":white_large_square:", ":white_large_square:"]
- tura = ""
- koniec = False
- licznik = 0
- gracz1 = p1
- gracz2 = p2
- #wypisujemy plansze
- line = ""
- for x in range(len(board)):
- if x == 2 or x == 5 or x == 8:
- line += " " + board[x]
- await ctx.send(line)
- line = ""
- else:
- line += " " + board[x]
- #decyzja kto zaczyna pierwszy
- ktoPierwszy = random.randint(1,2)
- if ktoPierwszy == 1 and koniec == False:
- tura = gracz1
- await ctx.send("Tura gracza <@" + str(gracz1.id) + ">.")
- elif ktoPierwszy == 2 and koniec == False:
- tura = gracz2
- await ctx.send("Tura gracza <@" + str(gracz2.id) + ">.")
- else:
- await ctx.send("Rozgrywka w trakcie, proszę poczekać na zakończenie.")
- @client.command()
- async def ruch(ctx, pozycja : int):
- global gracz1
- global gracz2
- global tura
- global koniec
- global licznik
- if not koniec:
- znak = ""
- #w tym miejscu bedziemy decydowac o znaku przypisanego dla danego gracza
- if tura == ctx.author:
- if tura == gracz1:
- znak = ":regional_indicator_x:"
- elif tura == gracz2:
- znak = ":o2:"
- #sprawdzenie czy ruch jest legalny
- if 0 < pozycja < 10 and board[pozycja-1] == ":white_large_square:":
- board[pozycja-1] = znak
- licznik += 1
- #wydrukowanie tablicy
- line = ""
- for x in range(len(board)):
- if x == 2 or x == 5 or x == 8:
- line += " " + board[x]
- await ctx.send(line)
- line = ""
- else:
- line += " " + board[x]
- #sprawdzenie czy ktoś wygrał lub jest remis
- wygrany(warunek_zwyciestwa, znak)
- print(licznik)
- if koniec == True:
- if znak == ":regional_indicator_x:":
- await ctx.send("Wygrywa gracz <@" + str(gracz1.id) + ">.")
- elif znak == ":o2:":
- await ctx.send("Wygrywa gracz <@" + str(gracz2.id) + ">.")
- elif licznik >= 9:
- koniec = True
- await ctx.send("Remis!")
- #zmiana tury
- if tura == gracz1:
- tura = gracz2
- elif tura == gracz2:
- tura = gracz1
- #błąd z wprowadzeniem liczby z przedzialu 1-9 oraz wprowadzeniem w zajete miejsce
- else:
- await ctx.send("Użyj liczby całkowitej z przedziału od 1 do 9. Miejsce musi być puste!")
- else:
- await ctx.send("To nie Twoja tura!")
- def wygrany(warunek_zwyciestwa, znak):
- global koniec
- for warunek in warunek_zwyciestwa:
- if board[warunek[0]] == znak and board[warunek[1]] == znak and board[warunek[2]] == znak:
- koniec = True
- client.run("token")
Advertisement
Add Comment
Please, Sign In to add comment