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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1109
ひよこブロック崩しにて・・・・7未解決


ひよこ

リンク

2007/11/9(Fri) 21:46:24|NO.12238

某所で気になるプログラミングがあったので、抜粋後一部改ざんして投稿。
以下を実行すると

#Error 41 in line 263 (???)
-->関数を命令として記述しています。
(HSP2から関数化された名前を使用している可能性があります)

となりますが、263行目はただのintです。
さてなんででしょうか??

P.S.
画像データなしですいません。

buffer 1 picload "smp1.bmp" buffer 2 picload "smp2.bmp" screen 0,320,400,4 title "ブロック崩し〜〜〜〜" jx=0 jy=350 jhp=5 #const pic_w 52 #const pic_h 14 bx=0 by=0 bvx=0 bvy=0 bflag=1 #const bpic_w 5 #const bpic_h 5 dim brk_cnt,11,11 brk_max=0 #const brkpic_w 32 #const brkpic_h 14 #const GAME_TITLE 0 #const GAME_RUN 1 #const GAME_OVER 2 #const GAME_CLEAR 3 game_switch=GAME_TITLE *main switch game_switch case GAME_TITLE gosub *run_title swbreak case GAME_RUN gosub *key gosub *paint if(bflag=0){ gosub *bmove } swbreak case GAME_OVER gosub *run_gameover swbreak case GAME_CLEAR gosub *run_gameclear swbreak swend await 1 goto *main *key int keycode stick keycode,1+4 if(keycode&1){ jx-=3 } if(keycode&4){ jx+=3 } if(jx<0){ jx=0 } if(jx>(320 - pic_w)){ jx = 320 - pic_w } if(bflag=1){ bx=jx+((pic_w-bpic_w)/2) by=jy-bpic_h if(keycode&16){ bflag=0 rtmp = rnd(2) bvx=rtmp+1 if(bx<160){ bvx=-1*bvx } bvy=-1*(rtmp+1) } } return *paint redraw 0 color 255,255,255 boxf 0,0,320,400 pos jx,jy gcopy 1,0,0,pic_w,pic_h pos bx,by gcopy 1,0,14,bpic_w,bpic_h gosub *brkpaint color 0,0,0 pos 0,0 print "LIFE:"+jhp redraw 1 return *brkpaint int i int j for i,0,10 for j,0,10 pos brkpic_w*i,brkpic_h*j if(brk_cnt.i.j!=0){ gcopy 2,brkpic_w*((brk_cnt.i.j-1)/3),brkpic_h*((brk_cnt.i.j-1)\3),brkpic_w,brkpic_h } next next return *stage int i int j brk_cnt.0.0=0,0,0,0,0,0,0,0,0,0 brk_cnt.0.1=0,0,0,0,0,0,0,0,0,0 brk_cnt.0.1=0,6,6,6,6,6,6,6,6,0 brk_cnt.0.2=0,5,5,5,5,5,5,5,5,0 brk_cnt.0.3=0,4,4,4,4,4,4,4,4,0 brk_cnt.0.4=0,3,3,3,3,3,3,3,3,0 brk_cnt.0.5=0,2,2,2,2,2,2,2,2,0 brk_cnt.0.6=0,1,1,1,1,1,1,1,1,0 brk_max=0 for i,0,10 for j,0,10 if(brk_cnt.j.i>0){ brk_max++ } next next return *brkhit int i int j for i,0,10 for j,0,10 if(brk_cnt.i.j!=0){ if((bx>=(brkpic_w*i-bpic_w))and(bx<=(brkpic_w*i+brkpic_w))){ if(((by+bpic_h)>=(brkpic_h*j))and((by+bpic_h)<=((brkpic_h*j)+(brkpic_w/5)))){ by=brkpic_h*j-bpic_h-2 bvy=-1*bvy brk_cnt.i.j-- if (brk_cnt.i.j<=0){ brk_cnt.i.j=0 brk_max-- if(brk_max<=0){ game_switch=GAME_CLEAR } } return } else{ if((by<=(brkpic_h*(j+1)))and(by>=((brkpic_h*(j+1))-(brkpic_w/5)))){ by=brkpic_h*(j+1)+2 bvy=-1*bvy brk_cnt.i.j-- if (brk_cnt.i.j<=0){ brk_cnt.i.j=0 brk_max-- if(brk_max<=0){ game_switch=GAME_CLEAR } } return } else{ if(((by+bpic_h)>((brkpic_h*j)+(brkpic_h/5)))and((by+bpic_h)<=(brkpic_h*(j+1)))){ if(((brkpic_w*i)+(brkpic_w/2))>bx){ bx=(brkpic_w*i)-bpic_w-2 } else{ bx=(brkpic_w*i)+pic_w+2 } bvx=-1*bvx brk_cnt.i.j-- if (brk_cnt.i.j<=0){ brk_cnt.i.j=0 brk_max-- if(brk_max<=0){ game_switch=GAME_CLEAR } } return } } } } } next next return *bmove bx+=bvx by+=bvy if(bx<0){ bx=0 bvx=-1*bvx } if(bx>(320-bpic_w)){ bx=320-bpic_w bvx=-1*bvx } if(by<0){ by=0 bvy=-1*bvy } if(by>(400-bpic_h)){ jhp-- bflag=1 if(jhp<0){ game_switch=GAME_OVER } } gosub *bhit gosub *brkhit return *bhit if((bx>=(jx-bpic_w))and(bx<=(jx+pic_w))){ if(((by+bpic_h)>=jy)and((by+bpic_h)<=(jy+(3*pic_h/5)))){ by=jy-bpic_h bvy=-1*bvy } else{ if(((by+bpic_h)>(jy+(3*pic_h/5)))and((by+bpic_h)<=(jy+pic_h))){ if((jx+(pic_w/2))>bx){ bx=jx-bpic_w } else{ bx=jx+pic_w } bvx=-1*bvx bvy=-1*bvy } } } return *run_title int t_keycode stick t_keycode if(t_keycode&16){ game_switch=GAME_RUN jhp=5 bflag=1 gosub *stage } redraw 0 pos 0,0 color 255,255,255 boxf 0,0,320,400 color 0,0,0 pos 45,150 print "ブロック崩し" pos 65,300 print "スペース押してplease" redraw 1 return *run_gameover int o_keycode stick o_keycode if(o_keycode&16){ game_switch=GAME_TITLE } redraw 0 pos 0,0 color 255,255,255 boxf 0,0,320,400 color 0,0,0 pos 45,150 print "おめです。" pos 65,300 print "スペース押してplease" redraw 1 return *run_gameclear int c_keycode stick c_keycode if(c_keycode&16){ game_switch=GAME_TITLE } redraw 0 pos 0,0 color 255,255,255 boxf 0,0,320,400 color 0,0,0 pos 45,150 print "おめです。" pos 65,300 print "スペース押してplease" redraw 1 return



この記事に返信する


矢野

リンク

2007/11/9(Fri) 22:08:10|NO.12240

int命令は、HSP3.1において、関数になっていますよ。
確認してください。



矢野

リンク

2007/11/9(Fri) 22:08:30|NO.12241

int命令は、HSP3.1において、関数になっていますよ。
確認してください。



Hue

リンク

2007/11/9(Fri) 22:14:57|NO.12242

HSP2では
int t_keycode
ですが
HSP3からは

変数=int(変数)
の形で使います。


t_keycode=int(t_keycode)



あんすこえむ

リンク

2007/11/9(Fri) 22:23:04|NO.12243

intはHSP3で関数になったのは言うまでもないですが、
int i の様な記法ってC言語などで用いられるint型変数の宣言では?
HSPでは不要なんで行ごと取っ払ってください。
文字列型変数に変わっているかもしれないという心配があるなら、
変数名=0
のようにして整数型に初期化するのがいいでしょう。



ひよこ

リンク

2007/11/10(Sat) 00:51:24|NO.12253

おぉ〜〜〜;;;;;;
Cが結構いけるよな気になって簡単そうなゲームに手をだしたら・・・・・やられましたね〜〜;;
HSPでよくこのエラーが出てから何の命令が関数になってるのか気になってたんですけどintだったんですね〜;;
他に命令が関数に変わってるものを探すときはどこを探したらいいんでしょうか??
教えてもらえると嬉しいですTT



GENKI

リンク

2007/11/10(Sat) 01:25:34|NO.12255

ひよこさんはCからHSP3へ来た方でしょうか?
HSPとCは表記方法こそ似ている部分も多少ありますが、基本的に全く違うものであるとお考え下さい。
基本的な話で恐縮ですが、Cで聞きなれた命令でもHSPで始めて使う命令はF1キーを押して、ヘルプで使い方を確認してください。
また、エラーが出た場合は、今回のようにエラーが発生した行番号が表示されますので、エラー行周辺にミスがないか、
ヘルプを参照しつつ確認してください。(エラー行にエラーがあるとは限らないため。)


もし、HSP2からHSP3へ移行してきたのでしたら下記アドレスを参考にしてください。
↓HSP2からHSP3への移殖に関するページ[HSP Wiki]
http://quasiquote.org/hspwiki/%b0%dc%bf%a2Tips



Kpan

リンク

2007/11/10(Sat) 08:33:50|NO.12259

HSPに付属するマニュアルをチェックしてください。

> 以前のバージョンからの変更点(アップデートガイド) (update.htm)



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