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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1216
M・S制限時間が元に戻る3解決


M・S

リンク

2009/12/16(Wed) 22:49:20|NO.29303

タイピングゲームを作成中ですがtimerni問題?がありタイプミス、タイプ成功のとき
timerが元の設定した150にもどってしまいます。これをタイプミス、タイプ成功のとき元に戻らず
そのまま時間を進めるにはどうしたらいいですか?


*Roots
cls
title "タイピングで遊ぼう"
picload"sozai15.jpg",1
pos 255,150
button"初級",*start
button"中級",*start2
button"上級",*start3
pos 150,100
font msgothic,40
mes"難易度を選んでください"
stop
*start
; ゲーム開始
score=0
mmload"静.wav", 1,1
mmplay 1
*greset
; 問題の準備
clrobj
cursor=0
timer=150
typemode=0
m=rnd(13)
if m=0 : mondai="MESSENZUA-":mondai2="メッセンジャー"
if m=1 : mondai="DOKYUMENTO":mondai2="ドキュメント"
if m=2 : mondai="GIMIKKU":mondai2="ギミック"
if m=3 : mondai="ASA":mondai2="朝"
if m=4 : mondai="HAGURUMA":mondai2="歯車"
if m=5 : mondai="HIKARI":mondai2="光"
if m=6 : mondai="YORU":mondai2="夜"
if m=7 : mondai="YUUHI":mondai2="夕日"
if m=8 : mondai="HIGURASI":mondai2="蜩"
if m=9 : mondai="BANANA":mondai2="バナナ"
if m=10 : mondai="REMON":mondai2="レモン"
if m=11 : mondai="KARINTOU":mondai2="かりんとう"
if m=12 : mondai="KAMINARI":mondai2="雷"
onkey gosub *typein
*main
; ゲームメイン
redraw 0
color 100,0,50:boxf
font msgothic,18
color 0,0,255
pos 0,0
picload"青い空.jpg",1
pos 80,80:mes "残り時間:"+timer
pos 80,60: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,100:mes strmid(mondai,0,cursor)
redraw 1
await 50
if typemode>0 : onkey 0 : goto *greset
if timer<=0 : onkey 0 : goto *gameover
timer=timer-1
goto *main
*gameover
onkey 0
dialog "END"
end
*typein
; キーを押した時の処理
a=peek(mondai,cursor)
if a!=iparam : goto *typemiss
len=strlen(mondai)
cursor=cursor+1:if cursor<len : return
goto *win
*typemiss
; ミスタッチをした時
typemode=1
score-=5
return
*win
; タイピング成功
typemode=2
score+=10
return



この記事に返信する


SYAM

リンク

2009/12/16(Wed) 23:36:16|NO.29306

せめて動くスクリプトを貼っていただかないことには、
スクリプトだけを目視確認して、見たこともないソフトの動きを予測しないといけなくなってしまいます。。。
当然、適切な回答が得にくくなって損するのは質問者さんの方、ってことになっちゃいますから、次からはとりあえず動きがわかるようなスクリプトをお願いします。


で、タイマーについてですが
問題を設定するときに一緒に変数 timer を設定してますよね。当然、問題が変わるごとにtimerは 150 になります。
これを戻らないようにするなら、最初に一回だけ timer=150の代入をしておいて、問題を設定するときには timer をいじらないようにするだけです。
次の問題を出すのはどうやらラベル *greset あたりのようですから、timer=150 をそれより前に持っていけばいいんじゃないでしょうか。



窓口

リンク

2009/12/17(Thu) 00:55:06|NO.29309

余計なお世話かもしれませんが、sdim命令、または配列変数を覚えたら幸せになれる気がします。
ヘルプで、sdimを検索
HSP3プログラミング・マニュアルで 配列変数の項を参照してみてください。

一応サンプルを置いておきます。

; string(0,0) = "fairu" ; string(1,0) = "ファイル" ; と同じ意味。 ; ↓ string(0,0) = "fairu","ファイル" string(0,1) = "ka-soru","カーソル" string(0,2) = "tu-ru","ツール" string(0,3) = "hyouji","表示" string(0,4) = "gaibutu-ru","外部ツール" string(0,5) = "kennsaku","検索" ; 配列の二番目の要素数を取得 ; 問題を後から増やす場合に出題数の定数を操作する必要が無い。 ; ↓ max = length2(string) repeat index = rnd(max) dialog string(0,index) +"\n"+ string(1,index), 2 ,"index="+index + " : " +"[いいえ]で終了" if stat = 7 : end loop



M・S

リンク

2009/12/17(Thu) 16:51:30|NO.29315

ありがとうございます解決しました。



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