亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 使用tkinter實現(xiàn)三子棋游戲

使用tkinter實現(xiàn)三子棋游戲

熱門標簽:電銷機器人系統(tǒng)廠家鄭州 遼寧智能外呼系統(tǒng)需要多少錢 阿里電話機器人對話 qt百度地圖標注 舉辦過冬奧會的城市地圖標注 螳螂科技外呼系統(tǒng)怎么用 正安縣地圖標注app 400電話申請資格 地圖地圖標注有嘆號

本文實例為大家分享了tkinter實現(xiàn)三子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下

整體游戲很簡單。下棋,判斷勝利或者平局。沒有加入電腦下棋的算法。

游戲界面:

代碼:

import tkinter as tk
from tkinter import messagebox, Label, Button
from TicTacToeModel import TicTacToeModel
import requests
from PIL import ImageTk, Image
from io import BytesIO
 
 
class TicTacToeGUI:
 
 def __init__(self, root):
  # Create the model instance ...
  self.model = TicTacToeModel()
 
  # Create a 2D list to hold an array of buttons ...
  self.b = []
  for row in range(self.model.boardSize):
   q = []
   for col in range(self.model.boardSize):
    q.append(None)
   self.b.append(q)
  # You can now address b like a 2D matrix e.g. b[0][0]
 
  # Create the GUI .....
  menubar = tk.Menu()
 
  menubar.add_command(label='ResetGame', command=self.resetGUI)
  menubar.add_command(label='ResetImage', command=self.resetImg)
  menubar.add_command(label='Quit', command=root.destroy)
  root.config(menu=menubar)
  self.frame1 = tk.Frame(root, width=400, height=300, bg="GREY", borderwidth=2)
  self.frame2 = tk.Frame(root, width=400, height=200, bg="WHITE", borderwidth=2)
  self.createGUIAssets()
  self.createframe2()
  self.frame2.pack()
  self.frame1.pack()
 
  messagebox.showinfo("Hello", "Human player to start!")
 
 def getImg(self):
  headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
  }
  # img_src = ' https://api.ixiaowai.cn/api/api.php'
  img_src = ' https://api.ixiaowai.cn/gqapi/gqapi.php'
  response = requests.get(url=img_src, headers=headers)
  # print(response)
  image = Image.open(BytesIO(response.content))
  x, y = image.size
  y_s = 200
  x_s = int(x * y_s / y)
  img = image.resize((x_s, y_s), Image.ANTIALIAS)
  image = ImageTk.PhotoImage(img)
  return image
 
 def resetImg(self):
  self.image = self.getImg()
  self.Label.config(image=self.image)
 
 def createframe2(self):
  self.image = self.getImg()
  self.Label = tk.Label(self.frame2, image=self.image)
  self.Label.pack()
  # image.show()
 
 def createGUIAssets(self):
  for x in range(self.model.boardSize):
   self.frame1.columnconfigure(x, pad=20)
   self.frame1.grid_rowconfigure(x, pad=20)
 
  for row in range(self.model.boardSize):
   for col in range(self.model.boardSize):
    self.b[row][col] = Button(self.frame1, text='', bg='WHITE',
           relief='groove', borderwidth=20,
           height=3, width=8,
           command=lambda row=row, col=col: self.takeTurn(row, col))
    self.b[row][col].grid(row=row, column=col)
 
 def takeTurn(self, row, col):
  if not self.model.playSpace(row, col):
   return
  else:
   self.b[row][col].configure(bg="Green")
   status = self.model.checkWinStatus()
   if status == 1: # Player win
    messagebox.showinfo("Result", "Player wins!!!!")
    self.resetGUI()
   elif status == 0: # Draw
    messagebox.showinfo("Result", "Draw!!!!")
    self.resetGUI()
   elif status == -2: # On going ...
    (r, c) = self.model.computerTurn()
    self.b[r][c].configure(bg='red')
    if self.model.checkWinStatus() == -1:
     messagebox.showinfo("Result", "Computer wins!!!!")
     self.resetGUI()
   else:
    # Should not get here ...
    pass
 
 def resetGUI(self):
  for row in range(self.model.boardSize):
   for col in range(self.model.boardSize):
    self.b[row][col].configure(bg='WHITE')
  # And reset the model ...
  self.model.resetBoard()
  self.resetImg()
 
 
def main():
 win = tk.Tk() # Create a window
 win.title("noughts-and-crosses") # Set window title
 win.geometry("400x580") # Set window size
 win.resizable(False, False) # Both x and y dimensions ...
 
 # Create the GUI as a Frame
 # and attach it to the window ...
 myApp = TicTacToeGUI(win)
 
 # Call the GUI mainloop ...
 win.mainloop()
 
 
if __name__ == "__main__":
 main()

TicTacToeModel:

import numpy as np
import random
 
 
class TicTacToeModel:
 """ The board is represented as 2D numpy array.
  A player marks their space with a 1, the
  computer with a -1"""
 
 def __init__(self):
  """Create the board as a 2D matrix"""
  self.resetBoard()
 
 def resetBoard(self):
  self.boardSize = 3
  a = (self.boardSize, self.boardSize)
  self.board = np.zeros(a)
 
 def playSpace(self, row, col):
  """User plays a space
  Return True if space can be played, False otherwise"""
  if row > self.boardSize or row  0 \

    or col > self.boardSize or col  0:
   return False
  else:
   # Check if space is occupied ...
   if self.board[row][col] != 0:
    return False
   else:
    self.board[row][col] = 1
    return True
 
 def checkWinStatus(self):
  """ Looks for 3 in a row, column or diagonal
   Return 0 if draw, 1 if the player has won
   and -1 if the computer has won, and -2 is the game is
   ongoing"""
  # Check the columns ...
  for row in range(self.boardSize):
   sum = 0
   for col in range(self.boardSize):
    sum += self.board[row][col]
   if sum == 3:
    return 1
   elif sum == -3:
    return -1
  # Check the rows ...
  for col in range(self.boardSize):
   sum = 0
   for row in range(self.boardSize):
    sum += self.board[row][col]
   if sum == 3:
    return 1
   elif sum == -3:
    return -1
 
  # Check the diagonals ...
  sum1 = 0
  sum2 = 0
  for diag in range(self.boardSize):
   sum1 += self.board[diag][diag]
   sum2 += self.board[diag][self.boardSize - 1 - diag]
  if sum1 == 3 or sum2 == 3:
   return 1
  elif sum1 == -3 or sum2 == -3:
   return -1
 
  # Check for incomplete game ...
  for row in range(self.boardSize):
   for col in range(self.boardSize):
    if self.board[row][col] == 0:
     return -2
 
  # If we get here, it's a draw ...
  return 0
 
 def computerTurn(self):
  """ The computer chooses an unoccupied
   space at random. Returns a tuple
   (row, col) when chosen"""
  # To prevent infinite loops ....
  if self.checkWinStatus() != -2:
   return (-1, -1)
  played = False
 
  while played == False:
   row = random.randrange(self.boardSize)
   col = random.randrange(self.boardSize)
   if self.board[row][col] == 0:
    self.board[row][col] = -1
    played = True
 
  return (row, col)
 
 
def main():
 # Basic check that the game works ...
 # You can expand this if you like ...
 game = TicTacToeModel()
 
 game.playSpace(0, 0)
 (r, c) = game.computerTurn()
 print(game.board)
 print(game.checkWinStatus())
 
 
if __name__ == "__main__":
 main()

更多關(guān)于python游戲的精彩文章請點擊查看以下專題:

python俄羅斯方塊游戲集合

python經(jīng)典小游戲匯總

python微信跳一跳游戲集合

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • python版本五子棋的實現(xiàn)代碼
  • 用Python編寫一個國際象棋AI程序
  • python實現(xiàn)五子棋小游戲
  • python pygame實現(xiàn)五子棋小游戲
  • python實現(xiàn)井字棋游戲
  • Python實現(xiàn)的井字棋(Tic Tac Toe)游戲示例
  • python實現(xiàn)簡單五子棋游戲
  • python實現(xiàn)五子棋小程序
  • 使用python實現(xiàn)簡單五子棋游戲
  • python實現(xiàn)五子棋游戲

標簽:信陽 昭通 淘寶好評回訪 興安盟 隨州 合肥 濟源 阜新

巨人網(wǎng)絡(luò)通訊聲明:本文標題《使用tkinter實現(xiàn)三子棋游戲》,本文關(guān)鍵詞  使用,tkinter,實現(xiàn),三子,棋,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用tkinter實現(xiàn)三子棋游戲》相關(guān)的同類信息!
  • 本頁收集關(guān)于使用tkinter實現(xiàn)三子棋游戲的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    九九久久99| 久久国产影院| 毛片高清| 国产伦精品一区二区三区在线观看| 国产a视频| 午夜精品国产自在现线拍| 一级毛片视频在线观看| 一a一级片| 国产亚洲精品aaa大片| 麻豆系列 在线视频| 欧美另类videosbestsex视频| 日韩一级黄色| 天天做人人爱夜夜爽2020毛片| 精品视频一区二区| 99久久精品国产免费| 91麻豆精品国产自产在线观看一区 | 国产麻豆精品hdvideoss| 国产不卡福利| 久久99爰这里有精品国产| 一本高清在线| 免费的黄色小视频| 你懂的在线观看视频| a级毛片免费全部播放| 九九九国产| 国产视频一区二区三区四区| 午夜激情视频在线观看| 精品国产亚一区二区三区| 国产伦精品一区二区三区在线观看| 九九精品久久久久久久久| 国产麻豆精品免费密入口| 天天做日日爱| 精品久久久久久影院免费| 国产美女在线观看| 91麻豆精品国产自产在线观看一区 | 日韩免费在线视频| 欧美另类videosbestsex久久| 一级片免费在线观看视频| 日本免费区| 91麻豆精品国产自产在线| 麻豆网站在线免费观看| 国产一区二区高清视频| 亚洲精品永久一区| 欧美国产日韩精品| 可以免费在线看黄的网站| 精品在线视频播放| 91麻豆精品国产综合久久久| 日本免费看视频| 国产国语在线播放视频| 久久国产一久久高清| 青草国产在线观看| 亚洲精品影院久久久久久| 91麻豆爱豆果冻天美星空| 午夜欧美成人香蕉剧场| 国产高清视频免费| 日本伦理网站| 国产一区二区福利久久| 精品国产一区二区三区久久久蜜臀 | 色综合久久天天综合| 二级片在线观看| 成人a大片在线观看| 国产一区二区精品久久91| 日本特黄特色aaa大片免费| 精品国产亚一区二区三区| 国产极品精频在线观看| a级毛片免费全部播放| 亚洲精品中文字幕久久久久久| 青青久热| 免费国产在线观看| 韩国三级视频在线观看| 99久久精品国产片| 四虎影视精品永久免费网站| 91麻豆tv| 精品视频一区二区| 国产麻豆精品hdvideoss| 91麻豆精品国产高清在线| 美女免费精品视频在线观看| 午夜在线亚洲男人午在线| 久久99爰这里有精品国产| 日日日夜夜操| 九九干| 国产一区免费在线观看| 夜夜操网| 一级片片| 91麻豆精品国产片在线观看| 一级毛片视频免费| 可以免费看毛片的网站| 国产麻豆精品hdvideoss| 日韩av成人| 国产高清在线精品一区二区| 成人高清视频在线观看| 免费一级生活片| 欧美一区二区三区性| 中文字幕97| 国产一区二区精品久| 国产视频一区二区在线观看| 国产网站免费视频| 韩国三级香港三级日本三级la| 国产不卡在线播放| 色综合久久天天综合绕观看| 日本特黄特色aaa大片免费| 国产激情视频在线观看| 国产91素人搭讪系列天堂| 香蕉视频久久| 欧美激情一区二区三区在线播放| 国产不卡高清在线观看视频| 精品视频一区二区三区免费| 欧美a级片视频| 黄视频网站在线观看| 成人免费一级纶理片| 亚洲精品久久玖玖玖玖| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级女性全黄久久生活片| 亚洲天堂一区二区三区四区| 国产精品自拍一区| 成人在激情在线视频| 欧美激情在线精品video| 韩国三级香港三级日本三级la| 精品视频免费看| 日本在线www| 天天色成人| 欧美a级成人淫片免费看| 久久精品免视看国产明星| 麻豆午夜视频| 日本免费看视频| 亚洲天堂免费| 精品国产三级a| a级黄色毛片免费播放视频| 色综合久久久久综合体桃花网| 91麻豆爱豆果冻天美星空| 精品国产一区二区三区久久久蜜臀 | 欧美激情一区二区三区视频高清| 欧美激情一区二区三区视频高清| 日韩中文字幕一区| 亚洲精品永久一区| 日韩欧美一及在线播放| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一a一级片| 国产网站免费观看| 午夜在线影院| 成人免费一级毛片在线播放视频| 国产一区二区精品久久| 精品美女| 九九九在线视频| 色综合久久天天综线观看| 青青久热| 你懂的日韩| 日本在线不卡免费视频一区| 欧美a级成人淫片免费看| 一级片片| 国产原创中文字幕| 久久国产精品自由自在| 精品国产一区二区三区久| 超级乱淫黄漫画免费| 九九九在线视频| 日本免费看视频| 久久99中文字幕| 日韩av东京社区男人的天堂| 日韩在线观看网站| 国产国语在线播放视频| 久久99中文字幕| 日韩在线观看视频黄| 天天色成人网| 欧美a级成人淫片免费看| 一级女性大黄生活片免费| 精品久久久久久影院免费| 国产麻豆精品免费密入口| 精品视频在线观看视频免费视频| 国产网站在线| 尤物视频网站在线| 精品毛片视频| 成人影院一区二区三区| 久久精品欧美一区二区| 高清一级做a爱过程不卡视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产激情一区二区三区| 色综合久久手机在线| 91麻豆精品国产自产在线观看一区 | 麻豆网站在线看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产成a人片在线观看视频| 国产一区二区高清视频| 国产a视频| 国产不卡在线看| 久久99中文字幕| 91麻豆tv| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲女初尝黑人巨高清在线观看| 一级女性全黄久久生活片| 久久99这里只有精品国产| 天天做人人爱夜夜爽2020| 国产激情视频在线观看| 麻豆系列国产剧在线观看| 国产一区二区精品尤物| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 午夜激情视频在线观看| 一本高清在线| 国产一级生活片| 国产福利免费观看| 久草免费资源| 成人免费观看网欧美片|