2011-11-24 13 views
-1

私は端末で動作するようにゲームを作成しています(GUIはありません)、キーを使用してキャラクターを配列全体に移動できるようになりましたが、今度はNPC(ハンター)を作成して12 、12ポイントの配列、そして0,0へのランダムな事前定義パス(12x12配列内のすべてのパスが使用されていることが不可欠です)に移動してください。NPC in Array path

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); 
    } 
} 
+0

本当に問題を絞り込む必要があります。このフォーラムは、他の人にあなたの仕事をさせるものではなく、他の人が特定のプログラミング関連の質問をするのを助けるためのものです。 FAQを読んでください:http://stackoverflow.com/faq – Constantinius

+0

あなたの質問は何ですか? – bezmax

+0

あなたのハンターは後方に移動できますか? – mishadoff

答えて

0

幅優先検索(BFS)を使用するだけです。

これは、(12,12)からマップ上のすべての空きフィールドに移動するために必要なステップ数を示すマップを提供します。

次に、NPCを(0,0)から後方にフィー​​ルドの後方に移動させることができます。フィールドの方向は、現在立っているフィールドの数字よりも大きいランダムな欲望に。

このようにして、最短経路の1つが得られます。この経路は、NPCが歩き回らなければならないものです。

さらにランダム化を追加して、今すぐ迂回することができます。さらに予測できない動作が必要な場合 - ランダムな決定に基づいて最適でない次のフィールドを選択することがあります。その後、

て行くと、そこに多くのゲーム開発ブログの一つにいくつかの時間を費やす

- つまりグーグル

ゲーム開発幅優先

ゲーム開発-星

(星

このようにすれば、これらのことについて多くのことを学ぶことができます - ウィキペディアの記事は、必要な数学的背景がなくても理解しにくいことがあります。ゲーム開発特有のコンテンツを探すのにuggestion。