> ・変数、関数、定数等の命名規則について
こちらはネットで良く話題になってる問題ですね。
・プログラミング作法
http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E4%BD%9C%E6%B3%95
・Visual Basic のコーディング規則
http://msdn.microsoft.com/ja-jp/library/h63fsef3.aspx
・C# のコーディング規則 (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/ff926074.aspx
↑
これらは「コーディング規則」検索した上位3つです。
HSPは構造体が利用できないため変数名・関数名の最初を統一するのが望ましいと私は考えます。
去年、腕試しでシューティングを作成した時は次のようになりました。
まずは変数
// 自機
FightDebug
FightLeft
FightBomb
FightHead
FightTail
// 敵機
EnemyBirthCycle
EnemyHead
EnemyTail
// 爆風
BlastHead
BlastTail
// 自機弾
ShotHead
ShotTail
// 敵機弾
BeamHead
BeamTail
// アイテム
ItemHead
ItemTail
// 流星
StarBirthCycle
StarHead
StarTail
// その他
Score
HiScore
DebugMode
// 一時変数
key
r
g
b
i
p
q
pp
qq
m
n
x
y
cx
cy
ex
ey
続いてラベル名
*Init
*Main
*ShootingInit
*ShootingMove
*ShootingDraw
*FightInit
*FightMove
*FightDraw
*EnemyInit
*EnemyFlush
*EnemyBirth
*EnemyMove
*EnemyDraw
*ShotBirth
*ShotMove
*ShotDraw
*BeamFlush
*BeamBirth
*BeamMove
*BeamDraw
*ItemAuto1
*ItemAuto2
*ItemMove
*ItemDraw
*StarBirth
*StarMove
*StarDraw
*BlastMove
*BlastDraw
*CrashMain
*TelopDraw
*DebugInit
*DebugChainCheck
*DebugChainClear
*DebugErrorClear
*DebugAllClear
*DebugDraw
続いてユーザ定義命令
#deffunc ObjectClear var _head_,var _tail_,local _curs_,local _next_
#deffunc FightCrash int _x_,int _y_
#deffunc FightDeath int _cx_,int _cy_
#deffunc FightBirth int _x_,int _y_
#deffunc EnemyCrash int _x_,int _y_,int _item_
#deffunc ItemBirth int _cx_,int _cy_,int _item_
#deffunc ItemCrash int _x_,int _y_,int _item_
#deffunc BlastBirth int _cx_,int _cy_,int _type_,int _data_
#deffunc ScoreCalc int _score_
#deffunc TelopPuts int _x_,int _y_,str _msg_
#deffunc DebugChainDelete int _debug_,int _head_,int _tail_,local _prev_,local _curs_
#deffunc DebugObjectDraw int _top_
続いてユーザ定義関数
#defcfunc ObjectAlloc
#defcfunc ObjectInsert var _head_,var _tail_,var _curs_,int _debug_
#defcfunc ObjectAppend var _head_,var _tail_,var _curs_,int _debug_
#defcfunc ObjectDelete var _head_,var _tail_,int _prev_,int _curs_,local _next_
#defcfunc CrashFightCheck int _cx_,int _cy_,int _ex_,int _ey_
#defcfunc CrashEnemyCheck int _cx_,int _cy_,int _ex_,int _ey_
#defcfunc CrashShotCheck int _cx_,int _cy_,int _ex_,int _ey_
#defcfunc CrashBeamCheck int _cx_,int _cy_,int _ex_,int _ey_
#defcfunc CrashItemCheck int _cx_,int _cy_,int _ex_,int _ey_
このような感じで、私は先頭をある単語で統一します。
> ・ファイルの分割の仕方
これも上記の名前で分割します。
Shooting.hsp メイン
Crash.as 当たり判定
Fight.as 自機(初期化、移動、描画、衝突判定など)
Enemy.as 敵機(〃)
Shot.as 自機弾(〃)
Beam.as 敵機弾(〃)
Item.as アイテム(〃)
Star.as 流星(〃)
Blast.as 爆発アニメ(〃)
Telop.as テロップ(スコアなども含む)
Debug.as デバッグ(変数・配列・単方向リスト閲覧など)
> ・デバッグをどのようにすると効率がいいか
#if、#endif と _debug を組み合わせてデバッグ中のユーザ定義命令を実行するなど。
> ・外部にファイルを出力する時中身をどう書くか
一概に言えませんね。
一覧表出力、変数名+値、クリップボード出力、logmes出力などを使います。
> ・その他小技等なんでも
一杯ありますが、書き切れません。
> ちなみに、コンテストに向けてローグライクゲームを鋭意制作中です(宣伝)
懐かしいですね。
> ファイル分割をした結果49個のhspファイルが……。ごちゃごちゃしてきて大変なことに('A`)
でしょうね。
ファイル分割+フォルダ分割で管理するしかない。
また、私はメインのファイルは .hsp の拡張子を使い、
#include命令で読み込むファイルは .as の拡張子を使ってます。
どんなにファイルが多くても
ファイル命名規則、
フォルダ分割規則、
変数名、配列名の命名規則を
しっかりすれば良いのです。
記号定数、列挙定数には、大文字で統一するのが一般(C/C++出身なので)
ユーザ定義命令、ユーザ定義関数の引数には下線文字を追加
ユーザ定義命令、ユーザ定義関数は単語の最初だけ大文字に統一(下線文字を使う方法もあるよ)
さらに記号定数、列挙定数をまとめた Const.as を用意。
グローバル変数、グローバル配列をまとめた Value.as を用意。
メインの Shooting.hsp の上部で
#include "Const.as"
#include "Value.as"
で組み込みます。
その後に
#include "Fight/Fight.as"
#include "Fight/Shot.as"
#include "Enemy/Enemy.as"
#include "Enemy/Beam.as"
でフォルダ付きで組み込みます。
あと繰り返し命令内を高速になる工夫や、
文字列処理を外部の dll で用意するとか。
なお、dll はC/C++言語で作りますけどね。