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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0615
ファッスーError 31の解決方法2解決


ファッスー

リンク

2012/6/15(Fri) 22:56:24|NO.47270

今STGを作っているのですが、実行して10秒後くらいに
「Error 31 in line 141 -->異なる型を持つ配列変数に代入しました」
というエラーが出てしまい次の作業に進めません。
何処がいけないんでしょうか?
色々と調べましたがまだ始めたばっかな僕にはイマイチ理解できないもので・・・



//変数(初期設定)
screen 0,740,480


randomize
move=5.0;自機の移動速度
smax=50.0;背景の星の最大個数
emax=20.0;敵の最大数
zmax=20.0;敵弾の最大数
wmax=5.0;自機弾最大数
jspd=10.0
jx=100.0
jy=200.0
pi = 3.141592
//配列変数
dim sx,smax
dim sy,smax
dim sc,smax
dim st,smax
dim et,emax;背景(星)の変数

dim et,emax
ddim ex,emax
ddim ey,emax;敵の変数

dim zt,zmax
ddim zx,zmax
ddim zy,zmax
ddim zvx,zmax
ddim zvy,zmax;敵弾の変数


dim wt,wmax
dim wx,wmax
dim wy,wmax;自機弾の変数

*main

frame + 1

color 100,0,0
boxf 640,0,740,480

pos 670,0
color 252,252,252
mes "自弾状況"

pos 670,130
color 252,252,252
mes frame


pos 700,20
repeat wmax
color 252,252,252
mes wt(cnt)
loop


//背景
color 0,0,0
boxf 0,0,640,480
time++

if (time \ 1)=0 {
repeat smax
if st(cnt)=0 {
st(cnt)=1
sx(cnt)=rnd(640)
sy(cnt)=0
sc(cnt)=sx(cnt)*32.0+31.0

break

}
loop
}




repeat smax
if sy(cnt)>480 : st(cnt)=0
if st(cnt)=1 {
sy(cnt)+=10.0
}
color sc(cnt),sc(cnt),sc(cnt)
boxf sx(cnt),sy(cnt),sx(cnt)+1.0,sy(cnt)+1.0
loop






//自機描写
color 0,252,0
pos jx,jy
mes"●"



//自機移動
stick key,79
if key&2:jy-jspd
if key&1:jx-jspd
if key&4:jx+jspd
if key&8:jy+jspd
if key&16{
shot_start = 1
}
else {
shot_start = 0
}

if key&64:jspd=4:else:jspd=10

if jx>620:jx=620
if jy>460:jy=460
if jx<0:jx=0
if jy<0:jy=0





//敵の出現
if frame = 50 {
repeat emax
if et(cnt) = 0 {
ex(cnt) =(1.0*rnd(480))
ey(cnt) = -8.0
et(cnt) = 1
break
}
loop
frame = 0
}
//敵の移動
repeat emax
if et(cnt) != 0 {
ey(cnt) + 6.0
//敵弾の発射
if ey(cnt) > 100 & et(cnt) != 2 {
zt(cnt) = 1
zx(cnt) = ex(cnt)
zy(cnt) = ey(cnt)
tmp = atan(jy-ey(cnt) , jx - ex(cnt))
tmp2 = pi * 2 + tmp
zvx(cnt) =cos(tmp2) * 3.0
zvy(cnt) =sin(tmp2) * 3.0
et(cnt) = 2
}
if ey(cnt) > 480 {
ey(cnt) = 0
}
}
loop
//敵の描写
repeat emax
if et(cnt) != 0 {
pos ex(cnt) - 8.0 ,ey(cnt) - 8.0
color 255,255,0
mes "■"
}
loop


//敵弾の移動
repeat zmax
if zt(cnt) = 1 {
zx(cnt) + zvx(cnt)
zy(cnt) + zvy(cnt)
}
loop
//敵弾の描写
repeat zmax
if zt(cnt) = 1 {
pos zx(cnt) - 8.0,zy(cnt) - 8.0
color 0,255,0
mes "★"
}
loop




//自分の弾
if shot_start =1 {
repeat wmax
if wt(cnt) = 0 {
wx(cnt)=jx
wy(cnt)=jy
wt(cnt)=1
break
}
loop
}


repeat wmax
if wt(cnt)=1 {
pos wx(cnt) - 8.0, wy(cnt) - 8.0
color 252,252,252
mes "▲"
}
loop


repeat wmax
if wt(cnt)=1 {
wy(cnt) -8.0
if wy(cnt) < -8.0 {
wt(cnt)=0
}

}
loop



redraw 0
redraw 1
await 17

goto *main



この記事に返信する


Him

リンク

2012/6/15(Fri) 23:36:14|NO.47272


if ey(cnt) > 480 { ey(cnt) = 0 }

この部分でeyがdouble型からint型に変わっているからです。



ファッスー

リンク

2012/6/15(Fri) 23:47:09|NO.47273

Himさん回答ありがとうございます
おかげさまで解決できました!!
・・・なんか凡ミスですみませんでした



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