#include "hsp3util.as" ; emes命令を使用するために必要です #define BG_FILE "classroom.jpg" ;背景画像 好きに変えていいです #define M_FILE "問題.txt" ;問題の書いてあるテキスト #define M_FONT_SIZE 25 ;問題文のフォントサイズ #define S_FONT_SIZE 22 ;選択肢のフォントサイズ #define S_FONT_SIZE_HOSEI 8 ;選択肢に表示されるフォントのY座標補正値 #define YONMOJI_FONT_SIZE 40 ;四文字ボタンのフォントサイズ #define EFFECT_FONT_SIZE 60 ;エフェクトの基準フォントサイズ #define BACK_GROUND 10 ;背景用 #define KOKUBAN_MOJI 5 ;黒板に表示する問題文用 #define KOKUBAN 6 ;黒板用 #define GAKUBUTI 7 ;額縁用 #define SKIP 8 ;スキップボタン用 #define ID_BUTTON_BUF 3 ;ボタンの複数描画用 #define ID_BUTTON 2 ;○×やタイピングボタンの描画用 #define SKIP_SIZE 50 ;スキップボタンのサイズ #define SKIP_X_POS 10 ;スキップボタンのX座標 #define SKIP_Y_POS 50 ;スキップボタンのY座標 #define MARUBATU_SIZE 180 ;○×ボタンのサイズ XもYも180 #define MARU_X_POS 130 ;○ボタンのX座標 #define BATU_X_POS 330 ;×ボタンのX座標 #define MARUBATU_Y_POS 255 ;○×ボタンのY座標 #define GYOU_KANKAKU 28 ;問題文の行の間隔 #define SEIGO_HYOUJI_TIME 120 ;正解・不正解の大きなフォントを表示している時間 #define YONTAKU_X_SIZE 400 ;四択ボタンのXサイズ #define YONTAKU_Y_SIZE 55 ;四択ボタンのYサイズ #define YONTAKU_Y_POS 240 ;四択ボタンのY座標 #define YONMOJI_SIZE 70 ;四文字ボタンのサイズ XもYも 70 *初期設定 screen 0 ,640 ,480 ,0 title "クイズマジックアカデミー" cls notesel mondai_file noteload M_FILE sdim mondai , notemax repeat notemax noteget mondai.cnt , cnt loop randomize buffer BACK_GROUND , 640 , 480 picload "./image/" + BG_FILE ;背景読み込み buffer KOKUBAN , 400 , 200 picload "./image/kokuban.bmp" buffer GAKUBUTI , 400 , 200 picload "./image/gakubuti.bmp" buffer SKIP , 50 , 100 picload "./image/skip.bmp" kotae = "" your_choice = "" push_sign = 0 next_flag = 0 next_count = 1 *main title "クイズマジックアカデミー " + next_count + "問目" wait 0 redraw 0 gosub *問題読み込み gosub *問題文を仮想画面に描く gosub *背景描画 gosub *黒板描画 gosub *スキップボタン描画 if keisiki = "○×" : gosub *○× if keisiki = "四択" : gosub *四択連想 if keisiki = "連想" : gosub *四択連想 if keisiki = "四文字" : gosub *四文字 if keisiki = "順番当て" : gosub *順番当て if keisiki = "並べ替え" : gosub *並べ替え if keisiki = "タイピング" : gosub *タイピング if keisiki = "キューブ" : gosub *キューブ if keisiki = "エフェクト" : gosub *エフェクト if keisiki = "一問多答" : gosub *一問多答 if keisiki = "線結び" : gosub *線結び wait 0 redraw 1 repeat onclick gosub *左クリック if bunki_end_flag = 0 & (next_flag = 0 or hyouji_end_flag = 0) : gosub *問題文表示 if bunki_end_flag = 0 & (next_flag = 0 or hyouji_end_flag = 1 & bunki_mode = 1) : gosub *分岐表示 wait 0 if next_flag = 1 : wait SEIGO_HYOUJI_TIME : break loop next_flag = 0 next_count++ push_sign = 0 hyouji_max_length=0 skip_flag = 0 goto *main stop *スキップボタン描画 gsel 0 color 0 , 255 , 0 gmode 4 , , , 255 pos SKIP_X_POS , SKIP_Y_POS gcopy SKIP , 0 , 0 , SKIP_SIZE , SKIP_SIZE return *黒板描画 //黒板の描画 gsel 0 gmode 4 , , , 200 pos (ginfo_winx-400)/2 , 20 color 0 , 255 , 0 ;黄緑色抜き gcopy KOKUBAN , 0 , 0 , 400 , 200 //額縁の描画 gmode 4 , , , 255 pos (ginfo_winx-440)/2 , 0 color 0 , 255 , 0 ;黄緑色抜き gcopy GAKUBUTI , 0 , 0 , 440 , 240 font "MS ゴシック" , 16 , 16 pos 0 , 7 color 0 , 0 , 0 textmode 2 color 255 , 255 , 255 emes "問題数:"+ notemax+ "問" font "MS ゴシック" , 12 , 16 color 0 , 0 , 0 textmode 2 color 255 , 255 , 255 pos 128 , 10 emes "" + keisiki pos 210 , 10 emes "" + jyanru return *問題読み込み a = 0 mondai_tmp = mondai.rnd(notemax) getstr keisiki , mondai_tmp , a , '\t' : a=a+strsize getstr jyanru , mondai_tmp , a , '\t' : a=a+strsize getstr hint , mondai_tmp , a , '\t' : a=a+strsize hint_size = strsize ;重要 getstr kotae , mondai_tmp , a , '\t' hyouji_end_flag = 0 //分岐無し・分岐前が全て表示しきったら1にする bunki_end_flag = 0 //分岐後の表示が終わったら1にする bunki_mode = 0 //分岐モードのフラグ n = 0 //strsize の代入用 //問題文の区切りで分岐後を切り出す getstr bunkimae , hint , n , ',' bunkimae_size = strlen(bunkimae) + 1 n = n + strsize getstr bunkigo , hint , n , '\t' bunki_size = strlen(bunkigo) if bunkimae_size != hint_size : bunki_mode=1 b = 0 hyouji_max_length = 0 gyousuu = 0 dim hyouji_length , 5 //分岐無し・分岐前の文字処理 repeat getstr hyouji.cnt , bunkimae , b , '/' b=b+strsize hyouji_length.cnt = strlen(hyouji.cnt) if hyouji_max_length31{ hyouji_max_length=30 gyousuu = (bunkimae_size/30)+1 repeat gyousuu hyouji_length.cnt=30 hyouji.cnt = strmid(bunkimae,cnt*30,30) loop } return *問題文を仮想画面に描く buffer KOKUBAN_MOJI,400,150 ;400×150の仮想画面5を用意 color 0,0,0 boxf 0,0,400,150 ;黒色で塗りつぶす font "MS ゴシック" , M_FONT_SIZE , 16 textmode 0 ;縁取り無し color 255,255,255 ;フォントの色 //仮想画面に問題文を書き出す dim hyouji_x_pos , 5 ;4行分の位置を確保 gyousuu_count = 0 repeat gyousuu pos 0 , cnt * GYOU_KANKAKU emes hyouji.cnt hyouji_x_pos.cnt = 0 ;黒板に表示する文字の終端側の位置設定 loop return *問題文表示 //仮想画面5の問題文をメイン画面に描く gsel 0 ;メイン画面(screen 0)に描きますよ〜 repeat gmode 4 , , , 255 color 0 , 0 , 0 ; 色抜き if next_flag = 1 : break pos (ginfo_winx - (hyouji_max_length*M_FONT_SIZE/2))/2-4 , gyousuu_count * GYOU_KANKAKU + 40 gcopy KOKUBAN_MOJI , 0 , gyousuu_count*GYOU_KANKAKU , hyouji_x_pos.gyousuu_count , GYOU_KANKAKU hyouji_x_pos.gyousuu_count = hyouji_x_pos.gyousuu_count + 4 ;ここで問題文のなめらか調整(これは4ドット単位のなめらか表示) if hyouji_x_pos.gyousuu_count > (hyouji_length.gyousuu_count)*M_FONT_SIZE/2 + 20 { gyousuu_count = gyousuu_count + 1 if keisiki = "連想" : wait 150 if gyousuu_count>gyousuu : gyousuu_count = 0 : hyouji_end_flag = 1 : break } wait 1 ;0 にすると問題文は一気に表示されます loop return *分岐表示 wait 100 //問題文を上にスクロールさせる for i,0,140,5 redraw 0 gsel 0 gmode 4,,,255; pos (ginfo_winx-400)/2 , 20 color 0,255,0 ; 色抜き gcopy BACK_GROUND , (ginfo_winx-400)/2 , 20 , 400 , 140 gmode 4,,,200 gcopy KOKUBAN , 0 , 0 , 400 , 140 gmode 4,,,255 pos (ginfo_winx-440)/2 , 0 gcopy GAKUBUTI , 0 , 0 , 440 ,240 font "MS ゴシック" , 12 , 16 color 0 , 0 , 0 textmode 2 color 255 , 255 , 255 pos 128 , 10 emes "" + keisiki pos 210 , 10 emes "" + jyanru gmode 4,,,255 pos (ginfo_winx - (hyouji_max_length*M_FONT_SIZE/2))/2-4 , 40 color 0,0,0 ; 色抜き gcopy KOKUBAN_MOJI , 0 , i , 400 , 140 wait 2 redraw 1 next b=0 repeat gmode 4 , , , 255 color 0 , 0 , 0 ; 色抜き getstr hyouji.cnt , bunkigo , b , '/' b=b+strsize hyouji_length.cnt = strlen(hyouji.cnt) if hyouji_max_length31{ hyouji_length=30 hyouji_max_length=30 gyousuu=(bunki_size/30)+1 color 0,0,0 boxf 0,0,400,150 repeat gyousuu hyouji.cnt = strmid(bunkigo , cnt*30 , 30) color 255,255,255 pos 0,cnt*GYOU_KANKAKU emes hyouji.cnt loop } gosub *問題文を仮想画面に描く gosub *問題文表示 bunki_end_flag = 1 return *背景描画 gsel 0 gmode 4,,,255 pos 0,0 gcopy BACK_GROUND , 0 , 0 , 640 , 480 return *○× buffer ID_BUTTON , 360 , 360 picload "./image/marubatu.bmp" gsel 0 gmode 4 , , , 255 color 0 , 255 , 0 pos MARU_X_POS , MARUBATU_Y_POS gcopy ID_BUTTON , 0 , 0 , MARUBATU_SIZE , MARUBATU_SIZE pos BATU_X_POS , MARUBATU_Y_POS gcopy ID_BUTTON , MARUBATU_SIZE , 0 , MARUBATU_SIZE , MARUBATU_SIZE return *四択連想 sdim sentakusi , 16 , 40 ;選択肢は16個まで登録可能。1つの選択肢に全角で20文字まで。 sentakusi_tmp = "" sentakusi_buf = "" uso_sentakusi_kazu = 0 ;嘘の選択肢のカウント用(初期値 0) repeat getstr sentakusi.cnt , mondai_tmp , a , '\t' if strsize = 0 : break a = a + strsize uso_sentakusi_kazu = uso_sentakusi_kazu + 1 ;嘘の選択肢のカウントを1つ増やす loop kotae = sentakusi.0 ;答えは一番最初の選択肢 //まず正答以外(嘘の選択肢全て)をシャッフル repeat 10 ;10回シャッフル n=rnd(uso_sentakusi_kazu-1)+1 m=rnd(uso_sentakusi_kazu-1)+1 sentakusi_buf = sentakusi.n sentakusi.n = sentakusi.m sentakusi.m = sentakusi_buf loop //次に上から4つ(正答・嘘・嘘・嘘)をシャッフル repeat 10 n=rnd(4) m=rnd(4) sentakusi_buf = sentakusi.n sentakusi.n = sentakusi.m sentakusi.m = sentakusi_buf loop buffer ID_BUTTON , YONTAKU_X_SIZE , YONTAKU_Y_SIZE*8 if keisiki = "四択" : picload "./image/4taku_button.bmp" if keisiki = "連想" : picload "./image/rensou_button.bmp" //選択肢の文字を描画 font "MS ゴシック" , S_FONT_SIZE ,16 color 128,128,128 textmode 2 color 0 , 0 , 0 repeat 4 pos 40 , cnt*YONTAKU_Y_SIZE + S_FONT_SIZE_HOSEI emes "" + sentakusi.cnt pos 40 , cnt*YONTAKU_Y_SIZE + YONTAKU_Y_SIZE*4 + 7 + S_FONT_SIZE_HOSEI emes "" + sentakusi.cnt loop gsel 0 gmode 4 , , , 255 color 0 , 255 , 0 pos (ginfo_winx - YONTAKU_X_SIZE)/2 , YONTAKU_Y_POS gcopy ID_BUTTON , 0 , 0 , YONTAKU_X_SIZE , YONTAKU_Y_SIZE*4 return *四文字 dim sentakusi_x_pos , 10 dim sentakusi_y_pos , 10 sdim sentakusi , 10 yonmoji_push = 0 kotae = "" //選択肢の位置設定 repeat 5 sentakusi_x_pos.cnt = (ginfo_winx - 390)/2 + (cnt*80) sentakusi_y_pos.cnt = 250 sentakusi_x_pos.(cnt+5) = (ginfo_winx - 390)/2 + (cnt*80) sentakusi_y_pos.(cnt+5) = 250 + 80 loop getstr sentakusi_buf , mondai_tmp , a , '\t' a = a + strsize getstr kotae , mondai_tmp , a , '\t' repeat 10 sentakusi.cnt = strmid ( sentakusi_buf , cnt*2 , 2) loop //シャッフル repeat 20 n = rnd(10) m = rnd(10) sentakusi_buf = sentakusi.n sentakusi.n = sentakusi.m sentakusi.m = sentakusi_buf loop //仮想画面 2(ID_BUTTON)に画像を読み込み buffer ID_BUTTON picload "./image/4moji.bmp" , 1 // , 1 を付けると仮想画面は画像の大きさぴったりになります //仮想画面 3(ID_BUTTON_BUF) buffer ID_BUTTON_BUF , 390 , 300 // 390*300 の仮想画面を用意(必要な分だけ確保する(省エネ)) color 0 , 255 , 0 boxf 0 , 0 , 390 , 300 ;黄緑色で四文字ボタン20個分塗りつぶす font "MS ゴシック" , YONMOJI_FONT_SIZE , 16 color 0 , 0 , 0 repeat 5 //押されてない状態のボタン //上段の四文字ボタン描画 pos cnt*80 , 0 gcopy ID_BUTTON , 0 , 0 , YONMOJI_SIZE , YONMOJI_SIZE ;仮想画面2 からボタン画像を転送 pos cnt*80 + 15 , 10 emes sentakusi.cnt //ついでに下段の四文字ボタン描画 pos cnt*80 , 80 gcopy ID_BUTTON , 0 , 0 , YONMOJI_SIZE , YONMOJI_SIZE pos cnt*80 + 15 , 90 emes sentakusi.(cnt+5) //押された状態のボタン //上段の四文字ボタン描画 pos cnt*80 , 150 gcopy ID_BUTTON , 70 , 0 , YONMOJI_SIZE , YONMOJI_SIZE ;仮想画面2 からボタン画像を転送 pos cnt*80 + 15 , 10 + 154 emes sentakusi.cnt //ついでに下段の四文字ボタン描画 pos cnt*80 , 230 gcopy ID_BUTTON , 70 , 0 , YONMOJI_SIZE , YONMOJI_SIZE pos cnt*80 + 15 , 90 + 154 emes sentakusi.(cnt+5) loop //メイン画面に仮想画面3の画像を転送 gsel 0 pos (ginfo_winx - (YONMOJI_SIZE*5 + 10*4))/2 , 250 gcopy ID_BUTTON_BUF , 0 , 0 , 390 , 150 //黒板にBOX画像を転送 pos (ginfo_winx - 200)/2 , 160 gcopy ID_BUTTON , 0 , 70 , 200 , 50 return *順番当て dim jyunban_push_sign , 4 sdim sentakusi , 4 , 40 jyunban_push = 0 ;選択肢のボタンが押された個数 jyunban_kazu = 0 ;選択肢の数 kotae = "" repeat 4 getstr sentakusi.cnt , mondai_tmp , a , '\t' a = a + strsize kotae = kotae + sentakusi.cnt jyunban_kazu = jyunban_kazu + 1 loop if sentakusi.3 = "" : jyunban_kazu = 3 //シャッフルする前に答えを常時表示(消したい人は消してください) repeat jyunban_kazu font "",12,16 color 255 , 255 , 255 textmode 2 color 0 , 0 , 0 pos 530 , cnt*20 + 50 emes ""+sentakusi.cnt loop //シャッフル repeat 10 ;10回シャッフル n=rnd(jyunban_kazu) m=rnd(jyunban_kazu) sentakusi_buf = sentakusi.n sentakusi.n = sentakusi.m sentakusi.m = sentakusi_buf loop buffer ID_BUTTON picload "./image/jyunban_button.bmp" font "MS ゴシック" , S_FONT_SIZE ,16 color 128 , 128 , 128 textmode 2 color 0 , 0 , 0 repeat jyunban_kazu pos 40 , cnt*YONTAKU_Y_SIZE + S_FONT_SIZE_HOSEI emes "" + sentakusi.cnt pos 40 , cnt*YONTAKU_Y_SIZE + YONTAKU_Y_SIZE*4 + 7 + S_FONT_SIZE_HOSEI emes "" + sentakusi.cnt loop gsel 0 gmode 4 , , , 255 color 0 , 255 , 0 ; 黄緑色抜き pos (ginfo_winx - YONTAKU_X_SIZE)/2 , YONTAKU_Y_POS gcopy ID_BUTTON , 0 , 0 , YONTAKU_X_SIZE , YONTAKU_Y_SIZE*jyunban_kazu return //下記のルーチンは簡易的なサンプルです。 //各ルーチンを消して自分で好きなように書いてください *並べ替え getstr kotae , mondai_tmp , a , '\t' moji_kazu = strsize/2 repeat moji_kazu sentakusi.cnt = strmid (kotae , cnt*2 , 2) sentakusi_x_pos.cnt = (ginfo_winx - moji_kazu*46)/2 + cnt*46 sentakusi_y_pos.cnt = 290 loop //シャッフル repeat 10 ;10回シャッフル n=rnd(moji_kazu) m=rnd(moji_kazu) sentakusi_buf = sentakusi.n sentakusi.n = sentakusi.m sentakusi.m = sentakusi_buf loop gosub *並べ替え描画 return *並べ替え描画 repeat moji_kazu buffer ID_BUTTON , 46 , 70 ;並べ替えボタンのサイズ color 255 , 255 , 255 boxf 0 , 0 , 46 , 70 color 0 , 0 , 0 boxf 3 , 3 , 43 , 67 pos 8 , 18 font "MS ゴシック" , 30 , 16 textmode 0 color 255 , 255 , 255 mes sentakusi.cnt gsel 0 pos sentakusi_x_pos.cnt , sentakusi_y_pos.cnt gcopy ID_BUTTON , 0 , 0 , 46 , 70 loop //OKボタンの描画・表示 buffer ID_BUTTON , 80 , 45 ;OKボタンのサイズ color 255 , 255 , 255 boxf 0 , 0 , 80 , 45 color 0 , 0 , 0 boxf 3 , 3 , 77 , 42 pos 10 , 8 font "MS ゴシック" , 30 , 16 color 255 , 255 , 255 textmode 2 color 255 , 128 , 128 emes "OK" gsel 0 pos (ginfo_winx - 80)/2 , 370 gcopy ID_BUTTON , 0 , 0 , 80 , 45 return *タイピング gosub *タイピングキーボード描画 return *タイピングキーボード描画 //タイピング・エフェクト・キューブで使いまわし getstr kotae , mondai_tmp , a , '\t' moji_hantei = peek(kotae , 0) moji_hantei2= peek(kotae , 1) //キーボードの文字判定 if (moji_hantei = 130)&(moji_hantei2 > 159)&(moji_hantei2 < 242) : type_mode="ひらがな" if (moji_hantei = 130)&(moji_hantei2 > 78)&(moji_hantei2 < 122) : type_mode="英数字" if moji_hantei = 131 : type_mode="カタカナ" buffer ID_BUTTON , 400 , 250 ;タイピングキーボードのサイズ color 0 , 0 , 0 boxf 0 , 0 , 400 , 250 color 255 , 255 , 255 textmode 2 color 0 , 0 , 0 font "MS ゴシック" , 22 , 16 pos 10 , 10 emes "ここにタイピングのキーボードを表示" emes "" + type_mode + "入力モードです" gsel 0 pos (ginfo_winx - 400)/2 , 230 gcopy ID_BUTTON , 0 , 0 , 400 , 250 //黒板に表示するBOXの描画 repeat 8 box_x_pos = (ginfo_winx - 400)/2 + (cnt*50) box_y_pos = 160 color 255 , 255 , 255 boxf box_x_pos , box_y_pos , box_x_pos + 50 , box_y_pos + 50 color 0 , 0 , 0 boxf box_x_pos + 3 , box_y_pos + 3 , box_x_pos + 47 , box_y_pos + 47 loop return *キューブ getstr kotae , mondai_tmp , a , '\t' moji_kazu = strsize/2 repeat moji_kazu sentakusi.cnt = strmid (kotae , cnt*2 , 2) sentakusi_x_pos.cnt = (ginfo_winx - moji_kazu*40)/2 + cnt*40 sentakusi_y_pos.cnt = 100 loop //シャッフル repeat 10 ;10回シャッフル n=rnd(moji_kazu) m=rnd(moji_kazu) sentakusi_buf = sentakusi.n sentakusi.n = sentakusi.m sentakusi.m = sentakusi_buf loop gosub *タイピングキーボード描画 repeat moji_kazu buffer 3 , 40 , 40 color 255 , 255 , 0 boxf 0 , 0 , 40 , 40 color 0 , 0 , 0 boxf 3 , 3 , 37 , 37 font "MS ゴシック" , 32 , 16 color 255 , 255 , 0 textmode 0 pos 5 , 4 mes sentakusi.cnt gsel 0 pos sentakusi_x_pos.cnt , sentakusi_y_pos.cnt gcopy 3 , 0 , 0 , 40 , 40 loop return *エフェクト getstr effect_moji_buf , mondai_tmp , a , '\t' a = a + strsize moji_kazu = strsize/2 getstr kotae , mondai_tmp , a , '\t' gosub *タイピングキーボード描画 repeat moji_kazu effect_moji.cnt = strmid (effect_moji_buf , cnt*2 , 2) effect_x_pos.cnt = (ginfo_winx - (EFFECT_FONT_SIZE*moji_kazu))/2 + (EFFECT_FONT_SIZE*cnt) effect_y_pos.cnt = 70 loop repeat moji_kazu color 0 , 0 , 0 textmode 2 color 255 , 255 , 255 font "MS ゴシック" , EFFECT_FONT_SIZE , 16 pos effect_x_pos.cnt , effect_y_pos.cnt emes effect_moji.cnt loop return *一問多答 return *線結び return *左クリック stick key,256 ; 左クリックを監視する mx = mousex ; マウスのX座標 my = mousey ; マウスのY座標 if next_flag != 1{ // スキップボタンクリック if key&256{ if (mx>SKIP_X_POS)&(mx<(SKIP_X_POS+SKIP_SIZE))&(my>SKIP_Y_POS)&(my<(SKIP_Y_POS+SKIP_SIZE)){ redraw 0 gsel 0 color 0 , 255 , 0 gmode 4 , , , 255 pos SKIP_X_POS , SKIP_Y_POS gcopy SKIP , 0 , SKIP_SIZE , SKIP_SIZE , SKIP_SIZE title "SKIP..." + kotae next_flag = 1 redraw 1 } } if keisiki = "○×" : gosub *○×クリック if keisiki = "四択" : gosub *四択連想クリック if keisiki = "連想" : gosub *四択連想クリック if keisiki = "順番当て" : gosub *順番当てクリック if keisiki = "四文字" : gosub *四文字クリック if keisiki = "並べ替え" : gosub *並べ替えクリック if keisiki = "タイピング" : gosub *タイピングクリック //タイピング用のキーボードクリックは if keisiki = "キューブ" : gosub *タイピングクリック //この3つの形式で if keisiki = "エフェクト" : gosub *タイピングクリック //共有出来るので、こう書きます。 if keisiki = "一問多答" : gosub *一問多答クリック if keisiki = "線結び" : gosub *線結びクリック } return *○×クリック if key&256{ if (push_sign=0)&(mx>MARU_X_POS)&(mx<(MARU_X_POS+MARUBATU_SIZE))&(my>255)&(my<(255+MARUBATU_SIZE)){ your_choice = "○" push_x_pos = 0 push_x_pos_2 = MARU_X_POS gosub *○×選択処理 } if key&256{ if (push_sign=0)&(mx>BATU_X_POS)&(mx<(BATU_X_POS+MARUBATU_SIZE))&(my>255)&(my<(255+MARUBATU_SIZE)){ your_choice = "×" push_x_pos = 180 push_x_pos_2 = BATU_X_POS gosub *○×選択処理 } } //○×以外の位置をクリックしたら、なにもせずに戻る。 return *○×選択処理 push_sign = 1 gsel 0 gmode 4 , , , 255 color 0,255,0 pos push_x_pos_2 , 255 gcopy BACK_GROUND , push_x_pos_2 , 255 , MARUBATU_SIZE , MARUBATU_SIZE pos push_x_pos_2 , 255 gcopy ID_BUTTON , push_x_pos , MARUBATU_SIZE , MARUBATU_SIZE , MARUBATU_SIZE gosub *正解判定 return *四択連想クリック YONTAKU_X_POS = (ginfo_winx-YONTAKU_X_SIZE)/2 repeat 4 if key&256{ if (push_sign=0)&(mx>YONTAKU_X_POS)&(mx<(YONTAKU_X_POS+YONTAKU_X_SIZE))&(my>YONTAKU_Y_POS+(YONTAKU_Y_SIZE*cnt))&(my<(YONTAKU_Y_POS+(YONTAKU_Y_SIZE*cnt)+YONTAKU_Y_SIZE)){ your_choice = sentakusi.cnt value = (cnt+1) gosub *四択連想選択処理 break } } loop return *四択連想選択処理 push_sign = 1 pos YONTAKU_X_POS , YONTAKU_Y_POS+(value-1)*YONTAKU_Y_SIZE gsel 0 gmode 4 , , , 255; color 0 , 255 , 0 ; 黄緑色抜き gcopy BACK_GROUND , YONTAKU_X_POS , YONTAKU_Y_POS+(value-1)*YONTAKU_Y_SIZE , YONTAKU_X_SIZE , YONTAKU_Y_SIZE ;まず選択されたボタンの下の部分の背景を描画 gcopy ID_BUTTON , 0 , (value - 1)*YONTAKU_Y_SIZE + YONTAKU_Y_SIZE*4 , 400 , YONTAKU_Y_SIZE ;押されたボタンを表示 gosub *正解判定 return *順番当てクリック JYUNBAN_X_POS = (ginfo_winx-YONTAKU_X_SIZE)/2 repeat jyunban_kazu if key&256{ if (jyunban_push_sign.cnt=0)&(mx>JYUNBAN_X_POS)&(mx<(JYUNBAN_X_POS+YONTAKU_X_SIZE))&(my>YONTAKU_Y_POS+(YONTAKU_Y_SIZE*cnt))&(my<(YONTAKU_Y_POS+(YONTAKU_Y_SIZE*cnt)+YONTAKU_Y_SIZE)){ your_choice = your_choice + sentakusi.cnt jyunban_push_sign.cnt = 1 value = (cnt+1) gosub *順番当て選択処理 } } loop return *順番当て選択処理 jyunban_push = jyunban_push + 1 pos JYUNBAN_X_POS , YONTAKU_Y_POS + (value-1)*YONTAKU_Y_SIZE gsel 0 gmode 4 , , , 255; color 0 , 255 , 0 ; 黄緑色抜き gcopy BACK_GROUND , JYUNBAN_X_POS , YONTAKU_Y_POS+(value-1)*YONTAKU_Y_SIZE , YONTAKU_X_SIZE , YONTAKU_Y_SIZE ;まず選択されたボタンの下の部分の背景を描画 gcopy ID_BUTTON , 0 , (value - 1)*YONTAKU_Y_SIZE + YONTAKU_Y_SIZE*4 , 400 , YONTAKU_Y_SIZE ;押されたボタンを表示 font "MS ゴシック" , 28 ,16 color 255 , 255 , 255 textmode 2 color 0 , 0 , 0 pos 480 , YONTAKU_Y_POS + (value - 1)*YONTAKU_Y_SIZE + 10 emes "" + jyunban_push if jyunban_push = jyunban_kazu : jyunban_push=0 : jyunban_kazu = 0 : gosub *正解判定 return *四文字クリック repeat 10 if key&256{ if (push_sign=0)&(mx>sentakusi_x_pos.cnt)&(mx<(sentakusi_x_pos.cnt)+YONMOJI_SIZE)&(my>sentakusi_y_pos.cnt)&(my<(sentakusi_y_pos.cnt)+YONMOJI_SIZE){ value = cnt gosub *四文字選択処理 break } } loop return *四文字選択処理 push_sign = 1 gsel ID_BUTTON font "MS ゴシック" , 32 , 16 color 255 , 255 , 255 textmode 0 pos yonmoji_push * 50 + 8 , 78 emes "" + sentakusi.value your_choice = your_choice + sentakusi.value gsel 0 pos (ginfo_winx - 200)/2 + yonmoji_push * 50 + 3 , 160 + 3 gcopy ID_BUTTON , yonmoji_push * 50 + 3 , 70 + 3 , 44 , 44 yonmoji_push = yonmoji_push + 1 if yonmoji_push = 4 : yonmoji_push = 0 : gosub * 正解判定 push_sign = 0 return //ここからは自分で好きなように書いてください *並べ替えクリック return *タイピングクリック return *一問多答クリック return *線結びクリック return *正解判定 push_sign = 1 font "MS ゴシック" , 120 , 16 wait 50 if your_choice = "" : gosub *不正解 if kotae != your_choice : gosub *不正解 if kotae = your_choice : gosub *正解 kotae = "" your_choice = "" next_flag = 1 return *正解 pos 200,70 color 255 , 255 , 0 textmode 2 color 255 , 0 , 0 emes "正解" return *不正解 title kotae pos 140,70 color 255 , 255 , 255 textmode 2 color 0 , 0 , 255 emes "不正解" return