2017-01-21 4 views
-2

私は、ユーザーが上下左右に移動したい値を入力し、グリッドがXを正しい位置に再現するゲームを作ろうとしています。これは宝探しです。有効な移動を入力すると、プログラムは失敗したり、Xをランダムな場所に配置したりします。問題は、各列と行の番号がわからないという事実と関係していると思います。あなたは両方のwhile間違っていPython Grid Treasure Hunt

Move = 0 
from random import randint 
GridSize = 8 

board = [] 

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

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

Player_Row = GridSize - 1 
Player_Col = 0 

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

def random_col(board): 
    return randint(0, len(board[0]) - 1) 
board[Player_Row][Player_Col] = "X" 
print_board(board) 
while 1: 
    # Player Moving Up # 
    Player_Row_Add = 123 
    while (0 >(Player_Row - Player_Row_Add) < (GridSize -1)): 
     try: 
      Player_Row_Add = int(input("How many squares up do you want to go?")) 
     except ValueError as ex: 
      print(ex) 

    # Player Moving Down # 
    Player_Col_Add = 123 
    while (0 >(Player_Col_Add + Player_Col)> (GridSize -1)): 
     try: 
      Player_Col_Add = int(input("How many squares along do you want to go?")) 
     except ValueError as ex: 
      print(ex) 






    Player_Row = Player_Row - Player_Row_Add 
    Player_Col = Player_Col + Player_Col_Add 
    board[Player_Row][Player_Col] = "X" 
    Move = Move + 1 
    print_board(board) 
+0

が必要になりますnotなければ

while not (-1 < Player_Row - Player_Row_Add < GridSize): while not (-1 < Player_Col + Player_Col_Add < GridSize): 

を理解することが容易であり、一方(0>(Player_Row - Player_Row_Add)<(グリッド寸法-1)): '。もっと情報が必要です(エラーメッセージ/スタックトレース) –

+0

Pythonでゲームをデザインする場合は、[pygame](http://www.pygame.org/wiki/about)モジュールをチェックしてみてください。それは、いくつかの事で車輪を再発明することからあなたを救うかもしれません:) –

+0

私はプログラムがXがグリッドから投げられないことを意味する動きを受け入れるように、それを取得しようとしていました。列の順序付けのために、加算よりも減算の合計を持つ方が意味がありました。私は研究しましたが、Pythonでは列と行の番号付け方法についてまだ混乱しています。 – Ravenclaw

答えて

0

の作成: は、ここでは、コードの関連部分です。

このバージョンでは、比較は `奇妙に聞こえることをあなたは

while (-1 >= Player_Row - Player_Row_Add) or (Player_Row - Player_Row_Add >= GridSize): 

while (-1 >= Player_Col + Player_Col_Add) or (Player_Col + Player_Col_Add >= GridSize):