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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0426
512MB同じ処理を違う変数で・・・8未解決


512MB

リンク

2007/4/26(Thu) 19:34:22|NO.7773

難しい質問かもしれないんですけど、
まず、何個か変数があるとするじゃないですか、(たとえば,a,b,c)
それを同じ処理をしたいんですよ、(たとえばすべてに+1して表示とか)
簡単な命令や、変数が少なければいいんですか、10個とか命令が長くなると
むだが多くなるじゃないですか。どのようにすればいいでしょうか?
また変数名に数字を入れて、(たとえば,a1,a2,a3)
それをrepeat〜loopの間にcntを利用してできないでしょうか?
良かったら教えてください。



この記事に返信する


りさ

リンク

2007/4/26(Thu) 19:58:39|NO.7774

こんにちわ、りさです。

>どのようにすればいいでしょうか?

配列を使って、要素番号に cnt を使えば良いかと思います。

num(cnt) な感じで。

それか、ユーザ定義命令を作って、そこにまとめる方法もあります。



512MB

リンク

2007/4/26(Thu) 20:28:22|NO.7776

何というか・・・
説明が難しいんですけど
gsquare
▲これを使いたいんですよ
たくさんこういうのを使うときの何かいい方法を・・・
よろしくお願いします。



阿藤

リンク

2007/4/26(Thu) 21:03:46|NO.7777

>gsquare

そのままだよ。
ヘルプにも書いてあるだろ。配列変数に4点の座標を代入してから呼び出すって。

もっとも配列変数って何?じゃぁ分からんだろうが。
つかりささんの書き込みを完全にスルーしてますね。
gsquareのサンプルもあるし。



りさ

リンク

2007/4/26(Thu) 22:13:13|NO.7781

>説明が難しいんですけど

1つの情報のために1つの変数を作ってたのでは、
100個も200個も変数が増えて、管理出来なくなってしまいます。

なので、変数に番号を付けて管理するような感じです。

512MBさんが仰っておられた、a1,a2,a3 のようなことが
配列変数を使えば簡単に出来ます。

a(0) や a(1) や a(2) のように使います。

こうすれば、ループの中で a(cnt) のように指定できます。

HSPのマニュアルに『配列変数』というタイトルで説明が載っているので、
そちらを見てもらえれば、詳しく分かると思います。

>書き込みを完全にスルーして

分かりづらかったのかも知れません(^^;;すみません。



512MB

リンク

2007/4/27(Fri) 17:43:27|NO.7790

そうじゃないんです
説明が難しくてすみません
gsquare があるじゃないですか、
これって、たとえばx,yと言う配列変数があって、
x(0),x(1),x(2),x(3)
y(0),y(1),y(2),y(3)
これで一セットじゃないですか
それをx1(0)・・・と何セットか使いたいんです
そのときにいちいち
gsquare x,y
gsquare x1,y1
・・・
と何十回もできないじゃないですか、
だから
repeat〜loop
の間でどうにかできないのかな、と考えているんです
説明が難しくてすみません
お願いします



eller

リンク

2007/4/27(Fri) 17:48:04|NO.7791

512MBさんが既に持っている知識でクリアできる問題だと思います。
ちょっとした見落としがあるだけです。

しつこいようですが、もう一度配列変数について調べてみてください。
dim命令のヘルプを読み直すことでも得るものがあると思います。



KIMU

リンク

2007/4/27(Fri) 19:21:17|NO.7794

>bsaveの時
http://hsp.tv/play/pforum.php?mode=all&num=7691
これ↑で2次元配列を使ってるような事書いてるから分かると思うんだけど・・・
(あっちは解決してないの?)



buffer 1:picload dir_exe+"\\sample\\demo\\logop.bmp":gsel 0,1 dim dx,4,4:dim dy,4,4:dim sx,4,4:dim sy,4,4:dim px,4:dim py,4:dim x1,4:dim y1,4 repeat 4 dx(0,cnt)=0,50,50,0 dy(0,cnt)=cnt*50,cnt*50,50+cnt*50,50+cnt*50 sx(0,cnt)=cnt*90,90+cnt*90,90+cnt*90,cnt*90 sy(0,cnt)=0,0,50,50 loop repeat repeat 4 no=cnt px(no)=(px(no)+rnd(4))\640 py(no)=(py(no)+rnd(3))\480 x=px(no) y=py(no) repeat 4 x1(cnt)=dx(cnt,no)+x y1(cnt)=dy(cnt,no)+y loop dup x2,sx(0,no) ;memcpyでもいいけど dup y2,sy(0,no) gsquare 1,x1,y1,x2,y2 loop await 10 loop

#注
2次元配列やdupを使わなくても出来ます。
これをそのままメインループ内に置くと見難くなると思うので
ユーザ定義命令等を利用した方がいいと思う



f

リンク

2007/7/7(Sat) 02:38:08|NO.9362

age



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