'프로그래밍'에 해당되는 글 30건
- 2016.06.07 :: [C언어]배열을 이용하여 맵 만들기.
- 2016.05.03 :: Vertex(정점) 버퍼
- 2016.04.26 :: 2016년 객체지향 중간고사 10번 문제 해설
- 2016.04.26 :: 2016년 객체지향 중간고사 9번 문제 해설
- 2016.04.26 :: 2016년 객체지향 중간고사 8번 문제 해설
- 2016.04.26 :: 2016년 객체지향 중간고사 7번 문제 해설
- 2016.04.26 :: 2016년 객체지향 중간고사 6번 문제 해설
- 2016.04.26 :: 2016년 객체지향 중간고사 5번 문제 해설
- 2016.04.26 :: 2016년 객체지향 중간고사 4번 문제 해설
- 2016.04.26 :: 2016년 객체지향 중간고사 3번 문제 해설
맵 만들기
1. 맵을 만든다.(벽에 닿으면 못나가게 충돌체크)
2. 움직일 플레이어와 도착지점을 만든다.
3. 플레이어가 도착점에 들어가면 종료
-----------------------------------------------------------------------------------------------------------
이번 문제는 VS에서 주는 기본적인 함수를 알고 깨야한다.
void setXY(int x, int y)
{
// 함수값을 정해주는 함수
COORD Pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
바로 이 함수인데, 좌표값을 잡아주는 함수이다. 함수 이름은 마음대로 정해도 된다.
꼭 배열로 안 만들어도 되지만, 쉽고 간편하게 만들기 위해서 배열을 사용한다.
필자는 배열에 0 , 1 , 2라는 숫자를 넣었고 각각 ROAD,BLOCK, FINISH 로 enum으로 이름을 정의해 줬다. (꼭 해줄 필요는 없다. 가독성을 위해서 한 것 이므로)
그리고 배열로 출력을 어떻게 해요 라는 분들이 있는데, 우리에게는 setXY 함수가 있으니 활용을 하면 된다! 필자 같은 경우에는
void Render()
{
setXY(m_x * 2, m_y);
printf("%s", m_name);
}
이런식으로 사용했다. 솔직히 x에 2를 왜 곱하는지는 모르겠지만 흠흠... 일단 오른쪽으로 가려면 꼭 2배로 증가해야 한다는 사실을 알아두도록 하자.
int map[WIDTH][HEIGHT] =
{
{ 1,1,1,1,1,1,1,1,1,1 },
{ 1,0,1,0,0,0,0,0,0,1 },
{ 1,0,1,0,0,0,0,1,0,1 },
{ 1,0,0,1,0,0,0,1,0,1 },
{ 1,0,0,1,0,0,0,0,0,1 },
{ 1,0,0,0,0,1,1,0,0,1 },
{ 1,0,0,0,0,1,1,0,0,1 },
{ 1,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,0,0,1,1,0,2,1 },
{ 1,1,1,1,1,1,1,1,1,1 },
};
이렇게 배열을 짰고 출력 할때는
for (int i = 0; i < WIDTH; i++)
{
for (int j = 0; j < HEIGHT; j++)
{
setXY( i* 2,j);
if(map[i][j]==0)
printf("");
else if(map[i][j]==1)
printf("□");
else if(map[i][j]==2)
printf("☆");
}
}
대충 이렇게 해주면 될 듯하다.
이번꺼는 원래 C++로 짰다. C로 바꾸기 귀찮아서.... C++로 올리겠다. 차이는 구조체를 클래스로 만들어줬자는 거 밖에 없으므로 그렇게 혼동은 안 올 것이다.
'프로그래밍 > C언어' 카테고리의 다른 글
[C언어] 파일입출력으로 맵 받아오기. (0) | 2016.06.07 |
---|---|
[C언어] 우주선 (0) | 2016.06.07 |
[C언어]구조체와 열거형을 이용해 주소록 만들기 (0) | 2016.04.15 |
[C언어]배열과 문자열을 이용한 달팽이(나선형)구조 만들기 (0) | 2016.04.15 |
[C언어]배열을 이용한 달팽이(나선형)구조 만들기 (0) | 2016.04.15 |
버텍스(Vertex) - 정점
- 버텍스는 3D 공간에서 위치를 가지는 정점 -> 벡터라고 함
- 버텍스들이 모여서 Direct3D의 Primitive에 의하여 선이나 삼각형을 형성하면서 3D 모델을 형성함
- 버텍스의 물리적인 특성으로써 위치만 존재하고 크기는 무시됨
- Direct3D에서 사용되는 버텍스는 위치 값 이외에도 색상이나 텍스쳐 좌표를 가질 수 있는 다양한 부가적인 특성을 가지고 있음
- Direct3D에서는 FVF라는 개념을 사용하여 필요에 따라 버텍스의 특성을 지정하여 사용할 수 있음
정점의 좌표 |
RHW |
결합 가중치 |
정점의 법선 벡터 |
정점의 점 크기 |
확산광 색 |
반사광 색 |
텍스쳐 좌표 1 |
FVF
- Direct3D에서 지원하는 FVF 방식은 메모리와 실행 시간을 절약 할 수 있는 효율적인 방법임
FVF 사용의 효율성
- 1 프레임안에서의 버텍스 출력
- 버텍스 1개
80(Byte) - 16(Byte) = 64(Byte)
- 초당 60프레임을 보여줄때 (표준)
- 메모리 낭비와 처리 속도의 저하로 인하여 Direct3D에서는 FVF(Flexible Vertex Format)라는 방식을 사용하여 다양한 경우에 적절한 버텍스 포맷을 구성하여 사용하도록 함
- CUSTOMVERTEX 구조체
- D3DFVF_XYZ (버텍스의 위치) | D3DFVF_DIFFUSE (버텍스의 색상) – Direct3D에 미리 정의되어 있음 – 이 값은 Direct3D에게 전달되어 구조체 CUSTOMVERTEX가 어떤 구조를 가지고 있는지를 알려준다.
버텍스 버퍼
- 버텍스 버퍼란
- 버텍스 버퍼 생성 후 버텍스로 채움
- vertices[] 라는 배열은 버텍스 버퍼에 넣을 버텍스들을 임시로 보관하기 위한 배열
ex) CUSTOMVERTEX vertices[] =
{
{150.0f,50.0f,0.5f,0xffff0000,}, //버텍스의 위치와 색상
{250.0f,250.0f,0.5f,0xff00ff00,},
{50.0f,250.0f,0.5f,0xff00ffff,},
};
0~255 0~255 0~255 0~255 (10진수)
CreateVertexBuffer( ) 함수
- 정점 버퍼를 생성하는 함수 – 3*sizeof(CUSTOMVERTEX) : 버텍스 버퍼의 크기가 3개 들어갈 만큼의 양 명시
- 버퍼를 사용하는 방법 : 0 (USAGE방법을 사용하지 않겠다) – 정적 버퍼 / 동적 버퍼 설정
- D3DFMT_CUSTOMVERTEX : 버텍스의 포맷을 알려줌
- D3DPOOL_DEFAULT : 비디오 메모리 사용 – 가장 적절한 메모리 역을 할당. 대부분 비디오 메모리가 된다. 비디오 메모리 내에 버텍스 버퍼가 생성되면 출력 속도가 매우 빨라짐
- 버텍스 버퍼 변수 g_pVB의 포인터를 넘겨줌
ex) if(FAILED(g_pd3dDevice->CreateVertexBuffer(
3*sizeof(CUSTOMVERTEX),
0,
D3DFMT_CUSTOMVERTEX,
D3DPOOL_DEFAULT,
&g_pVB,
NULL)))
{
return E_FAIL;
}
- 버텍스 버퍼 채우기 단계
- 버텍스 출력 단계 (크기,구조,그린다)
– ① 출력 대상이 되는 버텍스와 각 버텍스의 크기를 지정하여 디바이스에 바인딩 한다.
– ② 버텍스의 구조를 디바이스에 지정 (앞에서 지정한 D3DFVF_CUSTOMVERTEX 값)
– ③ DrawPrimitive( ) 함수를 사용하여 버텍스 버퍼안의 내용을 폴리곤 형태로 그린다.
g_pd3dDevice->Present(NULL,NULL,NULL,NULL);
// 후면 버퍼를 보이는 화면으로
}
- (1) 스트림 소스 지정
- (2) 버텍스 포멧 지정 – 이후의 드로잉 과정에서 이용될 버텍스 포멧 – Device->SetFVF(Vertex::FVF);
- (3) 인덱스 버퍼 지정 – 이후의 드로잉 과정에서 이용될 인덱스 버퍼 – Device->SetIndices(IB);
- (4) 폴리곤 그리는 방식 지정
- D3DFVF_XYZRHW
- 고정 파이프라인을 거치지 않고 x,y 좌표가 바로 윈도우 좌표로 된다.
- 즉, 행렬변환이나 좌표계 설정을 해주어도 먹히지 않는다.
• 월드 이동 자체가 안됨.
- 윈도우 창에 2D 좌표값을 사용하고 싶을 때 사용하는 값
• 인터페이스를 위한 2D 코딩할 때 반드시 사용됨.
- D3DFVF_XYZ
- 정점 포맷이 변환되지 않은 정점의 위치 좌표를 포함한다.
- 윈도우 창을 로컬 좌표계처럼 사용하겠다.
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 9번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 8번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 7번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 6번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 5번 문제 해설 (0) | 2016.04.26 |
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 10번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 8번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 7번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 6번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 5번 문제 해설 (0) | 2016.04.26 |
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 10번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 9번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 7번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 6번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 5번 문제 해설 (0) | 2016.04.26 |
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 9번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 8번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 6번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 5번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 4번 문제 해설 (0) | 2016.04.26 |
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 8번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 7번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 5번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 4번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 3번 문제 해설 (0) | 2016.04.26 |
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 7번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 6번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 4번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 3번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 2번 문제 해설 (0) | 2016.04.26 |
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 6번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 5번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 3번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 2번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 1번 문제 해설 (0) | 2016.04.26 |
호서대학교 게임학과 16년도 중간고사 해설동영상.
'프로그래밍 > 시험 해설 강의' 카테고리의 다른 글
2016년 객체지향 중간고사 6번 문제 해설 (0) | 2016.04.26 |
---|---|
2016년 객체지향 중간고사 5번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 4번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 2번 문제 해설 (0) | 2016.04.26 |
2016년 객체지향 중간고사 1번 문제 해설 (0) | 2016.04.26 |