用于运行2048游戏直到完成的自动脚本

时间:2014-03-23 14:26:19

标签: java algorithm selenium-webdriver artificial-intelligence

我用Java编写了一个简短的Selenium应用程序来运行2048游戏:

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.firefox.FirefoxDriver;

WebDriver driver  = new FirefoxDriver();
Actions   actions = new Actions(driver);
actions = actions.sendKeys(Keys.ARROW_UP);
actions = actions.sendKeys(Keys.ARROW_RIGHT);
actions = actions.sendKeys(Keys.ARROW_DOWN);
actions = actions.sendKeys(Keys.ARROW_LEFT);
Action action = actions.build();
By byButtonXpath  = By.xpath("//a[@class='restart-button']");
By byMessageXpath = By.xpath("//div[@class='game-message game-over']");
driver.get("http://gabrielecirulli.github.io/2048/");
while (true)
{
    driver.findElement(byButtonXpath).click();
    do action.perform();
    while (driver.findElements(byMessageXpath).size() == 0);
}

我认为最好的启发式方法是尽可能保持董事会的平衡。在数学术语中,我想可以通过瞄准板上数字的最小标准偏差来确定它。

基于这个假设,我使用的是一个简单的顺时针箭头点击(向上,向右,向左,向右)算法。现在,显然,这不是一个非常复杂的算法,但它仍然打破了我自己的记录(也许我也不是很复杂)。

无论如何,我的问题是:

  1. 我的启发式方法是让电路板始终保持平衡吗?
  2. 是否有任何已知算法在进行下一步之前考虑当前数字?
  3. 由于

0 个答案:

没有答案