#include
#include
#include
#define sizeX 7
#define sizeY 7
#define sizeY 7
enum MINE { mine = 9 };
int main() {
int answer[sizeX][sizeY] = { 0 };//답 배열을 0으로 초기화
char player[sizeX][sizeY];
int i, k, ii, kk, mineQuan, posX, posY, mineCnt = 0;
int guessX, guessY;
int answer[sizeX][sizeY] = { 0 };//답 배열을 0으로 초기화
char player[sizeX][sizeY];
int i, k, ii, kk, mineQuan, posX, posY, mineCnt = 0;
int guessX, guessY;
srand(time(NULL));
for (i = 0; i < sizeX; i++) { //플레이어에게 보여줄 배열 초기화
for (k = 0; k < sizeY; k++) {
player[i][k] = '\\';
}
}
for (k = 0; k < sizeY; k++) {
player[i][k] = '\\';
}
}
printf("지뢰를 몇개 설치할까요? : ");
scanf("%d", &mineQuan);
getchar();
scanf("%d", &mineQuan);
getchar();
for (i = 0; i < mineQuan; i++) { //답배열에 입력받은 갯수만큼 지뢰설치
posX = rand() % sizeX;
posY = rand() % sizeY;
if (answer[posX][posY] == mine) {//이미 지뢰가 숨겨져있을 때 새위치를 배정받음
i--;
continue;
}
answer[posX][posY] = mine;
}
posX = rand() % sizeX;
posY = rand() % sizeY;
if (answer[posX][posY] == mine) {//이미 지뢰가 숨겨져있을 때 새위치를 배정받음
i--;
continue;
}
answer[posX][posY] = mine;
}
for (i = 0; i < sizeX; i++) { //주위에 몇개의 지뢰가 있는지 알려주는 숫자힌트생성 // 1 1 1 0 0
for (k = 0; k < sizeY; k++) { // 1 * 2 1 1
if (answer[i][k] == mine) { // 1 2 3 * 1
for (ii = i - 1; ii < i + 2; ii++) { // 1 * 2 1 1
for (kk = k - 1; kk < k + 2; kk++) { // 1 1 1 0 0
if ((ii >= 0 && ii < sizeX) && (kk >= 0 && kk < sizeY)) { // 0 0 0 0 0
if (answer[ii][kk] != mine) {
answer[ii][kk] += 1;
}
}
}
}
}
}
}
for (k = 0; k < sizeY; k++) { // 1 * 2 1 1
if (answer[i][k] == mine) { // 1 2 3 * 1
for (ii = i - 1; ii < i + 2; ii++) { // 1 * 2 1 1
for (kk = k - 1; kk < k + 2; kk++) { // 1 1 1 0 0
if ((ii >= 0 && ii < sizeX) && (kk >= 0 && kk < sizeY)) { // 0 0 0 0 0
if (answer[ii][kk] != mine) {
answer[ii][kk] += 1;
}
}
}
}
}
}
}
while (1) { //게임 시작
printf("X 축 좌표 입력 : "); //좌표값 입력, 인덱스는 0부터 시작함
scanf("%d", &guessX);
getchar();
printf("Y 축 좌표 입력 : ");
scanf("%d", &guessY);
getchar();
if (guessX < 0 || guessX >= sizeX || guessY < 0 || guessY >= sizeY) {//입력 좌표가 범위내인지 확인
printf("좌표 크기를 다시 확인하세요\n");
continue;
}
printf("\n");
printf("좌표 크기를 다시 확인하세요\n");
continue;
}
printf("\n");
if (answer[guessX][guessY] == 9) { //지뢰를 골랐을때 답을 보여줌
printf("실패! 지뢰를 골랐습니다.\n");
for (i = 0; i < sizeX; i++) {
for (k = 0; k < sizeY; k++) {
if ((i == guessX) && (k == guessY)) {
if (answer[i][k] == 9) {
printf("%4s", " <*>");
}
else {
printf("%4d", answer[i][k]);
}
}
else {
if (answer[i][k] == 9) {
printf("%4s", " *");
}
else{
printf("%4d", answer[i][k]);
}
}
}
printf("\n");
}
return 0;
}
else {//지뢰가 아닌경우 고른 좌표 주위를 보여줌
for (i = guessX - 1; i < guessX + 2; i++) { //3x3크기 보여줌
for (k = guessY - 1; k < guessY + 2; k++) {
if ((i >= 0 && i < sizeX) && (k >= 0 && k < sizeY)) {
if (answer[i][k] == 9) {
player[i][k] = '*';
continue;
}
player[i][k] = answer[i][k]; //3x3크기 보여줌
}
}
}
for (i = 0; i < sizeX; i++) {
for (k = 0; k < sizeY; k++) {
if (player[i][k] >= 0 && player[i][k] <= 9) {
printf(" %d ", player[i][k]);
}
else {
printf(" %c ", player[i][k]);
}
}
printf("\n");
}
}
printf("\n");
for (i = 0; i < sizeX; i++) {
for (k = 0; k < sizeY; k++) {
if (player[i][k] == '*') {
mineCnt++;
}
}
}
if (mineQuan == mineCnt) {
printf("지뢰를 모두 찾았습니다.\n\n");
return 0;
}
}//end of while
for (i = guessX - 1; i < guessX + 2; i++) { //3x3크기 보여줌
for (k = guessY - 1; k < guessY + 2; k++) {
if ((i >= 0 && i < sizeX) && (k >= 0 && k < sizeY)) {
if (answer[i][k] == 9) {
player[i][k] = '*';
continue;
}
player[i][k] = answer[i][k]; //3x3크기 보여줌
}
}
}
for (i = 0; i < sizeX; i++) {
for (k = 0; k < sizeY; k++) {
if (player[i][k] >= 0 && player[i][k] <= 9) {
printf(" %d ", player[i][k]);
}
else {
printf(" %c ", player[i][k]);
}
}
printf("\n");
}
}
printf("\n");
for (i = 0; i < sizeX; i++) {
for (k = 0; k < sizeY; k++) {
if (player[i][k] == '*') {
mineCnt++;
}
}
}
if (mineQuan == mineCnt) {
printf("지뢰를 모두 찾았습니다.\n\n");
return 0;
}
}//end of while
return 0;
}
}
7x7맵에 지뢰갯수를 입력받아서 랜덤한 위치에 지뢰를 생성하고
좌표값을 입력받아서 그 좌표가 지뢰가 아니면 주위 3x3지역을 밝혀줌
맵을 밝혀서 지뢰갯수만큼 *를 찾으면 종료!
지뢰를 골라도 종료!
개선여지
-맵크기도 입력받을 수 있도록(근데 맵크기가 어느 정도 커지면 자꾸 배열의 첫번째 원소에 메모리 주소값이 들어감.... -,.-? 비쥬얼스튜디오님?)
-지뢰갯수가 맵크기보다 클때 처리가 없음 -_-ㅋ
-윈도우 지뢰찾기처럼 빈칸을 골랐을때 쫙 퍼지면서 맵을 밝히다가 숫자(힌트)를 만나면 멈추는 어썸한 기능이 필요함
-지뢰주위가 111로 도배가 되있어도 지뢰를 찾은것으로 인식하지 못함 ㅡㅡㅋ
-------------------------------------------------------------------------------------------------------
잡설
모바일개발자과정인데 학원에서 알려주는것만 해서는 취업이 힘들듯
6월까지 C를 한다는데..... 4월19일 개강했는데 한달정도 하면 될꺼같은데 흠 ㅇㅅㅇa
구직사이트를 돌아다녀도 모바일개발자만 구하는 일자리는 적고 있더라고 안드로이드만 해서는 일자리 구하기가 어려움
웹개발쪽으로 공부해서 남는시간에 모바일 개발을 하면서 사리사욕을 채우는걸로(?)
공부해야할것을 찾아보니
java
DB(oracle)
HTML5
JSP
java-/s!crip/, 전자정부 프레임워크 spring
PHP
웹서버사용법(톰냥이)
자료구조, 알고리즘, 운영체제, 네트워크
이정도하면 취업이 되지 않을까 ㅇ_ㅇ
포트폴리오는 그래도 모바일개발자과정이라서 유니티로 하나 만들것