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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0415
ノダッシー○×ゲームを作りたい7解決


ノダッシー

リンク

2015/4/15(Wed) 13:10:05|NO.68569

○×ゲームを作ろうと思っているのですが
過去の質問
http://hsp.tv/play/pforum.php?mode=all&num=68355
で頂いたアドバイスとソースコードを元に自分でイチから作ってみようと思うのですが

>問題になるファイルと答えの位置がリンクできればやる事は同じ

この部分がどうしても理解できません。
考え方をご教示願います

ちなみに作る○×ゲームの仕様は画像フォルダに入っている画像をシャッフル表示し、これは○○です。
○か×か?というものです
○○の部分はランダムに変わります

どのように書いたらいいですか?
よろしくお願いします



この記事に返信する


ノダッシー

リンク

2015/4/15(Wed) 15:07:13|NO.68570

組んでみましたが、この書き方でいいのでしょうか?><;


#enum MARU=1 #enum BATU #enum VK_NUMPAD1=$61 ;[1]キー #enum VK_NUMPAD2 ;[2]キー dir = "写真\\" ;パスの\を\\に変えるのを忘れずに chdir dir n = 0 notesel list ;dirlist list,"*.jpg",1 ;filenum = stat list={" aキバン.jpg アルミ.jpg ゴウキン.jpg プラスチック.jpg 鉄.jpg bキバン.jpg "} filenum=notemax dim fileno,filenum sdim filename,64 noteget filename(0),0 noteget filename(1),1 noteget filename(2),2 noteget filename(3),3 noteget filename(4),4 noteget filename(5),5 *syutudai color 255,255,255 boxf color 0,0,0 pos 0,0 mes filename(0) mes filename(1) mes filename(2) mes filename(3) mes filename(4) mes filename(5) ;画像に番号を割り振る pos 400,0 ;1か2が入るBATUが2 fileno(0)=BATU fileno(1)=MARU fileno(2)=BATU fileno(3)=BATU fileno(4)=BATU fileno(5)=MARU mes fileno(0) mes fileno(1) mes fileno(2) mes fileno(3) mes fileno(4) mes fileno(5) pos 0,200 celload filename(0),1 celput 1 color 0,0,0 mes "これは"+filename(5)+"です" mes "1=○ 2=×" repeat getkey sw,VK_NUMPAD1:if(sw):select=MARU:break getkey sw,VK_NUMPAD2:if(sw):select=BATU:break wait 1 loop *hanntei ;正解かどうかをチェック if( select == fileno(0) ){ mes "正解" }else{ mes "不正解" } n++ goto *syutudai



窓月らら

リンク

2015/4/15(Wed) 15:24:21|NO.68571

なんか・・かえって難しくしてる感じがします。
画像のファイル名と答えをリンクさせるだけだと思いますが。
例えば

f(0)="キバン.jpg"
a(0)=0 ; 0が× 1が○
f(1)="アルミ.jpg"
a(1)=1

以下続く…

randomize
i=rnd(n) ; nは回す数(上の配列で設定した問題数ぶん)

f(i)の画像を表示→ユーザーの○×選択待ち→選択したほうの値を取得
→答えはa(i)なのでifで判定→アタリかハズレかを表示

基本的にこれだけでは・・・



窓月らら

リンク

2015/4/15(Wed) 15:52:38|NO.68572

データがあちこちに散らばって全体の見通しが良くないので
まずは、必要なデータをまとめて記述したほうがいいと思います。
クイズのデータは変化しないのですから、最初に1回読めばOKです。
(ループ内に入れる必要は無し)
規模がそんな大きくないのでしたら、外部ファイルから読まずとも、
直接コード内に書いてもいいと思います。
というか、最初はその方法から入った方が分かりやすいかと。


・画像
・問題のテキスト
・答え

これらに共通の番号をつけて、配列で管理。
あとはその配列番号に乱数を与えて表示、判定を繰り返すだけ。
クイズのデータと、表示・判定を繰り返す部分を明確に分けたほうが
スッキリしますよ。



窓月らら

リンク

2015/4/15(Wed) 16:21:58|NO.68573

こんな感じでシンプルに作ったほうがいいかと。
画像の管理も考え方は同じ。

// クイズゲームのサンプル m(0)="うさぎ" m(1)="スライム" m(2)="ねこ" m(3)="いぬ" m(4)="ジエン" a(0)=0 a(1)=0 a(2)=0 a(3)=0 a(4)=1 randomize // 乱数初期化 *main // 問題を表示 cls 4 // 画面クリア i=rnd(5) // 乱数取得 font "",21: color 255,255,255: pos 128,128 mes "(・∀・)": mes mes "このキャラクタの名前は "+m(i)+" ですか?": mes mes "数字キーを押してください。": mes mes "1:○  2:×": mes // 入力待ち // 数字キーはテンキーとメインでコードが違うので、両方を監視する repeat getkey k1,97: getkey k2,49: if k1+k2 { n=1: break } getkey k1,98: getkey k2,50: if k1+k2 { n=0: break } wait 16 loop // 答えを判定 font "",30 if a(i)=n { mes "正解です!" } else { mes "ブー! 違います。" } await 1000 goto *main



窓月らら

リンク

2015/4/15(Wed) 16:28:03|NO.68574

あ、間違えた。
wait 16 ←これは  await 16 ←こっちに置き換えてね。



暇人

リンク

2015/4/16(Thu) 00:17:23|NO.68575

3択作った時と不正解の解答の選び方は変わらない
×なら解答リストを不正解の解答に置き換えすれば良い

#enum MARU=1 #enum BATU #enum VK_NUMPAD1=$61 ;[1]キー #enum VK_NUMPAD2 ;[2]キー //dir = "写真\\" ;パスの\を\\に変えるのを忘れずに // chdir dir n = 0 notesel list ;dirlist list,"*.jpg",1 ;filenum = stat list={" aキバン.jpg アルミ.jpg ゴウキン.jpg プラスチック.jpg 鉄.jpg bキバン.jpg "} filenum=notemax randomize dim fileno,filenum split list,"\n",filename def_ans_list=list //基準の解答リストを作る strrep def_ans_list,".jpg","" //ファイル名から.jpgを削除 notesel temp repeat filenum temp=def_ans_list //○×に合わせた解答リスト作るのに基準の解答リストをコピー if rnd(2)=0 { fileno(cnt)=MARU noteget ans_note,cnt //○なら正解の解答を取得 }else{ fileno(cnt)=BATU notedel cnt //×なら正解の解答を削除して noteget ans_note,rnd(notemax) //不正解の解答をランダムで取得 } ans_list(cnt)=ans_note //○×に合わせた解答リスト loop n=0 *syutudai color 255,255,255 boxf color 0,0,0 pos 100,100 mes filename(n) pos 0,200 mes "これは"+ans_list(n)+"です" mes "1=○ 2=×" repeat getkey sw,VK_NUMPAD1:if(sw):select=MARU:break getkey sw,VK_NUMPAD2:if(sw):select=BATU:break wait 1 loop *hanntei ;正解かどうかをチェック if( select == fileno(n) ){ mes "正解" }else{ mes "不正解" } n++ if n=filenum {mes "終了":stop} wait 100 goto *syutudai



ノダッシー

リンク

2015/4/17(Fri) 11:07:13|NO.68588

二日間ソースと睨めっこしてましたお返事遅くなってすみません
なるほど
正解の番号の入った配列と問題を合わせるってこういう事だったんですね
窓月ららさん暇人さん、ありがとうございました



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