AI与游戏——吃豆人(1)代码简介

吃豆人想必大家都玩过吧,游戏规则是控制pacman去吃迷宫中的小豆豆会获得分数,迷宫中有魔鬼,碰到的话就会挂掉,但是迷宫中有spower pill 吃了会在一定时间内无敌,可以吃掉魔鬼,吃掉魔鬼会获得更高的分数,分数到一定分值之后就进入下一关。

在开始使用AI算法之前首先我们先对我们所要使用的代码框架做一下简单的了解。代码的下载地址为:http://gameaibook.org/wp-content/uploads/2016/10/mspacman-master.zip 该框架使用JAVA实现,作为一个没学过JAVA的人,我也是首次接触,边学边做吧。

下面简单介绍一下代码的结构,src文件夹下的 Executor.java文件里有程序的主函数位置,运行该文件即可启动游戏。

AI与游戏——吃豆人(1)代码简介_第1张图片

代码如下:

public static void main(String[] args)
    {
        int delay=10;
        boolean visual=true;
        int numTrials=20;


        Executor exec=new Executor();

        /* run a game in synchronous mode: game waits until controllers respond. */
//      System.out.println("STARTER PACMAN vs LEGACY2THERECKONING");
/*      这里是开始游戏的函数,前两个参数分别是吃豆人和魔鬼的算法,后两个个参数分别是运行过程是否可见以及运行延迟(延迟越大运行速度越慢)*/
        exec.runGame(new StarterPacMan(), new StarterGhosts(), visual,delay);

        /* run multiple games in batch mode - good for testing. */
        /* runExperiment函数则不会展示运行过程,第三个参数表示运行次数,这个函数用于测试使用*/
//      System.out.println("STARTER PACMAN vs LEGACY2THERECONING");
//      exec.runExperiment(new StarterPacMan(), new Legacy2TheReckoning(),numTrials);
//      System.out.println("RANDOM PACMAN vs LEGACY2THERECONING");
//      exec.runExperiment(new RandomPacMan(), new Legacy2TheReckoning(),numTrials);
//      System.out.println("NEAREST PILL PACMAN vs LEGACY2THERECONING");
//      exec.runExperiment(new NearestPillPacMan(), new Legacy2TheReckoning(),numTrials);
//      
//      
//      System.out.println("STARTER PACMAN vs starter GHOSTS");
//      exec.runExperiment(new StarterPacMan(), new StarterGhosts(),numTrials);
//      System.out.println("RANDOM PACMAN vs RANDOM GHOSTS");
//      exec.runExperiment(new RandomPacMan(),  new StarterGhosts(),numTrials);
//      System.out.println("NEAREST PILL PACMAN vs RANDOM GHOSTS");
//      exec.runExperiment(new NearestPillPacMan(), new StarterGhosts(),numTrials);




        /* run the game in asynchronous mode. */
        /* asynchronous 是指让所有的rungametime同时启动之后在开始,主要用于比较算法的速度*/
//      exec.runGameTimed(new MyPacMan(),new AggressiveGhosts(),visual);
//      exec.runGameTimed(new RandomPacMan(), new AvengersEvolution(evolutionFile),visual);
//      exec.runGameTimed(new HumanController(new KeyBoardInput()),new StarterGhosts(),visual); 


        /* run the game in asynchronous mode but advance as soon as both controllers are ready  - this is the mode of the competition.
        time limit of DELAY ms still applies.*/

//      boolean visual=true;
//      boolean fixedTime=false;
//      exec.runGameTimedSpeedOptimised(new MyMCTSPacMan(new AggressiveGhosts()),new AggressiveGhosts(),fixedTime,visual);


        /* run game in asynchronous mode and record it to file for replay at a later stage. */


        //String fileName="replay.txt";
        //exec.runGameTimedRecorded(new HumanController(new KeyBoardInput()),new RandomGhosts(),visual,fileName);
        //exec.replayGame(fileName,visual);
    }

这是主函数部分,只要知道怎么调用就行,下面介绍需要我们写算法的部分,控制部分。该文件夹位于src/pacman/controllers下面,这里的examples文件下已经有几个官方给出的例子,这里不做解释,部分文件官方在注释中给出了算法思想。

你可能感兴趣的:(AI,and,Game)