NPC在数组路径



我要创建一个游戏在终端工作(没有GUI),我能够移动我的角色在整个数组使用键,现在我需要创建npc(猎人),将在12,12点的数组,并移动到0,0与随机预定义的路径(这是至关重要的,在12x12数组内的所有路径被使用)谁能闪烁一些光在这个请?

package hunters;
import java.io.*;
import java.util.*; 
import java.awt.*;
import javax.swing.*;
public class Hunters {
    private static int score;
    private static String player = "P";
    private static String move;
    private static   String emptyfield = "X";
    private static   String [][]a2 = new String [12][12];
    private static int pr,pc;
    private static String hunter = "H";
    private static int hr=11,hc=11;
    public static void paint_board(){
        for (int r = 0 ; r < a2.length; r++){
            for (int c= 0; c <a2[r].length; c++){
                a2 [r][c] = emptyfield;
                a2[pr][pc] = player;
                a2[hr][hc]= hunter;
                System.out.print(" "+a2[r][c]);
            }
            System.out.println(""); 
        }
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        score = 0;
        paint_board();
        do{
            ystem.out.println("Input your move");
            move = in.nextLine();
            if (move.equalsIgnoreCase("w")){
             //move up
               pr = pr -1;
                //repaint
               paint_board();
                //check for collision
                //check for health
            }else if(move.equalsIgnoreCase("s")){
                //move down
                pr = pr +1;
                 for (int i = 0; i <20; i++) System.out.println();
                //repaint
                paint_board();
                  //check for collision
                //check for health
            }else if(move.equalsIgnoreCase("d")){
                //move right
                pc = pc +1;
                //repaint
                paint_board();
                  //check for collision
                //check for health
            }else if(move.equalsIgnoreCase("a")){
                //move left
                pc = pc -1;
               for (int i = 0; i < 20; i++) System.out.println("");
                //repaint
                paint_board();
                  //check for collision
                //check for health
            }
        }while(score !=5);
    }   
}  

只需使用广度优先搜索(BFS)。

这将给出一个地图,显示从(12,12)到地图上的每个空闲字段至少需要多少步。

然后你可以让你的npc从(0,0)场逐场向后移动,在一个最大的场的方向上,小于他们目前站在的场,基于随机决定。

这样,你会得到一条最短的路径,然后你只需要让你的npc沿着这条路径走。

如果你想要更多不可预测的行为,你可以添加进一步的随机化,让他们偶尔绕道而行,即让他们有时根据随机决策选择一个非最佳的下一个字段。

然后花点时间在游戏开发博客上——比如google

游戏开发宽度优先

游戏开发a-star

(a-star是更复杂的寻路算法)

这样你就能学到很多关于这些东西的知识——如果没有必要的数学背景,维基百科的文章有时很难理解,因此我建议你寻找游戏开发的特定内容。

最新更新