-
Notifications
You must be signed in to change notification settings - Fork 0
/
simulator2048.py
executable file
·88 lines (71 loc) · 2.68 KB
/
simulator2048.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from math import exp, expm1
from collections import deque
import time
import json
import sys
import numpy as np
import functions as Tools
from smartGridClass import smartGrid
from nodeClass import sgNode
sys.path.insert(0, './nextMove/')
from futureFutureAlgorithm import generateNextMoves
'''
test_game_state = '{"grid":{"size":4,"cells":[[{"position":{"x":0,"y":0},"value":2},{"position":{"x":0,"y":1},"value":2},{"position":{"x":0,"y":2},"value":4},{"position":{"x":0,"y":3},"value":4}],[{"position":{"x":1,"y":0},"value":32},{"position":{"x":1,"y":1},"value":16},{"position":{"x":1,"y":2},"value":16},null],[{"position":{"x":2,"y":0},"value":16},{"position":{"x":2,"y":1},"value":4},null,null],[null,{"position":{"x":3,"y":1},"value":2},null,{"position":{"x":3,"y":3},"value":2}]]},"score":264,"over":false,"won":false,"keepPlaying":false}';
test_game_state = json.loads(test_game_state);
grid = Tools.getGridState(test_game_state);
# create root node
sg = smartGrid(True, grid, None);
firstNode = sgNode(sg, None, None, None, 0);
# create second node
nextSg = firstNode.sg.simulateMove("right");
secondNode = sgNode(nextSg, 2, firstNode, "right", 1);
print firstNode.isFirstMove();
print secondNode.isFirstMove();
print "original grid: "
print secondNode.prevNode.sg.intGrid
print "grid after 1 move right: "
print secondNode.sg.intGrid
print secondNode.stepToHere
dq = deque();
dq.append(firstNode);
dq.append(secondNode);
print dq[0]
print dq.popleft();
print bool(dq);
#generateNextMove(test_game_state);
print firstNode.isBaseNode()
'''
##########################################
##### Driver/Global Variables Setup ######
##########################################
print "hello, world";
driver = webdriver.Firefox();
driver.get("http://gabrielecirulli.github.io/2048/");
gridElement = driver.find_element_by_class_name('grid-container');
##########################################
######## Start 2048 Manipulation #########
##########################################
print "start!";
game_state = Tools.getGameState(driver);
grid = Tools.getGridState(game_state)
sg = smartGrid(True, grid, None);
print;
highestTile = sg.getHighestTile();
# move up
#Tools.move(gridElement, "up");
# move right
#Tools.move(gridElement, "left");
moveC = 0;
while(highestTile < 2048):
moves = generateNextMoves(game_state);
for move in (moves):
print "move: " + str(moveC);
print move
moveC = moveC + 1;
Tools.move(gridElement, move);
game_state = Tools.getGameState(driver);
grid = Tools.getGridState(game_state)
sg = smartGrid(True, grid, None);
highestTile = sg.getHighestTile();