我使用tkinter在python 3中制作了Tic Tac Toe游戏,但是运行代码时却没有任何输出,这是我第一次谢谢您

如何解决我使用tkinter在python 3中制作了Tic Tac Toe游戏,但是运行代码时却没有任何输出,这是我第一次谢谢您

import tkinter as tk

window = tk.Tk()
# Code to add widgets will go here

window.title("Tic Tac Toe Board")
window.configure(bg = "white")

theboard = ['']*10

这是所有小部件的轮廓

Label1 = tk.Label(window,text ="Player 1 :")
Label1.grid(row=0,column=0)

DisplayMain = tk.Text(master =window,width = 20,height = 2,state = 'disabled')
DisplayMain.grid(row = 0,column = 1)

Entry1 = tk.Entry(master = window)
Entry1.grid(row=1,column=1)

Label2 = tk.Label(window,text ="Player 2 :")
Label2.grid(row=0,column=2)

这些都是我定义的功能

def buttonclicked(button,board,marker,position):
    board[position] = marker
    button['text'] =  marker
    button.configure(state="disabled")
    board[position] = marker

user_input = Entry1.get

def executer():
    global user_input
    user_input = Entry1.get()

我在这里定义了按钮

Button1 = tk.Button(window,height = 10,text = '',command= lambda: buttonclicked(Button1,theboard,1)) 
Button1.grid(row=2,column=0)

Button2 = tk.Button(window,command= lambda: buttonclicked(Button2,2))
Button2.grid(row=2,column=1)

Button3 = tk.Button(window,command= lambda: buttonclicked(Button3,3))
Button3.grid(row=2,column=2)

Button4 = tk.Button(window,command= lambda: buttonclicked(Button4,4))
Button4.grid(row=3,column=0)

Button5 = tk.Button(window,command= lambda: buttonclicked(Button5,5))
Button5.grid(row=3,column=1)

Button6 = tk.Button(window,command= lambda: buttonclicked(Button6,6))
Button6.grid(row=3,column=2)

Button7 = tk.Button(window,command= lambda: buttonclicked(Button7,7))
Button7.grid(row=4,column=0)

Button8 = tk.Button(window,command= lambda: buttonclicked(Button8,8))
Button8.grid(row=4,column=1)

Button9 = tk.Button(window,command= lambda: buttonclicked(Button9,9))
Button9.grid(row=4,column=2)

Button10 = tk.Button(window,height=5,text="Click Me",command = lambda: executer())
Button10.grid(row=5,column=1) 

这些是其余功能

#Function that takes in user input
def player_input():
    '''
    OUTPUT = (player1marker,player2marker)
    '''
    global marker
    marker = str(user_input)
    
    while marker != 'X' and marker != 'O':
        DisplayMain.insert(0.0,'Welcome to Tic-Tac-Toe,Choose X or O to start playing')  
        player1 = marker
        player2 = ''
        marker = marker.upper()
        if player1 == 'X':
            player2 = 'O'
        elif player1 == 'O':
            player2 = 'X'
        else:
            pass
        
            continue            
        return (player1,player2) 

#Function that randomly pics who goes first

import random

def choose_first():
    player = random.randint(1,2)
    if player == 1:
        return ("Player 1")
    else:
        return ("Player 2")

#fucntion which checks if a index position on the board is free returns boolean value 

def space_check(board,position):
    return board[position] == ''

def full_board_check(board):
    for i in range(1,10):
        if space_check(board,i):
            return False
            #return true if full
    return True

def win_check(board,mark):
    if   board[1] == mark and board[2] == mark and  board[3]== mark:
        return True
            
    elif board[1] == mark and board[4] == mark and board[7] == mark:
        return True
            
    elif board[1] == mark and board[5] == mark and board[9] == mark:
        return True
        
    elif board[2] == mark and board[5] == mark and board[8]== mark:
        return True
        
    elif board[7] == mark and board[5] == mark and  board[3]==mark:
        return True
    
    elif board[7]== mark  and board[8]== mark and  board[9] == mark:
        return True
  
    elif board[9] == mark and board[6] == mark and board[3] == mark:
        return True
            
    elif board[4] == mark and board[5] == mark and board[6] == mark:
        return True 
             
    else:
        return False

def replay():
    global DisplayMain
    DisplayMain.config(state = 'normal')
    DisplayMain.insert(0.0,"Do you want to play again ? ")
    play_game = str(user_input)
    DisplayMain.config(state = 'disabled')
    return play_game.lower()[0] == 'y'

game_on_ready = True 

while game_on_ready == True:
    
    player1_marker,player2_marker = player_input() 
    
    Label1['text'] = "Player 1 :" + player1_marker
    Label2['text'] = "Player 2 :" + player2_marker
    #Assigning input of players to variables
    
    DisplayMain.insert(0.0,f"Player 1 chooses {player1_marker}")
    DisplayMain.insert(0.0,f"Player 2 chooses {player2_marker}")
    DisplayMain.config(state='disabled')

    #choosing players turn 
    turn = choose_first()
    DisplayMain.config(state='normal')
    DisplayMain.insert(0.0,f'{turn} gets to go first Are you ready to play {turn}  ? Enter Yes or No ')
    DisplayMain.config(state='disabled')
    play_game = str(user_input)
    
    if play_game.lower()[0] == 'y':
        game_on_ready = True
    else:
        game_on_ready = False
    

这是游戏的工作方式,我认为这有问题 因此,当我运行其余代码时,不会出现任何错误

    while game_on_ready == True :

        if turn == 'Player 1':

            #Check if won 
            if win_check(theboard,player1_marker) == True:
                DisplayMain.insert(0.0,f"Player 1 ' {player1_marker} ' has won !")
                game_on_ready = False
                
            else:
            #check if tie 
                if full_board_check(theboard) == True:
                    DisplayMain.insert(0.0,"The game is a DRAW")
                    break
                    
                else:
            #switch to player 2 
                    turn = "player 2"
                
        else:
            
            #Check if won 
            if win_check(theboard,player2_marker) == True:
                DisplayMain.insert(0.0,f"Player 2 ' {player2_marker} 'has won !")
                game_on_ready = False
                
            else:
            #check if tie 
                if full_board_check(theboard) == True:
                    DisplayMain.insert(0.0,"The game is a DRAW !")
                    break
                
                    
                else:
            #switch to player 1
                    turn = "Player 1"

    if not replay():
        DisplayMain.insert(0.0,"Thank you for playing ! HOPE YOU HAD FUN ....")
        break       

window.mainloop()

#请检查代码并提及必须进行的更改。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-