C++とDXライブラリにおいてのmainなどの書き方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sql

C++とDXライブラリにおいてのmainなどの書き方

#1

投稿記事 by sql » 11年前

こちらの龍神録のコードを参考に勉強していたのですが、簡単なゲームをC++とDXライブラリで作りたいと思ったのですが、肝心のメイン関数や初期化処理の書き方がわかりません。
龍神録のC++verのソースをDLして見てみたのですが・・自分には難易度が高いみたいで理解に苦しみましたのでここで質問を。
※添付コード内に質問文も書いてあります。(質問用に作った円を動かすプログラムです)
以下コード

コード:

/*header*/

//test draw circle
class Circle
{
public:

	Circle(void);
	~Circle(void);

	void calc(void);
	void draw(void);

private:

	int x , y;
	int cnt;
	int color;
};
//---------------------------------------------------
#include "test.h"

#include //DXライブラリ

Circle::Circle(void)
{
	x = 100;
	y = 100;
	cnt = 0;
	color = GetColor(   0 ,   0 , 255 );
}

Circle::~Circle(void)
{
}

void Circle::calc(void)
{
	x = cnt;
	y = (cnt/2);

	cnt++;
}

void Circle::draw(void)
{
	DrawCircle(x , y , 100 , color , TRUE);
}
メイン

コード:

/*Header*/

#include"test.h"

class mainWindow
{
public:
	mainWindow(void);
	~mainWindow(void);

	void mainLoop(void);

	void calc(void);
	void draw(void);

private:
	Circle *cir;//円
};
//-----------------------------------

#include "main.h"

#include //DXライブラリ

//test
mainWindow::mainWindow(void)
{
	/*DxLib_Initはどこに書く?*/

	cir = new Circle();
}

mainWindow::~mainWindow(void)
{
	/*DxLib_Endはここ?*/
}

void mainWindow::mainLoop(void)
{
	//ここの書き方がわからない(以下のコード(骨格)はどこに書く?)
	/*
	int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化

    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない


        //ココ!!



        ScreenFlip();
    }

    DxLib_End();
    return 0;
}
*/
	//上の「ココ!!」の部分に以下の2行を書けばいいのはわかるのですが、上のコードをどこにどのように書くのかわからないです。
	calc();
	draw();
}

void mainWindow::calc(void)
{
	cir->calc();
}

void mainWindow::draw(void)
{
	cir->draw();
}
KEY関係(GetHitKeyStateAll_2)はまだ使ってないので、その部分は無視してください。
自分なりに書いたのですが・・・。お願いします。
できれば、コードも書いて頂ければ嬉しいです。

Poco
記事: 161
登録日時: 14年前

Re: C++とDXライブラリにおいてのmainなどの書き方

#2

投稿記事 by Poco » 11年前

WinMain()関数はWindowsプログラムで一番最初に呼ばれる関数です。
必ず定義してください。
で、この中でmainWindow::mainLoop()を呼べばよろしいかと。

コード:

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    mainWindow w;

    w.mainLoop();
}
(略)

void mainWindow::mainLoop(void)
{
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
 
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない
         //ココ!!
        calc();
        draw();
  
        ScreenFlip();
    }
 
    DxLib_End();
    return;
}


閉鎖

“C言語何でも質問掲示板” へ戻る