저는 몇 년 동안 기본 및 중간 수준의 C++ 프로그램을 작성해 왔지만 그 이상으로 나아갈 수 없었습니다. 최근에 www.planetchili.net에서 얻은 Framework을 통해 DirectX에서 작업하는 방법에 대해 배웠습니다. 나는 인공 지능과 길 찾기를 보여줄 프로그래밍 클래스를위한 소행성 타입의 게임과 비슷한 것을 개발하려고하고있다. 소행성을 날려 버리는 대신에, 플레이어는 다른 삼각형의 배들과 싸우는 개가 될 것입니다.DirectX에 새로 추가 된 사용자 정의 클래스가 깨졌습니다
프레임 워크에는 대부분의 작업을 수행하는 데 사용 된 Game 개체가 포함되어 있습니다. 그러나 배를 그리거나 위치 및 점수와 같은 통계를 추적하는 것과 같은 배 관련 작업을 수행하는 데 필요한 변수가 포함 된 배에 대한 클래스를 직접 작성해야한다고 생각했습니다.
그러나 나는 개념 수준의 패러독스와 같은 문제를 겪고 있습니다. 이 프레임 워크는 D3Dgraphics라는 것을 사용하며 gfx라는 D3D 객체를 선언하고 사용합니다. Ship에서 D3D 드로잉 기능을 사용하기 위해 D3D 라이브러리를 포함하고 Ship.h에 D3D 객체를 만들었습니다.
게임에서 Ship 개체를 선언하고 인스턴스화 할 수 있지만 게임에서 직접 사용할 때 작동하는 그리기 기능은 ship 개체를 통해 사용할 때 작동하지 않습니다. 왜인지는 모르겠지만, 내가 만든이 고약한 웹 덕분이라고 생각합니다. Game 객체는 Go()라는 함수가있는 D3D 객체를 사용하여 프레임을 그리는 것처럼 보이며 Ship 객체는 D3D 객체를 사용하지만 Game의 Go() 메소드에 액세스 할 수 없으며 Game은 Ship을 사용합니다.
여기 제가 작성한 코드가 있습니다 ... 제발 나를 똑바로 세우십시오.
Ship.cpp
//Ship.cpp
#include "Ship.h"
#include <math.h>
enter code here
//Constructor
Ship::Ship(HWND hWnd)
: gfx (hWnd)
{}
void Ship::drawLine(int x1, int x2, int y1, int y2){
//Draws a line using gfx.putPixel- This function works perfectly if declared and used directly in Game.cpp
}
Ship.h
//Ship.h
#pragma once
#include "D3DGraphics.h"
#include "Keyboard.h"
#include <vector>
class Ship{
private:
D3DGraphics gfx;
public:
Ship::Ship(HWND hWnd); //Default Constructor
};
//Game.h
#pragma once
#include "Ship.h"
#include "D3DGraphics.h"
#include "Keyboard.h"
class Game
{
public:
Game(HWND hWnd,const KeyboardServer& kServer);
void Go();
//Member functions
private:
void ComposeFrame();
private:
D3DGraphics gfx;
KeyboardClient kbd;
Ship psp;
};
//Game.cpp
#include "Game.h"
#include <math.h>
Game::Game(HWND hWnd,const KeyboardServer& kServer)
: gfx (hWnd),
psp(hWnd),
kbd(kServer)
{}
void Game::Go()
{
gfx.BeginFrame();
ComposeFrame();
gfx.EndFrame();
}
void Game::ComposeFrame()
{
psp.drawShip();
}
:
약간의 보조 노트
, 일반적으로 사용되는 헝가리어 표기법을 사용하여 더 많은 정보를 제공 무언가에 변수 이름을 변경하려고합니다. 내 코드가 컴파일되고 psp.drawShip()이 코드에 의해 승인 된 것으로 보이지만 실행하면 아무런 변화가 없습니다. 가운데에 빨간색 방향 벡터가 그려지는 최소 및 경계 원형에 있어야하지만 창은 비어 있어야합니다. 게임에서 우주선 객체를 사용하려면 어떻게해야할지 모르겠습니다. –사용중인 프레임 워크에 익숙하지 않아도 도움을 줄 수 없습니다. 일반적인 문제를 추측하여':: Present'가 어딘가에 호출되도록하고 프레임 워크가 윈도우를 초기화하고 서페이스를 올바르게 렌더링 한 다음 좌표 및 꼭지점에서 기이함을 확인하도록 제안 할 수 있습니다. – ssube