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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1103
ennichiHSPlet コンパイルエラー?3解決


ennichi

リンク

2012/11/3(Sat) 18:12:48|NO.50446

HSPletで次のコードをコンパイルしようとしたら、[java.lang.ArrayIndexOutOfBoundsException:56]というエラーが出ました。
配列変数関係のエラーだということは調べて分かったのですが、どこが悪いのかわかりません。
一応、普通にF5で実行したときは動きます。
どなたか親切な方、教えてください。

#cmpopt optprm 0 #define xnum 10 #define ynum 10;ブロックの数 #define blkx 48 #define blky 24;ブロックの大きさ *start screen 0,blkx*xnum,blky*ynum+128 pos blkx*xnum/2-32,blky*ynum/2+40 button "始める",*main stop *main clrobj stat dim block,xnum,ynum;ブロックの状態 bltx=blkx*xnum/2:blty=blky*ynum+96 wallpos=blkx*xnum/2 xspd=4:yspd=-4 chkx=0.0:chky=0.0 repeat await 64 redraw 0 color 255,255,255:boxf bltx+xspd:blty+yspd color 255,0,0 repeat xnum xcnt=cnt repeat ynum ycnt=cnt if block(xcnt,ycnt)=0{ if bltx>xcnt*blkx & bltx<(xcnt+1)*blkx & blty>ycnt*blky & blty<(ycnt+1)*blky{ if xspd>0{ chkx=0.0+ (xcnt*blkx-(bltx-xspd))/xspd }else{ chkx=0.0 - ((bltx-xspd)-(xcnt+1)*blkx)/xspd } if yspd>0{ chky=0.0 + (ycnt*blky-(blty-yspd))/yspd }else{ chky=0.0 - ((blty-yspd)-(ycnt+1)*blky)/yspd } if chkx>chky:xspd=-xspd if chkx<=chky:yspd=-yspd block(xcnt,ycnt)=1 } boxf xcnt*blkx,ycnt*blky,(xcnt+1)*blkx,(ycnt+1)*blky } loop loop if bltx<0 | bltx>blkx*xnum:xspd=-xspd if blty<0:yspd=-yspd color 0,0,0:circle bltx-4,blty-4,bltx+4,blty+4 wallpos=mousex gradf wallpos-64,blky*ynum+124,64,4,0,$0064ff,$00ff00 gradf wallpos,blky*ynum+124,64,4,0,$00ff00,$0064ff if blty>blky*ynum+124 & bltx>wallpos-64 & bltx<wallpos+64:{ if xspd!yspd{ if bltx<wallpos-24{ if xspd>0{ yspd++ xspd-- }else{ yspd-- xspd-- } if xspd=0:xspd=-1 } if bltx>wallpos+24{ if xspd<0{ yspd++ xspd++ }else{ yspd-- xspd++ } if xspd=0:xspd=1 } } yspd=-yspd blty=blky*ynum+124 } if blty>blky*ynum+128:break redraw 1 loop redraw 1 pos blkx*xnum/2-32,blky*ynum/2+40 button "ゲームオーバー",*start stop



この記事に返信する


inovia

リンク

2012/11/3(Sat) 18:38:26|NO.50449

試していませんが、HSPLet側で対応していないgradf命令を使っているせいではないでしょうか?

暇人氏が投稿されたモジュールを使ってみてもダメでしょうかね?
http://hsp.tv/play/pforum.php?mode=all&num=49354



暇人

リンク

2012/11/3(Sat) 19:00:01|NO.50450

使用上の注意として(自分の所ではモジュール使用して動いた)
NO.49354のレスに修正箇所を一つ挙げてるので置き換えて欲しい

後本来のgradfとの相違点
・塗りつぶし色を省略した時は0が指定されてるとして動作(元のgradfはcolor色で塗りつぶし)
・gcopyで再現してるのでgmodeの影響を受ける(モード0での使用が一番軽いはず、16*16以下だと分からない)



ennichi

リンク

2012/11/3(Sat) 19:34:25|NO.50451

あ、なるほど、gradfってHSPletに対応してないんですね・・・。マニュアルに記載がなかったので見落としてました。
ありがとうございます。
gradfをboxfにしたらうまくいきました。



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