package helloworld.quiz;
import junit.framework.Assert;
import junit.framework.TestCase;
public class MineGame extends TestCase {
private static String[][] mine;
private static final String MINE = "*";
// 배열 생성
public void makeMine(int A, int B) {
mine = new String[A][B];
}
// 배열에 값 넣기
public void setMine(int index, String value) {
for (int i = 0; i < value.length(); i++) {
String mineChar = String.valueOf(value.charAt(i));
if (MINE.equals(mineChar)) {
mine[index][i] = "*";
} else {
mine[index][i] = "0";
}
}
}
// 숫자 증가
public void calResult(int A, int B) {
for (int i = 0; i < A; i++) {
for (int j = 0; j < B; j++) {
if (MINE.equals(mine[i][j])) {
// 자기 보다 위에
calValue(i - 1, j - 1);
calValue(i - 1, j);
calValue(i - 1, j + 1);
// 자기 보다 아래
calValue(i + 1, j - 1);
calValue(i + 1, j);
calValue(i + 1, j + 1);
// 자기 오른쪽
calValue(i, j - 1);
// 자기 왼쪽
calValue(i, j + 1);
}
}
}
}
public void calValue(int A, int B) {
if (A >= 0 && B >= 0 && mine.length > A && mine[A].length > B) {
if (!MINE.equals(mine[A][B])) {
mine[A][B] = String.valueOf(Integer.parseInt(mine[A][B]) + 1);
}
}
}
public void mineTest() {
String b[] = new String[] { "4","4","*...", "....", ".*..", "....","3","5", "**...", ".....",".*...", "0", "0"};
int index = 0;
int A ;
int B ;
do {
A = Integer.parseInt(b[index]);
B = Integer.parseInt(b[index + 1]);
makeMine(A, B);
for (int i = 0; i < A; i++) {
setMine(i, b[index + 2 + i]);
}
calResult(A, B);
for (int i = 0; i < A; i++) {
for (int j = 0; j < B; j++) {
System.out.print(mine[i][j]);
}
System.out.println("");
}
System.out.println("");
index = index + A + 2;
} while(!"0".equals(b[index]));
}
}