キャスト番号は1-10までが表向けのカードのグラフィック。12番が裏返しのカードのグラフィックです。
スプライトは1から20までがパペットになっていて、左上から順番に1、2と配置しています。
スクリプトは以下の通りです。
on startMovieこっちは裏がえしのカードのキャストのスクリプトです
global kotaeList,MyList
--最初は答えのリストはきちんとならべておきました
set kotaeList=[1,1, 2 , 2 , 3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10]
--このリストは最初に1枚目と2枚目に何を選択したかをいれておくリストです
set Mylist =[0,0]
--スプライトをパペットにしておきます
repeat with m=1 to 20
puppetSprite m,TRUE
end repeat
--ハンドラmazeruを実行します
mazeru
end
--on mazeru
global KotaeList
--20回ほど並べ替えます
repeat with m=1 to 20
--どこを並べ替えるのかをランダムに決めます(変数はtargetとしておきます)
put random(20) into target
--リストの最後に、さっきtargetで示された場所の数字を入れ...
setAt KotaeList, 21, getAt(kotaeList, target)
--もとの数字を消します(これで全体の数を調整します)
deleteAt kotaeList, target
end repeat
end
--
on hantei
global kotaeList,mylist
--選択した2枚があっているかを判断します
if getAt(kotaeList,getAt(myList,1))<>getAt(kotaeList,getAt(myList,2)) then
--ここでタイマーを作動させます(別に無くてもよいです)
startTimer
repeat while the mouseUp
--3秒間はめくったカードを表示させます(別になくてもいいかな)
if the timer <3*60 then
nothing
else
--3秒以上たったら裏返します
set the castNum of sprite getAt(myList,1) to 12
set the castNum of sprite getAt(myList,2) to 12
updatestage
end if
end repeat
--3秒以内に他のところをクリックされた場合の裏返し処理です
set the castNum of sprite getAt(myList,1) to 12
set the castNum of sprite getAt(myList,2) to 12
updatestage
else
--2枚があっているときはビープ音を2回鳴らします
beep 2
end if
--mylistを初期化します
set myList=[0,0]
end
on mouseUpちょっとリスト表記のところがめんどくさいですかね。
global kotaeList,mySpNum,MyList
--クリックされたら自分のスプライト番号を変数mySpNumにいれます
put the clickon into mySpNum
--もしMylistがからっぽだったら...
if getat(Mylist ,1) = 0 then
--myListにそのスプライト番号をいれ、
setAt mylist, 1, mySpNum
--そのスプライトを適切なキャストに置き換えます
set the castNum of sprite mySpNum to getAt (kotaeList,mySpNum )
else
--2枚目の場合も似たようなことをします
setAt Mylist , 2,mySpNum
set the castNum of sprite mySpNum to getAt (kotaeList,mySpNum )
updatestage
--ここで判定のルーチンに飛びます hantei
updatestage
end if
end