분기문
#include <iostream>
using namespace std;
//오늘의 주제 : 분기문
// 데이터를 메모리에 할당하고 가공하는 방법에 대해 알아보자
// 가공한 데이터를 이용해서 무엇인가를 하고 싶다면?
int main()
{
int hp = 100; // 몬스터 HP
int damage = 100; // 플레이어 데미지
hp -= damage; // 피격 판정
bool isDead = (hp <= 0); // 처치 판정
//몬스터가 죽었으면 경험치 추가
// 어셈블리어에서 CMP JMP
if (isDead) // (isDead == true) 이렇게 할 수도 있는데 isDead만 해준다. 1이면 true(실행됨), 0이면 false(실행안됨)
cout << "몬스터를 처치했습니다." << endl;
if (isDead == false) // (!isDead) 이렇게 하기도 한다. 가독성이 편한 방향으로 골라서 하면 된다.
cout << "몬스터가 반격했습니다." << endl;
//위에거에 비해 if else가 메모리 낭비가 적다. 디버깅해서 어셈블리어로 해보면 알 수 있다.
if (isDead)
cout << "몬스터를 처치했습니다." << endl;
else
{
if (hp <= 20)
cout << "몬스터가 도망가고 있습니다." << endl;
else
cout << "몬스터가 반격했습니다." << endl;
}
// if - else if - else if - else
//switch-case
int input = 40;
const int ROCK = 0;
const int PAPER = 1;
const int SCISSORS = 2;
//switch(괄호) 괄호 안에는 정수 계열만 넣을 수 있다. input 부분
switch (input)
{
case ROCK:
cout << "바위" << endl;
break;
case PAPER:
cout << "보" << endl;
break;
case SCISSORS:
cout << "가위" << endl;
break;
default:
cout << "제대로 내주세요" << endl;
break;
}
}
반복문
#include <iostream>
using namespace std;
//오늘의 주제 : 반복문
// 데이터를 메모리에 할당하고 가공하는 방법에 대해 알아보자
// 가공한 데이터를 이용해서 무엇인가를 하고 싶다면?
int main()
{
// while - 동안에
// if-else 굉장히 유용하다
// 하지만 한 번만 실행하는 게 아니라, 특정 조건까지 계속 반복해야 하는 상황
// ex) 게임을 끌 때까지 계속 게임을 실행해라.
// ex) 목적지에 도달할때까지 계속 이동해라
// while ( 조건 ) { 실행 } while을 깨주는 조건을 만들어줘한다!
// do-while
// break( 이게 있는 반복문 중괄호를 나감) , continue(밑을 스킵하고 다시 반복문 돌려줌)
int count = 0;
while (count < 5)
{
count++;
cout << "Hello World" << endl;
}
for (int count = 0; count < 5; count++)
{
cout << "Hello World " << endl;
}
int round = 1;
int hp = 100;
int damage = 10;
//무한 루프 : 전투 시작
while (true)
{
hp -= damage;
if (hp < 0)
hp = 0; // 음수 체력을 0으로 보정
// 시스템 메세지
cout << "Round" << round << " 몬스터 체력 " << hp << endl;
if (hp == 0)
{
cout << "몬스터 처치 !" << endl;
break;
}
if (round == 5)
{
cout << "제한 라운드 종료 " << endl;
break;
}
round++;
}
// 1-10 사이의 홀수만 출력하기
// bool 을 이용하면 if문 이용시 깔끔하게 출력된다.
for (int count = 1; count <= 10; count++)
{
bool isEven = ((count % 2) == 0);
if (isEven)
continue;
cout << count << endl;
}
}
별찍기 구구단
#include <iostream>
using namespace std;
int main()
{
cout << "hello world" << endl; //endl; 한 줄을 띄는 것
//1. 별찍기
//유저들이 어떤 정수를 입력하면
//N*N의 별을 찍었으면 좋겠어요.
int input;
cin >> input; // cin 입력
for (int i = 0; i < input; i++)
{
for (int j = 0; j < input; j++)
{
cout << "*";
}
cout << endl;
}
// 2. 별찍기
// 줄이 N일 때 1씩 늘어나기
for (int i = 0; i < input; i++)
{
for (int j = 0; j < i+1; j++)
{
cout << "*";
}
cout << endl;
}
// 3. 별찍기
// N개부터 시작해서 줄마다 한개씩 줄어들게 해주세요
// 0번째줄 = 4개
// 1번째줄 = 3개
// 2번째줄 = 2개
// 3번째줄 = 1개
for (int i = 0; i < input; i++)
{
for (int j = 0; j < (input - i); j++)
{
cout << "*";
}
cout << endl;
}
// 구구단
// 2단부터 9단까지 구구단을 출력해주세요.
for (int i = 2; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
int answer = i * j;
cout << i << "*" << j << "=" << answer << endl;
}
}
}
가위바위보게임
#include <iostream>
using namespace std;
int main()
{
srand(time(0)); //시드 설정
const int ROCK = 2;
const int PAPER = 3;
const int SCISSORS = 1;
int wins = 0;
int total = 0;
while (true)
{
cout << "가위(1) 바위(2) 보(3) 골라주세요" << endl;
cout << "> ";
if (total == 0)
{
cout << "현재 승률 : 없음" << endl;
}
else
{
int winPercentage = (wins*100 /total);
cout << "현재 승률 : " << winPercentage << endl;
}
int computerValue = 1 + (rand() % 3); //ramd() : 0-32767
float winRate;
int input;
cin >> input;
if (input == SCISSORS)
{
switch (computerValue)
{
case SCISSORS:
cout << "가위(님) vs 가위(컴퓨터) 비겼습니다!" << endl;
total++;
break;
case ROCK:
cout << "가위(님) vs 바위(컴퓨터) 졌습니다!" << endl;
total++;
break;
case PAPER:
cout << "가위(님) vs 보(컴퓨터) 이겼습니다!" << endl;
total++;
wins++;
break;
}
}
if (input == ROCK)
{
switch (computerValue)
{
case SCISSORS:
cout << "바위(님) vs 가위(컴퓨터) 이겼습니다!" << endl;
total++;
wins++;
break;
case ROCK:
cout << "바위(님) vs 바위(컴퓨터) 비겼습니다!" << endl;
total++;
break;
case PAPER:
cout << "바위(님) vs 보(컴퓨터) 졌습니다!" << endl;
total++;
break;
}
}
if (input == PAPER)
{
switch (computerValue)
{
case SCISSORS:
cout << "보(님) vs 가위(컴퓨터) 졌습니다!" << endl;
total++;
break;
case ROCK:
cout << "보(님) vs 바위(컴퓨터) 이겼습니다!" << endl;
total++;
wins++;
break;
case PAPER:
cout << "보(님) vs 보(컴퓨터) 비겼습니다!" << endl;
total++;
break;
}
}
}
}
열거형
#include <iostream>
using namespace std;
//상수인 건 알겠는데, 너무 따로 노는 느낌
// 하나의 셋트인데... 어떻게 묶어주나? enum
const int ROCK = 2;
const int PAPER = 3;
const int SCISSORS = 1;
//숫자를 지정 안하면 첫 값은 0부터 시작
// 그 다음 값들은 이전 값 + 1
enum ENUM_SRP
{
ENUM_SCISSORS = 1,
ENUM_ROCK,
ENUM_PAPER
};
//const는 함수 안에 없으면 스텍메모리에 주소가 안잡힌다. 메모리공간에 안올라감.
// #이 붙은 거 -> 전처리 지시문
// #include <iostream> 이라는 파일을 찾아서 해당내용을 통째로 복붙해주세요.
// 빌드 단계 1) 전처리 2) 컴파일 3)링크
#define DEFINE_SCISSORS 1 //define은 코드를 바꿔치는거다.그런데 상수로는 잘 안쓴다.
#define DEFINE_TEST cout << "Hello World" << endl;
'C++' 카테고리의 다른 글
ㅇ (0) | 2022.03.20 |
---|---|
포인터 (0) | 2022.03.14 |
함수 (0) | 2022.03.10 |
C++ 입문 데이터 갖고 놀기 (0) | 2022.03.09 |
Part1. 어셈블리언어 입문 (0) | 2022.03.07 |