프로그래밍/API 프로그래밍
-
4.N-way탄프로그래밍/API 프로그래밍 2014. 4. 19. 20:49
n-way탄을 발사하기 위해서는 먼저 중심이 되는 탄환의 속도를 정한 후, 그 속도 벡터를 중심선의 좌우로 회전시킨 것을 다른 탄환의 속도 벡터로 합니다. 중심이 되는 탄환의 속도 벡터(vx0,vy0) 이라고 하면, 이것을 0만큼 회전시킨 속도 벡터 (vx,vy)를 구할수 있습니다. 또한 cos함수 대신에 cosf함수를, sin함수 대신에 sinf함수를 사용할 수도 있습니다. void RotateVelocity( float theta, // 회전 각도 float vx0, float vy0, // 원래 속도 float& vx, float& vy // 회전후의 속도 ) { // theta를 라디안으로 변환하여 cos과 sin값을 구하기: // M_PI는 원주율. float rad=M_PI/180*theta;..
-
3.테이블을 이용한 방향탄프로그래밍/API 프로그래밍 2014. 4. 19. 19:18
16방향으로 날아가는 탄환의 예 각 방향에 해당하는 탄환의 속도 벡터는 다음과 같다.{ 3, 0},{ 3, 1},{ 2, 2},{ 1, 3}, { 0, 3},{-1, 3},{-2, 2},{-3, 1}, {-3, 0},{-3,-1},{-2,-2},{-1,-3}, { 0,-3},{ 1,-3},{ 2,-2},{ 3,-1}테이블을 이용하는 방법의 이점은 단순함에 있습니다. 문제는 탄환을 발사하는 방향이 8방향혹은 16방향 등으로 제한된다는 점과 방향에 따라 미묘하게 탄환의 속도가 달라지는 점 , 속도 벡터의 테이블을 별도로 준비해야 한다는 점이 있습니다. 옛날에는 이 방법을 사용하는 게임도 많이 있었지만, 이렇게 해서는 요즘 게임처럼 세세한 탄막을 만들어 내기가 힘듭니다.실수형을 사용하는 경우에 비해 아무래도 ..
-
2.방향탄프로그래밍/API 프로그래밍 2014. 4. 19. 14:00
조준탄과는 달리 메인 캐릭터를 노리는 것이 아니라 임의의 방향을 향해서 날아가는 탄환을 말합니다. 이러한 탄환을 방향탄이라고 부릅니다. 방향탄은 대포가 회전하면서 탄환을 발사하는 장면 등에서 사용됩니다. #include void InitDirectedBullet( float ex, float ey, // 적의 좌표 float& x, float& y, // 탄의 좌표 float& vx, float& vy, // 탄의 속도벡터 float speed, // 탄의 속도 float theta // 발사각도 ) { // 탄의 좌표를 설정하기 x=ex; y=ey; // speed의 속도로 각도 theta 방향으로 날아가는 탄의 속도벡터(vx,vy)를 구하기: // M_PI는 원주율 vx=cos(M_PI/180*the..
-
1. 조준탄프로그래밍/API 프로그래밍 2014. 4. 19. 12:53
적기가 발사하는 탄환의 종류에는 여러가지가 있지만 가장 일반적인 것은 메인 캐릭터를 향해 날아오는 탄환으로서 거의 모든 슈팅 게임에서 볼수 있습니다. 이러한 탄환을 '조준탄'이라고 부릅니다. void CBullet::InitAimingBullet( int mx, int my, /* 메인 캐릭터의 위치 */ int ex, int ey, /* 적의 좌표 */ int speed, /* 탄의 속도 */ int& x, int& y, /* 탄의 좌표 */ int& vx, int& vy /* 탄의 속도 */ ) { // 탄의 좌표를 설정하기 x=ex; y=ey; // 목표까지의 거리 d를 구하기 float d=sqrt(float(mx-ex)*float(mx-ex)+float(my-ey)*float(my-ey)); /..
-
API 이것이 윈도우다~!프로그래밍/API 프로그래밍 2014. 1. 7. 22:43
윈도우를 처음 생성한다. 그림 넣는건 귀찮으니 소스로 만한다. 친절하게 처음 윈도우를 만들면 비주얼 8에서 이런 소스를 볼수있다. // WindowReview1.cpp : 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include "WindowReview1.h" #define MAX_LOADSTRING 100 // 전역 변수: HINSTANCE hInst;// 현재 인스턴스입니다. TCHAR szTitle[MAX_LOADSTRING];// 제목 표시줄 텍스트입니다. TCHAR szWindowClass[MAX_LOADSTRING];// 기본 창 클래스 이름입니다. // 이 코드 모듈에 들어 있는 함수의 정방향 선언입니다. ATOMMyRegisterClass(HINS..