したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

製作初心者講座スレ

561あなたの名前を入力してください:2022/02/08(火) 22:30:56 ID:u0h9PrnE
しょうがないにゃぁ
任意の条件でソートする手段はEmuera標準で提供されていないので、自前で実装する必要あり
(ARRAYMSORTは副作用があるので考慮しない)
EVALUATEに関しては>>554参照
CALLF LIST_SORT(選択キャラ,"CFLAG:value:経験人数")
でソートできるはず

@LIST_SORT(targetList,sortRule = "value",isDescend = 0,defaultValue = -1)
#FUNCTION
#DIM REF targetList
#DIM defaultValue
#DIMS sortRule
#DIM isDescend
#DIM gnome ;ノームの位置
#DIM elementCount
#DIMS sortFunc
elementCount = GET_LIST_LAST_ELEMENT(targetList,defaultValue) + 1
gnome = 1
sortFunc = \@ isDescend ? >= # <= \@
WHILE gnome < elementCount
 IF GROUPMATCH(COMPARE(EVALUATE(sortRule,,targetList:(gnome - 1)),EVALUATE(sortRule,,targetList:gnome)),0,(isDescend ? -1 # 1))
  gnome++
 ELSE
  SWAP targetList:(gnome - 1),targetList:gnome
  gnome = MAX(gnome - 1,1)
 ENDIF
WEND
RETURNF 1

;与えられた値を比較し、target1 < target2なら1、target1 == target2なら0、target1 > target2なら-1を返すラッパー関数
@COMPARE(target1,target2)
#FUNCTION
#DIM target1
#DIM target2
RETURNF (target1 == target2 ? 0 # (target2 - target1) / ABS(target2 - target1))


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板