まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
中ボスの爆破を追加しました。

8方向に広がっていく爆風をボス本体上にランダムで表示させて、後ろに向かっていく爆風と組み合わせて表示させています。
スクリプトはこんな感じ↓で表示させています。
*************************************
*bossbomb
bomb132-;爆風カウントをマイナス
if bomb132>1{;爆風カウントが1以上の時
pos ex,ey
gmode 2
es_copy 3,0,288,398,144;ボス画像表示
bex=(ex+50)+rnd(200);爆風X軸設定
bey=ey+rnd(100);爆風Y軸設定
es_exnew temp,251,499
if temp=-1 : return
es_set temp,bex,bey,90;爆風設置
es_effect temp,80,80,0,0,0
es_type temp,16; 効果type値(16)
es_adir temp,180,600;上に移動させる
es_flag temp,%1000001100100001;爆風を消滅させる
}
if bomb132>1{
if gtime¥5=0{
repeat 8
es_exnew temp,10,249
if temp=-1 : return
es_set temp,bex,bey,21;爆風設置
es_effect temp,64,64,0,0,0,ESB_ALPHA,150; 爆風設置
es_type temp,16; 効果type値(16)
es_adir temp,cnt*45,400;8方向に移動させる
es_flag temp,%1000001100100001;爆風消滅
loop
}
}
return
*************************************
雑魚キャラの時は爆風を一回表示させて終わりだったのですが、さすがにそれでは「倒した感」が薄いなぁと思って、300フレームの間
爆風が表示されるようにしました。
ボス爆破用の変数を作って、1フレームごとに1マイナスしていき、0になるまで爆風が表示されるようにしています。
本当は壊れたボス画像を作りたかったのですが、私の画力では書けませんでした(汗)
しかし、先日も書いたgmode 2を使うを画面がちらつく問題が解決していないんですよね・・・
でも、他のパソコンだとちらつかないので、開発マシン側の問題なのかなぁ?と思っているんですが、まったく解決方法が思い浮かびません・・・
8方向に広がっていく爆風をボス本体上にランダムで表示させて、後ろに向かっていく爆風と組み合わせて表示させています。
スクリプトはこんな感じ↓で表示させています。
*************************************
*bossbomb
bomb132-;爆風カウントをマイナス
if bomb132>1{;爆風カウントが1以上の時
pos ex,ey
gmode 2
es_copy 3,0,288,398,144;ボス画像表示
bex=(ex+50)+rnd(200);爆風X軸設定
bey=ey+rnd(100);爆風Y軸設定
es_exnew temp,251,499
if temp=-1 : return
es_set temp,bex,bey,90;爆風設置
es_effect temp,80,80,0,0,0
es_type temp,16; 効果type値(16)
es_adir temp,180,600;上に移動させる
es_flag temp,%1000001100100001;爆風を消滅させる
}
if bomb132>1{
if gtime¥5=0{
repeat 8
es_exnew temp,10,249
if temp=-1 : return
es_set temp,bex,bey,21;爆風設置
es_effect temp,64,64,0,0,0,ESB_ALPHA,150; 爆風設置
es_type temp,16; 効果type値(16)
es_adir temp,cnt*45,400;8方向に移動させる
es_flag temp,%1000001100100001;爆風消滅
loop
}
}
return
*************************************
雑魚キャラの時は爆風を一回表示させて終わりだったのですが、さすがにそれでは「倒した感」が薄いなぁと思って、300フレームの間
爆風が表示されるようにしました。
ボス爆破用の変数を作って、1フレームごとに1マイナスしていき、0になるまで爆風が表示されるようにしています。
本当は壊れたボス画像を作りたかったのですが、私の画力では書けませんでした(汗)
しかし、先日も書いたgmode 2を使うを画面がちらつく問題が解決していないんですよね・・・
でも、他のパソコンだとちらつかないので、開発マシン側の問題なのかなぁ?と思っているんですが、まったく解決方法が思い浮かびません・・・
PR
昨日作りかけていたボスゲージが、なんとか完成しました。
とりあえず簡単なスクリプトを作って考えてみました↓
*************************************
screen 0,380,50;スクリーンの大きさ指定
bob=0;ゲージを上げていく為の変数
boss=0.;ボスゲージを実数にする
boss=500.0;ボスの体力
repeat
redraw 0;仮想画面を指定
cls 0;画面を白でクリア
if bob=0 {;ゲージが上がっていっている時
gaugeup+5;ゲージを上げる
boxf 0,10,gaugeup,24;ボスゲージ表示
if gaugeup=380 {;ゲージが画面一杯になった時
bob=1;ゲージを上げない
bog=boss/380;ゲージの長さを出す計算
}
}
if bob=1 {;ゲージが上がりきった後
if boss=0 : stop;変数bossが0になったら終了
boxf 0,10,boss/bog-1,24;ゲージを減らしていく
boss-};変数ボスを減らしていく
pos 150,30
mes ""+boss+""
redraw 1;画面更新
await 16
loop
*************************************
これを実行すると、ゲージがグーンと上がっていって1ドットづつ減って行きます。

実行するとこんな感じです。
一番悩んだのが、ゲージの長さです。
ボスによって体力は違いますが、ゲージの長さは同じですよね。それを、どんな体力のボスでもゲージ一杯にしたかったんです。
例えば、上のスクリプトで言えばゲージの長さは380ドットです。ボスの体力は500あります。
boxfでゲージを表示させているので、普通にコピーすると120ドットはみ出してしまいます。
つまり、500をなんとかして380にしないといけないと言うことになります。
500を380にする為には、500÷380で大体1.35。で、500÷1.35で大体計算出来ます。
それを踏まえて、13行目のbog=boss/380で割る数字を計算して、18行目の
boxf 0,10,boss/bog-1,24でゲージ本体を表示させています。-1にしているのは最後に体力が0になった時に1ドットだけゲージが残って
しまうので、それの対策の為です。
試しに4行目のボスの体力を色んな数字に変更しても、ゲージは380ドットで表示されますので
どんな体力のボスでも表示OKに出来ました^^
とりあえず簡単なスクリプトを作って考えてみました↓
*************************************
screen 0,380,50;スクリーンの大きさ指定
bob=0;ゲージを上げていく為の変数
boss=0.;ボスゲージを実数にする
boss=500.0;ボスの体力
repeat
redraw 0;仮想画面を指定
cls 0;画面を白でクリア
if bob=0 {;ゲージが上がっていっている時
gaugeup+5;ゲージを上げる
boxf 0,10,gaugeup,24;ボスゲージ表示
if gaugeup=380 {;ゲージが画面一杯になった時
bob=1;ゲージを上げない
bog=boss/380;ゲージの長さを出す計算
}
}
if bob=1 {;ゲージが上がりきった後
if boss=0 : stop;変数bossが0になったら終了
boxf 0,10,boss/bog-1,24;ゲージを減らしていく
boss-};変数ボスを減らしていく
pos 150,30
mes ""+boss+""
redraw 1;画面更新
await 16
loop
*************************************
これを実行すると、ゲージがグーンと上がっていって1ドットづつ減って行きます。
実行するとこんな感じです。
一番悩んだのが、ゲージの長さです。
ボスによって体力は違いますが、ゲージの長さは同じですよね。それを、どんな体力のボスでもゲージ一杯にしたかったんです。
例えば、上のスクリプトで言えばゲージの長さは380ドットです。ボスの体力は500あります。
boxfでゲージを表示させているので、普通にコピーすると120ドットはみ出してしまいます。
つまり、500をなんとかして380にしないといけないと言うことになります。
500を380にする為には、500÷380で大体1.35。で、500÷1.35で大体計算出来ます。
それを踏まえて、13行目のbog=boss/380で割る数字を計算して、18行目の
boxf 0,10,boss/bog-1,24でゲージ本体を表示させています。-1にしているのは最後に体力が0になった時に1ドットだけゲージが残って
しまうので、それの対策の為です。
試しに4行目のボスの体力を色んな数字に変更しても、ゲージは380ドットで表示されますので
どんな体力のボスでも表示OKに出来ました^^
攻撃はまだですが中ボス本体のみ追加しました。それに伴ってボスゲージも追加しました。

ボスゲージは最初は右側のスコア表示部分に表示させてみたのですが、どうも見にくい気がしたので、プレイ画面に持ってきてみました。
ゲージ自体はこんなスクリプトで表示させています。↓
*************************************
*bossgauge
es_aim 707,6,6,100;ボスゲージ画像移動
es_get bossgy,707,5;ボスゲージY座標取得
if bossgy>=5{es_exboxf 18,10,boss/11*4+18,24,$FF180C,,,,ESB_MULTIPLE};ボスゲージ表示
if boss<2 : es_adir 707,180,100;ボスゲージを消す
return
*************************************
ゲージが上から降りてきて、ゲージのY軸が6ドット部分に来たらゲージ本体を表示させています。
本当はゲージ本体を表示するときに、グーンとゲージが上がっていってから減っていくようにしたいんですが
上手く出来てません。考え中です(汗)
ボスゲージは最初は右側のスコア表示部分に表示させてみたのですが、どうも見にくい気がしたので、プレイ画面に持ってきてみました。
ゲージ自体はこんなスクリプトで表示させています。↓
*************************************
*bossgauge
es_aim 707,6,6,100;ボスゲージ画像移動
es_get bossgy,707,5;ボスゲージY座標取得
if bossgy>=5{es_exboxf 18,10,boss/11*4+18,24,$FF180C,,,,ESB_MULTIPLE};ボスゲージ表示
if boss<2 : es_adir 707,180,100;ボスゲージを消す
return
*************************************
ゲージが上から降りてきて、ゲージのY軸が6ドット部分に来たらゲージ本体を表示させています。
本当はゲージ本体を表示するときに、グーンとゲージが上がっていってから減っていくようにしたいんですが
上手く出来てません。考え中です(汗)
画面下から出現する敵を追加しました。

先日作ったDANGER警告の後に出て下から出てきて、自機とY軸が合った時に中央に移動し左右の敵が合体した時点で
画面上部に移動していきます。
ベタな動きですね(汗)
スクリプト的にはこんな感じで動かしてます↓
*************************************
*enemy5;下から出現左
es_adir enemy,180,150 ;移動方向
if py>ey : es_adir enemy,90,200;自機とY軸が合ったら右に移動
if ex>21 : es_adir enemy,90,200;出現位置よりも右に移動した場合は右に移動
if ex>184 : es_adir enemy,180,150;画面中央に来たら上に移動
return
*enemy6;下から出現右
es_adir enemy,180,150 ;移動方向
if py>ey : es_adir enemy,270,200
if ex<347 : es_adir enemy,270,200
if ex<184 : es_adir enemy,180,150
return
*************************************
ホント、こんな簡単なスクリプトを書くだけで良いなんてhspdxfixは凄いです。
この動きを標準命令だけで作ろうと思ったら、もっとややこしい記述をしないとダメだと思います
(私の技術が足りてないだけかもしれませんが^^;)
移動方向を指定出来るってのは便利だな〜と、つくづく思いました。
それと、今までは右側のスコア表示の部分をes_boxfで塗りつぶしていたのですがマニュアルを読んでいると、もっと良い命令を発見しました。
es_fillと言う命令なのですが、es_boxfと同じく短形の塗りつぶし命令なのですが
es_boxfよりも速度の面で有利、と書いてあるじゃないですか。
そんな事書かれたら使わない手はないって事で、es_fill命令に変更しました^^
あと、ステージ表記も追加しました。これはes_copyで表示させているんですが、gmodeで指定する時に0(通常コピー)
を指定すると何ともないのですが
1か2(透明色指定コピー)にすると、フルスクリーン時に画面がちらつくんですよね・・・
スコア表示部分に表示させるだけならgmode 0で問題ないのですが
プレイ画面に表示させてからスコア部分に移動させたいと思っているので
出来ればgmode 1か2を使いたいんですよね。原因追求中です。
先日作ったDANGER警告の後に出て下から出てきて、自機とY軸が合った時に中央に移動し左右の敵が合体した時点で
画面上部に移動していきます。
ベタな動きですね(汗)
スクリプト的にはこんな感じで動かしてます↓
*************************************
*enemy5;下から出現左
es_adir enemy,180,150 ;移動方向
if py>ey : es_adir enemy,90,200;自機とY軸が合ったら右に移動
if ex>21 : es_adir enemy,90,200;出現位置よりも右に移動した場合は右に移動
if ex>184 : es_adir enemy,180,150;画面中央に来たら上に移動
return
*enemy6;下から出現右
es_adir enemy,180,150 ;移動方向
if py>ey : es_adir enemy,270,200
if ex<347 : es_adir enemy,270,200
if ex<184 : es_adir enemy,180,150
return
*************************************
ホント、こんな簡単なスクリプトを書くだけで良いなんてhspdxfixは凄いです。
この動きを標準命令だけで作ろうと思ったら、もっとややこしい記述をしないとダメだと思います
(私の技術が足りてないだけかもしれませんが^^;)
移動方向を指定出来るってのは便利だな〜と、つくづく思いました。
それと、今までは右側のスコア表示の部分をes_boxfで塗りつぶしていたのですがマニュアルを読んでいると、もっと良い命令を発見しました。
es_fillと言う命令なのですが、es_boxfと同じく短形の塗りつぶし命令なのですが
es_boxfよりも速度の面で有利、と書いてあるじゃないですか。
そんな事書かれたら使わない手はないって事で、es_fill命令に変更しました^^
あと、ステージ表記も追加しました。これはes_copyで表示させているんですが、gmodeで指定する時に0(通常コピー)
を指定すると何ともないのですが
1か2(透明色指定コピー)にすると、フルスクリーン時に画面がちらつくんですよね・・・
スコア表示部分に表示させるだけならgmode 0で問題ないのですが
プレイ画面に表示させてからスコア部分に移動させたいと思っているので
出来ればgmode 1か2を使いたいんですよね。原因追求中です。
フォントを変更してみました。

最初に作ったフォントは手本を見ながら手書きで書いていたのですが、そんな事をしなくてもwindowsに入っているフォントなら
EDGE2の文字の描画で簡単に書く事が出来ました^^ちょっと虫姫さまっぽいフォントやな〜と思ってコレにしてみました。
それと、画面下から出てくる敵なんかの為に、出てくる前の警告表示も作ってみました。

こんな感じでアニメさせています。
本当は下から出てくる敵も作るつもりだったのですが、この表示を作るだけで数時間掛かってしまい、敵まで作る元気がないので
もう寝ます^^;
最初に作ったフォントは手本を見ながら手書きで書いていたのですが、そんな事をしなくてもwindowsに入っているフォントなら
EDGE2の文字の描画で簡単に書く事が出来ました^^ちょっと虫姫さまっぽいフォントやな〜と思ってコレにしてみました。
それと、画面下から出てくる敵なんかの為に、出てくる前の警告表示も作ってみました。
こんな感じでアニメさせています。
本当は下から出てくる敵も作るつもりだったのですが、この表示を作るだけで数時間掛かってしまい、敵まで作る元気がないので
もう寝ます^^;
カレンダー
| 02 | 2026/03 | 04 |
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事