HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0421
炎武初心者なんですが・・・7解決


炎武

リンク

2007/4/21(Sat) 21:48:57|NO.7653

英単語テストが簡単なゲームでできたら・・・と思い、粗末ですがいじり始めました。
タイピングゲームのサンプルがあったのでそれをコピー、参考にしつつ作ったのが

	title "英語問題"
randomize *first ;タイトル画面 cls 4 score=0 que=0 pos 60,50 : font "MS 明朝",99,2 : color 0,100,255 : mes "英語問題" pos 60,200: button "単語テスト",*start stop *start cls 4 *tango ;単語テスト出題準備 cursor=0 typemode=0 timer=100 m=rnd(3) if m=0 : mondai="subject":mondai2="主題,科目;被験者" if m=1 : mondai="objective":mondai2="客観的な" if m=2 : mondai="seldom":mondai2="滅多に…(し)ない" onkey gosub *typein *main ; ゲームメイン redraw 0 color 192,192,192:boxf font msgothic,16 color 0,0,0 pos 80,20:mes "残り時間:"+timer pos 80,40:mes "スコア:"+score font msgothic,30,1 color 0,120,160 pos 170,198:mes mondai2 pos 170,238:mes mondai pos 170,238:color 255,0,0:mes strmid(mondai,0,cursor) redraw 1 await 50 if typemode>0 : onkey 0 : goto *tango if timer<=0 : onkey 0 : goto *timeup timer=timer-1 goto *main *typein ; キーを押した時の処理 a=peek(mondai,cursor) if a!=iparam : goto *typemiss len=strlen(mondai) cursor=cursor+1:if cursor<len : return goto *win *typemiss ; ミスタッチをした時 return *win ; タイピング成功 typemode=1 que=que+1 score+=1 if que>=2 : goto *result goto *main *timeup ;時間内に回答できなかったとき que=que+1 pos 170,238 : font msgothic,30,1 : color 255,0,0 : mes mondai await 500 if que>=2 : goto *result goto *tango 

こんな感じのものです。
前後関係が悪いのではと思い、スクリプトの書き込みが多くなりました。すみません。
これを実行すると、時間が来て正解を表示することはできるのですが、
時間内に回答を入力しても反応がない・・・ということになってしまいます。
いろいろ読んでみたのですがよくわからず・・・
初歩的な質問かもしれませんが教えてくださると嬉しいです。

追記ですが、
上のスクリプトだと解答入力前に既に解答が表示されているということになりますが、
それはサンプルのタイピングゲームからコピーしてきたからで、後々消すつもりです。



この記事に返信する


KIMU

リンク

2007/4/21(Sat) 23:08:46|NO.7656

>時間内に回答を入力しても反応がない・・・ということになってしまいます。
これ↓関係の問題じゃない?
>2006/03/16 3.1b2
>onkey割り込み時のiparamの内容がキーコードだったものを文字コードとなるように修正。

アルファベット限定だけど、小文字なら
> if a!=iparam : goto *typemiss
これを

if a!=(iparam+32) : goto *typemiss
って、すると 3.0aでも一応反応する
(大文字なら+32が要らなくなるので処理を分ける必要がある)

3.1b9が出たみたいだから
そっちを使うのもいいかもしれない



GENKI

リンク

2007/4/22(Sun) 00:38:48|NO.7658

 このスクリプトでは、ラベル*resultがないので動作しません。
出来ればちゃんと動くものだと助かります。
さらに言うならスクリプト内の質問に関係ない余計な部分は削除してくれてると助かります。
スクリプトを見やすく整理して検討するのはデバッグ、プログラム作成の基本でもあります。

一応は一番最後に

*result mes "end!!" stop
と適当に追加したら動いたので、ちょっと見てみました。


> 時間内に回答を入力しても反応がない・・・ということになってしまいます。

 正解入れても動かなかったんじゃありませんか?
とりあえずこうしてみてください。

if m=0 : mondai="SUBJECT":mondai2="主題,科目;被験者" if m=1 : mondai="OBJECTIVE":mondai2="客観的な" if m=2 : mondai="SELDOM":mondai2="滅多に…(し)ない"


原因は…これ見てください。

b="A" : mes b+" = "+peek(b,0)
b="a" : mes b+" = "+peek(b,0)
onkey goto *lab
stop
*lab
mes "キーコード : "+wparam+", 文字コード : "+iparam
stop




 あっといい忘れてました。
出来ればタイトルは書き込みの本文と関連するような(内容がなんとなくわかるような)のにしてくれると助かります。



GENKI

リンク

2007/4/22(Sun) 00:39:47|NO.7659

うわあ…_| ̄|○
preタグ忘れてた。



KIMU

リンク

2007/4/22(Sun) 01:43:47|NO.7661

> if m=0 : mondai="SUBJECT":mondai2="主題,科目;被験者"
そっか、文字コードが送られて来てても大文字だけなのか・・・

>これ↓関係の問題じゃない?
すみません
これは的外れでした

GENKIさんのみたいに大文字にするかNO.7656に挙げた
+32して小文字の文字コードにしてpeek(mondai,cursor)で
取り出される数値に合うようにすれば旨くいきます。
(判定用は大文字にして表示用を小文字にしとけば楽かもしれない)



Irisawa

リンク

2007/4/22(Sun) 05:14:25|NO.7666


> pos 60,50 : font "MS 明朝",99,2 : color 0,100,255 : mes "英語問題"

因みに「MS 明朝」は「MS」が全角、そしてその後に半角スペースです。



炎武

リンク

2007/4/22(Sun) 06:10:16|NO.7670

大文字・小文字の扱いは別だったんですね。
考えてみればそうですね・・・。
ありがとうございました。

>スクリプトを見やすく整理して検討するのはデバッグ、プログラム作成の基本でもあります。
>タイトルは書き込みの本文と関連するような(内容がなんとなくわかるような)のにしてくれると助かります。
すみませんでした。
以後、気をつけます。

>因みに「MS 明朝」は「MS」が全角、そしてその後に半角スペースです。
あれ^^;ホントだ。
半角になってますね・・・。
ありがとうございます。



GENKI

リンク

2007/4/22(Sun) 12:40:59|NO.7675

 msminchoという手もありますね。
さらに言えば、かんたん入力を使えば間違えないですみます。

 大文字で見栄えが気になるならgetpathでp2に16を指定して小文字に変換することも出来ます。
また、API使えば相互変換できますが、まだ不馴れということなので混乱を避けるためこっちの方法はいまはふせときます。



ONION software Copyright 1997-2023(c) All rights reserved.