flandlescarlet's diary【情報工学生の備忘録】

元機械工学科所属だった情報工学生です。JavaScriptで適当に何かを作ったり、絵を描いていたりします。

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を作れてしまうそうですので、期待は出来る言語ですね。