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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0526
船丸 (投稿者削除)11解決


船丸

リンク

2008/5/26(Mon) 18:17:21|NO.16131

この記事は投稿者により削除されました。
2008/5/30(Fri) 15:42:33



この記事に返信する


StarratS

リンク

2008/5/26(Mon) 18:27:35|NO.16132

別にあなたにお礼されたくてみなさん答えてるわけじゃないと思うんだけど。
前回の質問で何が足りなかったのかまだあなたの中で解消しきれてない様子です。



StarratS

リンク

2008/5/26(Mon) 18:37:56|NO.16133

前回(http://hsp.tv/play/pforum.php?mode=all&num=16061)のやりとりで
何を反省されたか知りませんけど、
あなたが言うようにutarrlet命令にエラーがあるか調べましたけど、
その命令を使うために下準備としてutarrini命令を使っていますが、
utarrini命令はちゃんと調べたんですか?
そこ調べてから結果を教えてくださいな。



船丸

リンク

2008/5/26(Mon) 18:54:49|NO.16136

>sdim _1dim1, , _1dim3, p2,defs
に、エラーがありました。
その他にも沢山エラーがありました。
でも、文字が表示されません。

#module #deffunc utarrini int p1 , int p2 , int p3 if p2 = 0 { sdim _1dim1, , p1 , p3 sdim fontc , , p1 , p3 dim fontsize , p1 , p3 dim fontmode , p1 , p3 dim r , p1 , p3 dim g , p1 , p3 dim b , p1 , p3 _1dim_mes=p1 }else { sdim _1dim1, , p1 , p2 , p3 dim r , p1 , p2 , p3 dim g , p1 , p2 , p3 dim b , p1 , p2 , p3 sdim fontc , , p1 , p2 , p3 dim fontsize , p1 , p2 , p3 dim fontmode , p1 , p2 , p3 _1dim_mes = p1 _1dim_mes2xt = p2 } return #deffunc utarrlet str _1dim2 , int sur defs=sur if _1dim_mes2xt = 0 { repeat _1dim_mes //▲確保した配列の変数名は、_1dim じゃなく _1dim1 //▲_1dim2の直後に、全角スペースがあるので 異なる変数名になってしまっている _1dim1 ( cnt , defs ) = _1dim2 // 入れる r ( cnt , defs ) = 0 g ( cnt , defs ) = 0 b ( cnt , defs ) = 0 fontc ( cnt , defs ) = "HGP教科書体" fontsize ( cnt , defs ) = 20 fontmode ( cnt , defs ) = 0 loop }else { repeat _1dim_mes2xt mcnt = cnt repeat _1dim_mes //▲確保した配列の変数名は、_1dim じゃなく _1dim1 //▲_1dim2の直後に、全角スペースがあるので 異なる変数名になってしまっている _1dim1 ( mcnt , cnt ,defs ) = _1dim2 // 入れる fontc ( mcnt ,cnt ,defs ) = "HGP教科書体" fontsize ( mcnt ,cnt ,defs ) = 20 fontmode ( mcnt ,cnt ,defs ) = 0 r ( mcnt , cnt ,defs ) = 0 g ( mcnt , cnt ,defs ) = 0 b ( mcnt , cnt ,defs ) = 0 loop loop } return #deffunc utarrmes int def ,int _taim,int ut1,int waf ,int _1mespri ,int _1mespri2 ,int kaker , int colorf , int fontf ,int _1mx ,int _1my if _1_Err=0 :return 1 if _1_Err=1 { repeat _1dim_mes if ut1 = 0 { pos rnd ( _1mx ) - _1mespri , rnd ( _1my ) - _1mespri2 } else { pos gdp * kaker + _1mespri , cnt * kaker + _1mespri } if fontf = 1 :font fontc ( cnt , def ) , fontsize ( cnt , def ) , fontmode ( cnt , def ) if colorf = 1 :color r ( cnt , def ) , g ( cnt , def ) , b ( cnt , def ) mes _1dim1 ( cnt , def ) if waf ! 1 :await _taim loop } else { repeat _1dim_mes gdp = cnt repeat _1dim_mes2xt if ut1 = 0 { pos rnd ( _1mx ) - _1mespri , rnd ( _1my ) - _1mespri2 } else { pos gdp * kaker + _1mespri2 , cnt * kaker + _1mespri2 } if fontf = 1 :font fontc ( cnt , gdp , def ) , fontsize ( cnt , gdp , def ) , fontmode ( cnt , gdp , def ) if colorf = 1 :color r ( cnt , gdp , def ) , g ( cnt , gdp , def ) , b ( cnt , gdp , def ) mes _1dim1( cnt , gdp , def ) loop if waf!1 :await _taim loop } return #global
試しに、

utarrini 10,10,10 utarrlet "hsp3util2xt",3 utarrlet "■",6 utarrmes 6,1,0,0,20,20,0,0,0,660,500
文字が表示されません。
なぜでしょう。



船丸

リンク

2008/5/26(Mon) 18:58:27|NO.16137

すいません。初歩的なミスがあったみたいです。
ごめんなさい。解決しました。



StarratS

リンク

2008/5/26(Mon) 19:00:14|NO.16138

>>sdim _1dim1, , _1dim3, p2,defs
>に、エラーがありました。
>その他にも沢山エラーがありました。
>でも、文字が表示されません。

間違ってるよ。
その他にも沢山エラーがあるから文字が表示されないんだよ。

今やったみたいに
エラー行だけ見るんじゃなくて前後に関係のある変数とか見ていったり、
変数の値が自分の考えていた範囲内のものかどうかとか見ていくんだよ。
エラーが出る前に
mes (値を見たい変数)

のように地味な作業をやっていけばいいんだよ。



SYAM

リンク

2008/5/26(Mon) 21:05:58|NO.16141

mesの代わりにdialogを使うと、確実に見えるし動作も(割り込みでジャンプとかしなきゃ)一時的に止まってくれるから便利。
しかし、「はい/いいえ」式ダイアログで「いいえ」の時にendするとかにしないとイヤーンな目に遭っちゃうぞ!



StarratS

リンク

2008/5/29(Thu) 07:23:12|NO.16253

別スレで本人から要望のあった添削。
>だったら、HSPプログラムコンテスト2008でhsp3util2xt以上のモジュールを公開するなら話は別ですけど。


; utarr系命令の初期情報を設定する(by StarratS) #deffunc utarrini int p1 , int p2 , int p3 ; p3は動作を変えるスイッチ(by StarratS) if p3 < 1 { ; どれもかしこも2次元配列を確保してるけど意味あるのか不明(by StarratS) sdim _1dim1, , p1 , p2 ; 用途のつかめない悪い変数名の見本(by StarratS) sdim fontc , , p1 , p2 ; フォント?(by StarratS) dim fontsize , p1 , p2 ; フォントサイズね(by StarratS) dim fontmode , p1 , p2 ; フォントモードねぇ〜(by StarratS) dim r , p1 , p2 ; 赤ですかね(by StarratS) dim g , p1 , p2 ; 緑ですかね(by StarratS) dim b , p1 , p2 ; 青ですかね(by StarratS) _1dim_mes=p2 ; ... }else { sdim _1dim1, , _1dim3, p2,defs ; どこから出てきた変数名ですかね0ですけど(by StarratS) dim r , p1 , p2 , p3 ; 3次元配列になっちゃったよ(by StarratS) dim g , p1 , p2 , p3 ; 3次元配列になっちゃったよ(by StarratS) dim b , p1 , p2 , p3 ; 3次元配列になっちゃったよ(by StarratS) sdim fontc , , p1 , p2 , p3 ; ... dim fontsize , p1 , p2 , p3 ; ... dim fontmode , p1 , p2 , p3 ; ... _1dim_mes = p2 _1dim_mes2xt = p3 } return #deffunc utarrlet str _1dim2 , int sur defs=sur if _1dim_mes < 1 { ; _1dim_mes(iniのp2) が 0以下ならループを実行する(by StarratS) ; でも_1dim_mesが0ならループ入らずw(by StarratS) ; _1dim_mesが負数なら無限ループwこのモジュール終わってるwww(by StarratS) repeat _1dim_mes //▲確保した配列の変数名は、_1dim じゃなく _1dim1 //▲_1dim2の直後に、全角スペースがあるので 異なる変数名になってしまっている ; ▲こんなコメントいれるくらいなら意味のある変数名をつければ済むこと(by StarratS) ; 全角スペース意味不明(by StarratS) _1dim1 ( defs , cnt ) = _1dim2 // 入れる ; コメント書かなくても代入してることは明白.無駄コメント乙(by StarratS) r ( defs , cnt ) = 0 ; defsはletのp2から引っ張ってきているが、rの配列要素数(iniのp1)と一致しない場合はどうすんの(by StarratS) g ( defs , cnt ) = 0 ; defsがgの1次元目の要素数以上を指定されてもこういった"自動拡張"の仕方はしない(by StarratS) b ( defs , cnt ) = 0 ; 結論:defsがiniのp1以上の数だと「配列の要素が無効」エラー発生w(by StarratS) fontc ( defs , cnt ) = "HGP教科書体" ; 俺のpcに入ってないフォントですが(by StarratS) fontsize ( defs , cnt ) = 20 ; なんでフォントサイズが決められてるんだ(by StarratS) fontmode ( defs , cnt ) = 0 loop }else { ; _1dim_mesが正数だからループ実行 repeat _1dim_mes mcnt = cnt ; _1dim_mes2xtが正数なのはiniのp3に正数を指定したときだけ ; p3が0未満の場合_1dim_mes2xtは0でループが実行されないときがあっていいのか?(by StarratS) repeat _1dim_mes2xt //▲確保した配列の変数名は、_1dim じゃなく _1dim1 //▲_1dim2の直後に、全角スペースがあるので 異なる変数名になってしまっている _1dim1 ( defs , mcnt , cnt ) = _1dim2 // 入れる fontc ( defs , mcnt ,cnt ) = "HGP教科書体" fontsize ( defs , mcnt ,cnt ) = 20 fontmode ( defs , mcnt ,cnt ) = 0 r ( defs , mcnt , cnt ) = 0 g ( defs , mcnt , cnt ) = 0 b ( defs , mcnt , cnt ) = 0 loop loop } return // utarrmes命令 // 文字列型配列変数を表示する。 // // utarrmes taim ,rndk, waf , hosx ,hosy ,kak ,font ,color // // taim 更新する時間 // rndk ランダム表示するか(1を指定すると普通、指定しないとランダム表示) // waf 待ち時間を抜くか(1で待ち時間を抜く) // hosx ,hosy 補修値(ランダム表示する場合は上、左に移動させる。ランダム表示させない場合はその逆) // kak 文字表示の幅(rndkが1の時に指定する。) // color カラー要素を入れるか(1で入れる) // font フォント要素を入れるか(1で入れる) // #deffunc utarrmes int def ,int _taim,int ut1,int waf ,int _1mespri ,int _1mespri2 ,int kaker , int colorf , int fontf ,int _1mx ,int _1my ; コメントと一致しないパラメータ郡(by StarratS) if _1_Err=0 :return 1 ; このモジュールにエラーがあるので実行をやめるwwwwwwwwwwwwwwwwwwwwww(by StarratS) ; 実行されるんですかねぇ(by StarratS) if _1_Err=1 { ; 無限ループまっしぐら(by StarratS) repeat _1dim_mes if ut1 = 0 { pos rnd ( _1mx ) - _1mespri , rnd ( _1my ) - _1mespri2 } else { pos gdp * kaker + _1mespri , cnt * kaker + _1mespri } ; ループ中なんどもフォントを設定するんだねぇ(by StarratS) ; fontc配列には要素ぜーんぶに同じフォント名が入ってるんだ(by StarratS) ; fontsize, fontmode ...(by StarratS) if fontf = 1 :font fontc ( def , cnt ) , fontsize ( def , cnt ) , fontmode ( def , cnt ) ; ブラック一色のカラーモード...(by StarratS) if colorf = 1 :color r ( def , cnt ) , g ( def , cnt ) , b ( def , cnt ) mes _1dim1 ( def , cnt ) if waf ! 1 :await _taim loop } else { ; いつ実行されるか分からないが(by StarratS) repeat _1dim_mes gdp = cnt ; ...(by StarratS) repeat _1dim_mes2xt if ut1 = 0 { pos rnd ( _1mx ) - _1mespri , rnd ( _1my ) - _1mespri2 } else { pos gdp * kaker + _1mespri2 , cnt * kaker + _1mespri2 } ; またもや配列要素の要素指定に難あり(by StarratS) if fontf = 1 :font fontc ( def , gdp , cnt ) , fontsize ( def , gdp , cnt ) , fontmode ( def , gdp , cnt ) if colorf = 1 :color r ( def , gdp , cnt ) , g ( def , gdp , cnt ) , b ( def , gdp , cnt ) mes _1dim1( def , gdp , cnt ) loop if waf!1 :await _taim loop } return #global



StarratS

リンク

2008/5/29(Thu) 07:36:29|NO.16254

えー失礼。
_1dim_mesが負数になるより先に配列確保でエラーがでます。はい。
ということは そういうことです。



SYAM

リンク

2008/5/29(Thu) 09:59:32|NO.16257

悪意のこもりっぷりにはあんまり感心できませんが、売られたケンカみたいですしね…
内容は至極もっともなので、作者さんは参考にするといいと思うのです。
しないの 損ですよ。



リンク

2008/5/29(Thu) 11:59:50|NO.16259

StarratSさん、最高ですわ



船丸

リンク

2008/5/29(Thu) 17:01:30|NO.16266

思ったのですけどStarratSをStrikerSに改名した方がいいのではないですか?



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