まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
タイムテーブルを作って行こうとしていたのですが、ある程度ゲームシステムを作っておかないと、後々の修正が大変そうだと思って
ゲームシステムをちょっと考えてみる事にしました。
で、とりあえずコンボゲージを追加しました。(スコアの下のゲージです)

敵に自機弾が当るとゲージが増えるようにし、当っていないときはゲージが減るようにしています。
はい、思いっきり怒首領蜂です(汗)
でも、まだゲージを作っただけでどのように活用していくかを検討中なので、怒首領蜂と同じやん、て事にはならないように・・・したい^^;
ゲージ自体は敵に弾が当ったり倒したりした時に↓このようなスクリプトを書いて
combo=combo+5
if combo>200 : combo=200
表示は↓こんな感じで表示させています。
*combogauge
pos 416,105
gmode 0,224,24
es_copy 5,0,168;ゲージの枠表示
if combo>50 : color 99,255,8;ゲージが50以上の時は緑色
if combo<50 : color 255,12,8;ゲージが50以下の時は赤色
es_boxf 428,110,combo+428,123;ゲージ表示
return
これをどうやって点数とからめるかが問題ですね・・・
出来れば稼ぐと難易度が上がるように使いたいんですが。
ゲームシステムをちょっと考えてみる事にしました。
で、とりあえずコンボゲージを追加しました。(スコアの下のゲージです)
敵に自機弾が当るとゲージが増えるようにし、当っていないときはゲージが減るようにしています。
はい、思いっきり怒首領蜂です(汗)
でも、まだゲージを作っただけでどのように活用していくかを検討中なので、怒首領蜂と同じやん、て事にはならないように・・・したい^^;
ゲージ自体は敵に弾が当ったり倒したりした時に↓このようなスクリプトを書いて
combo=combo+5
if combo>200 : combo=200
表示は↓こんな感じで表示させています。
*combogauge
pos 416,105
gmode 0,224,24
es_copy 5,0,168;ゲージの枠表示
if combo>50 : color 99,255,8;ゲージが50以上の時は緑色
if combo<50 : color 255,12,8;ゲージが50以下の時は赤色
es_boxf 428,110,combo+428,123;ゲージ表示
return
これをどうやって点数とからめるかが問題ですね・・・
出来れば稼ぐと難易度が上がるように使いたいんですが。
PR
ある程度の敵の数も出来て来たので、本格的にタイムテーブルを作っていっていたのですが、ちょっと問題が発生しました。
私は敵の弾を発射する為の変数を、全ての敵で同じ変数を使用していた為に、1種類づつ表示させていると問題ないのですが
複数同時に出現させると弾の発射角度や、発射時間などがバラバラになってしまう事に今更気づきました(汗)
まぁ当然と言えば当然です^^;
なので敵の種類ごとに専用の変数を作って管理する為に、スクリプトを書き直ししたのですが、既に10種類作っていたので大変でした・・・
試しに、この10種類の敵全てを一度に表示させてみたのですが、なかなか上手く動いてくれて一安心です。
しかもFPSも全然落ちる事がなかったのが嬉しい誤算でした^^

こんな感じです。
全くゲームにはなってませんが、処理落ちする事無く動いてくれてます^^
私は敵の弾を発射する為の変数を、全ての敵で同じ変数を使用していた為に、1種類づつ表示させていると問題ないのですが
複数同時に出現させると弾の発射角度や、発射時間などがバラバラになってしまう事に今更気づきました(汗)
まぁ当然と言えば当然です^^;
なので敵の種類ごとに専用の変数を作って管理する為に、スクリプトを書き直ししたのですが、既に10種類作っていたので大変でした・・・
試しに、この10種類の敵全てを一度に表示させてみたのですが、なかなか上手く動いてくれて一安心です。
しかもFPSも全然落ちる事がなかったのが嬉しい誤算でした^^
こんな感じです。
全くゲームにはなってませんが、処理落ちする事無く動いてくれてます^^
昨日作っていた敵を完成させました。まぁ全ての敵において暫定ですが^^;
まず、自機狙い弾を中心として5方向に弾を撃ってきます。良くある最初に遅い弾を発射して、それを速い弾が追い越していくような弾です。

次にジグザグに5連の弾を撃ってきて、こんなの避けれねーよと思って撃っていくと避ける前に破壊して弾消去・・・
みたいなのをイメージして作りましたが、思いっきりCAVEシューですね(汗)

しかし今の状態では、ただ弾を撃って敵を破壊するだけのゲームなので、もっとゲームシステムをなんとかしたいのですが
なかなか良いアイデアが思い浮かびません。
まぁそんな事よりもゲームとして遊べるように、とりあえず1面完成を目指して頑張ろうと思っています。しかし先は長いなぁ〜^^;
まず、自機狙い弾を中心として5方向に弾を撃ってきます。良くある最初に遅い弾を発射して、それを速い弾が追い越していくような弾です。
次にジグザグに5連の弾を撃ってきて、こんなの避けれねーよと思って撃っていくと避ける前に破壊して弾消去・・・
みたいなのをイメージして作りましたが、思いっきりCAVEシューですね(汗)
しかし今の状態では、ただ弾を撃って敵を破壊するだけのゲームなので、もっとゲームシステムをなんとかしたいのですが
なかなか良いアイデアが思い浮かびません。
まぁそんな事よりもゲームとして遊べるように、とりあえず1面完成を目指して頑張ろうと思っています。しかし先は長いなぁ〜^^;
色々と落ち着いて来たので、ボチボチ作製を再開しようかと思っています。
最初に作り始めたのが問題のレーザーだったのですが、これがまた上手く行かなくて試行錯誤を繰り返しているのですが全く上手く出来ません(汗)
最初はes_posで短いレーザーを連続表示して自機が動いた時にはその移動量をレーザー座標にプラスして動かそうとしたんですが上手くいかず
次にes_effectで一つの画像を縦に拡大させて表示するも当り判定でつまづき全然上手く出来ません・・・
なので、出来ない事で今やる必要がない事は後回しにする事にしているので、とりあえず保留。
暫定でレーザー画像を回転させてそれっぽく見えるようにしました。画像じゃわかりにくいですけどね^^;
それと新しい敵を作成中。
遅い弾幕を撃ってくる敵で、倒すと敵弾を全て消去する敵を作ってます。

この弾消去ですが、今まで弾消去する度に消去のスクリプトを書いていたのですが、そんな事しなくても弾消去スクリプトを別で書いておいて
消去したい時にgosubで飛ばせば良い事に気づきました^^
具体的には↓こんな感じで書いています。
*************************************
tamasyoukyocnt--
if tamasyoukyocnt>0 : gosub *tamasyoukyo
;メインルーチンに↑コレを入れておく
tamasyoukyont=100
;消去する時に↑コレをかけば100フレームは弾が消去される
*tamasyoukyo
tama=0
repeat
es_find tama,32,tama
if tama=-1 : break
es_get tx,tama,3 ;x座標取得
es_get ty,tama,5 ;y座標取得
es_kill tama ; 敵弾消失
es_exnew temp,1,499
if temp=-1 : break
if ename.tama=1:es_set temp,tx,ty,74
if ename.tama=2:es_set temp,tx,ty,68
if ename.tama=3:es_set temp,tx,ty,112
if ename.tama=4:es_set temp,tx,ty,68
es_adir temp,eh.tama,200
es_flag temp,%1000001100100000
if ename.tama=4:es_effect temp,16,16,0,0,0,ESB_ADD,256
tama++
loop
return
*************************************
これのおかげで、かなりスクリプトを短くする事が出来ました^^
と言っても既に2000行くらいあるんですが(汗)
最初に作り始めたのが問題のレーザーだったのですが、これがまた上手く行かなくて試行錯誤を繰り返しているのですが全く上手く出来ません(汗)
最初はes_posで短いレーザーを連続表示して自機が動いた時にはその移動量をレーザー座標にプラスして動かそうとしたんですが上手くいかず
次にes_effectで一つの画像を縦に拡大させて表示するも当り判定でつまづき全然上手く出来ません・・・
なので、出来ない事で今やる必要がない事は後回しにする事にしているので、とりあえず保留。
暫定でレーザー画像を回転させてそれっぽく見えるようにしました。画像じゃわかりにくいですけどね^^;
それと新しい敵を作成中。
遅い弾幕を撃ってくる敵で、倒すと敵弾を全て消去する敵を作ってます。
この弾消去ですが、今まで弾消去する度に消去のスクリプトを書いていたのですが、そんな事しなくても弾消去スクリプトを別で書いておいて
消去したい時にgosubで飛ばせば良い事に気づきました^^
具体的には↓こんな感じで書いています。
*************************************
tamasyoukyocnt--
if tamasyoukyocnt>0 : gosub *tamasyoukyo
;メインルーチンに↑コレを入れておく
tamasyoukyont=100
;消去する時に↑コレをかけば100フレームは弾が消去される
*tamasyoukyo
tama=0
repeat
es_find tama,32,tama
if tama=-1 : break
es_get tx,tama,3 ;x座標取得
es_get ty,tama,5 ;y座標取得
es_kill tama ; 敵弾消失
es_exnew temp,1,499
if temp=-1 : break
if ename.tama=1:es_set temp,tx,ty,74
if ename.tama=2:es_set temp,tx,ty,68
if ename.tama=3:es_set temp,tx,ty,112
if ename.tama=4:es_set temp,tx,ty,68
es_adir temp,eh.tama,200
es_flag temp,%1000001100100000
if ename.tama=4:es_effect temp,16,16,0,0,0,ESB_ADD,256
tama++
loop
return
*************************************
これのおかげで、かなりスクリプトを短くする事が出来ました^^
と言っても既に2000行くらいあるんですが(汗)
久々の更新です。
ちょっと仕事や私生活の方が忙しくてなかなかパソコンが弄れない状態なので、ゲーム作製の方の進行スピードが落ちそうな感じです。
ホントは間空くと忘れてしまうので、いっきにやりたんですが・・・
とりあえず、自機のレーザーを作っていました。

これも、es_effectのESB_ADDで表示させています。
ただ、短いレーザーを繋げて表示しているので、自機が動いていない時は良いのですが、自機が動いてしまうと・・・

こんな感じになってしまいます^^;
自機が動いた時に、レーザーも動かせば良いのだと思うのですが、es_adir命令でレーザーを動かしているので
どうしたもんだか・・・て感じです。
ちょっと仕事や私生活の方が忙しくてなかなかパソコンが弄れない状態なので、ゲーム作製の方の進行スピードが落ちそうな感じです。
ホントは間空くと忘れてしまうので、いっきにやりたんですが・・・
とりあえず、自機のレーザーを作っていました。
これも、es_effectのESB_ADDで表示させています。
ただ、短いレーザーを繋げて表示しているので、自機が動いていない時は良いのですが、自機が動いてしまうと・・・
こんな感じになってしまいます^^;
自機が動いた時に、レーザーも動かせば良いのだと思うのですが、es_adir命令でレーザーを動かしているので
どうしたもんだか・・・て感じです。
カレンダー
| 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が特に好きで、並木学氏は最高!
ブログ内検索
最古記事