2017-06-17 93 views
-1

我有這個可以運行戰艦遊戲的exe文件。獨立地,它工作正常,但是當我將它的代碼放入def Zeeslag時,它不會被執行。有一個按鈕的命令指向這個def,但是當你點擊它時,沒有任何反應!正如你所看到的,我是一個經驗豐富的程序員。請幫忙!如何將我的Tkinter GUI按鈕指向子程序?

from Tkinter import * 

root = Tk() 
root.wm_title("Minigames") 
root.config(background = "#4FAC8D") #zeegroen 


def Zeeslag(): 
    from random import randint 
    board = [] #dit is het bord 

    for x in range(5): #maakt een rij in het spelbord 
     board.append(["O"] * 5) 

    def print_board(board): #voegt de rijen samen 
     for row in board: 
      print " ".join(row) 

    print "Laten we zeeslag spelen!" 
    print "Er zitten 3 boten van 1 vakje lang verborgen." 
    print "Je hebt 10 beurten om te raden waar hij zit." 
    print_board(board) 

    def random_row(board): #bepaalt y cor 
     return randint(1, len(board[0])) #het bord is 5 bij 5 

    def random_col(board): #bepaalt x cor 
     return randint(1, len(board[0])) 

    ship1_row = random_row(board) #maakt schip 1 aan 
    ship1_col = random_col(board) 
    ship2_row = random_row(board) #maakt schip 2 aan 
    ship2_col = random_col(board) 
    ship3_row = random_row(board) #maakt schip 3 aan 
    ship3_col = random_col(board) 

    """" om te testen: 
    print str(ship1_row) +' ' + str(ship1_col) 
    print str(ship2_row) +' ' + str(ship2_col) 
    print str(ship3_row) +' ' + str(ship3_col) """ 

    boats_hit=0 #je moet in totaal 3 boten raken 

    for turn in range(10): #10 beurten 
     print "Beurt "+ str(turn+1) 
     guess_row = int(raw_input("Raad de rij:")) 
     guess_col = int(raw_input("Raad de kolom:")) 

     if guess_row == ship1_row and guess_col == ship1_col or guess_row == ship2_row and guess_col == ship2_col or guess_row == ship3_row and guess_col == ship3_col : 
     print "Gefeliciteerd! Je hebt er een geraakt!" 
     board[guess_row-1][guess_col-1]= "G" 
     boats_hit +=1 
     print_board(board) 
     if boats_hit==3: #als je ze alle 3 hebt gevonden 
      print 'Je hebt gewonnen' 
      break 
     elif(guess_row < 1 or guess_row > 5) or (guess_col < 1 or guess_col > 5): #controle 
     print "Oeps, dat zit niet op het spelbord." 
     elif(board[guess_row-1][guess_col-1] == "X"): #herhaling vermijden 
     print "Dat heb je al eerder ingevoerd." 
     else: 
     print "Fout!" 

     board[guess_row-1][guess_col-1] = "X" #foute poging 
     print_board(board) 


    if turn == 9: 
     print "Einde Spel. Ze zaten hier!" 
     board[ship1_row-1][ship1_col-1]= "S" #zet S neer op de plekken van de boten 
     board[ship2_row-1][ship2_col-1]= "S" 
     board[ship3_row-1][ship3_col-1]= "S" 
     print_board(board) 





mainFrame = Frame(root, width=200, height = 600) 
mainFrame.grid(row=0, column=0, padx=10, pady=2) 
mainFrame.config(background="#246952") 

Label(mainFrame, text="Kies welk spel je wilt spelen ").grid(row=0, column=0, padx=10, pady=2) 

btnFrame = Frame(mainFrame, width=200, height = 200) 
btnFrame.grid(row=0, column=1, padx=10, pady=2) 

zeeslagBtn = Button(btnFrame, text="Zeeslag", command=Zeeslag) 
zeeslagBtn.grid(row=0, column=0, padx=10, pady=2) 



root.mainloop() 
+0

無法複製該問題。當我點擊按鈕*發生某些事情*。 – Goyo

回答

0

如果你有.exe文件你的遊戲,你可以從你的GUI使用os.system功能啓動。只需將Zeeslag()重新定義爲:

import os 

def Zeeslag(): 
    os.system(' "...\game.exe" ') # (Fill in the correct path)