#include <iostream>
using namespace std;
class Point {
public:
int x, y;
public:
//생성자함수: 클래스를 객체화시킬때 값을 초기화 시키는 기능
//생성자 함수는 반드시 클래스명하고 같아야 한다
//함수를 오버로딩 시켜서 여러개의 인수 형태를 지정해서 초기화 가능
Point();
void moveLeft(); //좌표 왼쪽으로 이동시키는 함수
void moveRight(); //좌표 오른쪽으로 이동시키는 함수
void print(); //좌표 출력하는 함수
};
class childPoint : public Point
{
public:
void moveUp();
void moveDown();
};
//생성자 함수 구현
//객체 생성시 x좌표 50 y좌표 50
Point::Point() {
x = 50;
y = 50;
print();
}
//왼쪽으로 이동하는 함수
void Point::moveLeft() {
x = x - 1;
print();
}
//오른쪽으로 이동하는 함수
void Point::moveRight() {
y = y - 1;
print();
}
void Point::print()
{
cout << x << " " << y << endl;
}
void childPoint::moveUp() {
x = x + 10;
print();
}
void childPoint::moveDown() {
y = y - 10;
print();
}
int main() {
Point p;
childPoint cp;
cout << "------------------" << endl;
p.moveLeft();
p.moveLeft();
cout << "------------------" << endl;
p.moveRight();
p.moveRight();
cout << "------------------" << endl;
cp.moveUp();
cp.moveUp();
cout << "------------------" << endl;
cp.moveDown();
cp.moveDown();
return 0;
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
printf("난수의 범위: 0부터 %d까지 \n", RAND_MAX);
int num1 = rand();
printf("숫자: %d\n", num1);
//1에서부터 100사이의 난수
//컴퓨터가 제시하는 임의의수 나머지 연산 % 으로 처리
//임의의 값 %6 => 나머지 계산후 +1
int num2 = rand() % 100 + 1;
printf("number:%d\n", num2);
return;
}
이렇게 하면 RAND_MAX가 32767이기 때문에 0에서 부터 32767까지 숫자중 아무 숫자나 내보낸다.
(컴터마다 고유의 난수가 있어서 바뀌진 않음)
num2는 %를 사용해서 1에서부터 100까지중 아무 수나 뽑아내라고 만들었는데 68이 나온걸 볼 수 있음.
그럼 아무 숫자나 5번 뽑아보자
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int i;
for (i = 0; i < 5; i++)
{
printf("random number: %d\n", rand());
}
}
이렇게 for문을 써서 5개를 뽑으면 이렇게 랜덤한 수가 5개 나오긴 하는데 이 또한 컴터에 저장된 고유값이라 아무리 실행해도 똑같은 값이 계속 출력되는거임...
그래서 뭔가 유용하게 쓰려면 실행할때마다 값이 맨날 랜덤으로 바껴야 좋겠지?
그래서 srand 를 쓰는거임
srand((int)time(NULL)); 이렇게 시간을 이용해서 렌덤으로 호출하게 만들거임.
이때 시간을 seed(시드)값이라 하는데 이걸 심어서 난수를 만드는거임
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int rolldie();
int main()
{
srand((int)time(NULL));
int die1 = rolldie();
int die2 = rolldie();
printf("die : %d, %d", die1, die2);
return;
}
int rolldie()
{
return rand() % 6 + 1;
}
이렇게 하면 매번 실행할때마다 1에서 6사이의 다른 값 두개가 출력됨
이렇게
이거로 게임을 만들어볼거임
Up down game
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
int random();
int main()
{
srand((int)time(NULL));
int num = random();//1에서 100까지의 렌덤한 숫자를 num에 저장
int get = 0;
int chance = 5;
printf("what will be the number?:");
while (chance > 0) {
scanf_s("%d", &get);
printf("chance left: %d\n", chance--);
if (get > num) {
printf("down\n");
}
else if (get < num) {
printf("up\n");
}
else if (get = num) {
printf("U got it!\n");
break;
}
else
{
printf("error\n");
}
if (chance == 0)
{
printf("u use up all ur chances\n");
break;
}
printf("try again:");
}
}
int random()
{
return rand() % 50 + 1;
}