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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1219
M・S3スコアの合格点?を出したい4解決


M・S3

リンク

2009/12/19(Sat) 01:30:08|NO.29343

タイピングゲームでスコアによっていろいろな言葉を終了時に画面に出力するには
どのようにすればいいですか?
ソースはこれです

*Roots cls title "タイピングで遊ぼう" pos 255,150 button"初級",*start oShokyu = stat //初級ボタンのオブジェクトID pos 255,200 button"中級",*start oChukyu = stat //中級ボタンのオブジェクトID pos 255,250 button"上級",*start oJokyu = stat //上級ボタンのオブジェクトID pos 150,100 font msgothic,40 color 250,100,0 mes"難易度を選んでください" stop *start ; ゲーム開始 if (stat = oShokyu) :level = 0 //初級 if (stat = oChukyu) :level = 1 //中級 if (stat = oJokyu) :level = 2 //上級 clrobj timer = 150 *greset ; 問題の準備 cursor=0 typemode=0 m=rnd(13) if (level=0) { if m=0 : mondai="RINGO":mondai2="リンゴ" if m=1 : mondai="AME":mondai2="雨" if m=2 : mondai="SYARIN":mondai2="車輪" if m=3 : mondai="ASA":mondai2="朝" if m=4 : mondai="HAGURUMA":mondai2="歯車" if m=5 : mondai="HIKARI":mondai2="光" if m=6 : mondai="DORAEMON":mondai2="ドラエもん" if m=7 : mondai="YUUGURE":mondai2="夕暮れ" if m=8 : mondai="HIGURASI":mondai2="蜩" if m=9 : mondai="DORAIBU":mondai2="ドライブ" if m=10 : mondai="REMON":mondai2="レモン" if m=11 : mondai="KARINTOU":mondai2="かりんとう" if m=12 : mondai="KAMINARI":mondai2="雷" } if (level=1) { if m=0 : mondai="MESSENZUA-":mondai2="メッセンジャー" if m=1 : mondai="DOKYUMENTO":mondai2="ドキュメント" if m=2 : mondai="GIMIKKU":mondai2="ギミック" if m=3 : mondai="MASSE-ZI":mondai2="メッセージ" if m=4 : mondai="HURU-TU":mondai2="フルーツ" if m=5 : mondai="SUI-TU":mondai2="スイーツ" if m=6 : mondai="DAUNRO-DO":mondai2="ダウンロード" if m=7 : mondai="YUUHI":mondai2="アップロード" if m=8 : mondai="SYANDERIA":mondai2="シャンデリア" if m=9 : mondai="SUNO-":mondai2="スノー" if m=10 : mondai="REMON":mondai2="レモン" if m=11 : mondai="MASUKATTO":mondai2="マスカット" if m=12 : mondai="MU-ZIKKU":mondai2="ミュージック" } if (level=2) { if m=0 : mondai="SAIOUGAUMA":mondai2="塞翁が馬" if m=1 : mondai="HUURINKAZAN":mondai2="風林火山" if m=2 : mondai="MEIKYOUSISUI":mondai2="明鏡止水" if m=3 : mondai="RUIHATOMOWOYOBU":mondai2="類は友を呼ぶ" if m=4 : mondai="NIKUWOKIRASETEHONEWOTATU":mondai2="肉を切らせて骨を断つ" if m=5 : mondai="ASUNOHYAKUYORIKYOUNOGOZYUU":mondai2="明日の百より今日の五十" if m=6 : mondai="ITIGOUITIE":mondai2="一期一会" if m=7 : mondai="AOHAAIYORIIDETEAIYORIAOSI":mondai2="青は藍より出でて藍より青し" if m=8 : mondai="AKUZISENRIWOHASIRU":mondai2="悪事千里を走る" if m=9 : mondai="ASAOKIHASANMONNOTOKU":mondai2="朝起きは三文の徳" if m=10 : mondai="AMADAREISIWOUGATU":mondai2="雨垂れ石を穿つ" if m=11 : mondai="IUHAYASUKUOKONAUHAKATASI":mondai2="言うは易く行うは難し" if m=12 : mondai="USOKARADETAMAKOTO":mondai2="嘘から出た真" } onkey gosub *typein *main ; ゲームメイン redraw 0 color 100,0,50:boxf font msgothic,18 color 0,0,255 pos 0,0 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
(tsukaさんのスクリプトのままですいません)



この記事に返信する


SYAM

リンク

2009/12/19(Sat) 07:59:11|NO.29344

if 構文をつかって、スコアによって違う文章を表示するようにしたらよいです。

ちょい乱暴ですが


if score<5 : mes "5点未満" : goto *owari if score<10 : mes "5点以上10点未満" : goto *owari mes "10点以上" *owari



SYAM

リンク

2009/12/19(Sat) 08:07:24|NO.29345

…ソレと。やりたいことを他人に丸投げしてると、自分でできるようになれません。
丸投げで完成させるくらいなら自分で作る意味が薄ーくなっちゃいます。
もうすこし自分でがんばってみて、やり方ではなく「わからないところ」を質問するようにした方が、後々のためだと思いますよ。

また、前のスレッドで他の方から「配列変数」を使えと指摘されていませんでしたか。
このまま行くよりも、いったんストップして今のうちに配列変数を使えるようにした方が間違いなくラクです。

※配列について
http://hsp.tv/play/pforum.php?mode=pastwch&num=17528



Hatter

リンク

2009/12/19(Sat) 10:47:46|NO.29346


sdim mondai,20,3,13 :sdim mondai2,20,3,13 mondai(0,0)="RINGO" :mondai2(0,0)="リンゴ" mondai(0,1)="AME" :mondai2(0,1)="雨" mondai(0,2)="SYARIN" :mondai2(0,2)="車輪" mondai(0,3)="ASA" :mondai2(0,3)="朝" mondai(0,4)="HAGURUMA" :mondai2(0,4)="歯車" mondai(0,5)="HIKARI" :mondai2(0,5)="光" mondai(0,6)="DORAEMON" :mondai2(0,6)="ドラエもん" mondai(0,7)="YUUGURE" :mondai2(0,7)="夕暮れ" mondai(0,8)="HIGURASI" :mondai2(0,8)="蜩" mondai(0,9)="DORAIBU" :mondai2(0,9)="ドライブ" mondai(0,10)="REMON" :mondai2(0,10)="レモン" mondai(0,11)="KARINTOU" :mondai2(0,11)="かりんとう" mondai(0,12)="KAMINARI" :mondai2(0,12)="雷" mondai(1,0)="MESSENZUA-" :mondai2(1,0)="メッセンジャー" mondai(1,1)="DOKYUMENTO" :mondai2(1,1)="ドキュメント" mondai(1,2)="GIMIKKU" :mondai2(1,2)="ギミック mondai(1,3)="MESSE-ZI" :mondai2(1,3)="メッセージ" mondai(1,4)="HURU-TU" :mondai2(1,4)="フルーツ" mondai(1,5)="SUI-TU" :mondai2(1,5)="スイーツ" mondai(1,6)="DAUNRO-DO" :mondai2(1,6)="ダウンロード" mondai(1,7)="YUUHI" :mondai2(1,7)="アップロード" mondai(1,8)="SYANDERIA" :mondai2(1,8)="シャンデリア" mondai(1,9)="SUNO-" :mondai2(1,9)="スノー" mondai(1,10)="REMON" :mondai2(1,10)="レモン" mondai(1,11)="MASUKATTO" :mondai2(1,11)="マスカット" mondai(1,12)="MU-ZIKKU" :mondai2(1,12)="ミュージック" mondai(2,0)="SAIOUGAUMA" :mondai2(2,0)="塞翁が馬" mondai(2,1)="HUURINKAZAN" :mondai2(2,1)="風林火山" mondai(2,2)="MEIKYOUSISUI" :mondai2(2,2)="明鏡止水" mondai(2,3)="RUIHATOMOWOYOBU" :mondai2(2,3)="類は友を呼ぶ" mondai(2,4)="NIKUWOKIRASETEHONEWOTATU" :mondai2(2,4)="肉を切らせて骨を断つ" mondai(2,5)="ASUNOHYAKUYORIKYOUNOGOZYUU":mondai2(2,5)="明日の百より今日の五十" mondai(2,6)="ITIGOUITIE" :mondai2(2,6)="一期一会" mondai(2,7)="AOHAAIYORIIDETEAIYORIAOSI" :mondai2(2,7)="青は藍より出でて藍より青し" mondai(2,8)="AKUZISENRIWOHASIRU" :mondai2(2,8)="悪事千里を走る" mondai(2,9)="ASAOKIHASANMONNOTOKU" :mondai2(2,9)="朝起きは三文の徳" mondai(2,10)="AMADAREISIWOUGATU" :mondai2(2,10)="雨垂れ石を穿つ" mondai(2,11)="IUHAYASUKUOKONAUHAKATASI" :mondai2(2,11)="言うは易く行うは難し" mondai(2,12)="USOKARADETAMAKOTO" :mondai2(2,12)="嘘から出た真" *Roots cls title "タイピングで遊ぼう" pos 255,150 button"初級",*start oShokyu = stat //初級ボタンのオブジェクトID pos 255,200 button"中級",*start oChukyu = stat //中級ボタンのオブジェクトID pos 255,250 button"上級",*start oJokyu = stat //上級ボタンのオブジェクトID pos 150,100 font msgothic,40 color 250,100,0 mes"難易度を選んでください" stop *start ; ゲーム開始 if (stat = oShokyu) :level = 0 //初級 if (stat = oChukyu) :level = 1 //中級 if (stat = oJokyu) :level = 2 //上級 clrobj timer = 150 *greset ; 問題の準備 cursor=0 typemode=0 flag=1 m=rnd(13) onkey gosub *typein *main ; ゲームメイン repeat redraw 0 color 100,0,50:boxf font msgothic,18 color ,,255 pos 0,0 pos 80,80:mes "残り時間:"+timer pos 80,60:mes "スコア:"+score font msgothic,30,1 color ,120,160 pos 170,198:mes mondai2(level,m) pos 170,238:mes mondai(level,m) pos 170,238:color 255,,100:mes strmid(mondai(level,m),0,cursor) redraw 1 if typemode>0 : onkey 0 : goto *greset if timer<=0 : onkey 0 : goto *gameover timer=timer-1 await 50 loop *gameover onkey 0 if score<5{ dialog "まだまだだな〜" }else:if score<10{ dialog "なかなかだな〜" }else:if score<30{ dialog "そこそこだな〜" }else{ dialog "すごいな〜" } end *typein ; キーを押した時の処理 a=peek(mondai(level,m),cursor) if a!=iparam{ typemode=1 score-=5 } len=strlen(mondai(level,m)) cursor=cursor+1 if cursor>=len{ typemode=2 score+=10 } return

こんな感じに配列をまとめることが出来ますよ。

元のスクリプトのおかしな点
if m=7 : mondai="YUUHI":mondai2="アップロード"
if m=3 : mondai="MASSE-ZI":mondai2="メッセージ"



M・S3

リンク

2009/12/19(Sat) 19:59:38|NO.29354

大変ありがとうございます。
完全に丸投げになっていてすみませんでした。
まだまだ勉強不足なのでもっと勉強します。



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