Created
March 17, 2014 00:50
-
-
Save frp/9592102 to your computer and use it in GitHub Desktop.
Bot 2048
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'selenium-webdriver' | |
$driver = Selenium::WebDriver.for :firefox | |
$driver.get("http://gabrielecirulli.github.io/2048/") | |
def sendkey key | |
$driver.action.send_keys(key).perform | |
end | |
def finished | |
result = $driver.find_elements(:class, "game-over") | |
result.count > 0 | |
end | |
def get_tiles | |
(1..4).map { |y| | |
(1..4).map { |x| | |
tiles = $driver.find_elements(:class, "tile-position-#{x}-#{y}") | |
if tiles.count > 0 | |
tile = tiles[0] | |
tile_sz = 2 | |
while tile_sz <= 2048 | |
if tile.attribute("class").index("tile-#{tile_sz}") | |
break | |
end | |
tile_sz *= 2 | |
end | |
tile_sz | |
else | |
0 | |
end | |
} | |
} | |
end | |
def get_score | |
result = $driver.find_elements(:class, "score-container") | |
result[0].text.to_i | |
end | |
$file = File.new(ARGV[0] || "results.txt", "a") | |
$file.write(Time.now) | |
$file.write(" Initialized\n") | |
def save_result array, score | |
$file.write(Time.now) | |
$file.write(" ") | |
$file.write(array.to_s) | |
$file.write(" with score " + score.to_s) | |
$file.write("\n") | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require './processing' | |
keys = [:up, :down, :left, :right] | |
stop_value = 10 | |
counter = 0 | |
while true | |
sendkey keys[rand(4)] | |
sleep 0.05 | |
if counter == stop_value | |
if finished | |
puts "Game finished" | |
save_result get_tiles, get_score | |
sendkey ' ' | |
end | |
counter = 0 | |
end | |
counter += 1 | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment