遊戯王とかデッキとか全然意味が分からないけど、取りあえず
カードゲームっぽい物を作りたいのかな。
急いでゲームを作ってみたいのも分かるけど、もう少し他の人が
どう言う風にコードを書いているのか、1つ1つの命令がどう言う意味なのか、
時間をかけて勉強した方がいいと思う。
HSP には「カードを描く」とか「シャッフルする」とかそう言うのが用意されている
訳ではないので・・
酒飲みながら書いてみたけど、他の人がもう少しまともなサンプルを書いてくれるはず (w
onexit goto *bye
#define CX 100 // カードの横方向のサイズ
#define CY 150
button gosub "シャッフル", *sh
cardNo(0)=0,1,2,3,4,5,6,7,8,9 // カード番号
power(0)=0,11,22,33,44,55,66,77,88,99 // 戦闘力
for i,0,10
posy(i)=rnd(50) // Y 方向のズレ量をランダムで決める
next
move(0)=210,190,171,153,136,120,105,91,78,66,55,45,36,28,21,15,10,6,3,1,0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210
repeat
redraw 0 // チラツキ防止
color 255,255,255 : boxf
for i,0,10 // 何番のカードが選択されているか調べる
if(100+30*i < mousex) & (mousex < 100+30*(i+1) ) & (200 < mousey) & (mousey < 200+150) {
cardsel=i
_break // for 文を抜ける
}
else{
cardsel=-1 // 選択されていない場合は -1 にしておく
}
next
stick key
if (key&256) { // 左クリックで選択されたカードを一番右へ移動
if (cardsel !=-1) {
for k,0,41
redraw 0
color 255,255,255 : boxf
for i,0,10
if i != cardsel{
x=100+30*i : y=200+posy(i)
color 0,0,0 : boxf x,y,x+CX,y+CY
color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2
color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(i)
}
next
x=100+30*cardsel : y=move(k)
color 0,0,0 : boxf x,y,x+CX,y+CY
color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2
color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(cardsel)
redraw 1
await 20
next
temp1 = cardNo(cardsel)
temp2 = power(cardsel)
for i,cardsel,9
cardNo(i)=cardNo(i+1) : power(i)=power(i+1)
next
cardNo(9)=temp1 : power(9)=temp2
}
}
// カードの表示
for i,0,10
if i != cardsel{
x=100+30*i : y=200+posy(i)
color 0,0,0 : boxf x,y,x+CX,y+CY
color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2
color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(i)
}
next
// 選択されたカードは一番最後に浮かせて表示する
if cardsel != -1{
i = cardsel
x=100+30*i : y=200+posy(i)-100 // 100 だけ上に浮かす
color 0,0,0 : boxf x,y,x+CX,y+CY
color 0,255,0 : boxf x+2,y+2,x+CX-2,y+CY-2
color 0,0,0 : pos x+10,y+10 : mes "戦闘力"+power(i)
}
// タイトルバーにカード番号の一覧を表示
output=""
for i,0,10
output=output+cardNo(i)+" "
next
title output
redraw 1 // チラツキ防止
await 100 // ループの速度を一定にするため wait ではなく await で 100ms
loop
stop
*bye
end
*sh // シャッフル
for j,0,9
temp1 = cardNo(j)
temp2 = power(j)
tempNo = rnd(9-j)+1+j
cardNo(j)=cardNo(tempNo) : power(j)=power(tempNo)
cardNo(tempNo)=temp1 : power(tempNo)=temp2
next
return