画像(logo)

HOME/[C言語DXライブラリ]STGの作り方 目次/十六日目 プレイヤーショットを追加

広告

[C言語 DXライブラリ STGの作り方]
十六日目 プレイヤーショットを追加

広告

↓2016年02月29日発売↓

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

目次へ戻る

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

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

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

事前準備

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

プレイヤーとアイテムとの当たり判定「my_collision_player_item()」に以下の部分を加えます。

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

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

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

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

2wayショット

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

画像(cdxs_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」ショットを作ってみます。

画像(cdxs_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□

広告

↓2017年06月16日発売↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2017/5/1 13:05時点)

↓2014年08月09日発売↓

新・明解C言語 入門編 (明解シリーズ)

新品価格
¥2,484から
(2017/5/1 13:08時点)

↓2016年02月20日発売↓

新・解きながら学ぶC言語

新品価格
¥2,160から
(2017/5/1 13:10時点)

↓2017年02月11日発売↓

C言語プログラミング基本例題88 88

新品価格
¥3,024から
(2017/5/1 13:12時点)

↓2016年12月15日発売↓

Cの絵本 第2版 C言語が好きになる新しい9つの扉

新品価格
¥1,490から
(2017/5/1 13:13時点)

↓2017年02月08日発売↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2017/5/1 13:15時点)