『スクリプト 汎用関数応用』 ランキングをオリジナルデータ領域にセーブロードする
投稿者: aoihikawa 投稿日:2012/02/05 22:34
ランキングをオリジナルデータ領域にセーブロードする
(ご自由にご利用ください)
使用例
ツイート
(ご自由にご利用ください)
#配列ソート def pivot(arr,i,j,ord) k = i + 1 while (k <= j) && (arr[i] == arr[k]) do k = k + 1; end if k > j then return -1; end if ord if arr[i] >= arr[k] then return i; end else if arr[i] <= arr[k] then return i; end end return k end def partition(arr,i,j,x,ord) l = i; r = j while l <= r if ord while (l <= j) && (arr[l] < x) do l = l + 1; end while (r >= i) && (arr[r] >= x) do r = r - 1; end else while (l <= j) && (arr[l] > x) do l = l + 1; end while (r >= i) && (arr[r] <= x) do r = r - 1; end end if l <= r t = arr[l]; arr[l] = arr[r]; arr[r] = t l = l + 1; r = r - 1 end end return l end def quickSort(arr,i,j,ord) if i != j p = pivot(arr,i,j,ord) if p != -1 k = partition(arr,i,j,arr[p],ord) arr = quickSort(arr,i,(k - 1),ord) arr = quickSort(arr,k,j,ord) end end return arr end #使用時はこの関数のみ #第1引数:配列 第2引数:昇順 true / 降順 false def sortArray(arr,ord) return quickSort(arr,0,(getArrayLength(arr) - 1),ord) end #------------------------------ #配列セーブ関数 #第1引数:セーブキー名 第2引数:配列データ 第3引数:true 数値データ / false 文字データ #戻り値:1 成功 / -1 失敗 def saveArrayGameData(key,arr,ch) r = (-1) if isLogin() if ch i = 0 while i < getArrayLength(arr) arr[i] = toString(arr[i]) i = i + 1 end end str = joinArray(arr,",") waitTime(2000) saveGameData(key,str) r = 1 end return r end #------------------------------ #配列ロード関数 #第1引数:セーブキー名 第2引数:true 数値データ / false 文字データ #戻り値:配列データ 成功 / -1 失敗 def loadArrayGameData(key,ch) r = (-1) if isLogin() waitTime(2000) arr = splitString(loadGameData(key),",") if ch i = 0 while i < getArrayLength(arr) arr[i] = toNumber(arr[i]) i = i + 1 end end return arr else return r end end #------------------------------ #データ領域消去関数 #第1引数:セーブキー名 #戻り値:1 成功 / -1 失敗 def clearGameData(key) r = (-1) if isLogin() waitTime(2000) removeGameData(key) r = 1 end return r end
使用例
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ # 事前ランキングデータの作成 #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #ランキングデータ ranking = createArray() ranking[0] = 5000 ranking[1] = 4500 ranking[2] = 4500 ranking[3] = 4000 ranking[4] = 3500 ranking[5] = 3000 ranking[6] = 2500 ranking[7] = 2000 ranking[8] = 1000 ranking[9] = 500 #ランキングデータをオリジナルデータ領域に保存 if saveArrayGameData("RankingData", ranking, true) != (-1) speak("セーブしました") else speak("セーブに失敗しました") end #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ # ランキングデータに新規スコアを追加してセーブする #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #新規追加スコア newscore = 3700 #ランキングデータをオリジナルデータ領域からロード ranking = loadArrayGameData("RankingData", true) if ranking != (-1) #ロードに成功した場合 pushArray(ranking, newscore) #新規追加スコアを配列に追加 ranking = sortArray(ranking, false) #ランキングの配列を降順に並べ替え popArray(ranking) #配列の末尾(一番下位のデータ)を削除 #ランキングデータをオリジナルデータ領域に保存 if saveArrayGameData("RankingData", ranking, true) != (-1) speak("更新をセーブしました") else speak("更新のセーブに失敗しました") end else speak("ロードに失敗しました") end #_/_/_/_/_/_/_/_/_/_/_/ # 保存できているか確認 #_/_/_/_/_/_/_/_/_/_/_/ ranking = loadArrayGameData("RankingData", true) if ranking != (-1) speak(ranking) else speak("ロードに失敗しました") end
コメントする
コメントするには、ログインする必要があります。
コメント一覧
コメントはありません。