러닝센터 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§ion=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 ]================================================
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§ion=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++; // 증가식
}
클래스.
// 배열은 데이터 타입이 같아야 한다.
* 배열은 반드시 연속된 같은 자료형을 가진 메모리 블럭!
// [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;
}
댓글
댓글 쓰기