AlgorithmQuiz/MineSweeper/angss

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Excercise Logic skill
 * @since 2006.5.3
 * @author angss
 * TODO 키보드에서 받은 값의 크기만큼의 지뢰밭을 표시한다. N*M크기.
 *      o: 지뢰없는 밭.
 *      *: 지뢰.
 *
 */
public class MinesweeperTest2
{
    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException
    {
        String sin = null;     
        char ch = 0;
        char[][] cfinal = new char[10][10];
        String[] ct = null;
        char count = '0';
       
        BufferedReader stdin1 = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter a line: ");       
        
        if((sin = stdin1.readLine())!= null)
        {            
            /*
             * TODO 입력 받은 지뢰 밭을 그려주기.
             */
            ct = sin.split(" ");
            for(int a=0; a < ct.length; a++)
            {
                for (int i = 0; i < ct[a].length(); i++)
                {
                    ch = ct[a].charAt(i);
                    if ( ch == '*' )
                        cfinal[a][i] = ch;
                    else
                        cfinal[a][i] = '0';
                    System.out.print(cfinal[a][i]);
                }
                System.out.println("");
            }

//            MS_Search sr = new MS_Search();
//            sr.search();

            /**
             * TODO 지뢰 갯수가 찍히는 부분 
             */
       
        
        for(int b=0; b < ct.length; b++)
        {
            if (b == 0)
            {
                System.out.println("");
                System.out.println("Field #" + b+1);
            }                
            else
            {
                for (int i = 0; i < ct[b].length()  ; i++)
                {                       
                    if(cfinal[b][i] == '*')
                    {
                        for (int j = b-1; j < b+2; j++)
                        {
                            if(j >= 0)
                            {                            
                                for (int k = i-1; k < i+2; k++)
                                {
                                    if(k>=0)
                                    {
                                        if(b==j && i==k)
                                        {
                                            cfinal[j][k] = '*';
                                        }
                                        else
                                        {
                                            count = cfinal[j][k];
                                            if ( count != '*')
                                            {
                                                count++;
                                                cfinal[j][k] = count;
                                            }
                                        }
                                    }    
                                    
                                }   //k for() loop End.
                            }
                        }   //j for() loop End.
                    }   //if(cfinal[b][i] == '*') End.
                }
            }   //else End.
        }
                  
            /**
             * TODO 지뢰을 찾은 배열을 화면에 표시한다.
             */
            for(int c=1; c < ct.length; c++)
            {
                for (int i = 0; i < ct[c].length(); i++)
                {
                    System.out.print(cfinal[c][i]);
                }
                System.out.println("");
            }
            
        }
    }
}
web biohackers.net