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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0312
makeHSP2から3への変換について9未解決


make

リンク

2008/3/12(Wed) 23:27:55|NO.14139

HSP2.6から3.0で使う為にHSP支援ツールで紹介されている
ソースコンバータのソフトを使って
HSP開発wikiにあるsyogi02.asとsyogi_m.asを変換したのですがエラーがでてしまいます
どうすれば3.0で使えるようになるんでしょうか?

実行すると下記のエラーがでます
>エラー21 in line 207 (syogi_m.as)
>サポートされない機能を選択しました

モジュールの207行目前後は

マウスでポイントしている盤の位置を表す番号 #deffunc sg_GetBMouse val, val mref p1, 16 ;207行目 mref p2, 17 mref ostat, 64



この記事に返信する


As

リンク

2008/3/12(Wed) 23:35:37|NO.14140

(hspディレクトリ)/docs/hspprog.htm#prog3_1
3.拡張文法-モジュール

を参照してください



make

リンク

2008/3/13(Thu) 00:30:46|NO.14144

すみません、仕様書を見てくださいという事ではなく
わからないので質問している次第です

ソースを見る限りでは○○でエラーがでているのでXX命令を追加すればいいとか
もう少し具体的な答えを頂ければ幸いです



As

リンク

2008/3/13(Thu) 00:39:17|NO.14148

仕様書に
#deffunc の使用方法が記載されていますのでそちらをご覧になることをお勧めします。

なおmref命令は特別な使用方法を求めない限り、使われなくなりました。



make

リンク

2008/3/14(Fri) 02:04:14|NO.14186

将棋のモジュールエラーはmrefやif等で大量にあるようなのでとりあえず保留にします
話はかわってサンプルにあった2用のスロットを3用に変換したのですが
うまく動作しません
原因の場所はわかったのですがどう直したらいいかわかりません
わかる方、よろしくお願いします


wid=256: heit=176: screen 0,wid,heit,,(ginfo_dispx-wid)/2,(ginfo_dispy-heit)/2 buffer 2,32,231: color: boxf: color 255,255,255 font "MS ゴシック",32: mes "○\n●\n△\n▲\n□\n■\n○\n" gsel 0,1 randomize: y=64: title "slot machine": margin=48 *l_init cls: mes "スペースキーで止まります" n=0: m=n repeat stick a,,1: if a==16: gosub *l_key: if n>2: break gosub *l_fast: await loop pos 0,y+64 if (slot.0==slot.1)&(slot.1==slot.2) { mes "おめでとう!!" } else { mes "残念でした" } mes "何かキーを押してください" repeat stick a,,1: if a: break wait 1 loop goto *l_init *l_key m=n+1: c=gy.n\33: d=0 repeat d+=8 if d>=c { pos (n*64)+margin,y: gcopy 2,0,gy.n,32,32 if (gy.n\33)==0: break gy.n++: c+=2: d=0 } if m==3 { repeat 400: await: loop } else { gosub *l_fast } await loop: if gy.n>197: gy.n=0 slot.n=gy.n/33: n++ return *l_fast repeat 3-m,m pos (cnt*64)+margin,y: gcopy 2,0,gy.cnt,32,32 ;→エラー場所 gy.cnt+=2: if gy.cnt>197: gy.cnt=0 loop: repeat 10000: loop return 2,0,gy+cnt,32,32とした場合 回転をとめる時、本来は左だけがとまり中と右は回転してるはずが とまってしまう



As

リンク

2008/3/14(Fri) 02:17:54|NO.14187

>*l_fast
dim gy,3
>repeat 3-m,m

> pos (cnt*64)+margin,y: gcopy 2,0,gy.cnt,32,32 ;→エラー場所

配列変数を使うときは、配列変数として初期化してからでないと使えません。



s

リンク

2008/3/14(Fri) 05:52:35|NO.14192

んー、わざわざ変換するより
まず自分の腕を磨いて直してくといいんじゃないかな
ソフトは上手く変換できないわけだし、人が補助するのは当然のこと

>すみません、仕様書を見てくださいという事ではなく
>わからないので質問している次第です
でも見ようね



make

リンク

2008/3/14(Fri) 20:56:25|NO.14213

>sさん
見て読んでもわからないので質問してるんですが・・・。

>Asさん
確認した所、エラーはでませんが正常に動作してないんですけど?



As

リンク

2008/3/14(Fri) 21:44:40|NO.14223

正常に動作しないのは、スクリプトが間違っているからです。
また、わからない命令・関数があったら、その命令・関数にカーソルを合わせ、F1を押してください。
いいですね、F1を押すんですよ。


そこに 構文が書かれていますので、その構文が自分が書いているプログラムと相違な点はないか
ということをよく見比べてみてください。



GENKI

リンク

2008/3/14(Fri) 23:49:21|NO.14238

書きっぱなしすいません。

> HSP開発wikiの将棋のHSP3への移植

モジュールについての知識が必要です。
簡単なモジュールを自作できる程度の技術を身に付ける必要があります。


> サンプルにあった2用のスロットを3用に変換したのですが

短いスクリプトなので、頭から1つ1つ処理を追いかけ、このスクリプトがどういう仕組みで動作しているかを確認してみてください。
原因(エラー行のことではない)がわかれば対策の打ち方も分かってくるはずです。
でも先ずは見やすいようスクリプトを整形したほうがいいかも。

> 2,0,gy+cnt,32,32とした場合

スクリプトが何をやっているのかちゃんと理解すればこういう対策はやらないはずです。
うーん…。(^_^;) 配列変数の使い方も身につけておいてくださいね。



ソースコンバータは、自作スクリプトの移植作業支援ツールと考えたほうがいいと思います。
どうしても何もかもが完璧とは行きませんので最終的には自分でスクリプトを見直してデバッグする必要があると思います。
つまり変換ツール使っても自分の技量以上のスクリプトの移植は難しいということです。
(逆を言えば自分に何が足りないのか見つけることが出来るかもということ…?)



> >*l_fast
> dim gy,3
> >repeat 3-m,m

ウッカリなのか考える余地をあえてのこしたのか微妙だ…。(´・ω・`)
「dim gy,3」が必要なのには違いないのですよ。
てことで、あとはmakeさんがんばれ。



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