ゲームの流れ

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

ゲームの流れ

投稿記事 by Tatu » 14年前

シューティング部分だけでは物足りないので
今回は以下の内容を追加します。

今回の内容
1.起動画面
2.オープニング
3.タイトル
4.エンディング


素材がないので文字だけの簡素なものとします。


1.起動画面
ロードとかしているあれです。ここでは処理が完了したときに文字を表示するようにしています。
マルチスレッドでなくても表画面のまま書けばそれっぽい感じです。
四聖龍神録の起動画面で数字が重なって表示されている理由はたぶんこれでしょう。
文字の表示が要らなければこの起動画面についての内容は無視してかまいません。
まあ、一回の起動につき一回しか表示されず一瞬で終わるのでそれほど気にしなくてもよいと思います。
裏画面に描画するようセットし、オープニングに。

これをかいていてfunc_stateのFIRSTが不要なことに気が付きました。

main.cppのcase FIRSTの中身をループの前に出して
func_state=FIRST;を消去し

以下のようにしてください。

CODE:

if(DxLib_Init() == -1) return -1;
load();//データロード
first_ini();//最初のみの初期化
func_state=OPENING;

if(SetDrawScreen( DX_SCREEN_BACK)!=0) return -1;
GV.hのfs_tの
FIRST,
を消去。

load.cppのloadに以下を追加

CODE:

	DrawStringToHandle(0,0,"ロード完了",color[0],font[1]);
ini.cppのfirst_iniに以下を追加

CODE:

	DrawStringToHandle(0,30,"パッド設定完了",color[0],font[1]);

CODE:

	DrawStringToHandle(0,60,"弾情報設定完了",color[0],font[1]);

CODE:

	DrawStringToHandle(0,90,"初期化完了",color[0],font[1]);

2.オープニング
これはゲームスタートでメッセージが流れるあれ。ではなく
ここではロゴが表示されている部分のことです。
とりあえず「オープニング」と書かれた文字をフェードイン、フェードアウトさせます。
終わったらタイトルへ。

opening.cppを追加

CODE:

#include "../include/GV.h"

void opening_main(){
	if(opening_count==180){
		opening_count=0;
		func_state=TITLE;
		return;
	}
	opening_count++;
}
GV.hに以下を追加

CODE:

GLOBAL int opening_count;
function.hに以下を追加

CODE:

//opening.cpp
	GLOBAL void opening_main();
main.cppに以下を追加

CODE:

		case OPENING:
			opening_main();
			break;
graph.cppに以下を追加

CODE:

void graph_opening(){
	if(opening_count=120){
		SetDrawBright(300-5*(opening_count-120),300-5*(opening_count-120),300-5*(opening_count-120));
	}

	DrawStringToHandle(240,200,"オープニング",color[0],font[1]);

	SetDrawBright(255,255,255);
}
graph_main()に以下を追加

CODE:

	case OPENING:
		graph_opening();
		break;
3.タイトル
画面の上あたりに「龍神録プログラミングの館プロジェクト改変プログラム」とでも表示させておきましょう。
あとは「Game Start」をどこかに配置します。
Zキーが押されるとゲームの初期化がなされ、ゲームが始まるようにします。

title.cppを追加。

CODE:

#include "../include/GV.h"

void title_main(){
	if(CheckStatePad(configpad.shot)==1){
		func_state=GAME_INI;
	}
}
function.hに以下を追加

CODE:

//title.cpp
	GLOBAL void title_main();
main.cppに以下を追加

CODE:

		case TITLE:
			title_main();
			break;
graph.cppに以下を追加

CODE:

void graph_title(){
	DrawStringToHandle(100,100,"龍神録プログラミングの館",color[0],font[1]);
	DrawStringToHandle(100,140,"改変プログラム",color[0],font[1]);

	DrawStringToHandle(50,300,"Game Start",color[0],font[1]);
}
graph_main()に以下を追加

CODE:

	case TITLE:
		graph_title();
		break;





4.エンディング
前回,5面クリア時に1面に戻るようにしていましたが今回は
エンディングに移動するようにします。
ここでは「Thank you for your playing」という文字を下から上にスライドさせるだけにします。
スライドが終わったらオープニングに。

ending.cppを追加

CODE:

#include "../include/GV.h"

void ending_main(){
	if(ending_count==180){
		ending_count=0;
		func_state=OPENING;
		return;
	}
	ending_count++;
}
GV.hに以下を追加

CODE:

GLOBAL int ending_count;
function.hに以下を追加

CODE:

//ending.cpp
	GLOBAL void ending_main();
main.cppに以下を追加

CODE:

		case ENDING:
			ending_main();
			break;
graph.cppに以下を追加

CODE:

void graph_ending(){
	DrawStringToHandle(100,520-ending_count*4,"Thank you for your playing",color[0],font[0]);
}
graph_main()に以下を追加

CODE:

	case ENDING:
		graph_ending();
		break;
5面が終わったらエンディングになるようにする。
graph.cppのgraph_clearの以下を変更

CODE:

		if(clear_count>180 && CheckStatePad(configpad.shot) ==1){
			DeleteGraph(img_screen);
			if(stage タイトル > ゲーム > エンディング > タイトル
という流れを作ることができているはずです。

ISLe
記事: 2650
登録日時: 14年前

Re: ゲームの流れ

投稿記事 by ISLe » 14年前

プレイステーションのゲーム(CD-ROM)でロード中に別のゲームが遊べるものがありましたね。
ロード画面はエンディングよりたくさん繰り返し見ることになるので楽しくて且つしつこくないテンションの上がるものが良いですね。
いつロードしているのか分からないくらい滑らかなのがいちばんですけど。

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

Re: ゲームの流れ

投稿記事 by Tatu » 14年前

プレイステーションはロードが頻繁で長く、
また、ディスクが汚れているとかで読み込まれずに
ゲームが止まってしまうことが何回かありました。
セーブもものすごく長いことがありましたね。

ロードを感じさせないといえば
「スーパーマリオギャラクシー」では
マリオがステージに飛んでくる時にそのステージの
データを読み込んでいたそうです。