网格和x和y坐标

时间:2013-02-22 07:35:17

标签: java grid

我需要创建一个网格,用户输入列和行中的星号数量,到目前为止,我有这个:

import java.util.Scanner;

public class Grid {

public void run(){

        Scanner scan = new Scanner(System.in);

        System.out.println("Enter the grid width (1-9):" );
        double num = scan.nextDouble(); 


        System.out.println("Enter the grid length (1-9)");
        double numLength = scan.nextDouble(); 


        for(int i = 0; i < num; i++){
           for(int j = 0; j < numLength; j++){
            System.out.print("*");
           }
        System.out.println("");

但我不知道如何将字符'X'插入网格的(0,0),左上角或如何使其移动甚至让它循环。用户必须将“向上”“向下”“向左”和“向右”放入以便移动,我对如何在java中使用x和y坐标感到非常困惑。

1 个答案:

答案 0 :(得分:0)

System.out简单的输出流。您无法在那里为文本设置动画,也无法在命令行上注册方向键。

您需要一个GUI。这不是最好的,但请研究Swing

更麻烦的方法是通过命令行重复循环并从用户输入获取输入:

Scanner scan = new Scanner(System.in);

System.out.println("Enter the grid width (1-9):" );
int w = scan.nextInt(); 

System.out.println("Enter the grid length (1-9):");
int h = scan.nextInt(); 

int x = 0, y = 0;
while (true)
{
   for(int i = 0; i < w; i++){
      for(int j = 0; j < h; j++){
         if (i != x || j != y)
           System.out.print("*");
         else
            System.out.print("X");
      }
      System.out.println("");
   }
   System.out.println("Enter direction (u,d,l,r):");
   char c = scan.next().charAt(0);
   switch (c)
   {
      case 'u': x = Math.max(0, x-1); break;
      case 'd': x = Math.min(w-1, x+1); break;
      case 'l': y = Math.max(0, y-1); break;
      case 'r': y = Math.min(h-1, y+1); break;
      case 'x': System.out.println("Exiting..."); System.exit(0);
   }
}