やまだの「死ぬまでにゲームをつくりたい!!」 -61ページ目

ゲーム開発の道 LV5

キーボード入力を受け付けるようにして、

移動できるマス・移動できないマス判定しました。


全体が640x480で、1マス32x32なので、

mmm[0-19][0-14] の値で表示しています。

1⇒白マス、2⇒黒マス これは通れません!

5⇒赤マス これをパワーアップマスとしました!!


/*=== 動けるか判定する関数 ========*/

int canMove(int in){
/* can not go */
if(in == 1 || in == 2){
return 0;
}

return 1;
}


//--- 上を押されたときに以下が動く ---

mmm[px][py] = 0;
if (muki==0){ //上向きならpy座標を減らす
if(canMove(mmm[px][py-1]))
py--;
}


こんな感じで。難しくない。

上記で移動先が5だったときは、パワーアップ(絵を変える)


/*=== こうやってイメージを上書き ======= */

/* class change */
if(mmm[px][py] == ITEMA){
image[MAPI-1] = LoadGraph( "f02.jpg" );
}


現状の進捗は以下です。


キーボードで移動して、パワーアップマスに行くぞー
やまだの「死ぬまでにゲームをつくりたい!!」-LV5-1


うりゃ!騎兵に変身!!
やまだの「死ぬまでにゲームをつくりたい!!」-LV5-2


そんだけ(^▽^)

アイコン素材 パネル系

LV4はここを参考にしました☆

ずれて見えるけど、

まあ、こんなかんじですわ。

パネルのアイコンとか

あってよかったでゲス


やまだの「死ぬまでにゲームをつくりたい!!」


このアイコンはすべて自分で作成しましたので。

どうぞうー、ご自由に☆

ゲーム開発の道 LV4

はてはてLV5まじかです。

ヒャドはLV5、でもギラに比べると地味(;へ;)

LV4の今回は、ゲーム画面を意識して。

LV5はキー入力でキャラ動かします。

それを目指してヒャド取得ですね(’ー’)


いまは、こんな感じです。
やまだの「死ぬまでにゲームをつくりたい!!」


そろそろ作りたいゲームイメージ考えないと。

イメージはあるから出力しないと(’へ’)


使った素材は「素材」のタグにあげておきます


ソースコードばっかでごめんなさい><

/*=== MAIN部 ====================================*/

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない

/* MAP draw */
drawMap();
/* chara draw */
moveChara();


ScreenFlip();//裏画面を表画面に反映

/* if Enter pressed, */
if(CheckHitKey( KEY_INPUT_RETURN ) != 0){
break;
}
/* 60FPS */
wait_fanc(); //Sleep(1000/60);
}


wait_fanc ⇒ s5を参考にしました^^v


/*=== MAP表示 =======================================*/

int drawMap(void){
int x,y;
int rtn;
int G_Blue = GetColor( 0 , 255 , 255 ) ;
for(y=0;y<480/MLEN;y++){
for(x=0;x<640/MLEN;x++){
if((rtn = mmm[x][y]) != 0){
/* box with (x1,y1,x2,y2) */
DrawGraph( MLEN*x , MLEN*y , image[rtn] , FALSE ) ;
}
}}

return 0;
}

⇒ 1だったら白パネル、2だったら黒パネル

image[1] = LoadGraph( "p16.jpg" );
image[2] = LoadGraph( "p15.jpg" );


/*=== キャラの移動関数 ==================================*/

int moveChara(void){

pt++;
if(pt>=CTIME){
pt = 0;
mmm[px][py] = 0;
px += dx;
mmm[px][py] = MAPI-1;
if(px==1){dx = 1;}
if(px==5){dx = -1;}
}

return 0;
}

⇒ mmm[px][py] px,pyのマスにキャラを表示してます!

ゲーム開発の道 LV3

LV3です。ドラクエ2ではリリザ周辺で戦っているころであり、

ドラクエ3では、とうぞくのかぎを目指してナジミの塔に行くレベルである。

わたしもそろそろオブジェクトを動かせるようにしなければ。。


ということで、今回はオブジェクトを動かすところに着手。

擬似関数ですすめていきます。


DrawChara(x、y) ・・・ x,y 座標に 決められた絵を描く関数。

これを使って記述することを考えると。


while(1){

DrawChara(x、y);

x += 10;

Sleep(time);

}


こうするっと。

やまだの「死ぬまでにゲームをつくりたい!!」
たしかに、これではスタンプを連打しているのと同じだ><

なので、画面をクリアか画面の更新があればいいのですが、、

ClearDrawScreenっていう画面クリアの関数があった。


え?なに、クリアして再描画するの?重そうだけど・・。

まあ、従いまして実施。うごいたうごいた。


やまだの「死ぬまでにゲームをつくりたい!!」

ここで問題が!!


1.全部描かないと

ClearDrawScreen()

が全部消してしまう。

ので、whileで文字表示している部分を呼ぶように

ぜーんぶくくらないと。

⇒ まあプログラム構造変えますか。

  トップでClear呼びますかね。。

  JAVAのupdateのイメージがあったので、

  部分書き換えかなと思ったけど。


2.

画面うごかしたり、他のプログラム動かすと

処理落ちする。

⇒ 対策あるらしい(’ー’)

⇒ チラチラした画面を解消する事が出来るのは、

  裏画面で描いて、表に出す(13a)



本日参照にしたのは12節ー14節です。

いつもありがとうの参考ホームページはこちら☆







ゲーム開発の道 LV2

今回はプログラムせずに設計です。

平日にプログラムしている時間は無いよー><


まず何つくろうかなあと思ったんですが、

会話システムかなと。

ファイアーエムブレムでは、顔グラフィックと噴出しのセットが

上と下で行われています。

まずはそのモジュールでも作ろうかと。

で、その設計。


やまだの「死ぬまでにゲームをつくりたい!!」-会話設計

こういうイメージなので、

関数的には以下があればいいかな。

・噴出しエリア登場(上or下)

 ⇒ 返り値をハンドラに。クラスの作成になるかな(’へ’)

・しゃべる(ハンドラ、人ID、会話内容)

 ⇒ ハンドラで上下決まって、人IDでしゃべる人の顔グラフィック、会話を垂れ流す

 ⇒ 会話を垂れ流すのが実は難しいんですけどね。。まあ、おいおい。

・噴出しエリア解除(ハンドラ)


/*---<<image>>-------*/

#define MES_UPPER 1

#define MES_DOWN  2

/* 上下の右左で4パターンいるかもしれん */


Mes upM, downM;

str = "やっとここまできた…\n最終決戦だ!!\nみんな、いくぞ!!\n";

downM = MesCreate(MES_DOWN);

MesPlay(downM, 13, str);

MesClose(downM);


てなもんだ