프로그래밍 정리/GameStudy

[GameStudy - c++} 카드섞기(셔플) 관련 및 민뎀 맥뎀

주누다 2015. 6. 30. 23:41
반응형

// 문제 1번.

//int numA, numB, Result; // 입력 받을 두 수. 결과값을 저장


//cout << "숫자를 입력하세요 : " << endl;

//while (1){

// cin >> numA >> numB;

// if (numA < 0 || numB < 0){

// cout << "재입력 해라 : " << endl;

// continue;

// }

// else{

// Result = (numA > numB) ? numA - numB : numB - numA;

// cout << "결과값은  : " << Result << endl;


// break;

// }

//}



// 문제 2번

//int numA; // 스킬 선택 문자

//int enemyHP = 200;


//while (enemyHP > 0){ // 적 HP가 양수 일때까지만 반복

// cout << "0~2 스킬 골라라";

// cin >> numA;


// while (numA <= 0 || numA >= 3){ // 스킬 숫자가 0~2가 아니면 재입력

// cout << "재입력하시오 : ";

// cin >> numA;

// }


// switch (numA){

// case 0:

// cout << "50짜리 낙타 침 공격~!" << endl;

// enemyHP -= 50;

// cout << "남은 적의 피통은 " << enemyHP << "입니다." << endl;

// break;

// case 1:

// cout << "25짜리 낙타 콧바람 공격~!" << endl;

// enemyHP -= 25;

// cout << "남은 적의 피통은 " << enemyHP << "입니다." << endl;

// break;

// case 2:

// cout << "100짜리 낙타 땀 공격~!" << endl;

// enemyHP -= 100;

// cout << "남은 적의 피통은 " << enemyHP << "입니다." << endl;

// break;

// }

//}


//cout << "You Win~!" << endl;



// 랜덤~~~~

// 난수(Random Number) 란? 무작위로 만들어지는 알 수 없는 값이다.

// 패를 무작위로 섞기 위해, 적의 움직임을 미리 알 수 없도록 하기 위해 난수가 필요하다.

// rand 함수를 호출하면 0부터 32767중의 임의의 정수 하나가 리턴된다.

// rand 함수는 일정한 규칙에 따라 난수를 생성하는데 규칙이 항상 같기 때문에

// 난수가 생성되는 수선도 항상 같을 수 밖에 없다.





// 난수 생성 루틴의 규칙에 변화를 줄수 있는 srand() 라는 함수가 필요하다.

// srand()는 난수 발생기에 난수를 발생시키는 시작점(seed)를 제공하며

// 난수 발생기는 이 시작점을 기준으로 하여 난수를 발생 시킨다.

// 난수 발생기가 실해될 기점의 시간은 예측 할 수 없기 때문에 시간 값을

// 시작점으로 사용한다면 완전한 난수를 만들 수 있다.



// time 함수는 현재 시간을 나타내는 정수값을 리턴하는데 

// 이 값을 시작점으로 사용하면 프로그램이 실핼될 때마다 완전한 난수를 만들수 있다. 

srand(time(NULL));



// 1~10까지의 랜덤 값!!

int r = rand();

int damage = (r % 10) + 1;

cout << "rand() : " << r << endl;

cout << "데미지 : " << damage << endl;



// 랜덤값에 따라 출력 설정 가능

if (damage == 10){

cout << "맥뎀이다~!!" << endl;

}

else{

cout << "모기가 물었나?" << endl;

}


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

printf("%d ", rand());

}

cout << endl;



// 배열 선언

int num[10];

int dest, sour, temp;

// dest 배열 숫자

// sour 배열 숫자


// 초기화

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

num[i] = i;

}


// 출력

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

cout << num[i] << endl;

}


cout << "===============================" << endl;


// 카드게임 셔플

// 섞는다~!!!!~!~!~!~!~~!

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

dest = rand() % 10;

sour = rand() % 10;


cout << "i 의 값 : " << i << endl;

cout << "---------------------------------" << endl;

cout << "dest : " << dest << endl;

cout << "sour : " << sour << endl;

cout << "=================================" << endl;


temp = num[dest];

num[dest] = num[sour];

num[sour] = temp;

}


// 재출력

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

cout << num[i] << endl;

}




// 공격력 랜덤 데미지(적을 랜덤 데미지로 피해를 줘보자.)

int att, enemyHP = 1000;

while (enemyHP > 0){

// 공격력 출력

cout << "==========================================" << endl;

int dam = (rand() % 200) + 100; // 민뎀 : 200 / 맥뎀 : 300

cout << "공격력 : " << dam << endl;


// 적 피 깎임

enemyHP -= dam;

cout << "피해 : " << dam << endl;


// 남은 체력 표시 

if (enemyHP <= 0) enemyHP = 0;


cout << "남은 체력 : " << enemyHP << endl;

cout << "==========================================" << endl;

}


long dd1;

long long dd2;

cout << "dd1 : " << sizeof(dd1) << endl;

cout << "dd2 : " << sizeof(dd2) << endl;


return 0;

반응형