まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今作っているゲームですがスクリプトが5000行を超えてしまっていて、色々と見難い状態でした。
しかも、まだ1面しか出来ていないのにコレでは、このままでは最終的に何行になるねん?といった具合です。
で、スクリプトの分割って出来へんのかなぁ?と思って色々と調べてみました。
やり方としては、#include命令を使うのが簡単そうです。
どうするかと言うと・・・
例えば
/////////////////////////
mes "STG"
/////////////////////////
を1.hspと言うファイル名で保存します。
次に
/////////////////////////
mes "シューティング"
#include "1.hsp"
/////////////////////////
を実行してみると・・・
*******************
シューティング
STG
*******************
1.hspを読み込んで、実行してくれます^^
なので、コレの応用で外部ファイルにしたい部分を〜.hspとして保存して、その抜けた部分に#include "〜.hsp"と記述すればOK。
これで、好きなように分割できますね^^
ステージごとにタイムテーブルを分けて読み込み〜みたいな使い方も出来そうで、良かったです。
しかも、まだ1面しか出来ていないのにコレでは、このままでは最終的に何行になるねん?といった具合です。
で、スクリプトの分割って出来へんのかなぁ?と思って色々と調べてみました。
やり方としては、#include命令を使うのが簡単そうです。
どうするかと言うと・・・
例えば
/////////////////////////
mes "STG"
/////////////////////////
を1.hspと言うファイル名で保存します。
次に
/////////////////////////
mes "シューティング"
#include "1.hsp"
/////////////////////////
を実行してみると・・・
*******************
シューティング
STG
*******************
1.hspを読み込んで、実行してくれます^^
なので、コレの応用で外部ファイルにしたい部分を〜.hspとして保存して、その抜けた部分に#include "〜.hsp"と記述すればOK。
これで、好きなように分割できますね^^
ステージごとにタイムテーブルを分けて読み込み〜みたいな使い方も出来そうで、良かったです。
PR
この記事にコメントする
無題
>#include
お久しぶりです^^
遅れながら一面完成おめでとうございます!
#includeは意外と簡単なんですね
存在はしってましたが今迄敬遠しとりました^^;
これを使いこなせばだいぶ見やすくなりそうです
早速勉強しないとですね^^
お久しぶりです^^
遅れながら一面完成おめでとうございます!
#includeは意外と簡単なんですね
存在はしってましたが今迄敬遠しとりました^^;
これを使いこなせばだいぶ見やすくなりそうです
早速勉強しないとですね^^
無題
どもです〜。
私も#includeは結構ややこしいのかと思ってたのですが、意外と簡単?でした^^
#moduleとか#defineとかも使ってる人が多そうなので、たぶん使えば便利なんだろうな〜と思ってるんですが、
なかなか理解出来ません(汗)
私も#includeは結構ややこしいのかと思ってたのですが、意外と簡単?でした^^
#moduleとか#defineとかも使ってる人が多そうなので、たぶん使えば便利なんだろうな〜と思ってるんですが、
なかなか理解出来ません(汗)
無題
はじめまして!僕もSTGを作りたいな!と思い参考ページを見つけていたらココを見つけました!
でもプログラムを始めてみたいといっても難しいですね。いったいどのように組んでいったら良いか判りません。大体どんな感じに組んで行ってるんですか?
自機の動き
自機の弾
敵の動き
敵の弾
のような感じでしょうか?
でもプログラムを始めてみたいといっても難しいですね。いったいどのように組んでいったら良いか判りません。大体どんな感じに組んで行ってるんですか?
自機の動き
自機の弾
敵の動き
敵の弾
のような感じでしょうか?
無題
よーぐるとさん>
はじめまして。
順番としては大体そんな感じですが、私の場合はgosubで全部分けて処理しています。
簡単に書くと↓こんな感じです。
*main
*gosub スクロール処理
*gosub タイムテーブル読み込み
*gosub 自機移動
*gosub 自機の弾
*gosub 敵移動
*gosub 敵の弾
*gosub 当り判定
*gosub スコア表示
await 16
goto *main
と言う感じで処理しています。
gosubを使わずに全部まとめて書いていった方が良さそうですが、後でスクリプトを手直しする時や
バグチェックをする時など、gosubで処理を分けていた方が見やすいと思います。
ただ私も勉強し始めて数ヶ月なので、正しいのかどうかは良くわかってませんので、他の解説サイトさんを参考にされた方が良いかもです^^;
私のお勧めはリンク先にもある窓々遊々さんのHSP講座が非常に判りやすくてお勧めですよ^^
はじめまして。
順番としては大体そんな感じですが、私の場合はgosubで全部分けて処理しています。
簡単に書くと↓こんな感じです。
*main
*gosub スクロール処理
*gosub タイムテーブル読み込み
*gosub 自機移動
*gosub 自機の弾
*gosub 敵移動
*gosub 敵の弾
*gosub 当り判定
*gosub スコア表示
await 16
goto *main
と言う感じで処理しています。
gosubを使わずに全部まとめて書いていった方が良さそうですが、後でスクリプトを手直しする時や
バグチェックをする時など、gosubで処理を分けていた方が見やすいと思います。
ただ私も勉強し始めて数ヶ月なので、正しいのかどうかは良くわかってませんので、他の解説サイトさんを参考にされた方が良いかもです^^;
私のお勧めはリンク先にもある窓々遊々さんのHSP講座が非常に判りやすくてお勧めですよ^^
無題
有難うございます!
なるほどgosubで区切っていくと確かに後で直すときとかも楽かもしれませんね!
でたびたびすみませんが時機の弾と敵の種類のスクリプトとかは何個も入れるわけですがそういう場合も一つずつ確認してまたもう一個入のスクリプトを入れていくような感じでしょうか?
なるほどgosubで区切っていくと確かに後で直すときとかも楽かもしれませんね!
でたびたびすみませんが時機の弾と敵の種類のスクリプトとかは何個も入れるわけですがそういう場合も一つずつ確認してまたもう一個入のスクリプトを入れていくような感じでしょうか?
無題
う〜ん・・・スクリプトを作るのにコレといった決まりがある訳じゃないので
自分のわかりやすいように作るのが良いんじゃないでしょうか?
あんまり分けすぎても、わかりにくいですしねぇ。
私の場合は敵ごとに分けていますが、ネストしすぎなのもあまり良いとは言えませんし
作りながら考えていくのが良いんじゃないでしょうか?
自分のわかりやすいように作るのが良いんじゃないでしょうか?
あんまり分けすぎても、わかりにくいですしねぇ。
私の場合は敵ごとに分けていますが、ネストしすぎなのもあまり良いとは言えませんし
作りながら考えていくのが良いんじゃないでしょうか?
無題
はじめまして
ジャンルは違いますが…(SLG+ADV)
テキストを一行ずつ解析して処理させてます
シューティングならスクリプト書いた方がいいかもしれないですね。
でも、敵の行動ルーチンとかをスクリプトで書いてステージファイル(text)を解析・処理させればステージファイルを用意するだけで新しいステージができたら楽かなぁと思ったり…
シューティングゲームのプログラムは1回きりの使い捨てなのかなぁ…
よくわからなくてごめんなさい
repeat
wait 1
sdim text_one,1024;一行分のテキストを入れる
noteget t_one,line_now;テキストから一行読みだし
line_now++;次の行へ
n=instr(text_one,0,"MSG:"):if(n>=0):gosub *MSG:continue;メッセージ表示
・
・
・
n=instr(text_one,0,"BGM:"):if(n>=0):gosub *BGM:continue;BGM演奏
loop
ジャンルは違いますが…(SLG+ADV)
テキストを一行ずつ解析して処理させてます
シューティングならスクリプト書いた方がいいかもしれないですね。
でも、敵の行動ルーチンとかをスクリプトで書いてステージファイル(text)を解析・処理させればステージファイルを用意するだけで新しいステージができたら楽かなぁと思ったり…
シューティングゲームのプログラムは1回きりの使い捨てなのかなぁ…
よくわからなくてごめんなさい
repeat
wait 1
sdim text_one,1024;一行分のテキストを入れる
noteget t_one,line_now;テキストから一行読みだし
line_now++;次の行へ
n=instr(text_one,0,"MSG:"):if(n>=0):gosub *MSG:continue;メッセージ表示
・
・
・
n=instr(text_one,0,"BGM:"):if(n>=0):gosub *BGM:continue;BGM演奏
loop
カレンダー
10 | 2024/11 | 12 |
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 |
リンク
カテゴリー
最新記事
(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が特に好きで、並木学氏は最高!
ブログ内検索
最古記事