devops_97

Python2 - 25.03.2020 - TICTACTOE

Mar 25th, 2022
757
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.12 KB | None | 0 0
  1. import discord
  2. from discord.ext import commands
  3. import random
  4.  
  5. client = commands.Bot(command_prefix="!")
  6.  
  7. @client.event
  8. async def on_ready():
  9.     print("Bot jest gotowy.")
  10.  
  11. warunek_zwyciestwa = [
  12.     [0, 1, 2],
  13.     [3, 4, 5],
  14.     [6, 7, 8],
  15.     [0, 3, 6],
  16.     [1, 4, 7],
  17.     [2, 5, 8],
  18.     [0, 4, 8],
  19.     [2, 4, 6]
  20. ]
  21.  
  22. gracz1 = ""
  23. gracz2 = ""
  24. tura = ""
  25. koniec = True
  26. plansza = []
  27.  
  28. @client.command()
  29. async def OX(ctx, p1 : discord.Member, p2 : discord.Member):
  30.     #do zmiany (zeby nie wyrzucalo w momencie gdy rozgrywka ma miejsce)
  31.     await ctx.send("Witaj w grze kółko i krzyżyk! Miłej rozgrywki!")
  32.     global gracz1
  33.     global gracz2
  34.     global tura
  35.     global koniec
  36.     global licznik
  37.  
  38.     if koniec:
  39.         global board
  40.         board = [":white_large_square:", ":white_large_square:", ":white_large_square:",
  41.             ":white_large_square:", ":white_large_square:", ":white_large_square:",
  42.             ":white_large_square:", ":white_large_square:", ":white_large_square:"]
  43.         tura = ""
  44.         koniec = False
  45.         licznik = 0
  46.  
  47.         gracz1 = p1
  48.         gracz2 = p2
  49.  
  50.         #wypisujemy plansze
  51.         line = ""
  52.         for x in range(len(board)):
  53.             if x == 2 or x == 5 or x == 8:
  54.                 line += " " + board[x]
  55.                 await ctx.send(line)
  56.                 line = ""
  57.             else:
  58.                 line += " " + board[x]
  59.  
  60.         #decyzja kto zaczyna pierwszy
  61.         ktoPierwszy = random.randint(1,2)
  62.         if ktoPierwszy == 1 and koniec == False:
  63.             tura = gracz1
  64.             await ctx.send("Tura gracza <@" + str(gracz1.id) + ">.")
  65.         elif ktoPierwszy == 2 and koniec == False:
  66.             tura = gracz2
  67.             await ctx.send("Tura gracza <@" + str(gracz2.id) + ">.")
  68.  
  69.     else:
  70.         await ctx.send("Rozgrywka w trakcie, proszę poczekać na zakończenie.")
  71.  
  72. @client.command()
  73. async def ruch(ctx, pozycja : int):
  74.     global gracz1
  75.     global gracz2
  76.     global tura
  77.     global koniec
  78.     global licznik
  79.  
  80.     if not koniec:
  81.         znak = ""
  82.         #w tym miejscu bedziemy decydowac o znaku przypisanego dla danego gracza
  83.         if tura == ctx.author:
  84.             if tura == gracz1:
  85.                 znak = ":regional_indicator_x:"
  86.             elif tura == gracz2:
  87.                 znak = ":o2:"
  88.  
  89.             #sprawdzenie czy ruch jest legalny
  90.             if 0 < pozycja < 10 and board[pozycja-1] == ":white_large_square:":
  91.                 board[pozycja-1] = znak
  92.                 licznik += 1
  93.  
  94.                 #wydrukowanie tablicy
  95.                 line = ""
  96.                 for x in range(len(board)):
  97.                     if x == 2 or x == 5 or x == 8:
  98.                         line += " " + board[x]
  99.                         await ctx.send(line)
  100.                         line = ""
  101.                     else:
  102.                         line += " " + board[x]
  103.  
  104.                 #sprawdzenie czy ktoś wygrał lub jest remis
  105.                 wygrany(warunek_zwyciestwa, znak)
  106.                 print(licznik)
  107.                 if koniec == True:
  108.                     if znak == ":regional_indicator_x:":
  109.                         await ctx.send("Wygrywa gracz <@" + str(gracz1.id) + ">.")
  110.                     elif znak == ":o2:":
  111.                         await ctx.send("Wygrywa gracz <@" + str(gracz2.id) + ">.")
  112.                 elif licznik >= 9:
  113.                     koniec = True
  114.                     await ctx.send("Remis!")
  115.  
  116.                 #zmiana tury
  117.                 if tura == gracz1:
  118.                     tura = gracz2
  119.                 elif tura == gracz2:
  120.                     tura = gracz1
  121.             #błąd z wprowadzeniem liczby z przedzialu 1-9 oraz wprowadzeniem w zajete miejsce
  122.             else:
  123.                 await ctx.send("Użyj liczby całkowitej z przedziału od 1 do 9. Miejsce musi być puste!")
  124.         else:
  125.             await ctx.send("To nie Twoja tura!")
  126.  
  127. def wygrany(warunek_zwyciestwa, znak):
  128.     global koniec
  129.     for warunek in warunek_zwyciestwa:
  130.         if board[warunek[0]] == znak and board[warunek[1]] == znak and board[warunek[2]] == znak:
  131.             koniec = True
  132.  
  133. client.run("token")
  134.  
Advertisement
Add Comment
Please, Sign In to add comment