成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > 使用tkinter實(shí)現(xiàn)三子棋游戲

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

熱門(mén)標(biāo)簽:電銷(xiāo)機(jī)器人系統(tǒng)廠家鄭州 遼寧智能外呼系統(tǒng)需要多少錢(qián) 阿里電話機(jī)器人對(duì)話 qt百度地圖標(biāo)注 舉辦過(guò)冬奧會(huì)的城市地圖標(biāo)注 螳螂科技外呼系統(tǒng)怎么用 正安縣地圖標(biāo)注app 400電話申請(qǐng)資格 地圖地圖標(biāo)注有嘆號(hào)

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

整體游戲很簡(jiǎn)單。下棋,判斷勝利或者平局。沒(mé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游戲的精彩文章請(qǐng)點(diǎn)擊查看以下專題:

python俄羅斯方塊游戲集合

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

python微信跳一跳游戲集合

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

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

標(biāo)簽:信陽(yáng) 昭通 淘寶好評(píng)回訪 興安盟 隨州 合肥 濟(jì)源 阜新

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用tkinter實(shí)現(xiàn)三子棋游戲》,本文關(guān)鍵詞  使用,tkinter,實(shí)現(xiàn),三子,棋,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用tkinter實(shí)現(xiàn)三子棋游戲》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于使用tkinter實(shí)現(xiàn)三子棋游戲的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    向日葵视频成人app网址| 中文字幕1234区| 制服丝袜影音先锋| 国产一级网站视频在线| 91社在线播放| 亚洲激情啪啪| 欧美久久在线| 99久久精品国产一区二区三区| 奇米狠狠一区二区三区| 国产成人午夜精品影院观看视频| 桃子视频成人app| ,一级淫片a看免费| 国产色婷婷国产综合在线理论片a| 99久久无色码| 日韩精品欧美一区二区三区| 一区二区三区日韩在线| 日韩av在线导航| 媚黑女一区二区| 欧美性精品220| 午夜在线电影亚洲一区| √天堂中文www官网| 国产高清av片| 欧美日韩情趣电影| 91麻豆国产精品| 亚洲伦理精品| 国产精品揄拍500视频| 理论片在线观看理伦片| 国产主播在线资源| 黄色网址电影| 亚洲91中文字幕无线码三区| 亚洲猫色日本管| 日本二区视频| 成年人网站在线免费观看| 日韩精品三区四区| 图片区小说区区亚洲五月| 国产精品美女一区二区三区四区| 香蕉精品久久| 大陆极品少妇内射aaaaaa| 国产成人啪免费观看软件| 成人啪啪18免费游戏链接| 日韩久久久久久久久久久久| 最近中文字幕在线6| 精品人妻少妇嫩草av无码专区| 在线视频se| 日本一区免费观看| 一区二区三区www污污污网站| 欧美日韩国产第一页| 性色88av老女人视频| 日韩亚洲在线观看| 国产欧美视频一区二区三区| 777国产偷窥盗摄精品视频| 欧美日韩国产在线一区| 精品色999| 国产一区二区三区免费视频| 亚洲av无码一区二区三区性色| 九九热免费在线视频| 成人国产电影在线观看| 九九爱免费视频在线观看| 久久久久久久一区二区| 免费观看黄色的网站| 人人妻人人藻人人爽欧美一区| 成人免费在线观看| 欧美国产一区视频在线观看| 日本丰满www色| 性欧美18一19性猛交| 久久精品一区二区三区中文字幕| 国产精品久久久久久久天堂| 国产手机视频在线| 欧美激情喷水视频| 日韩精品乱码久久久久久| 意大利激情丛林无删减版dvd| 四虎免费视频| 理论片在线不卡免费观看| 国产乱码久久久久| 国产日韩欧美不卡| 久久福利综合| 亚洲精品第五页| 天堂精品高清1区2区3区| 日韩精品社区| 欧美人在线视频| 欧美精品一区三区在线观看| 五月天久久久久久| 久久网免费视频| 欧美在线一二三区| 久久亚洲综合国产精品99麻豆精品福利| 激情综合丁香| 日韩综合一区| 一本色道久久综合无码人妻| 欧美亚洲国产视频小说| 日本欧美一二三区| 久久久久久中文| 午夜精品视频一区二区三区在线看| 精品无码一区二区三区的天堂| 中文字幕在线观看第一页| 久久99最新地址| 国产在线一二三| 9191在线视频| 国产精品入口麻豆完整版| av在线精品| 久热国产精品视频| 欧美性潮喷xxxxx免费视频看| 一级特黄录像免费播放全99| 精品成人免费视频| 国产欧美一区二区三区精品观看| 欧美性一级生活| 免费性色视频| 亚洲精品电影网站| 福利视频午夜| 中文字幕乱码久久午夜不卡| 熟妇人妻久久中文字幕| 成人免费在线观看视频网站| 性欧美xxxx交| 嫩草影院在线观看未满十八| 亚洲精品中文字幕在线播放| 国产精品无码午夜福利| 日韩欧美一区二区视频| 中国黄色片一级| 日本成人精品在线| 国产卡一卡二在线| 精品国产av鲁一鲁一区| 欧美gay男男猛男无套| 精品一区二区影视| 亚洲品质视频自拍网| 精品美女被调教视频大全网站| 免费高清在线观看免费| 日韩毛片免费看| 国产精品久久久久久影院8一贰佰| 草草地址线路①屁屁影院成人| 在哪里可以看毛片| 日本免费一二三区| 精品久久久噜噜噜噜久久图片| 884aa四虎免费影库4h| 久久久久久久国产精品影院| 国产桃色电影在线播放| 亚洲欧洲一区二区天堂久久| 国产精品成人一区二区网站软件| 亚洲人成伊人成综合网久久久| 国产香蕉精品视频一区二区三区| 国产又大又黑又粗免费视频| 亚洲精品久久久一区二区三区| av在线免费网站| 国产视频久久网| 亚洲综合成人在线| 日韩一区二区三区免费看| a毛片毛片av永久免费| 欧美日韩在线精品一区二区三区激情| 椎名由奈jux491在线播放| 国产一级做a爰片久久| 超碰在线观看免费| 亚洲天堂网av在线| www日韩精品| 小处雏高清一区二区三区| 亚洲va欧美va人人爽| 高清日韩欧美| 免费播放片a高清在线观看| 国产精品男人爽免费视频1| 国产不卡一区二区在线播放| 亚洲午夜精品视频| 亚洲视频网在线直播| 午夜精品一区二区在线观看的| 免费三级网站| 国产精选在线观看91| 这里有精品可以观看| 另类高清dbsm日本tvav| 成人激情开心网| 欧美久久久久久| 国产精品亚洲一区二区在线观看| 日韩精品看片| 亚洲毛片免费看| 日韩av在线电影观看| 亚洲成年人影院在线| 亚洲综合视频一区| 中文字幕人妻一区二区三区在线视频| 亚洲久久一区| 亚洲第九十九页| 蜜桃免费在线| 精品999日本久久久影院| 亚洲视频精品在线| 你懂得影院夜精品a| 国产精品午夜一区二区| 亚洲欧美日本国产| 欧美 日韩 激情| 国产二区视频在线观看| 欧美人与牲动交xxxx| 日韩中文av在线| 天堂一本之道| 亚洲视频网在线直播| 自拍偷拍亚洲图片| 亚洲精品.www| 美女扒开腿让男人桶爽久久软| 亚洲精品一级二级三级| 欧美丰满老妇厨房牲生活| 玖玖爱免费视频| 影音先锋2020色资源网| 91在线无精精品一区二区| 欧美军同video69视频| 亚洲男女av一区二区| 精品69视频一区二区三区Q| 国产在线视频一区二区| 一区二区三区在线高清| 国产精品一区二区三区在线免费观看| 高清在线不卡av| 人妻一区二区视频| 国产伦精品一区二区三区在线播放| 久久久精品人妻一区二区三区| 国产成人啪精品午夜在线观看| 国产成+人+综合+亚洲欧洲| 中文字幕中文字幕在线中一区高清| 久久免费精品国产| 欧美成人免费va影院高清| 日本视频在线观看一区二区三区| 国产在线精品观看| 中文字幕成人在线视频| 韩国三级丰满少妇高潮| 国产精品免费人成网站| 日韩精品成人在线| 亚洲欧美制服中文字幕| 国产精品成人3p一区二区三区| 精品久久国产一区| 999成人网| 欧美日韩国产不卡在线看| 中文字幕欧美在线| 亚乱亚乱亚洲乱妇| 久久久99国产精品免费| 精品国产亚洲一区二区在线观看| 日本免费久久高清视频| 中文国语毛片高清视频| 美女少妇精品视频| 欧美丝袜美女中出在线| 欧美性精品220| 久久精品日产第一区二区三区乱码| 国产香蕉97碰碰久久人人| 国产老女人精品毛片久久| 男女无套免费视频网站动漫| 68精品国产免费久久久久久婷婷| 欧美久久香蕉| 偷拍国模大尺度视频在线播放| av大片免费看| 欧美日韩中字一区| 亚洲人与黑人屁股眼交| 日韩一区二区三区免费观看| 在线免费观看一区| 国产一区二区动漫| 欧洲女同同性吃奶| 中文字幕一区二区三区乱码图片| 人妻av中文系列| 成人一级福利| 欧美日韩在线精品一区二区三区激情综合| 97caopron在线视频| 欧美日韩美女一区二区| 五月亚洲婷婷| 五月婷婷久久丁香| 国产资源在线观看| 99精品免费网| 丝袜免费视频| 91亚洲精品丁香在线观看| 国产精品久久久精品a级小说| 亚洲人成网址| 亚洲精品久久久蜜桃| 天天摸天天做天天爽| 国产精品美女久久久久av爽李琼| 尤物在线观看视频| 男人的天堂久久精品| 300部国产真实乱| 日本电影一区二区在线观看| 97色伦图片97综合影院| 欧洲av一区二区嗯嗯嗯啊| 国产精品亚洲综合天堂夜夜| 日韩高清中文字幕一区| 中文字幕在线导航| 热门国产精品亚洲第一区在线| 国产成人精品免费视频网站| 国内成人自拍| 亚洲mv大片欧洲mv大片精品| 日韩一区二区免费在线电影| 91国产精品视频在线| 亚洲少妇自拍| 欧美午夜欧美| 一区二区在线免费播放| 91最新国产视频| 亚洲国产精品成人va在线观看| 欧美性生交大片| 亚洲女人天堂视频| 亚洲aaa级| 一区二区三区www| 蜜臀av性久久久久蜜臀aⅴ| 精品久久成人| 欧美无砖砖区免费| 性网站在线看| ww久久中文字幕| 亚洲6080在线| 在线免费观看你懂的| 在线免费观看黄色av| 国产黄色片免费观看| 天天想你在线观看完整版电影免费| 欧美日韩亚洲三区| 国产字幕视频一区二区| 久久视频免费在线| 亚洲精品电影久久久| 日本黄色的视频| 国产女人18毛片水真多| 欧美色老头old∨ideo| 国产精品xx| 疯狂做受xxxⅹ高潮视频免费| 国产剧情av麻豆香蕉精品| 好吊妞国产欧美日韩免费观看网站| 久久国产精品99久久久久久老狼| 国产精品三级av| 一区二区三区欧美亚洲| 欧美在线影院一区二区| 日韩不卡免费高清视频| 狠狠色狠色综合曰曰| 婷婷久久一区| 国产精品igao视频网网址不卡日韩| 久热国产精品视频| 欧美人成在线视频| 欧美精品福利视频| 国产精品色婷婷视频| 日日噜噜噜噜人人爽亚洲精品| 草裙成人精品一区二区三区| 免费观看黄网站| 蜜桃av久久久亚洲精品| 国产精品自拍首页| 在线亚洲一区| 成人免费淫片aa视频免费| 91精品大全| 黄色a一级视频| 欧美一区二区视频免费观看|