C++ 스터디 1주차 과제 수행
2018년 무술년입니다. 새해 福 많이 받으세요!
오늘은 우분투 한국 커뮤니티 c++ 기초 스터디의 2주차까지 해야 될 과제를 수행하면서 (간략히 정리하는 차원에서) 기록을 남겨보려합니다.
이 과제는 이번주 수요일까지 해야되는 과제입니다.
수행해야 될 과제
-
가위바위보 게임
-
A 모양 출력
-
추가 과제
과제 코드 복습
- 가위바위보 게임
#include<iostream>
#include<time.h>
우선, iostream과 time.h를 가져옵니다.
using namespace std;
네임스페이스를 지정해줍니다.
struct selected
{
int user;
int bot;
};
구조체로 사용자와 봇 변수를 만들어줍니다.
enum rps
{
r = 1,
p,
s
};
가위 바위 보를 각각 숫자로 할당해주는 단계를 열거체로 구현했습니다.
double random() {
double percent = rand() % 100 + 1;
return percent;
}
랜덤을 함수로 분할했습니다.
double형으로 리턴되는 함수입니다.
int core() {
int select_key;
selected game = {};
cout << "Rock Paper Scissor!" << endl;
cout << "Rock : 1 / Paper : 2 / Scissor : 3" << endl;
cout << "your turn :";
cin >> select_key;
switch (select_key)
{
case(1):
cout << "you selected \"rock\"" << endl;
game.user = 1;
cout << "--------\n| | | |\n| | | |\n| | | |\n--------" << endl;
break;
case(2):
cout << "you selected \"paper\"" << endl;
game.user = 2;
cout << "--------\n|\t|\n|\t|\n|\t|\n--------" << endl;
break;
case(3):
cout << "you selected \"scissor\"" << endl;
cout << "\t /\n\t /\n -------------\n\t /\n\t/" << endl;
game.user = 3;
break;
default:
exit(0);
}
int percent = random();
if (percent < 33) {
game.bot = 1;
cout << "bot selected \"rock\"" << endl;
cout << "--------\n| | | |\n| | | |\n| | | |\n--------" << endl;
}
else if (33 <= percent < 66) {
game.bot = 2;
cout << "bot selected \"paper\"" << endl;
cout << "--------\n|\t|\n|\t|\n|\t|\n--------" << endl;
}
else if (66 <= percent <= 100) {
game.bot = 3;
cout << "bot selected \"scissor\"" << endl;
cout << "\t /\n\t /\n -------------\n\t /\n\t/" << endl;
}
게임의 대부분을 작성한 함수로서, 사용자의 입력을 받으면 game.user에 값을 저장하고 봇은 랜덤 확률로 game.bot에 저장합니다.
if (game.user == game.bot) {
cout << "tie!" << endl;
}
else if (game.user == 1 && game.bot == 2) {
cout << "you loose!" << endl;
}
else if (game.user == 1 && game.bot == 3) {
cout << "you won!" << endl;
}
else if (game.user == 2 && game.bot == 1) {
cout << "you won!" << endl;
}
else if (game.user == 2 && game.bot == 3) {
cout << "you loose!" << endl;
}
else if (game.user == 3 && game.bot == 1) {
cout << "you loose!" << endl;
}
else if (game.user == 3 && game.bot == 2) {
cout << "you won!" << endl;
}
}
game.user와 game.bot를 비교하여 최종적으로 누가 이겼는지 출력됩니다.
int main()
{
srand((unsigned int)time(0));
core();
return 0;
}
메인 함수는 랜덤 시드를 생성하고, 코어 함수를 불러옵니다.
(참고로 비주얼 스튜디오로 안하면 난수때문에 stdlib.h
를 include 해야합니다)
- A 모양 출력
#include <iostream>
using namespace std;
int main()
{
for (int i = 0; i < 6;i++ ) {
for (int j = 0; j < 6 - i; j++) {
cout << " ";
}
cout << "*";
우선 좌측 공백 부분부터 채우고, A자의 왼쪽 라인을 그려줍니다.
for (int k = 0; k < i *2-1;k++) {
if (i == 3) {
cout << "*";
}
else {
cout << " ";
}
}
그리고, A자의 중간 공백을 채우되 3번째 라인만 그려줍니다.
if (i == 0) {
cout << "";
}
else {
cout << "*";
}
cout << endl;
}
return 0;
}
마지막으로 A자의 오른쪽 라인도 채워줍니다. (0번째는 좌우가 교차하는 지점이므로 중복되면 안되서 if문으로 처리합니다.)
- 추가 과제
(분량 문제로 추가 과제는 이글에 게시하지 않습니다.)
Written on January 1, 2018