ゲームを作りたい人のための ソースコード集

私がその日作った短めのソースを簡単な解説とともに載せていきます
ゲーム制作初心者にとって参考になるかもしれないソースが多いです


<< 文字数を指定してバイト数を取得 | main | 文字列の重複チェック >>



二次元配列(文字列型)の並べ替え

2次元文字列型配列をソートするプログラムです

keyの値を指定することで、指定された一次元要素番号を基準に並べ替えます

 

#module
;二次元文字列配列並べ替え(対象配列変数名、基準となる要素番号、並び順)
#deffunc sortstr2 array arr,int key,int order
    len1=length(arr):if len1<=key{key=len1-1}
    len2=length2(arr)
    sdim tmp,varsize(arr),len2
    sdim toarr,varsize(arr),len1,len2
    repeat len2
        tmp(cnt)=arr(key,cnt)
    loop
    sortstr tmp,order    ;配列変数を文字列でソート
    repeat len2:j=cnt
        sortget n,j    ;ソート元のインデックスを取得
        repeat len1:i=cnt
            toarr(i,j)=arr(i,n)
        loop
    loop
    ;元の配列に並び替えた結果を代入
    repeat len2:j=cnt
        repeat len1:i=cnt
            arr(i,j)=toarr(i,j)
        loop
    loop
    return
#global
;文字列配列作成
randomize
sdim a,,3,10
repeat 10:j=cnt
    repeat 3:i=cnt
        pt=0
        repeat 10    ;一要素の最大文字数
            if rnd(2){
                if i{
                    poke a(i,j),pt,rnd(122-96)+97
                }else{
                    poke a(i,j),pt,rnd(90-64)+65
                }
                pt++
            }
        loop
    loop
    mes""+a(0,j)+"¥t"+a(1,j)+"¥t"+a(2,j)
loop
;並べ替え後
pos 320,0
sortstr2 a,0,1
repeat 10:j=cnt
    mes""+a(0,j)+"¥t"+a(1,j)+"¥t"+a(2,j)
loop

0
    posted by higashijugem 16:59comments(0)|-|


    この記事に対するコメント