トピック

DIMで宣言する配列について

配列ってまず何それ美味しいの?状態なので 誰か知識を分けてください…orz
1そうだね
プレイ済み
返信[1]
親投稿
変数で選べる変数
0そうだね
プレイ済み
返信[2]
親投稿
ほしけん Hosiken
http://smileboom.com/special/ptcm2/co_konnichiwa/p06.php ぜひコチラを読んでみてください。
1そうだね
プレイ済み
返信[3]
親投稿
そのアドレスはプチコンmkII 初心者講座のあれですね。 3号用講座遅い…
1そうだね
プレイ済み
返信[4]
親投稿
しっかり読んだんですが 配列を使うことによる利点が分かりません… 配列を使わないとできないこととかありますか?
1そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
出席番号ごとに名前と身長を記録する。 var name$[40], tall[40] name$[1] = "あいち": tall[1] = 160 name$[2] = "あおもり": tall[2] = 170 : input "しゅっせきばんごう", i ? name$[i], tall[i]
2そうだね
プレイ済み
返信[6]
親投稿
otta777 otta777a
配列を使わなくてもできますが個別に変数名を指定する必要が あるため処理内容によってはもの凄くプログラムが長くなります。 配列変数を使うと個別に変数名を指定しなくても変数名に添え字を 付けることで指定できるので短くまとめることができます。 配列変数を使わない場合 SUM=A0+A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16+A17+A18+A19+A20+A21+A22+A23+A24+A25+A26+A27+A28+A29~中略~+A9999 配列変数を使った場合 FOR I=0 TO 9999 SUM=SUM+A[I] NEXT
2そうだね
プレイ済み
返信[7]
親投稿
ほしけん Hosiken
RPGを作るとします。仲間が4人いて、それぞれHPの値を持っています。 敵が攻撃してきて、N番目の仲間が10ポイントのダメージを受けました。 という場合。 配列無しだと IF N==0 THEN HP0=HP0-10 '0番目がダメージ IF N==1 THEN HP1=HP1-10 '1番目がダメージ IF N==2 THEN HP2=HP2-10 '2番目がダメージ IF N==3 THEN HP3=HP3-10 '3番目がダメージ と頭の痛いプログラムになってしまいます。配列を使うと HP[N]=HP[N]-10 の一行で済みます。
2そうだね
プレイ済み
返信[8]
親投稿
野球のスコアボードを連想して下さい。 1回表とか5回裏とか「それぞれ数字が入ります」よね。それが配列変数という物です。 例えば DIM OMOTE[10],URA[10] で表を裏をそれぞれ用意。0から10で計11になっているのはOMOTE[4]を4回表、と分かりやすくする為。 OMOTE[5]=2 で5回表で2点入った、とか。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
「配列を使わないとできないこと」というのはありません。 ただし、配列を使うことで短く記述できたり、簡単に処理できたり、高速に処理ができたりが可能になる場合があります。 これについては皆さんがすでに書かれているので省略します。 したがって、そういうプログラム(たくさんのデータを処理するプログラム)を作ってから配列を覚えると配列変数を使う理由やありがたみが分かると思います。 個人的には「今必要かどうか」が重要に思います。 必要でないものはいくら丁寧に教えてもらっても「だから何?」で終わってしまい理解するのがなかなか難しいです。
3そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
上記の私のレスに補足 要するに分からないもの使わないものを無理に現時点で覚える必要はなく「多くのデータを処理する場合には配列変数という便利なものがある」という程度の知識さえあれば問題ないということです。 実際にそういうプログラムを作って「これを配列変数を使って記述するにはどうしたら良いですか?」とか「もっと簡潔に記述するにはどうしたら良いですか?」という具体的な疑問が出た際に配列変数の使い方を聞いたり調べたりした方が身に付きやすいのではないかと個人的には思います。 趣味のプログラミングであれば覚える順番はどうでも良くて必要なものから順に覚えていけば良いと思いますよ。
2そうだね
プレイ済み
返信[11]
親投稿
say sayer.exe
配列の理屈や使い方はわかってるようなんで、こんな使い方をご提案 BGには迷路が書かれてます キャラクタは分岐路に来たら方向転換をします こういうパターンのアルゴリズムを作る際、二次元配列がけっこう役に立ったりします 解法例 初期設定時:BG作成時に「分岐路」に相当する部分にチェックを付ける キャラクタ動作時:BGと相当する部分の2次元配列にアクセスし、チェックがないときには移動方向はそのまま チェックがあるときには移動方向を変更する
1そうだね
プレイ済み
返信[12]
親投稿
say sayer.exe
あとこんなのも ソラで書いているが、たぶん動くはず acls dim mx[16],my[16] spset 0,0:x=100:y=200 my[#up or #left]=-1:my[#up]=-1:my[#up or #right]=-1 my[#down or #left]=1:my[#down]=1:my[#down or #right]=1 mx[#left or #up]=-1:mx[#left]=-1:mx[#left or down]=-1 mx[#right or #up]=1:mx[#right]=1:mx[#right or #down]=1 '定数でもいいのだが計算がめんどくさい while 1 b=button() and 15 x=x+mx[b]:y=y+my[b] spoft 0,x,y wend
1そうだね
プレイ済み
返信[13]
親投稿
(添え字部分に 定数リテラル+ビット演算子 とかなんか強そうw)
1そうだね
プレイ済み
返信[14]
親投稿
やっぱり配列変数はもうちょっと色々な知識を取り入れてからにします! まだ正の数とか負の数とかならってない年頃なので…
1そうだね
プレイ済み
返信[15]
親投稿
おちゃめさんのような感じで 便利な配列変数という物がある。 という感じで覚えておきますー
1そうだね
プレイ済み
返信[16]
親投稿
あ、もしかしてこんな感じに使うのであってますか? 今日布団から出て急に思い付いて…
4そうだね
プレイ済み
返信[17]
親投稿
MIKI ifconfig
カンペキです!! a[6] は 5 回ぶんではなくて、0,1,2,3,4,5 の 6 個(0も一個と数える)分使えるってことです。 日常生活では、番号は 1 から始まりますが、smilebasic の世界では、0 から始まるのが基本!! (なぜならそのほうがコーディングに便利だから) 配列の添え字も0開始だし、locate の x,y 座標もそうだし、グラフィック座標もそうだし、mid$ の第二引数(開始位置) も0が起点になります。
1そうだね
プレイ済み
返信[18]
親投稿
おお、合ってたんですか!w 配列ってもっと大きい数字の計算だったら便利ですね!
1そうだね
プレイ済み