diff --git a/g2048.py b/g2048.py index 3e08fdf..3f4eaee 100755 --- a/g2048.py +++ b/g2048.py @@ -43,34 +43,39 @@ def movement(): global board_reset moved=False board_temp=copy.deepcopy(board) - #TODO: Simplify movement - if m == 'h': + + undo = ['u','r'] + + up = ['k','w'] #straight + left = ['h','a'] #straight + down = ['j','s'] #back + right = ['l','d'] #back + + line = left + right + column = up + down + + def rev(rl): + if m in left + up: + gl = game_logic(rl) #k + else: + gl = game_logic(rl[::-1])[::-1] #j + return gl + + if m in line: for i in range(0,board_size,board_line): - # print('line',i) - board[i:i+board_line]=game_logic(board[i:i+board_line]) - elif m == 'j': - for i in range(board_line): - rl = board[i::board_line] - # print('column',i) - board[i::board_line]=game_logic(rl[::-1])[::-1] - elif m == 'k': - for i in range(board_line): - # print('column',i) - rl = board[i::board_line] - board[i::board_line]=game_logic(rl) - elif m == 'l': - for i in range(0,board_size,board_line): - # print('line',i) rl = board[i:i+board_line] - board[i:i+board_line]=game_logic(rl[::-1])[::-1] - elif m == 'u': + board[i:i+board_line] = rev(rl) + elif m in column: + for i in range(board_line): + rl = board[i::board_line] + board[i::board_line] = rev(rl) + elif m in undo: board=board_reset print(board) - #raise ValueError('Can not move this way') else: raise ValueError('Can not move this way') - if m != 'u' and moved == True: + if m not in undo and moved == True: board_reset=copy.deepcopy(board_temp) def print_board():