반응형
개요
이번에는 C++을 배우기 전에 간단하게 C언어의 문법을 활용하여 컴퓨터와 유저가 서로 번갈아가면서 숫자를 입력해 먼저 100이 넘어가면 지는 그런 게임을 간단하게 한번 만들어 보도록 하자!
코드
#include <iostream> // 입출력을 위해 사용
#include <cstdlib> // random 함수 사용
#include <ctime> // Time 사용하기 위해 선언
using namespace std;
int computer_number(int i, int com_choice[]); // 컴퓨터가 입력하는 랜덤값
int user_number(int i, int user_choice[]); // 사용자가 입력하는 값
void result(int winner_check); // 승자를 가리키 위한 함수
void showInfo(int i, int com_choice[], int user_choice[], int sum); // 입력된 숫자의 정보를 보여주는 Show함수
int main() {
cout << "----------------------------------------------------------"<< endl << endl;
cout << "100을 넘어라 게임" << endl << endl;
cout << "컴퓨터와 사용가 번갈아가면서 숫자를 입력한다" << endl;
cout << "숫자는 1 ~ 10 까지의 숫자를 사용한다" << endl;
cout << "숫자는 중복이 안된다" << endl;
cout << "최초로 100을 넘기면 승자가 된다!" << endl << endl;;
cout << "----------------------------------------------------------" << endl << endl;
srand((unsigned int)time(NULL)); // 시드값을 설정해준다.
int com_choice[10] = { 0 }, user_choice[10] = { 0 }; // 각각 배열 10개를 만들고 0으로 초기화 시켜준다.
int number, winner_check, i;
int sum = 0; // 숫자들의 총합
for (i = 0; i < 10; i++) {
number = computer_number(i, com_choice);
sum += number;
showInfo(i, com_choice, user_choice, sum);
if (sum > 100) { // 컴퓨터가 입력했을 때 100이 넘으면 이기도록 설정
winner_check = 1;
break;
}
number = user_number(i, user_choice);
sum += number;
showInfo(i, com_choice, user_choice, sum);
if (sum > 100) { // 사용자가 입력했을 때 100이 넘으면 이기도록 설정
winner_check = 0;
break;
}
}
result(winner_check); // winner_check 의 값을 가지고 간다.
return 0;
}
int computer_number(int i, int com_choice[]) { // 컴퓨터가 선택하는 랜덤값
int number,check;
while (1) { // 중복제거 를 위한 무한 반복문
number = rand() % 10 + 1;
check = 0; // 반복문 제어를 위한 변수 check
for (int j = 0; j < i; j++) {
if (com_choice[j] == number) {
check = 1;
}
}
if (check == 0) {
com_choice[i] = number;
break;
}
}
return com_choice[i];
}
int user_number(int i, int user_choice[]) { // 사용자가 선택하는 값
int j, number, check;
while (1) { // 중복제거를 위한 무한 반복문
cout << "숫자 입력후 Enter >>";
cin >> number;
if (number > 10) { // 10이상의 숫자를 입력했을때 예외처리
cout << "10이하의 숫자를 입력해 주세요" << endl;
continue;
}
check = 0;
for (j = 0; j < i; j++) {
if (user_choice[j] == number) {
cout << "중복 됬음니다." << endl << "다른 숫자를 입력해주세요" << endl;
check = 1;
}
}
if (check ==0) {
user_choice[i] = number;
break;
}
}
return user_choice[i];
}
void result(int winner_check) { // 승자를 가리기 위한 함수
if (winner_check == 1) cout << "컴퓨터가 이겼습니다!" << endl;
else cout << "사용자가 이겼습니다!" << endl;
}
void showInfo(int i, int com_choice[], int user_choice[], int sum) { // 진행상활을 보여주는 함수
int j;
cout << "--------------------------------------------------------";
cout << endl << endl << endl;
cout << "컴퓨터 숫자 : ";
for (j = 0; j <= i; j++) {
cout << " " <<com_choice[j];
}
cout << endl << endl << endl;
cout << "사용자 숫자 : ";
for (j = 0; j <= i; j++) {
if (user_choice[j] == 0) {
continue;
}
cout << " " << user_choice[j];
}
cout << endl << endl << endl;
cout << "현재 합계 : " << sum;
cout << endl << endl << endl;
}
여기서는 입출력만 C++ 방법을 이용하여 사용하였다.
실행후
반응형
'알고리즘 & 자료구조 > C++' 카테고리의 다른 글
C++ 비행기 예약 프로그래밍 (0) | 2020.06.01 |
---|---|
C++ (클래스와 파일,백터를 이용한 Hangman Game) (0) | 2020.05.13 |
C++ (클래스와 생성자를 이용한 몬스터 게임) (0) | 2020.04.26 |
C++ (클래스와 백터를 이용한Hangman Game) (0) | 2020.04.24 |