画像(logo)

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

広告

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

広告

↓発売日:2018年09月22日↓

たった1日で基本が身に付く! C言語 超入門

新品価格
¥2,225から
(2018/10/8 23:10時点)

目次へ戻る

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

今回はプレイヤーショットを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□

広告

↓発売日:2016年02月29日↓

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

新品価格
¥2,462から
(2018/10/8 23:25時点)

↓発売日:2018年06月22日↓

スッキリわかるC言語入門

新品価格
¥2,916から
(2018/10/8 23:15時点)

↓発売日:2018年03月09日↓

C言語本格入門 ~基礎知識からコンピュータの本質まで

新品価格
¥3,218から
(2018/10/8 23:16時点)

↓発売日:2017年06月14日↓

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

新品価格
¥2,700から
(2018/10/8 23:17時点)

↓発売日:2018年05月21日↓

作って身につく C言語入門

新品価格
¥2,462から
(2018/10/8 23:18時点)

↓発売日:2017年12月07日↓

新・標準プログラマーズライブラリ C言語 ポインタ完全制覇

新品価格
¥2,678から
(2018/10/8 23:19時点)

↓発売日:2017年02月08日↓

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

新品価格
¥2,700から
(2018/10/8 23:20時点)

↓発売日:2017年09月26日↓

かんたん C言語 [改訂2版] (プログラミングの教科書)

新品価格
¥2,916から
(2018/10/8 23:22時点)