HSPでプログラミングの練習がてら作ってみた、ちょっとしたタイピングゲームです。内容はシンプルで、1分間ひたすら表示されるキーを押していくスタイル。 集中力と反射神経が試され、タイピングの練習にもなります!
| タイトル | 早打ち1分勝負 |
|---|---|
| ジャンル | タイピング |
| プレイ人数 | 1人 |
| 動作環境 | Windows11 (64bit) |
| AからZキー | タイプする |
|---|
下のリンクからファイルをダウンロードできます。
※ZIP形式で圧縮されてるので、使う前に解凍してね!
hayauti.zip
ゲームを起動すると、まずタイトル画面が表示されます。
いずれかのキーを押すと、いよいよスタート!
表示されるのは、キーボードの配列と同様のAからZ。
出てきたアルファベットに対して、正しいキーをポチッと押していきましょう。
制限時間は1分!その間にどれだけ多く打てるかチャレンジしてみてください。
時間が切れるとゲーム終了→タイトル画面に戻ります。集中力勝負です…!
#packopt name "typing_game"
title "早打ち1分勝負 - Speed Typing"
randomize
*start
cls
mode = 0 : score = 0 : target_char = "" : target_code = 0
result_flag = 0 ; 0:通常 1:正解 2:不正解
; キーボード配列の定義(QWERTY)
sdim k_rows, 64, 3
k_rows(0) = "QWERTYUIOP"
k_rows(1) = "ASDFGHJKL"
k_rows(2) = "ZXCVBNM"
; --- タイトル画面 ---
repeat
redraw 0
gradf 0, 0, ginfo_winx, ginfo_winy, 1, $440000, $000000
color 255, 255, 255 : font msgothic, 60, 1 : pos 110, 150 : mes "早打ち1分勝負"
font msgothic, 25, 1 : pos 170, 280
if (cnt / 30) \ 2 : color 200, 200, 200 : else : color 50, 50, 50
mes "PRESS ANY KEY TO START"
redraw 1
stick k, 0, 1
if k != 0 : break
wait 2
loop
wait 20
start_total_sec = gettime(4)*3600 + gettime(5)*60 + gettime(6)
limit_sec = 60
*main
current_total_sec = gettime(4)*3600 + gettime(5)*60 + gettime(6)
passed_sec = current_total_sec - start_total_sec
if passed_sec < 0 : passed_sec += 86400
time = limit_sec - passed_sec
if time <= 0 : time = 0 : goto *gameover
if mode = 0 : gosub *mondaisakusei
redraw 0
gosub *draw_ui
redraw 1
gosub *key_check
wait 2
goto *main
; --- UIの描画 ---
*draw_ui
gradf 0, 0, ginfo_winx, ginfo_winy, 1, $222222, $000000
color 40, 40, 40 : boxf 0, 0, 640, 80
color 255, 100, 0 : line 0, 80, 640, 80
font msgothic, 30, 1
pos 40, 25 : color 200, 200, 200 : mes "SCORE:"
pos 140, 25 : color 255, 255, 255 : mes strf("%04d", score)
pos 380, 25 : color 200, 200, 200 : mes "TIME:"
if time <= 10 : color 255, 50, 50 : else : color 255, 255, 255
pos 470, 25 : mes strf("%02d", time) + "s"
; メインのお題表示
font msgothic, 120, 1
pos 270, 120 : color 255, 255, 255 : mes target_char
; --- キーボードガイドの表示 ---
font msgothic, 20, 1
ky = 280 : k_size = 45
repeat 3
r_idx = cnt
row_str = k_rows(r_idx)
kx = 100 + (cnt * 20) ; 段ごとに少し右にずらす
repeat strlen(row_str)
char = strmid(row_str, cnt, 1)
; 今打つべきキーをハイライト
if char = target_char {
color 255, 255, 0 : boxf kx, ky, kx+k_size-5, ky+k_size-5
color 0, 0, 0
} else {
color 60, 60, 60 : boxf kx, ky, kx+k_size-5, ky+k_size-5
color 200, 200, 200
}
pos kx+15, ky+10 : mes char
kx += k_size
loop
ky += k_size
loop
; 正誤の重ね表示
if result_flag > 0 {
font msgothic, 200, 1
pos 220, 120
if result_flag = 1 : color 0, 255, 0 : mes "〇"
if result_flag = 2 : color 255, 0, 0 : mes "×"
}
return
; --- キー入力判定 ---
*key_check
if result_flag > 0 : return
; A(65)からZ(90)までのキーをチェック
pressed = -1
repeat 26, 65
getkey k, cnt
if k : pressed = cnt : break
loop
if pressed = -1 : return
if pressed = target_code {
score += 100
result_flag = 1
} else {
if score > 0 : score -= 50 ; 間違えると減点
result_flag = 2
}
redraw 0 : gosub *draw_ui : redraw 1
wait 15
result_flag = 0
mode = 0
return
; --- 問題作成 ---
*mondaisakusei
target_code = rnd(26) + 65 ; A-Zの文字コード
target_char = strf("%c", target_code)
mode = 1
return
; --- ゲームオーバー ---
*gameover
cls
color 0, 0, 0 : boxf
rank_msg = ""
if score < 1000 : rank_msg = "ひよこ級"
if score >= 1000 : rank_msg = "一般市民級"
if score >= 3000 : rank_msg = "タイピスト級"
if score >= 5000 : rank_msg = "プロ級"
if score >= 7000 : rank_msg = "神速級"
color 255, 215, 0 : font msgothic, 30, 1
pos 180, 100 : mes "=== 最終結果発表 ==="
font msgothic, 50, 1 : pos 120, 180
color 200, 200, 200 : mes "SCORE:"
color 255, 255, 255 : pos 320, 180 : mes strf("%04d", score)
font msgothic, 40, 1 : pos 120, 260
color 200, 200, 200 : mes "RANK :"
color 255, 255, 0 : pos 320, 260 : mes rank_msg
pos 200, 380 : font msgothic, 20 : color 255, 255, 255
mes "PRESS ANY KEY TO TITLE"
redraw 1
wait 100
loop_end = 0
repeat
stick k, 0, 1
if k != 0 : break
wait 2
loop
goto *start |