반응형
배운 것 요약 : while 문
보완할 내용 : 중복 코드가 많아 보인다 리펙토링을 통해 불필요한 코드를 없애야 겠다.
오늘의 과제 : while 문을 이용하여 컴퓨터와 가위바위보 하기
메모 :과제와 별개로 어떠한 상황에서 2중 for문을 사용해야 하는지 감이 오질 않음, 보완이 필요해 보임
MetaversePlayGround_Loop.zip
0.51MB
게임 설계 조건
- 컴퓨터와 가위바위보를 하는 게임.
- 컴퓨터는 가위, 바위 보를 랜덤하게 낸다 (rand()함수 사용)
- 결과에 따라 승, 패, 무승부 출력한다. (if, if else문 사용)
- 10턴이 지나면 게임이 종료되게 처리 (while문)
- 플레이어는 베팅을 할수 있다.(소지금)
- 베팅할 수 있는 금액은 최소단위가 있어야 한다.
- 플레이어가 승리할 경우 내가 건 베팅금액의 *2를 얻는다.
- 패배할 경우 내가 건 베팅금액에 *2 잃는다.
- 무승부 일경우 내가 건 베팅금액만 잃는다.
- 게임 종료 조건
ㄴ.10판 제한,
ㄴ.소지금이 0원 이하인 경우,
코드 설명
while 문 조건을 10이 카운팅 될 때 까지 돌아가도록 하였고 정상적으로 베팅완료 했을 때에만 round 변수 값을 증가 시킴
while 문 안에서 if else 등을 이용하여 조건을 따졌으며 문제가 되는 부분들이 있으면 continue를 시켜서 round 수 증가 없이 loop문을 돌게 하였음.
C++ 가위 바위 보 게임 코드 전문
#include <iostream>
int main() {
// 변수 선언
int pMoney = 5000;
int betYesorno;
int round = 0;
int betValue;
int inputNum;
while (round <= 10) {
if (pMoney <= 0) { // 턴 증가 시 플레이어의 보유 머니를 먼저 체크
std::cout << "소지 금액이 없어 게임을 시작할 수 없습니다.";
break;
}
else if (round > 0) {
std::cout << "안녕? 나는 가위바위보 기계야" << " (Turn : " << round << "/10) 보유금액 :" << pMoney << std::endl;
std::cout << "배팅하시겠습니까? 예(1) 아니오(2)";
std::cin >> betYesorno;
system("cls");
std:srand(std::time(NULL)); // 랜덤 함수를 통해 가위 바위 보를 랜덤으로 내게 함
int computerRand = std::rand() % 3 + 1;//0~2 사이의 랜덤 값
std::cout << "hint : 컴퓨터는" << ((computerRand == 1) ? "가위" : (computerRand == 2) ? "바위" : "보") << "를 냈습니다" << std::endl;
if (betYesorno == 1) {
std::cout << "배팅할 금액을 입력하세요." << std::endl;
std::cin >> betValue;
if (betValue > pMoney) { // 소지 금액 보다 높은 금액을 베팅한 경우 처리
std::cout << "소지 금액 보다 낮은 배팅 금액을 다시 입력하세요." << std::endl;
continue;
}
else {
std::cout << "무엇을 낼 것이니? : 가위(1) 바위(2) 보(3)" << std::endl;
std::cin >> inputNum;
switch (inputNum) {
case 1:
if (computerRand == 1) {
pMoney -= betValue;
system("cls");
std::cout << "player:가위 computer:가위 >>>> ■(무승부)" << std::endl;
}
else if (computerRand == 2) {
pMoney = (pMoney)-(betValue * 2);
system("cls");
std::cout << "player:가위 computer: 바위 >>>> ■(Computer win)" << std::endl;
}
else {
pMoney = (pMoney)+(betValue * 2);
system("cls");
std::cout << "player 가위 computer: 보 >>>> ■(user win)" << std::endl;
}
break;
case 2:
if (computerRand == 1) {
pMoney = pMoney + (betValue * 2);
system("cls");
std::cout << "player:바위 computer:가위 >>>> ■(user win)" << std::endl;
}
else if (computerRand == 2) {
pMoney -= betValue;
system("cls");
std::cout << "player:바위 computer: 바위 >>>> ■(무승부)" << std::endl;
}
else {
pMoney = (pMoney)-(betValue * 2);
system("cls");
std::cout << "player 바위 computer: 보 >>>> ■(Computer win)" << std::endl;
}
break;
case 3:
if (computerRand == 1) {
pMoney = (pMoney)-(betValue * 2);
system("cls");
std::cout << "player:보 computer:가위 >>>> ■(Computer win)" << std::endl;
}
else if (computerRand == 2) {
pMoney = pMoney + (betValue * 2);
system("cls");
std::cout << "player:보 computer: 바위 >>>> ■(user win)" << std::endl;
}
else {
pMoney -= betValue;
system("cls");
std::cout << "player 보 computer: 보 >>>> ■(무승부)" << std::endl;
}
break;
default:
break;
}
round++;
}
}
else { // 베팅 없이 게임 진행
std::cout << "무엇을 낼 것이니? : 가위(1) 바위(2) 보(3)";
std::cin >> inputNum;
switch (inputNum) {
case 1:
if (computerRand == 1) {
std::cout << "player:가위 computer:가위 >>>> ■(무승부)" << std::endl;
}
else if (computerRand == 2) {
std::cout << "player:가위 computer: 바위 >>>> ■(Computer win)" << std::endl;
}
else {
std::cout << "player 가위 computer: 보 >>>> ■(Computer win)" << std::endl;
}
break;
case 2:
if (computerRand == 1) {
std::cout << "player:바위 computer:가위 >>>> ■(user win)" << std::endl;
}
else if (computerRand == 2) {
std::cout << "player:바위 computer: 바위 >>>> ■(무승부)" << std::endl;
}
else {
std::cout << "player 바위 computer: 보 >>>> ■(Computer win)" << std::endl;
}
break;
case 3:
if (computerRand == 1) {
std::cout << "player:보 computer:가위 >>>> ■(Computer win)" << std::endl;
}
else if (computerRand == 2) {
std::cout << "player:보 computer: 바위 >>>> ■(user win)" << std::endl;
}
else {
std::cout << "player 보 computer: 보 >>>> ■(무승부)" << std::endl;
}
break;
default:
break;
}
}
}
else {
std::cout << "가위바위보 게임에 오신 것을 환영합니다 " << std::endl << std::endl;
round++;
}
}
}
반응형
'정리필요' 카테고리의 다른 글
C++ 포인터와 참조자를 함수의 매개변수로 사용하면? (0) | 2024.03.01 |
---|---|
C++ 구조체의 이해, 필요성, 생성방법 정리 (2) | 2024.02.28 |
C++ 2중 For문 사용해서 숫자 야구 게임 하기. (1) | 2024.02.25 |
C++ if문,if/else문, switch문, pragma region 사용방법 정리 (0) | 2024.02.21 |
c++ 자료형 / 비트 연산자 등 정리 (0) | 2024.02.20 |