티스토리 뷰
728x90
반응형
java코드로 console창에 간이 지뢰찾기를 구현하자
주변지뢰개수 세기 개선전 버전)
https://cafe.naver.com/ksmart1008/32301
주변지뢰개수 세기 개선후 버전)
import java.util.Scanner;
public class Mine {
public static void main(String[] args) {
minesweeper();
}
public static void minesweeper() {
String[][] field = new String[5][5];
String[][] mine = new String[5][5];
for (int i = 0; i <= 4; i++) {
for (int j = 0; j <= 4; j++) {
field[i][j] = "□";
}
}
for (int i = 0; i <= 4; i++) {
for (int j = 0; j <= 4; j++) {
// 난이도 설정을 위해서 변경할 부분
if ((Math.random() * 100) <= 80) {
mine[i][j] = "□";
} else {
mine[i][j] = "■";
}
}
}
System.out.print(" ");
for (int j = 0; j <= 4; j++) {
System.out.printf("%3d", j);
}
System.out.println();
for (int i = 0; i <= 4; i++) {
System.out.print((i));
for (int j = 0; j <= 4; j++) {
System.out.printf("%3s", field[i][j]);
}
System.out.println();
}
// 이부분을 활성화하면 지뢰가 있는 부분을 알수 있음
/*
System.out.println("-----------------------------------------");
for (int i = 0; i <= 4; i++) {
for (int j = 0; j <= 4; j++) {
System.out.printf("%3s", mine[i][j]);
}
System.out.println();
}
System.out.println("-----------------------------------------");
*/
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("가로좌표를 입력해주세요(0~4) : ");
while (!sc.hasNextInt()) {
sc.next();
System.err.print("에러! 숫자가 아닙니다. \n재 선택 해주세요(0~4) : ");
}
int first = sc.nextInt();
if (first > 4 || first < 0) {
System.out.println("0~4사이의 숫자를 입력해주세요");
continue;
}
System.out.print("세로좌표를 입력해주세요(0~4) : ");
while (!sc.hasNextInt()) {
sc.next();
System.err.print("에러! 숫자가 아닙니다. \n재 선택 해주세요(0~4) : ");
}
int second = sc.nextInt();
if (second > 4 || second < 0) {
System.out.println("0~4사이의 숫자를 입력해주세요");
continue;
}
// 주변지뢰개수 세기 개선 부분
// 지뢰주변을 바꿔줄 방향 배열
int[][] dir = { { -1, -1 }, { -1, 0 }, { -1, +1 }, // 좌상, 상, 우상
{ 0, -1 }, { 0, +1 }, // 좌, 우
{ +1, -1 }, { +1, 0 }, { +1, +1 } // 좌하, 하, 우하
};
// 주변 지뢰 개수 세기
int aroundMine = 0;
for (int k = 0; k < 8; k++) {
int newRow = first + dir[k][0];
int newCol = second + dir[k][1];
// 배열의 경계를 벗어나지 않도록 하는 조건
if (newRow >= 0 && newRow <= 4 && newCol >= 0 && newCol <= 4) {
if (mine[newRow][newCol].equals("■")) {
aroundMine += 1;
}
}
}
field[first][second] = aroundMine + "";
if (mine[first][second].equals("□")) {
mine[first][second] = aroundMine + "";
}
if (!mine[first][second].equals("■")) {
System.out.print(" ");
for (int j = 0; j <= 4; j++) {
System.out.printf("%3d", j);
}
System.out.println();
for (int i = 0; i <= 4; i++) {
System.out.print(i);
for (int j = 0; j <= 4; j++) {
System.out.printf("%3s", field[i][j]);
}
System.out.println();
}
}
if (mine[first][second].equals("■")) {
field[first][second] = "쾅";
System.out.println("--------------------------");
System.out.print(" ");
for (int j = 0; j <= 4; j++) {
System.out.printf("%3d", j);
}
System.out.println();
for (int i = 0; i <= 4; i++) {
System.out.print(i);
for (int j = 0; j <= 4; j++) {
System.out.printf("%3s", field[i][j]);
}
System.out.println();
}
System.out.println("당신은 지뢰를 밟았습니다.\n୧༼ ” ✖ ‸ ✖ ” ༽୨\n YOU DIED");
break;
}
int plag = 0;
for (int i = 0; i <= 4; i++) {
for (int j = 0; j <= 4; j++) {
if (mine[i][j].equals("■") || !mine[i][j].equals("□")) {
plag += 1;
}
}
}
if (plag == 25) {
System.out.println("당신은 살아남았습니다.\n୧༼ ͡◉ل͜ ͡◉༽୨\nYOU SURVIVED");
break;
}
}
sc.close();
}
}
728x90
반응형
'실습페이지' 카테고리의 다른 글
24_07_26 오늘의 실습내용 (0) | 2024.07.26 |
---|---|
24_07_12 오늘의 실습내용 (1) | 2024.07.12 |
24_07_09 오늘의 실습내용 (0) | 2024.07.10 |
24_07_03 오늘의 실습내용 (0) | 2024.07.03 |
24_07_02 오늘의 실습내용 (0) | 2024.07.02 |
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 변수표기법
- 필드 초기화와 사용
- 참조타입vs기본타입
- http 프로토콜:get vs post
- 문자열비교메서드
- 데이터베이스(mysql)
- javascript자료형
- 함수범위vs블록범위
- 호이스팅(hoisting)
- JavaScript
- 뷰(view)
- 가변 길이 매개변수와 리턴
- get한글인코딩
- resultsetimpl
- cte ( common table expression )
- jsp의 주요 태그
- 반복문
- 클래스의 구성 멤버
- 객체 지향 프로그래맹의 특징(캡슐화|상속|다형성)
- 데이터변환함수
- 제어흐름함수
- 배열(Array)
- let-const-var
- jdbc
- stored program
- 오버로딩vs오버라이딩
- Java
- 테이터베이스 설계
- ㅎgroupbyvs윈도우함수
- 조건문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함