I have different cases up, down , left and right. Sometimes the choice is not valid and the user is required to input another choice. For example, I want to shift the elements up, but all of them are placed up already, the program shouldn't generate a new (2) value, instead ask a user to input a new choice other than up. Here is my code, it works perfectly for the move but not when having invalid choices. Anyone can help??
isValid = True
while True:
if isValid:
one = generate_piece(game_board, DEV_MODE)
game_board[one['row']][one['column']] = one['value']
print_board(game_board)
if True:
choice = input()
if choice == 'w':
isValid = False
for col in range(4):
tracker1 = 0
tracker2 = 0
for row in range(4):
if game_board[row][col] == 0:
continue
if tracker2 == game_board[row][col]:
game_board[tracker1][col] = 2 * tracker2
tracker1 = tracker1 + 1
tracker2 = 0
elif tracker2 == 0:
tracker2 = game_board[row][col]
else:
game_board[tracker1][col] = tracker2
tracker1 = tracker1 + 1
tracker2 = game_board[row][col]
if tracker2 != 0:
game_board[tracker1][col] = tracker2
tracker1 = tracker1 + 1
for row in range(tracker1, 4):
game_board[row][col] = 0
isValid = True
elif choice == 's':
isValid = False
for col in range(4):
tracker1 = 3
tracker2 = 0
for row in range(3, -1, -1):
if game_board[row][col] == 0:
continue
if tracker2 == game_board[row][col]:
game_board[tracker1][col] = 2 * tracker2
tracker1 = tracker1 - 1
tracker2 = 0
elif tracker2 == 0:
tracker2 = game_board[row][col]
else:
game_board[tracker1][col] = tracker2
tracker1 = tracker1 - 1
tracker2 = game_board[row][col]
if tracker2 != 0:
game_board[tracker1][col] = tracker2
tracker1 = tracker1 - 1
for row in range(tracker1 + 1):
game_board[row][col] = 0
isValid = True
elif choice == 'd':
isValid = False
for row in range(4):
tracker1 = 3
tracker2 = 0
for col in range(3, -1, -1):
if game_board[row][col] == 0:
continue
if tracker2 == game_board[row][col]:
game_board[row][tracker1] = 2*tracker2
tracker1 = tracker1 - 1
tracker2 = 0
elif tracker2 == 0:
tracker2 = game_board[row][col]
else:
game_board[row][tracker1] = tracker2
tracker1 = tracker1 - 1
tracker2 = game_board[row][col]
if tracker2 != 0:
game_board[row][tracker1] = tracker2
tracker1 = tracker1 - 1
for col in range(tracker1 + 1):
game_board[row][col] = 0
isValid = True
elif choice == 'a':
isValid = False
for row in range(4):
tracker1 = 0
tracker2 = 0
for col in range(4):
if game_board[row][col] == 0:
continue
if tracker2 == game_board[row][col]:
game_board[row][tracker1] = 2 * tracker2
tracker1 = tracker1 + 1
tracker2 = 0
elif tracker2 == 0:
tracker2 = game_board[row][col]
else:
game_board[row][tracker1] = tracker2
tracker1 = tracker1 + 1
tracker2 = game_board[row][col]
if tracker2 != 0:
game_board[row][tracker1] = tracker2
tracker1 = tracker1 + 1
for col in range(tracker1, 4):
game_board[row][col] = 0
isValid = True
elif choice == 'q':
print('Goodbye')
break
else:
print('Invalid input.')