2017-05-15 3 views
0

免責事項 - Python(3.x)は、プログラミングの初心者です。プログラムでTkinter Checkbuttonをランダムに選択できますか?

私は最近、私がミニ戦艦ゲームを作成したcodeacademyでPythonコースを完了しました。学習プロジェクトとして、TkinterとCheckbuttonを使ってゲームボード用のGUIを開発し、インタプリタの外で演奏できるようにしています。

私は現在、ブロックされていますが、Pythonが戦艦の位置のチェックボタンの位置をランダムに選択する方法を知らず、プレイヤーから見えないようにしています。

ここに私のTkinterのコードは、これまで...

from tkinter import * 

class gui(object): 
    def __init__(self): 

     master = Tk() 
     master.title("Battleships!") 

     w = Label(master, text="Let's play Battleships!") 
     w.pack() 
     w = Label(master, text="Click in a box to try and bomb the 
Battleship:") 
     w.pack() 

     self.checkvar1 = IntVar() 

     c = Checkbutton(master, variable=self.checkvar1, command=self.cb) 
     c.pack() 

     #Hopefully I can use this to display messages to user as they guess 
     w = Label(master, text=" ") 
     w.pack() 

     Button(master, text="I give up!", command=master.quit).pack() 

     master.mainloop() 

    def cb(self): 
     print("variable is", self.checkvar1.get()) 
     return self.checkvar1.get() 

def main(): 
    g = gui() 

if __name__ == '__main__': 
    main() 

はおそらく、私は最初だけでなく(私は私をスライスしようとした、単一のチェックボタンでそれをしようと私のチェックボタングリッド(5×5)を作成する必要があります論理的な問題への発展)?ここで

は、オリジナルのゲームコード(なしGUI)です...

from random import randint 

board = [] 

for x in range(5): 
    board.append(["O"] * 5) 

def print_board(board): 
    for row in board: 
     print(" ".join(row)) 

print("Let's play Battleship!") 
print_board(board) 

def random_row(board): 
    return randint(0, len(board) - 1) 

def random_col(board): 
    return randint(0, len(board[0]) - 1) 

ship_row = random_row(board) 
ship_col = random_col(board) 

for turn in range(4): 
    guess_row = int(input("Guess Row (between 0 & 4):")) 
    guess_col = int(input("Guess Col (between 0 & 4):")) 
    print("Turn", turn + 1) 
    if guess_row == ship_row and guess_col == ship_col: 
     print("Congratulations! You sunk my battleship!") 
     break 
    else: 
     if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 
4): 
      print("Oops, that's not even in the ocean.") 
      if turn == 3: 
       print("Game Over") 
     elif (board[guess_row][guess_col] == "X"): 
      print("You guessed that one already.") 
      if turn == 3: 
       print("Game Over") 
     else: 
      print("You missed my battleship!") 
      board[guess_row][guess_col] = "X" 
      if turn == 3: 
       print("Game Over") 
     print_board(board) 

何かアドバイス、この特定の問題に私の学習を支援するためのヒント、助言をいただければ幸いです。

+0

アドバイス:あなたがそれに完全に慣れるまで、クラスを使用する上でもっとチュートリアルを読む、それを使う方法は非常に時代遅れです.... – abccd

+0

ヒント:非GUIコード、他のコードと同じように、 'board ='] 'をチェックし、' board'にチェックボックを追加してください。 – abccd

+0

ヒント: 'tkinter import *'から 'tkinter as tk'を実行しないでください。将来の名前空間の混乱 – abccd

答えて

0

いつでもすべてのチェックボックスを生成することができます(作成時にリストに格納している間に)、リスト内のアイテムをランダムに選択して保存し、ユーザーがクリックすると、クリックしたアイテムと比較しますあなたは保存しています。

+0

素晴らしい提案。したがって、元のコードのように(リストとして)生成してください。私はそのオプションを調べます。 :) – DMGreenlees

関連する問題