(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(); }