러닝센터 3강 - 배열 - 클래스- brake- continue - for

git 간편 안내서
https://rogerdudler.github.io/git-guide/index.ko.html
과제 : 가위바위보게임  while 문으로 만들기.
과제 : 주사위 게임 만들어보기.(무한반복,while문으로)
주말과제 : 로또 프로그램 만번돌려서 가장 많이 나온수.
1~6까지 뽑는데 똑같은 번호가 나오면 안됨.(1~45번까지)
6개 배열을 만들어서 숫자를 집어넣음.
클래스 인터넷 검색후 따라 해본다.
클래스 설명
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=230603211&qb=YysrIO2BtOuemOyKpCDsmIjsoJw=&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=SkFY7loRR24ssbhPCMosssssstR-115678&sid=t16AjEnUV7v5jsfSlbjDaQ%3D%3D

http://lab.cliel.com/597

http://crazyit.tistory.com/135

void main()
{

int value = 10;
/*
증가감 연산자
++ (1을 증가), -- (1을 감소)
int value = 10 일때 ++value는 명령이 실행되기 전 더해준다 value++ 명령이 실행된후에 더해준다.

대입연산자
누적 연산 대입 연산자
value += 20; == value = value + 20;  오른쪽 부터 계산하여 왼쪽에 대입함.
+= , -= , *=, /=, %=

조건식
if( 관계연산식/논리연산식 조합 => 조건식){
=조건식이 참일때만
}else{
= 조건식이 거짓 일때만
}

if(조건식 1){
=> 1이 참일때만
}else if(조건식 2) {
=> 
*/



}
===상수===============================================
값이 변하지 않게 상수를 사용.
생성된 변수의 값을 변할 수 없음.
보존해야 하는 수. 읽기만 가능한 변수. " const "
const int LEFT = 0;
const int RIGHT = 1;
const int TOP = 2;
const int BOTTOM = 3;

------------------------------------------------------------------------------------------
#include <iostream> // 콘솔 입출력
#include <stdlib.h> // 랜덤 모듈
#include <time.h> // 타임 추출
#include <string>
#include <CoreWindow.h>
using namespace std;

int GetDir(int dirCount){
int movedir = rand() % dirCount; // 들어온 매개변수에 따라 랜덤 수치 변경
return movedir;
}
void Move(){
// 값이 변하지 않게 상수를 사용. 생성된 변수의 값을 변할 수 없음. 
// 보존해야 하는 수. 읽기만 가능한 변수.  const
const int LEFT = 0;
const int RIGHT = 1;
const int TOP = 2;
const int BOTTOM = 3;

int dir = GetDir(4); // 매개변수를 사용하여 GetDir() 함수를 호출한다.

cout << "몬스터가";
if (dir == LEFT){ cout << "왼쪽"; }
else if (dir == RIGHT){ cout << "오른쪽"; }
else if (dir == TOP){ cout << " 위쪽"; }
else{ cout << "아래쪽"; }
cout << " 으로 이동하고 있음..." << endl;
Sleep(1000);// 현재 쓰래드(작업)를 2초동안 잠재움
}

void main()
{
//시드섞기
srand((unsigned int)time(NULL));
for (int i = 0; i < 10; i++){
Move();
}
}

------------------------------------------------------------------------------------------

===for문===============================================

#include <iostream> // 콘솔 입출력
#include <stdlib.h> // 랜덤 모듈
#include <time.h> // 타임 추출
#include <string>
#include <CoreWindow.h>
using namespace std;

//가위 바위 보
void KKB(string name, int num){
cout << name << " 가";
if (num == 1){
cout << " [ 가위 ]를 냈습니다." << endl;
}
else if (num == 2){
cout << " [ 바위 ]를 냈습니다." << endl;
}
else{
cout << " [ 보 ] 를 냈습니다." << endl;
}
}


int KBBGame(int playerNum, int comNum){
int gamerWin = 1;
int comWin = 2;
int d = 0;

if (playerNum == comNum){
cout << "비겼습니다." << endl;
}
else if ((playerNum == 1 && comNum == 2) || (playerNum == 2 && comNum == 1) || (playerNum == 3 && comNum == 2)){
cout << "플레이가 이겼습니다." << endl;
return gamerWin;
}
else{
cout << "플레이가 졌습니다." << endl;
return comWin;
}
return d;
}

void main()
{
srand((unsigned int)time(NULL));

int playerTurn;
int comTURN;

int playerWin = 0;
int comWin = 0;
int draw = 0;

for (int i = 0; i < 100; i++){
cout << i + 1 << "번째 가위바위보 게임을 진행 하세요." << endl;
cout << "플레이어 (1:가위, 2:바위, 3:보, 4:게임종료 ) >>> ";
cin >> playerTurn; // cin >> 입력받을 변수

if (playerTurn == 4) break; // 브레이크 추가. 
if (playerTurn > 3){
cout << "1,2,3,4 중의 번호를 골라주세요" << endl;
continue; // 컨티뉴 추가. 사용자가 임이의 번호를 넣었을때.
}
comTURN = rand() % 3 + 1;

KKB("플레이어", playerTurn);
KKB("컴퓨터", comTURN);

int score = KBBGame(playerTurn, comTURN);
if (score == 1){
playerWin++;
}
else if (score == 2){
comWin++;
}
else{
draw++;
}
cout << "플레이어 " << playerWin << " 승 컴퓨터" << comWin << " 승 무승부 : " << draw << endl;
cout << "" << endl;

}

cout << "게임이 종료 되었습니다." << endl;

}

==[ break , continue ]=========================================

*break 
for (int i = 0; i < 5; i++){
cout << "break 전 코드" << endl;
if (i == 0) break; //break 는 반복문의 조건이 참일때 이후 코드 실행 안함. 반복문 중단 후 빠져 나감.
cout << "break 이후 코드" << endl;
}

*continue 
for (int i = 0; i < 5; i++){
cout << "continue 전 코드" << endl;
if (i == 2) continue; // 조건의 값이 같게되면 반복문 한번 더 다시 실행 
cout << "continue 이후 코드" << endl;

}

==[ while ]================================================

// [문법]
// <초기식>
// while (<조건식>) {
// 반복 문장
// <증가식>
// }

void main(){ int loopCount = 0; /* for(int i = 4; i >=0; i--){ cout<<"반복횟수는" << loopCount << "회이고 변수 i 의 값은 " << i <<" 입니다." <<endl; } //초기식 int i = 4; //조건 while (i >= 0) { loopCount++; cout << "반복횟수는" << loopCount << "회이고 변수 i 의 값은 " << i << " 입니다." << endl; //증가식 i--; } for (int i = 0, j = 0; ((i < 10) && (j < 50)); i++, j += 10) { loopCount++; Debug.Log("반복 횟수는 " + loopCount + "회이고 변수 i의 값은 " + i + "이고 j값은 " + j + " 입니다."); }
int i = 0, j = 0; while ((i < 10) && (j < 50)) { loopCount++; cout << "반복 횟수는 " << loopCount << "회이고 변수 i의 값은 "<< i << "이고 j값은 " << j << " 입니다." << endl; i++, j += 10; } */
int i = 2; while (i <= 20) { cout << " i : " << i << endl; i += 2; } */ for (int i = 2; i <= 20; i += 2){ cout << " i : " << i << endl; }

// 무한반복문 while

while (true){

cout << " out... "<< endl;

}
// 무한반복문 for
for (;;){
cout << " out... " << endl;
}
}

==[ 배열 , 클래스 ]=======================================

int a [5] = { 100, 200, 300, 400, 500 };
자료형 -> 배열명 -> 갯수 = {0번째값,1번째값,n번째값}
* 배열은 반드시 연속된 같은 자료형을 가진 메모리 블럭!

//     [0]   [1]   [2]   [4]   [5]   <- 인덱스
//arr[100][200][300][400][500] <- 메모리 형태

int arr[5] = { 100, 200, 300, 400, 500 };
int i = 0; // 초기식
while (i < 5){ // 조건
cout << arr[i] << endl;
i++; // 증가식
}


클래스.


// 사용자 정의용 자료형 -> 커스텀 자료형 -> 클래스
class Monster{
public:
//특징
string _name;
int _hp;
//행동
void Create(string name, int hp){
_name = name;
_hp = hp;
}
void Hit(int damage){
_hp -= damage;
cout << _name << "몬스터가 " << damage << "만큼의 타격을 입고 체력이 " << _hp << "가 되었습니다." << endl;
}
};
void main(){
srand((unsigned int)time(NULL));
// 객체생성
Monster mon[3]; // 몬스터 3마리의 메모리만 생성.
mon[0].Create("오우거", 100);
mon[1].Create("멀록", 100);
mon[2].Create("언데드", 100);
for (int i = 0; i < 3; i++){
// 랜덤하게 데미지 추출함
int damage = rand() % 100 + 1;
//i 번째 몬스터가 타격을 입음
mon[i].Hit(damage);
}
}

















// 배열은 데이터 타입이 같아야 한다.
// 배열의 접근은 순서를 사용한다.
//class와 같은 커스텀 자료형은 '객체' 라 한다.
// 기본자료형을 제외한 모든 자료형을 class 라 한다.

// - 동일한 타입의 데이타를 저장할 수 있는 변수로 저장된 데이타는 인덱스로 접근하게 됨
  
// [1차원 배열 문법]
// 1. 생성
//      자료형 배열명[데이타갯수];
  
// [1차원 배열의 초기화]
// 1. 생성과 함께 초기화
//      자료형 배열명[4] = {데이타1, 데이타2, 데이타3, 데이타4};
//      자료형 배열명[] = {데이타1, 데이타2, 데이타3, 데이타4};
//
// 2. 생성 후 초기화
//      자료형 배열명[4];
//      배열명[0] = 데이타1; 배열명[1] = 데이타2; 배열명[3] = 데이타3;

// [주의 사항]
// 1. 배열 갯수를 정한 상태에서 초기화 데이타 갯수가 많거나 적으면 오류가 발생함
//      예) int array[5] = {1, 2, 3} <- 데이타 갯수가 부족함
//      예) int array[3] = {1, 2, 3, 4, 5} <- 데이타 갯수가 넘쳐남
// 2. 배열의 갯수를 정하지 않은 상태에서 초기화 데이타가 없으면 오류가 발생함
//      예) int array[] = {} <- 갯수를 파악할 수 없음


클래스 안에 만드는 함수를 메소드라 한다.


모듈 형식으로 만들어 주는것을 클래스를 사용하는 예

#include <iostream> // 콘솔 입출력
#include <stdlib.h> // 랜덤 모듈
#include <time.h> // 타임 추출
#include <string>
#include <CoreWindow.h>
using namespace std;



// 클래스 생성후 외부에서 접근 가능하도록 public으로 변수 생성
class Monster{
public : 
string name;
int hp;
int level;


void PrintInfo(){ // 메소드 작성
cout << "몬스터 이름 : " << name << endl;
cout << "몬스터 체력 : " << hp << endl;
cout << "몬스터 레벨 : " << level << endl;
}
};

void main()
{
//srand((unsigned int)time(NULL));
/*  기본 배열.
int array[5] = { 10, 20, 30, 40, 50 };

for (int i = 0; i < 5; i++){

cout << array[i] << endl;
}
*/


Monster monsters[3]; // monsters 객체 생성

monsters[0].name = "오우거"; // 각 객체에 값 대입.
monsters[0].hp = 100;
monsters[0].level = 1;

monsters[1].name = "고블린";
monsters[1].hp = 80;
monsters[1].level = 2;

monsters[2].name = "멀록";
monsters[2].hp = 50;
monsters[2].level = 10;

for (int i = 0; i < 1; i++){
monsters[i].PrintInfo(); // 메소드를 불러온다.
}

}


특징 = 변수 
행동 = 메소드

class 몬스터 {
// 특징
   string 이름
   int 레벨
   int 체력
   int 속도
   int x
   int y
   int z
// 행동


class  총알{
    int 데미지
   



\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#include <stdlib.h> // 랜덤 모듈
#include <time.h> // 타임 추출
#include <string>
#include <CoreWindow.h>
using namespace std;

class legs {
int people;
int dog;
int cat;
public:
void num(int one, int two, int three){
people = one;
dog = two;
cat = three;
}
int sum(){
int sum = people + dog + cat;
return sum;
}

};

void main()
{
legs legss;
legss.num(2, 4, 4);
cout << legss.sum() << endl;


}





댓글

이 블로그의 인기 게시물

날짜 시간 시간차 시간 계산 하기

코루틴에서 CallBack 함수 적용하기

C++ 언어 퍼센트 구하는 방법 / 기본 언어 퍼센트 구하는 방법