ちょー簡単RPG講座。その6-画面遷移5。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by softya(ソフト屋) » 14年前

今度は共通関数とゲーム本編のヘッダとプログラムを説明します。

[comsub.h]
ヘッダです。
関数は一つだけです。
INCLUDE_COMSUB_Hは多重インクルードを防ぐおまじないです。

CODE:

#ifndef INCLUDE_COMSUB_H
#define INCLUDE_COMSUB_H

//    中央に文字を出す。
void CenterDrawString( char *str, int fontsize, int y, int color );

#endif /*INCLUDE_COMSUB_H*/


[comsub.cpp]
文字列を中央に表示する関数です。
同じようなのが多発したので一つにまとめました。

CODE:

#include "main.h"
#include "comsub.h"

//----------------------------------------------------------------------
//    中央に文字を出す。
//----------------------------------------------------------------------
void CenterDrawString( char *str, int fontsize, int y, int color )
{
    SetFontSize( fontsize );                                    //文字の大きさ
    int StrSizeX = GetDrawStringWidth(str,(int)strlen(str));    //文字表示の幅を得る。
    DrawString( (SCREEN_X-StrSizeX)/2, y, str, color );            //センターに表示
}

[gameMain.h]
ゲーム本編の関数を定義します。

CODE:

#ifndef INCLUDE_GAMEMAIN_H
#define INCLUDE_GAMEMAIN_H

//    ゲーム本編
extern GameState_t GameMain();

#endif /*INCLUDE_GAMEMAIN_H*/

[gameMain.cpp]
ゲーム本編のコードです。
押すボタンでゲームオーバーとエンディングに分岐する様になっています。
基本的なところは、Title()とかの関数と変わりません。

CODE:

#include "main.h"
#include "comsub.h"
#include "gameMain.h"


//----------------------------------------------------------------------
//    ゲーム本編
//----------------------------------------------------------------------
GameState_t GameMain()
{
    //    ゲーム本編だよって表示
    CenterDrawString( "ゲーム本編です。", 28, 160, GetColor(255,255,255) );
    
    //    ゲームオーバーのキー入力
    CenterDrawString( "「G」ボタンでゲームオーバーになります。", 20, 240, GetColor(155,155,255) );
    if( g_MainData.key[KEY_INPUT_G] == 1) {
        return GAME_STATE_GAMEOVER;
    }
    //    エンディングのキー入力
    CenterDrawString( "「E」ボタンでエンディングになります。", 20, 280, GetColor(155,155,255) );
    if( g_MainData.key[KEY_INPUT_E] == 1) {
        return GAME_STATE_ENDING;
    }
    
    //    継続
    return g_MainData.gameState;
}
では、今回のプロジェクトです。
http://softyasu.net/dlcounter/?id=EASYRPG01
説明していない部分もあるので、必ず違いを確認してくださいね。駆け足説明なので分からないことがあったら聞いてください。

では、次回は日付未定ですがゲーム本編の画面遷移を作成します。よろしく、お付き合いください。

[修正]
ダブルアンダースコアを止めました。
最後に編集したユーザー softya(ソフト屋) on 2010年11月27日(土) 14:56 [ 編集 2 回目 ]

アバター
山崎
記事: 2
登録日時: 15年前

Re: ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by 山崎 » 14年前

C言語だとこういう手順で作っていくんですね~。まぁ、人による部分も大きいかとは思いますけれども。

私はC++で作っていて且つデータ構造に凝ってしまう質があるので、「とりあえず動いているのが目に見えるもの」が出来上がるまでに大きな時間を要してしまいます。

毎回拝見しております。次回も楽しみにさせて頂いておりますので~。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by softya(ソフト屋) » 14年前

私もデータ構造は先に決める方ですが、そればっかりの講座とつまらないので、今回は作りながら足していっていますね。
もうひとつは、機能一つ一つを確認していったほうが複雑・重大なバグに遭遇する可能性が低いってのもありますね。

アバター
Justy
副管理人
記事: 122
登録日時: 15年前

Re: ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by Justy » 14年前

C++的には __は避けた方がいいのではないですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by softya(ソフト屋) » 14年前

>>Justyさん
__INCLUDE_GAMEMAIN_H__などの事でしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by softya(ソフト屋) » 14年前

とりあえず、ダブルアンダースコアはC++規約的にやばいので避けるようにします。VC++オンリーの人なので、その規約のことは忘れてました。
ここに載っているヤツとかサンプルプロジェクトも差し替えておきます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by softya(ソフト屋) » 14年前

差し替え終わりました。
Justyさん、ありがとうございました。

アバター
Justy
副管理人
記事: 122
登録日時: 15年前

Re: ちょー簡単RPG講座。その6-画面遷移5。

投稿記事 by Justy » 14年前

すみません、ちょっと言葉足らずでわかりにくかったですね。
対応ありがとうございます。