『スクリプト 汎用関数応用』 ランキングをオリジナルデータ領域にセーブロードする
投稿者:
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
コメントする
コメントするには、ログインする必要があります。
コメント一覧
コメントはありません。