|
|
2008/5/26(Mon) 18:17:21|NO.16131
この記事は投稿者により削除されました。
2008/5/30(Fri) 15:42:33
|
|
2008/5/26(Mon) 18:27:35|NO.16132
別にあなたにお礼されたくてみなさん答えてるわけじゃないと思うんだけど。
前回の質問で何が足りなかったのかまだあなたの中で解消しきれてない様子です。
|
|
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
すいません。初歩的なミスがあったみたいです。
ごめんなさい。解決しました。
|
|
2008/5/26(Mon) 19:00:14|NO.16138
>>sdim _1dim1, , _1dim3, p2,defs
>に、エラーがありました。
>その他にも沢山エラーがありました。
>でも、文字が表示されません。
間違ってるよ。
その他にも沢山エラーがあるから文字が表示されないんだよ。
今やったみたいに
エラー行だけ見るんじゃなくて前後に関係のある変数とか見ていったり、
変数の値が自分の考えていた範囲内のものかどうかとか見ていくんだよ。
エラーが出る前に
mes (値を見たい変数)
のように地味な作業をやっていけばいいんだよ。
|
|
2008/5/26(Mon) 21:05:58|NO.16141
mesの代わりにdialogを使うと、確実に見えるし動作も(割り込みでジャンプとかしなきゃ)一時的に止まってくれるから便利。
しかし、「はい/いいえ」式ダイアログで「いいえ」の時にendするとかにしないとイヤーンな目に遭っちゃうぞ!
|
|
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
| |
|
2008/5/29(Thu) 07:36:29|NO.16254
えー失礼。
_1dim_mesが負数になるより先に配列確保でエラーがでます。はい。
ということは そういうことです。
|
|
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に改名した方がいいのではないですか?
|
|