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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0611
「どんな顔」クイズのスクリプトが動きません…11解決


リンク

2009/6/11(Thu) 14:15:32|NO.25618

初めまして。
 顔写真を画面に呈示して,この表情を2択で言い当てるというプログラムをサイトや本を参考に作って
みたのですが,うまく表示されません。
 スクリプトのどの部分が悪いのかいろいろと変更したものの,解決しません。
 よろしければ,どなたか教えていただけますと幸いです。



//表情のクイズ face = "smile.gif","angry.gif","sad.gif","angry.gif","smile.gif","sad.gif","angry.gif","smile.gif","sad.gif","smile.gif" seitou = "笑い", "怒り", "悲しみ", "怒り", "笑い", "悲しみ", "怒り", "笑い", "悲しみ", "笑い" gotou = "怒り", "笑い", "怒り", "悲しみ", "怒り", "笑い", "悲しみ", "怒り", "笑い", "悲しみ" //ランダムに出題 dim R,length(face) randomize repeat length(face) x = rnd(cnt+1) R(cnt) = R(x) R(x) = cnt + 1 loop *start //メインプログラム i = 0 *main cls if i = length(face) : goto *owari gosub *settei mon = i + 1 mes "第"+mon+"問" mes "" j = R(i) - 1 pos 200, 250 color 0,0,0 picload face(j)  //表情画像を呈示する hidari = seitou(j) migi = gotou(j) i = i + 1 randomize tmp = rnd(2) if tmp = 0 { h = 170 : m = 290 } else{ m = 170 : h = 290 } pos h, 350 button goto hidari, *seitou pos m, 350 button goto migi, *gotou stop *seitou pos 400, 400 color 0, 255, 0 mes "正解" wait 100 cls goto *main *gotou pos 400, 400 color 255, 0, 0 mes "間違い" wait 100 cls goto *main //終わる時 *owari cls color 200, 100, 100: boxf color 0,0,0 font "MS ゴシック", 25, 16 pos 70, 100 mes "" mes "これでおわります" pos 70, 350 button goto "はい", *owari2 pos 190, 350 button goto "もういっかい", *start stop *owari2 wait 100 end //sub *settei cls color 245, 245, 245: boxf color 0,0,0 font "MS ゴシック", 25, 16 pos 70, 100 mes "" mes "正しい方を押してね" mes "" mes "−−−−−−−−−−−−−−−−" mes "" return



この記事に返信する


hspail

リンク

2009/6/11(Thu) 14:49:05|NO.25619

正誤の判定はうまくできているようですが、
ラベル名と変数名がかぶっている(seitouとgotou)ため実行時にエラーが出ます。
ラベル名か変数名を変更してみて下さい。

それとも画像が表示されないと言うことでしょうか?
何が うまく表示されない のか詳しく書くといいでしょう。



リンク

2009/6/11(Thu) 15:04:17|NO.25620

>hspail様
 早速のお返事ありがとうございます。ラベル名と変数を変えてみました。
 
 顔の表情画像(写真やイラスト)を出して,それについて2択(ほんとうは4択くらいにしたい)で問題に答える。
という流れなのですが,依然として写真が読み込まれません。もしくは表示されません。この点が難儀な部分です。

 



hspail

リンク

2009/6/11(Thu) 16:16:28|NO.25621

スクリプトには問題はありませんので、悪いのは画像の方でしょう。
表示されないのであれば画像のフォーマットが不正である可能性が高いです。
ペイントソフトでビットマップに変換してみるのはいかがでしょう?



リンク

2009/6/11(Thu) 19:56:21|NO.25636

>hspil様
 ありがとうございます。

>さらに複雑になりそうですが…
 今のままだと,写真によって表示されるウィンドウの大きさが異なってしまっています。
写真をディスプレイいっぱいに表示するにはどうスクリプトを改造すれば良いのでしょ
うか。また,「正解」や「間違い」のフィードバックをディスプレイ中央に表示させた
いのですが,良い案はありますか?

 可能かどうかわかりませんが,選択したもの,正答の結果とそれぞれの反応時間がわか
るCSVを残すことはできるのでしょうか?

HSPについて詳しくないため,どなたかご存知でしたら教えていただけますと幸いです。



check

リンク

2009/6/11(Thu) 20:08:10|NO.25637

>今のままだと,写真によって表示されるウィンドウの大きさが異なってしまっています。
buffer,gcopyでヘルプ検索

>可能かどうかわかりませんが,選択したもの,正答の結果とそれぞれの反応時間がわか…
できる。反応時間はgettime等の関数で取得すればいい



ANTARES

リンク

2009/6/11(Thu) 22:23:04|NO.25641

>>今のままだと,写真によって表示されるウィンドウの大きさが異なってしまっています。
>buffer,gcopyでヘルプ検索
 gcopyじゃ無理でしょ。gzoomじゃないと。



ANTARES

リンク

2009/6/13(Sat) 01:39:19|NO.25680

 簡単なエラーくらい自分で直せるようになりましょう。
まだまだ勉強不足です。マニュアルを最低3回は読み直してください。

208行 演算子の使い方が間違っています
182行ほか多数 関数の使い方が間違っています



hspail

リンク

2009/6/13(Sat) 15:27:08|NO.25706

基本的なところは理解できているようですので、あとはとにかく経験を積んでいきましょう。
ヘルプメニューのプログラミングマニュアルを眺めるのもいいかもしれません。



>CVSファイルに反応時間などの結果を残す

反応時間の取得は出来たんですよね?

それでしたら反応時間を文字列の足し算をして一つにまとめて bsave すればOKです。

text = 反応時間 + "," + 反応時間 + "," + 反応時間
のように。
読み出しは split 命令を使用するといいでしょう。

CSVファイルではなくテキストファイルにした方がお手軽だと思います。
テキストファイルを利用する場合はノートパッド命令(ヘルプ参照)を使ってやってみて下さい。



>ウィンドウをディスプレイ全体に表示
APIを使うので少し難しくなりますが、
ヘルプを見たり、いろいろやっている内に理解できるようになると思います。

#uselib "user32" #func ShowWindow "ShowWindow" int, int #define SW_MAXIMIZE 3 screen 0, ginfo_dispx, ginfo_dispy, 2, 0, 0 ShowWindow hWnd, 3 // 参考:http://yokohama.cool.ne.jp/chokuto/urawaza/api/ShowWindow.html



>写真を中心に持ってくる
ウィンドウのサイズ(ginfo_winx、ginfo_winy)と 顔画像のサイズを使って計算できます。

わからなかったら紙にウィンドウや顔画像の位置関係を書いて、
位置を割り出す計算式を求めてみるといいでしょう。



ANTARES

リンク

2009/6/14(Sun) 01:34:35|NO.25746

>ウィンドウをディスプレイ全体に表示して,写真を中心に持ってくる

w=640: h=480 screen 0,w,h,1,ginfo_dispx,0 borderWidth=(ginfo_sizex-w)/2 titlebarHeight=(ginfo_sizey-h-borderWidth) w=ginfo_dispx-borderWidth-borderWidth h=ginfo_dispy-titlebarHeight-borderWidth screen 0,w,h,,0,0 button "another",*l_another stop *l_another bgscr 0,ginfo_dispx,ginfo_dispy,,0,0 sdim file,260 dialog "bmp;*.jpg;*.gif",16 file=refstr buffer 2: picload file gw=ginfo_winx: gh=ginfo_winy gsel 0 x=(ginfo_winx-gw)/2 y=(ginfo_winy-gh)/2 pos x, y gcopy 2,0,0,gw,gh pos x,y+gh+8 button "end",*l_end stop *l_end end



リンク

2009/6/16(Tue) 22:46:44|NO.25796

>hspail さん

 >基本的なところは理解できているようですので、あとはとにかく経験を積んでいきましょう。
ヘルプメニューのプログラミングマニュアルを眺めるのもいいかもしれません。

 >反応時間の取得は出来たんですよね?それでしたら反応時間を文字列の足し算をして一つに
まとめて bsave すればOKです。

 コメントありがとうございます。実は,今回が初めてのプログラミングです。そのため,本やサ
イトのスクリプトに手を加えただけなので,反応時間の取得も何もできておりません。ここで,質
問する前に入門書やマニュアルに目を通したのですが,プログラミング初心者なのでピンときてお
りません。
 
 私は,現在,比較的時間に余裕がある学生ですので,少しずつ勉強していこうと思います。

>ANTARESさん

 具体的なスクリプトを教えていただき,ありがとうございます。
 
 今回のことで,HSPの勉強が足りないことを痛感しましたが,とても面白いと思いました。
これから勉強して,自分の希望のものを作っていけるようになりたいです。



リンク

2009/6/19(Fri) 19:16:53|NO.25845

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



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