C言語 入門 STGの作り方

十六日目 プレイヤーショットを追加

初心者向けSTG作成入門

HOME/STGの作り方 目次/十六日目 プレイヤーショットを追加/

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2016/5/10 22:16時点)

もっと!C、C++言語本

目次へ戻る

プレイヤーショットを追加

今回はプレイヤーショットを2種類だけ増やしたいと思います。

最初プレイヤーショットを作った時に少しめんどくさい事はだいたい終わっているのでさらっといきたいと思います。

事前準備

事前準備としてショット切り替えの部分を加えます。

当たり判定「my_collision_detection()」内のアイテム当たり判定のトコロです。

if(p1.shot_type < 2){
	p1.shot_type++;
}

アイテムに当たった時に「p1.shot_type++;」とショットをパワーアップさせます。

あとプレイヤー死亡時ショットを元に戻す処理は「my_gameover()」内にすでにあるのでこれだけで事前準備は大丈夫です。

それではいってみましょう!

2wayショット

まずは正面に2発飛ばすようなショットを作ってみます。

画像(s-16-1)

こんなショットです。

さっそくプログラムから見てみましょう。

「my_move_player_shot()」の「case 1」になります。

初期化部分です。

if(ps1[i].init_flag == 0){
 ps1[i].max_bullet = 2;
 for(int j = 0;j < ps1[i].max_bullet;j++){
  ps1[i].x[j] = p1.x;
  ps1[i].y[j] = p1.y;
  ps1[i].flag[j] = 1;
 }
 ps1[i].x[0] += 10;
 ps1[i].x[1] -= 10;
 ps1[i].gamecount_point = gamecount;
 ps1[i].init_flag = 1;
}
else{
	/*移動部分*/
}

正面に2発飛ばすので「max_bullet」は2発ですね。

座標と一緒に例のフラグ「flag」も初期化しておきます。

例のフラグってなんだっけという方はこちらをご覧ください。

あとは正面に2方向なのでそれぞれ「10」ピクセルずつずらしたら初期化完了です。

移動部分

for(int j = 0;j < ps1[i].max_bullet;j++){
	ps1[i].y[j] += 8;
}

前回の連射ショットの時と同じように「max_bullet」分座標を動かすだけです!

5wayショット

続いて「5way」ショットを作ってみます。

画像(s-16-2)

こんなのです。

プログラムを見てみましょう。

「my_move_player_shot()」の「case 2」になります。

if(ps1[i].init_flag == 0){
 ps1[i].max_bullet = 5;
 for(int j = 0;j < ps1[i].max_bullet;j++){
  ps1[i].x[j] = p1.x;
  ps1[i].y[j] = p1.y;
  ps1[i].flag[j] = 1;
 }
 ps1[i].angle[0] = 90 * (DX_PI / 180);
 ps1[i].angle[1] = 135 * (DX_PI / 180);
 ps1[i].angle[2] = 225 * (DX_PI / 180);
 ps1[i].angle[3] = 315 * (DX_PI / 180);
 ps1[i].angle[4] = 45 * (DX_PI / 180);					
 ps1[i].gamecount_point = gamecount;
 ps1[i].init_flag = 1;
}
else{
	/*移動部分*/
}

今度は5発飛ばすので「max_bullet」は5発ですね。

合わせて座標と「flag」も初期化しておきます。

そして星型のような方向にそれぞれショットを飛ばしたいのでそれに合わせて角度も設定します。

あとは前回やった好きな角度に座標を移動する「sin,cos」を使ってショットを移動するだけです。

移動部分

for(int j = 0;j < ps1[i].max_bullet;j++){
 ps1[i].x[j] += cos(ps1[i].angle[j]) * 8;
 ps1[i].y[j] += sin(ps1[i].angle[j]) * 8;
}

「max_bullet」分だけ「sin,cos」を使って移動すれば完了です!

ここまでの中間ソースになります。

中間ソース15

次回はプレイヤーの移動によって背景を少しずらすのとそれと共に背景に固定されているような敵を作りたいと思います。

次回

十七日目 背景の敵

□ページの先頭へ□

□HOME□

広告

↓2014年06月20日発売↓

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

新品価格
¥2,500から
(2016/5/10 22:17時点)

↓2014年10月25日発売↓

超本格! サンプルで覚えるC言語 3Dゲームプログラミング教室

新品価格
¥3,110から
(2016/5/10 22:18時点)

↓2013年07月25日発売↓

小学生からはじめるわくわくプログラミング

新品価格
¥2,052から
(2016/5/10 22:21時点)

↓2016年05月13日発売↓

小学生からはじめるわくわくプログラミング2

新品価格
¥2,052から
(2016/5/10 22:22時点)

もっと!C、C++言語本

□ページの先頭へ□

□HOME□