我用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);
}
我认为最好的启发式方法是尽可能保持董事会的平衡。在数学术语中,我想可以通过瞄准板上数字的最小标准偏差来确定它。
基于这个假设,我使用的是一个简单的顺时针箭头点击(向上,向右,向左,向右)算法。现在,显然,这不是一个非常复杂的算法,但它仍然打破了我自己的记录(也许我也不是很复杂)。
无论如何,我的问题是:
由于