HSPで軽くタイピングゲーム製作
Web言語以外で始めて使う言語がこれになるわけですが。
3日間程勉強してとりあえず、基礎的な部分は抑えたので軽くタイピングゲームを作ってみました。
現在の所エフェクト効果は無いに等しいものですが、文字を入力して正しいと次のタイピングする文字が現れるというアルゴリズムのみ製作しました。
Sample : HSP
title "東方タイピングゲーム";
*open
pos 170,400;
objsize 300,30;
onkey *gameIf;
button "始める" , *game;
button "終了する" , *finish;
stop
*gameIf
if iparam = 13 : goto *game;
goto *open;
stop;
*game
cls;
R = 255 : G = 255 : B = 120; //カラーリストの生成:背景
R1 = 0 : G1 = 0 : B1 = 0; //カラーリストの生成:文字列
push = 0; //文字列の切り取り確認
name = 0; //タイピングする文字の番号
color R,G,B : boxf;
color R1,G1,B1;
font msgothic , 30 , 1;
*main
if name = 10 : goto *thend; //使用するタイプ対象の数
color R1,G1,B1;
pos 200,20;
type(0) = "RUMIA";
type(1) = "CIRNO";
type(2) = "HONMEIRIN";
type(3) = "PATCHOULIKNOWLEDGE";
type(4) = "IZAYOISAKUYA";
type(5) = "REMILIASCARLET";
type(6) = "FRANDLESCARLET";
type(7) = "LETTYWHITEROCK";
type(8) = "CHEN";
type(9) = "ALICEMARGATROID";
type(10) = "LILYWHITE";
mes type(name); //現在タイプしなければならない文字列の設定
*start
strlength = strlen(type(name)); //文字列の長さ取得する
date = strmid(type(name),push,1); //文字列の切り出し
onkey *down;
stop;
*down
string = strf("%c",iparam);
if date = string {
goto *hitting;
}
stop;
*hitting
push++;
if push = strlength{
push = 0;
name++;
color R,G,B;
boxf;
goto *main;
}
goto *start;
stop;
*thend
color 0,0,0;
mes "クリアしました";
stop;
*finish
end;
ざっとこんな感じです。
タイトル画面の始めるボタンを押すとゲームが始まります。
アルゴリズムは文字の部分的な参照を繰り返すといった感じです。
[flandlescarlet]の場合文字列を切り出してまず一文字目を参照してif文で照らし合わせtrueとなったら切り取り文字をシフト(繰り上げ)させて二文字目の[l]を参照させます。
最期にlengthで文字の長さを測っておき繰り上げの数と同じになったら次の単語を呼び出すという極めてシンプルな構造にしました。
そのためnとnnの扱いやsiやshiの扱いに小さい「つ」などの入力に誤差が出てしまいますが、それは後々解消していこうと思います。
HSPの感想としてはやはり、書くのが楽というよりかは簡易すぎて逆にやりづらく感じるものがありますね。
特にifで同等の値を参照するときに使う記号が==や!=でなく=や!であったり
while文にforにfunctionが存在していない(代替えできるものがある)など
通常の言語とかなり書き方が違うのも慣れが必要かなといった所です。
100行あればシミュレーションRPGを作れてしまうそうですので、期待は出来る言語ですね。