Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Java (http://www.go4expert.com/forums/java/)
-   -   Moving around a 2D array (http://www.go4expert.com/forums/moving-2d-array-t8688/)

cyrow 6Feb2008 17:07

Moving around a 2D array
 
Read the attached file.
1.start with X in array[0][0]
2.Move to Right if end is reach and still Right, X appears on left side.
3.Move to Left if end is reach and still Left, X appears on Right side.
4.Move to Up if end is reach and still Up, X appears from bottom.
5.Move to Down if end is reach and still Down, X appears from top.
6. If there is an obstatcle in the way, program beep
Code:

import java.io.*;
import java.util.*;
class ***{
        public static void main(String[] args)throws IOException{
        //        Thread t = Thread.currentThread();
               
                int maxcol = 60;
                int maxrow = 20;
                int colpos = 0;
                int rowpos = 0;
                char[][]array = new char[20][60];

       
                Scanner in = new Scanner(new FileReader("obstruct.txt"));       


                        int i =0;
                        int j =0;
                        System.out.print(array[i][j]='X');
                       
                for (i =1; i<array.length;i++){
                        String ss = in.nextLine();
                          for(j = 1; j<array[i].length;j++){
                                  array[i][j]= ss.charAt(j);
                                  System.out.print(array[i][j]);
                          }
                          System.out.println("  ");
                }
       
                int ans = check();
                if (ans==1){
                right(array,rowpos, colpos,ans,maxcol);       
                                PrintResults(array);
                }else if(ans ==2){
                        left(array,rowpos, colpos,ans,maxcol);
                                        PrintResults(array);
                } else if (ans ==3){
                        up(array,rowpos, colpos,ans,maxrow,maxcol);       
                                PrintResults(array);       
                }else if(ans ==4){
                        down(array,rowpos, colpos,ans,maxcol,maxrow);
                        PrintResults(array);
                }else{
                                Quit(ans);
                }
        }//end main
       
        public static int check(){
                Scanner in = new Scanner(System.in);
                        System.out.println("1.Right"+"  "+ "2. Left"+" "+"3. Up"+" "+"4. Down"+" "+"5.Quit");
                        int choice = in.nextInt();
                        return choice;
        }       
               
        public static boolean isEmpty(char[][]arr, int rpos,int cpos){
                        return ((arr[rpos][cpos])==0);
                }
               
       
        public static void right(char[][]ar, int rpos, int cpos, int answ, int mcol){
       
       
        if((rpos == 0)&&(cpos>=0)&&(cpos<mcol-1)){
                cpos++;
               
                if(isEmpty(ar,rpos, cpos)){
                       
                        ar[rpos][cpos] = 'X';
                        System.out.print(ar[rpos][cpos]);
                }else if(!isEmpty(ar,rpos, cpos)){
                        java.awt.Toolkit.getDefaultToolkit().beep();
                }               
        }
       
         
        }       
       
        public static void left(char[][]ary,int ropos, int copos,int answer, int mxcol){
                if((ropos >=0)&&(copos>=0)&&(copos<mxcol)){       
                        copos = mxcol-1;
                       
                       
                if(isEmpty(ary,ropos, copos)){
                        ary[ropos][copos] = 'X';
                        System.out.print(ary[ropos][copos]);
                }else if(!isEmpty(ary,ropos, copos)){
                        java.awt.Toolkit.getDefaultToolkit().beep();
                }
                        }
}
       
        public static void up(char[][]arry,int rrpos, int ccpos,int answ, int mxrow, int mxcol){
                        if((rrpos < mxrow)&&(ccpos>=0)&&(ccpos<mxcol)){
                        rrpos = 0;
                if(isEmpty(arry,rrpos, ccpos)){
                        arry[rrpos][ccpos] = 'X';
                        //System.out.print(arry[rrpos][ccpos]);
                }else if(!isEmpty(arry,rrpos, ccpos)){
                        java.awt.Toolkit.getDefaultToolkit().beep();
                }
        }
}
       
        public static void down(char[][]array1,int rowpos1, int colpos1,int answer1, int mxcol1, int mxrow1){
                if((rowpos1 <= 0)&&(colpos1>=0)&&(colpos1<mxcol1)){
                        rowpos1 = mxrow1 - 1;
               
                if(isEmpty(array1,rowpos1, colpos1)){
                        array1[rowpos1][colpos1] = 'X';
                        System.out.print(array1[rowpos1][colpos1]);
                }else if(!isEmpty(array1,rowpos1, colpos1)){
                        java.awt.Toolkit.getDefaultToolkit().beep();
                        array1[rowpos1][colpos1++]='X';
                        System.out.print(array1[rowpos1][colpos1]);
                }
        }       
}
       
        public static void Quit(int ansChoice){
                System.exit(0);
        }
       
        public static void PrintResults(char [][]a){
                for (int i =1; i<a.length;i++){
                  for(int j = 1; j<a[i].length;j++){
                          System.out.print(a[i][j]);
                  }
                          System.out.println("  ");
                }
                }
}//end class

Code not working the way it should, any insights would help

shabbir 6Feb2008 18:06

Re: Moving around a 2D array
 
Added code block and removed attachment as attachment had nothing related to the query.

oogabooga 6Feb2008 23:34

Re: Moving around a 2D array
 
You must specify how your code is not working.
What's the problem?


All times are GMT +5.5. The time now is 23:26.