러닝센터 2강
==1강 총정리=====================================
#include <iostream>
using namespace std;
void main(){
//컴파일 : 소스코드를 기계어로 번역하는 작업.
//링크 : 여러개의 모듈을 하나로 연결하는 작업.
//컴파일 + 링크 => 실행파일.(어플, 게임 프로그램)
//변수 생성 : 변수(메모리),변수명(메모리주소)
//변수 => 읽기 / 쓰기
//자료형 변수명.(상수는 변하지 않는 수)
//기본 자료형(int,float,char,bool)
//커스텀 자료형 ( 클래스 ) => 기본적으로 만들수 없는 메모리 유형을 사용자가 정의해서 만드는 자료형
//정수형 변수
int hp;
hp = 100;
//문자형 변수
char ch = 'A'; //""큰 따옴표는 사용하면 안된다 문자열 을 지칭하게 때문
//실수형 변수
float x = 10.1;
//산술 연산자 : - , + , *, / , %(나머지)
// 관계연산자 : ==(같다), != (같지않다), >, <, >=, <=
// 관계연산식 == 조건식
// 관계연산식 결과 무조건 반드시 기필고 bool 타입이다.
// 관계연산식 예 )체력이 0이하면 사망상태를 알려줘라.
bool result = (hp <= 0); // 사망상태
// 논리연산식 : 두개이상의 조건식(관계 연산식, 논리연산식)을 연결할때 사용하는 연산자.
// &&(and) 연결된 조건이 모두 참일경우 = true
// ||(or) 연결된 조건중 한개만 참일경우 = true
int swordLV = 80;
int shildLV = 50;
int armorLv = 70;
result;
result = (swordLV > 60) && (shildLV > 60) && (armorLv > 60);
// 직업이 A이면서 스킬레벨이 70이상 이거나 아이템 레벨이 80 이상이면
char job = 'A';
int skillLV = 80;
int item = 120;
result = ((job == 'A') && (skillLV > 80)) || (item = 80);
cout << result << endl;
cout << "Hello Unity!!" << endl;
}
-----------------------------------------------------------------------------------
러닝센터 2강.
- 과제 함수사용 가위바위보 게임 만들기.- 과제 게시판 함수의 유형 찾아서 만들어보기 ( 10번 반복 )
- for문 구구단
void main(){
// [증가감 연산자]
// - 변수의 값을 1만큼 감소하거나 증가할때 사용하는 연산자
// [종류]
// 1. ++변수 : 연산 전에 변수의 값을 1증가함(전위 증가 연산자)
// 2. 변수++ : 연산 후에 변수의 값을 1증가함(후위 증가 연산자)
// [특이사항]
// 1. 연산 후는 명령의 세미콜런 이후에 값을 읽었을때 부터를 의미함
// 1을 증가하는 산술 연산식
int level = 1;
cout << level++ << endl; // 값: 1 (연산 후에 변수의 값을 1증가함)
cout << level << endl; // 값: 2
cout << ++level << endl; // 값: 3 (연산 전에 변수의 값을 1증가함)
// 1을 뻬는 산술 연산식
level = 5;
cout << level-- << endl; // 5
cout << level << endl; // 4
cout << --level << endl; // 3
int hp = 30;
cout << "현재체력 : " << hp << endl;
hp += 30; // 30을 hp에 더해서 넣는다. / hp = hp + 30; 과 같은 /
cout << "30 충전된 체력 : " << hp << endl;
hp -= 30;// 30을 hp에 뺀다 / hp = hp - 30; 과 같은 /
cout << "30 방전된 체력 : " << hp << endl;
}
== 제어문 ( if , else) ========================================
void main(){
//단일 if 문법
// 문장 1;
// if ( 관계연산식 / 논리연산식 조합 => 조건식)
// {
// // 조건식의 결과가 참일 경우에 실행될 코드
// }
// 문장 2;
int hp = 100;
int damage = 0;
// 시드섞기
srand((unsigned int) time(NULL));
// 0~200 사이의 하나의 숫자를 데미지로 설정함
damage = rand() % 200 + 1;
// 플레이어의 체력의 데미지에 크기만큼 감소됨
/*
hp -= damage;
cout << "플레이어가 몬스터에게 " << damage << "만큼의 데미지를 입었습니다" << endl;
if (hp < damage){
cout << "데미지를 입고 죽었습니다." << endl;
}
else{
cout << "현재 체력은 " << hp <<"입니다." << endl;
}
// 두 조건은 상반관계가 아니므로 if else문으로 교체 할 수 없다.
if (hp <= 0){
cout << " 플레이어가 사망 하였습니다" << endl;
}
if (hp >= 0 && hp < 50){
cout << " 플레이어가 위험합니다." << endl;
}
// 플레이어의 공격 데미지를 랜덤하게 추출 하시오.
// 플레이어의 공격 데미지가 80~100 사이면 "크리티컬 데미지" 표시를 하고
// 플레이어의 공격 데미지가 40~79 사이면 "빅 데미지" 표시를 하고
// 플레이어의 공격 데미지가 20~39 사이면 "기본 데미지" 표시를 하고
// 플레이어의 공격 데미지가 1~19 사이면 "미쓰 데미지" 표시를 하고
// 플레이어의 공격 데미지를 맞은 몬스터의 체력도 같이 표시하고 몬스터의 기본체력은 50으로 설정 하시오
// 프로그램을 작성하시오
*/
int monHp = 60;
damage = rand() % 100 + 1;
if ((damage >= 80) && (damage <= 100)){
cout << " 플레이어가 " << damage << "공격 데미지로 [크리티컬 히트]가 발생 했습니다." << endl;
//cout << " 몬스터의 체력은 " << monHp - damage << " 입니다." << endl;
}
if ((damage >= 40) && (damage <= 79)){
cout << " 플레이어가 " << damage << "공격 데미지로 [빅 데미지 히트]가 발생 했습니다." << endl;
//cout << " 몬스터의 체력은 " << monHp - damage << " 입니다." << endl;
}
if ((damage >= 20) && (damage <= 39)){
cout << " 플레이어가 " << damage << "공격 데미지로 [기본 데미지 히트]가 발생 했습니다." << endl;
//cout << " 몬스터의 체력은 " << monHp - damage << " 입니다." << endl;
}
if ((damage >= 1) && (damage <= 19)){
cout << " 플레이어가 " << damage << "공격 데미지로 [미쓰 데미지 히트]가 발생 했습니다." << endl;
//cout << " 몬스터의 체력은 " << monHp - damage << " 입니다." << endl;
}
if (monHp < damage){
cout << "몬스터의 현재 체력은 0 입니다." << endl;
}
else{
cout << " 몬스터의 체력은 " << monHp - damage << " 입니다." << endl;
}
if (monHp > damage){
cout << " 몬스터는 생존한 상태 입니다." << endl;
}
else
{
cout << " 몬스터는 사망한 상태 입니다." << endl;
}
}
--선생님코드------------------------------------------------------------------------
void
main()
{
srand((unsigned
int
)time(NULL));
// 플레이어의 공격 데미지를 랜덤하게 추출하시오. (1~100)
int
damage = rand() % 100 + 1;
int
monsterHp = 50;
cout <<
"플레이어가 "
<< damage <<
" 데미지로 "
;
// 플레이어의 공격 데미지가 80~100 사이면 "Critical Hit!!" 표시를 하고
if
(damage >= 80 && damage <= 100) {
cout <<
"Critical Hit"
;
}
if
(damage >= 40 && damage <= 79) {
cout <<
"Big Hit"
;
}
if
(damage >= 20 && damage <= 39) {
cout <<
"Normal Hit"
;
}
if
(damage >= 1 && damage <= 19) {
cout <<
"Miss Hit"
;
}
cout <<
" 가 발생했습니다."
<< endl;
monsterHp -= damage;
// monsterHp = monsterHp - damage;
cout <<
"몬스터의 현재 채력은 "
<< monsterHp;
// 아래 두 조건은 상반관계
if
(monsterHp <= 0) {
cout <<
" 이며 사망한 상태입니다."
<< endl;
}
else
{
// if (monsterHp > 0) {
cout <<
" 이며 아직 생존 상태입니다."
<< endl;
}
}
역시 깔끔하다! 항상 코드를 줄일 수 있는 방법을 고민...
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
int monHp = 60;
damage = rand() % 100 + 1;
if (damage >= 80){
cout << " 플레이어가 " << damage << "공격 데미지로 [크리티컬 히트]가 발생 했습니다." << endl;
}
else if (damage >= 40){
cout << " 플레이어가 " << damage << "공격 데미지로 [빅 데미지 히트]가 발생 했습니다." << endl;
}
else if(damage >= 20){
cout << " 플레이어가 " << damage << "공격 데미지로 [기본 데미지 히트]가 발생 했습니다." << endl;
}
else if(damage >= 1){
cout << " 플레이어가 " << damage << "공격 데미지로 [미쓰 데미지 히트]가 발생 했습니다." << endl;
}
if (monHp < damage){
cout << " 몬스터의 현재 체력은 0 입니다." << endl;
}
else{
cout << " 몬스터의 체력은 " << monHp - damage << " 입니다." << endl;
}
if (monHp > damage){
cout << " 몬스터는 생존한 상태 입니다." << endl;
}
else
{
cout << " 몬스터는 사망한 상태 입니다." << endl;
}
else if 는 상위값이 참이 아니라면 하위 값을 실행한다. 단 아래 이프문은 생략.
==가위바위보 게임==========================================
//플레이어가 하나를 선택함 하나를 입력 받음
//가위 : 1 , 바위 : 2, 보 3
//컴퓨터가 가위바위보 중에 하나를 선택함
//플레이어와 컴퓨터간의 가위바위보를 판정함
// 승리한 유저의 이름을 표기함
// 결과
// 가위바위보 입력 >>> 1
// 플레이어가 가위를 냈습니다.
// 컴퓨터가 바위를 냈습니다.
// 플레이어는 패배 했습니다.
//시드섞기
srand((unsigned int) time(NULL));
int playerKBB;
int comKBB;
comKBB = rand() % 3 + 1;
cout << "플레이어(1:가위,2:바위,3:보) >>>";
cin >> playerKBB; // cin >> 입력받을 변수
if (playerKBB == 1){
cout << "플레이어가 [가위] 를 냈습니다." << endl;
}
else if (playerKBB == 2){
cout << "플레이어가 [바위] 를 냈습니다." << endl;
}
else{
cout << "플레이어가 [보] 를 냈습니다." << endl;
}
if (comKBB == 1){
cout << "컴퓨터가 [가위] 를 냈습니다" << endl;
}
else if (comKBB == 2){
cout << "컴퓨터가 [바위] 를 냈습니다" << endl; }
else {
cout << "컴퓨터가 [보] 를 냈습니다" << endl; }
if ((comKBB == 1) && (playerKBB == 1) || (comKBB == 2) && (playerKBB == 2) || (comKBB == 3) && (playerKBB == 3)){
cout << "컴퓨터와 플레이어가 비겼습니다" << endl;
}
else if ((comKBB == 1) && (playerKBB == 2) || (comKBB == 2) && (playerKBB == 3) || (comKBB == 3) && (playerKBB == 1)){
cout << "플레이어가 이겼습니다" << endl;
}
else{
cout << "컴퓨터가 이겼습니다" << endl;
}
}
***함수*********************************************************************************
if문 안의 if문은 && 조건이다.
연속적인 코드를 사용 할 때 => for문
비연속적인 코드를 사용 할 때 => 함수
!!! 함수 안에서 생성된 변수는 공유 할 수 없다.
!!! 함수는 호출과 정의가 있다.
!!! 정의 함수 만들기
!!! 호출 함수 호출;
void ShowKBBMessage(int playerKBB, string name){// 함수의 정의
cout << name.c_str();
if (playerKBB == 1){
cout << "가 [가위] 를 냈습니다." << endl;
}
else if (playerKBB == 2){
cout << "가 [바위] 를 냈습니다." << endl;
}
else{
cout << "가 [보] 를 냈습니다." << endl;
}
}
void main(){
//시드섞기
srand((unsigned int) time(NULL));
int playerKBB;
int comKBB;
comKBB = rand() % 3 + 1;
cout << "플레이어(1:가위,2:바위,3:보) >>>";
cin >> playerKBB; // cin >> 입력받을 변수
ShowKBBMessage(playerKBB,"컴퓨터"); // 호출
ShowKBBMessage(comKBB, "플레이어");
if ((comKBB == 1 && playerKBB == 1) || (comKBB == 2 && playerKBB == 2) || (comKBB == 3 && playerKBB == 3)){
cout << "컴퓨터와 플레이어가 비겼습니다" << endl;
}
else if ((comKBB == 1 && playerKBB == 2) || (comKBB == 2 && playerKBB == 3) || (comKBB == 3 && playerKBB == 1)){
cout << "[플레이어]가 이겼습니다" << endl;
}
else{
cout << "[컴퓨터]가 이겼습니다" << endl;
}
// 함수의 4가지 타입
// void 함수명(){ 중복코드 }
}
댓글
댓글 쓰기