CANVAS 32,24,"TYPING"; ← ゲーム画面を作ります。よこ16マス、たて16マスの大きさです。
INT AB[24], HI=0; ← AB[0]~AB[23]を用意して、HIを0にします。
FOR; ←再ゲームの時の繰り返し開始位置です。
SC=0; ← 点数を0にします。
ARYSET AB,0,24,0; ← AB[0]~AB[23]をすべて0にします。
CLS@ 0; ← 画面を黒(色番号0)で消します。
FOR T=0,999999; ← ゲーム内時間を数えながら繰り返し処理をします。ゲームのメインループです。
IF T%5==0 THEN ← もしTが5の倍数なら、
SCROLL@ 32,22,0,1,0,1,1; ← 画面上の文字をすべて1マスだけ下に移動させます。
ARYMOVE AB,1,0,23; ← AB[0]~AB[22]の値を、AB[1]~AB[24]に代入します(画面の移動に合わせています)。
AB[1]=RND(26)+65; ← AB[1]に65~90のどれかの値を入れます。これは「A」~「Z」の文字コードです。
PRINT@ RND(32),1,2,0,"%c",AB[1]; ← AB[1]の文字コードに対応する文字を画面の上部にも書きます。どこに書くかは乱数で決めます。色は(2,0)なので黒地に緑です。
FI;
PRINT@ 8,0,7,0,"SCORE:%05d HIGH:%05d ",SC,HI; ← 点数とハイスコアを表示します。
I=UPPER(INKEY@WR(100)); ← 100ミリ秒(0.1秒)待った後に入力状態を確認します。もし小文字が入力されていたら大文字に変換します。
IF I!=0 THEN ← もし何か押されていたら、
SC--; ← まずとにかく1点引きます。
FOR J=23,0,-1; ← AB[]を23番から順番に見ていきます(=下から見ていきます)。
IF AB[J]==I THEN ← もしAB[]の中に一致するものがあったら、
AB[J]=0; ← AB[]の中から消します。
SC+=11; ← 点数を11点加算します。
HI=MAX(HI,SC); ← SCとHIのうち、大きいほうをHIとします。
CHARBOX@ 32,1,0,J,0,0,0; ← 入力された文字を画面からも消します。どこに書いたか覚えていないので、横一線を全部消します。
BREAK; ← AB[]の中から入力文字を探す繰り返し処理を終了させます。
FI;
NEXT;
FI;
IF AB[23]!=0 BREAK; ← もし一番下までアルファベットが落ちてしまったら、ゲームオーバーなのでメインループから抜けます。
NEXT;
WAITKEY@ 10; ← Enterキーを押すまで待ちます(=押したら最初のFORに戻るので再ゲームです)。
NEXT;
| 0:黒 | 1:青 | 2:みどり | 3:水色 | 4:赤 | 5:むらさき | 6:黄色 | 7:白 |
| 0:空白 | 1:四角 | 2:丸 | 3:バツ | 4:よこぼう | 5:たてぼう | 6:顔マーク | 7:ひしがた | 8:ななめせん | 9:ななめせん |
hlx>run typing.txt
#include <acl.c>
void aMain()
{
int i, j, t, sc, hi = 0, ab[24];
AWindow *w = aOpenWinEx(32, 24, "TYPING", 0);
for (;;) {
sc = 0;
aArySetInt(ab, 0, 24, 0);
aCls(w, 0);
for (t = 0;; t++) {
if (t % 5 == 0) {
aScroll(w, 32, 22, 0, 1, 0, 1, 1, 0, 0, 0);
aAryMovInt(ab, 1, 0, 23);
ab[1] = 'A' + aRnd(26);
aGrPrintf(w, aRnd(32), 1, 2, 0, "%c", ab[1]);
}
aGrPrintf(w, 8, 0, 7, 0, "SCORE:%05d HIGH:%05d ", sc, hi);
i = aUppercase(aInkey_waitR(w, 100));
if (i != 0) {
sc--;
for (j = 23; j >= 0; j--) {
if (ab[j] == i) {
ab[j] = 0;
aEchBox(w, 32, 1, 0, j, 0, 0, 0);
sc += 11;
hi = aMaxInt(hi, sc);
break;
}
}
}
if (ab[23] != 0) break;
}
aWaitKey(w, AKEY_ENTER);
}
}hlx>run typing.c
| コメント | お名前 | NameLink | |