(1차원 배열로 구현함)
#include <stdio.h>
#include <stdlib.h>
#define ep 10 //end point 문제 개수=끝나는 지점
int delete[ep] = { 0 }; // 랜덤 반복 제거를 위한 배열
int gameover = 0; // 10번 우승했을 때 게임을 종료하기 위한 변수 => gameover가 10되면 게임 종료!!
int win = 0; // 우승 횟수를 나타내는 변수
int score = 0; // 점수를 나타내는 변수
int game(int receive, char *list, char *user) {
printf(" (우승 횟수:%d 회)\n\n", win);
int count = 0; // 몇 회 시행했는지 알려줌 (시도횟수)
int answercount = 0; // 지금까지(반복 돌면서) 철자 몇 개 맞췄는지 알려줌
while (1) {
for (int i = 0; i < receive; i++)
printf("%c", user[i]);
if (count == 0)
printf(" < %d글자 시작!! >\n알파벳을 입력해보세요:", receive);
if (count != 0)
printf(" < %d글자 남음!! >\n알파벳을 입력해보세요:", receive - answercount);
int a = getchar();
getchar();
count++;
int nowanswer = 0; // 아래 for문에서 철자 몇 개 맟췄는지 알려줌
for (int i = 0; i <= receive; i++) {
if (list[i] != user[i]) {
if (list[i] == a) {
user[i] = a;
answercount++;
nowanswer++;
}
}
}
if (nowanswer > 0)
printf("\n정답입니다!! [ 시도 횟수:%d ] \n\n", count);
else if (nowanswer == 0)
printf("\n중복이거나 오답입니다!! [ 시도 횟수:%d ] \n\n", count);
if (answercount == receive) {
printf("\n");
for (int i = 0; i < receive; i++)
printf("%c", user[i]);
printf(" [ 시도 횟수:%d ]", count);
printf("\n축하드립니다!! 엔터 시 다음으로 넘어가겠습니다!! \n\n");
getch();
gameover++;
win++;
score += count;
return 0;
}
}
}
int setting(int number) {
if (number == 0) {
char list[4] = "fig"; //3
char user[4] = "___";
game(3, list, user);
return 0;
}
else if (number == 1) {
char list[5] = "pear"; //4
char user[5] = "____";
game(4, list, user);
return 0;
}
else if (number == 2) {
char list[6] = "apple"; //5
char user[6] = "_____";
game(5, list, user);
return 0;
}
else if (number == 3) {
char list[7] = "cherry"; //6
char user[7] = "______";
game(6, list, user);
return 0;
}
else if (number == 4) {
char list[7] = "orange"; //6
char user[7] = "______";
game(6, list, user);
return 0;
}
else if (number == 5) {
char list[7] = "banana"; //6
char user[7] = "______";
game(6, list, user);
return 0;
}
else if (number == 6) {
char list[8] = "coconut"; //7
char user[8] = "_______";
game(7, list, user);
return 0;
}
else if (number == 7) {
char list[10] = "pineapple"; //9
char user[10] = "_________";
game(9, list, user);
return 0;
}
else if (number == 8) {
char list[10] = "persimmon"; //9
char user[10] = "_________";
game(9, list, user);
return 0;
}
else if (number == 9) {
char list[12] = "watermellon"; //11
char user[12] = "___________";
game(11, list, user);
return 0;
}
}
int ending() {
system("cls");
printf("\n\n=============== 결과 ===============\n");
printf("=> 시도 횟수 합산:%d회\n", score);
printf("=> 낮을 수록 높은 점수!! // 만점: 53회\n");
printf("====================================\n\n");
printf("CONGRATULATION~~~~~~~~~\n제작자: 안성현\n\n");
}
int main(void) {
system("cls");
printf("행맨을 시작합니다.\n주제는 과일입니다!!");
srand(time(NULL));
int random;
do {
random = rand() % 10;
} while (delete[random] == 1);
delete[random] = 1;
setting(random);
if (gameover == ep)
ending();
else
main();
}