2019년 3월 10일 일요일

국비 교육 : 게임 프로그래밍 009일

9일 차 교육한 메모 내용을 정리해 본다.

지난 과제였던 로우/하이 프로그램에 대해서 각각의 구현 방식을 보고 검토가 이루어졌다.
구현에 사용한 셔플 알고리즘과 Rand()를 이용한 확률 계산 방법에 대한 구현 방식이 설명되었고, 함수에 대한 기초 설명이 이루어졌다.


로우/하이 의 구현
카드 정보를 배열로 선언 → 배열에 카드 정보 대입 → 정보를 섞는다.
for( 섞을 횟수 )
{
    // 0~51 사이의 수 위치를 지정
    int source = rand()%52;
    int destination = rand()%52;
    // 두 카드의 숫자 정보를 변경
    int temp = Array[source];
    Array[source] = Array[destination];
    Array[destination] = Array[source];
}

정보를 섞는 방법
1. 배열 위치를 shift 시키기 : 최대 배열 수, 앞으로 이동시킴
2. rand()를 이용한 배열 간 swap 방식 : rand() 범위 및 temp를 이용한 값 변경

카드 선택에 사용되는 rand()의 활용으로 Rand()%정밀도를 이용한 확률 계산
if( rand%1000 < 300 )
{
    // 30%의 확률로 계산을 진행
}


const 선언을 이용한 심볼릭 상수 선언 방식
const int i = 5;
여기서 i 는 배열 선언 시 범위를 지정하는 데 사용 할 수 있다.


함수 기초
- 코드 집합으로 "메인 함수"인 "main()" 과 "표준 함수"인 "rand(), srand()"  그리고 사용자가 만들어 사용하는 "사용자 정의 함수"가 있다.
- 함수는 코드의 효율적인 재활용이 가능하므로 2회 이상 사용하는 기능의 경우 함수로 제외해 사용해라.
- 사용자 정의 함수를 만들 때 이름은 함수의 기능을 대표하도록 작성해라.


변수의 분류
선언 지역에 따른 구분
- 전역 변수 : 코드 내 { } 밖에 선언된다.
- 지역 변수 : 코드 내 { } 안에 선언되며, 선언된 범위를 벗어나면 소멸한다.

선언 방법에 따른 구분
- 일반 변수 : int a;
- 정적 변수 : static int a; / 생명 주기가 전역 변수처럼 된다.


이상과 같은 내용이 정리되어 있다.

지금에서 메모를 다시 보니 수업 중 주로 교육된 내용이 어떤 항목이었는지 궁금하다.
지난 과제를 풀이하는 시간이 주력으로 사용되고 이후 셔플 방식, Rnad()의 활용, 함수,변수 설명이 이루어지는 거 같다. 하지만 C++ 교재를 기반으로 교육하는 것 치고는 중구난방으로 강의 된 거 같다.


댓글 없음:

댓글 쓰기

Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip 게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다. 앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업]  연동 이후에 작업을 진행 한다. 유니...