inflearn logo
강의

Course

Instructor

C Programming - From Basics to Game Development

Project (extension)

빌드오류가 있다고 나오고, 지정된 파일을 찾을 수 없다고 오류가 나옵니다..

403

go9466

1 asked

0

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

/*10마리의 서로다른 동물 (각 카드 2장씩)

사용자로부터 2개의 입력값을 받아서 -> 같은 동물 찾으면 카드 뒤집기

모든 동물 쌍을 찾으면 게임 종료

총 실패 횟수 알려주기*/

int checkAnimal[4][5]; //뒤집혔는지 여부 확인

int arrayAnimal[4][5]; //카드 20장 - 4x5

const char* strAnimal[10]; //10개의 배열 => 캐릭터포인터

void initAnimalArray(); // 카드 배치

void initAnimalName(); // 동물 종류

void shuffleAnimal(); //카드 섞기

int getEmptyPosition(); //빈 공간 찾기

int conv_pos_x(int x);

int conv_pos_y(int y);

void printAnimals(); //동물 위치 출력

void printQuestion(); // 문제 출력 (카드지도)

int foundAllAnimals();

int main(void)

{

srand(time(NULL));

initAnimalArray();

initAnimalName();

shuffleAnimal();

int failCount = 0; //실패 횟수

while (1)

{

int select1 = 0; //사용자가 선택한 처음 수

int select2 = 0; //사용자가 선택한 두번째 수

printAnimals(); //동물 위치 출력

printQuestion(); // 문제 출력 (카드지도)

printf("뒤집을 카드 2개를 고르세요 : ");

scanf_s("%d %d", &select1, &select2);

if (select1 == select2) // 같은 카드 선택 시 무효

continue;

//좌표에 해당하는 카드를 뒤집어보고 같은지 안같은지 확인

int firstSelect_x = conv_pos_x(select1);

int firstSelect_y = conv_pos_y(select1);

int secondSelect_x = conv_pos_x(select2);

int secondSelect_y = conv_pos_y(select2); //정수좌표를 x,y로 변환

if (checkAnimal[firstSelect_x][firstSelect_y] == 0

&& checkAnimal[secondSelect_x][secondSelect_y] == 0//카드가 뒤집히지 않앗는지

&& arrayAnimal[firstSelect_x][firstSelect_y]

== arrayAnimal[secondSelect_x][secondSelect_y])//두 동물이 같은지)

{

printf("\n\n빙고!! : %s 발견!!\n\n",strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]);

checkAnimal[firstSelect_x][firstSelect_y] = 1;

checkAnimal[secondSelect_x][secondSelect_y] = 1;

}

//다른 동물일 경우

else

{

printf("\n\n땡!!(틀렸습니다.. 혹은 이미 뒤집힌 카드입니다.)\n\n");

printf("%d : %s\n", select1, strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]);

printf("%d : %s\n", select2, strAnimal[arrayAnimal[secondSelect_x][secondSelect_y]]); //틀린카드 알려주기

printf("\n\n");

failCount++; //실패횟수 +1

}

//모든 동물을 찾았는지 여부. 1:참 , 0:거짓

if (foundAllAnimals() == 1)

{

printf("***축하합니다!총 %d번의 시도끝에 모든 동물을 다 찾았네요***\n",failCount);

break;

}

}

return 0;

}

void initAnimalArray()

{

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 5; j++)

{

arrayAnimal[i][j] = -1;

}

}

}

void initAnimalName()

{

strAnimal[0] = "강아지";

strAnimal[1] = "고양이";

strAnimal[2] = "토끼";

strAnimal[3] = "다람쥐";

strAnimal[4] = "햄스터";

strAnimal[5] = "청설모";

strAnimal[6] = "오리";

strAnimal[7] = "원숭이";

strAnimal[8] = "미어캣";

strAnimal[9] = "호랑이";

}

void shuffleAnimal()

{

for(int i = 0; i<10; i++)

{

for (int j = 0; j < 2; j++)

{

int pos = getEmptyPosition();

int x = conv_pos_x(pos);

int y = conv_pos_y(pos);

arrayAnimal[x][y] = i;

}

}

}

int getEmptyPosition()

{

while (1)

{

int randPos = rand() % 20; //0-19사이의 랜덤 숫자 반환

int x = conv_pos_x(randPos);

int y = conv_pos_y(randPos);

if (arrayAnimal[x][y] == -1) //초기에 -1로 설정했기때문에 -1이면 비어있다는 뜻

{

return randPos; //현재 위치 반환

}

}

return 0;

}

int conv_pos_x(int x) //5로 나눴을 때 몫 /

{

return x / 5;

}

int conv_pos_y(int y) //5로 나눴을 때 나머지 %

{

return y % 5;

}

void printAnimals() //동물 위치 출력

{

printf("\n=====이건 비밀인데 몰래 보여드려요=====\n");

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 5; j++)

{

printf("%8s", strAnimal[arrayAnimal[i][j]]);

}

printf("\n");

}

printf("\n=========================================\n");

}

void printQuestion() // 문제 출력 (카드지도)

{

printf("\n\n(문제)\n");

int seq = 0;

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 5; j++)

{

//카드를 뒤집어서 정답을 맞혔으면 '동물이름

if (checkAnimal[i][j] != 0)

{

printf("% 8s", strAnimal[arrayAnimal[i][j]]);

}

//아직 뒤집지 못했으면 (정답을 못맞혔으면) -> 뒷면 -> 위치를 나타내는 숫자

else

{

printf("%8d", seq++);

}

}

printf("\n");

}

}

int foundAllAnimals()

{

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 5; j++)

{

if (checkAnimal[i][j] == 0)

{

return 0;

}

}

}

return 1;//모두 다 찾음

}

c

Answer 1

0

pajarito

빌드 오류나는 오류 메시지도 같이 올려주시면 좋을 것 같아요.

안녕하세요 7장 포인터에 관해 질문드립니다.

0

63

1

8-8 연장전 / 소스코드 공유해드려요. 참고하세요!

0

64

0

섹션6. 프로젝트 소스코드 올려드려요.

0

94

1

영상속에서 배운 코드들을 Git Repository에 올려두될까요?

0

79

1

경찰서 조서 프로젝트 문의

0

104

1

경찰관 조서 프로젝트

0

142

1

scanf

0

92

1

제대로 작성한것 같은데 빌드가 않됩니다.,

0

170

1

구문 오류 C2059

0

400

1

컴파일 시 fatal error C1010 발생

0

284

1

반환값이 없는 함수

0

215

1

반올림 되는건가요?

0

253

1

맥으로수강

0

193

1

10-2

0

257

1

질문이 있습니다

0

341

1

3-3 for 반복문 ++i 일때 질문입니다.

0

244

1

6-4(배열 파트 '문자 vs 문자열') sizeof 예제 다르게 출력되는 분들 참고하세요.

1

411

0

함수 선언과 정의를 동시에 해도 되나요?

0

1076

1

안녕하세요 좋은 강의와 책 감사드립니다!! 다름이 아니라 명령어를 실행시켰을 때 저런식으로 나와서 질문드립니다

0

934

0

질문있습니다!

0

378

1

질문드립니다

0

387

1

scanf_s(" %d", &answer); 이후 바로 종료

0

312

0

질문 드립니다.

0

431

1

sizeof에서 오류가 나는 것 같아서 물어보고 싶습니다.

0

564

0