[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ネームエントリーの方は大体出来て来たので、ランキング表示の方を作ろうと思ったのですが
ランキング表示させる為には、得点をソートしないといけません。
で、ソートの方法について色々と調べてみたのですが結構ややこしそうな感じでした。
ここでふと、リンク先の「マクセルの手動ブログ」さんで簡単なソートの方法を掲載されていたのを
思い出し、早速見てみました。
(左側メニュー部分の成果のHSPから「スコアランキング表 (えせソート)」をクリックで見れます)
読んでみて納得。とても簡単でわかりやすく解説されています。
本来のソートとはちょっと違いますが、スコアランキングとしては十分に機能します。
この、マクセルさんのスクリプトを使わせて貰って、簡単なランキング表示スクリプトを作成してみました↓
**************************************************************
screen 0,280,120,0,0,0
sc=0 ;初期スコア
dim ranking,5 ; ① 1~5位のスコアを配列変数に保存
ranking.0=500 ; ② 適当なスコアをデフォルトとして保存。
ranking.1=450
ranking.2=400
ranking.3=350
ranking.4=300
scrrank=5 ; ③ 現在の順位(最初はランク外)
*main
redraw 0 ;仮想画面を指定
color 0,0,0 ;色に黒を指定
boxf 0,0,640,480 ;指定色で画面を塗りつぶす
stick ky,16
if ky=16 : sc+10 ;スペースでスコア加算
if ky=32 : gosub *rank ;エンターでランキング反映
color 255,255,255
pos 0,0
mes " 1位 "+ranking.0
mes " 2位 "+ranking.1
mes " 3位 "+ranking.2
mes " 4位 "+ranking.3
mes " 5位 "+ranking.4
mes "score "+sc
pos 85,0
mes "Spaceでスコア加算"
mes "Enterでランキングに反映"
redraw 1 ;画面を更新
await 16
getkey syuryo,27:if syuryo=1:end;ESCを押すと強制終了
goto *main ;*mainに戻る
*rank
if sc>ranking.4 { ; ④ ランクイン時のみ以降を処理
repeat 5
if sc>ranking.cnt :scrrank=cnt :break ; ⑤ 現在のランクを判定
loop
repeat 5
if scrrank=4-cnt :ranking(4-cnt)=sc :break ; ⑦ 処理対象が現在の順位まで来たら現スコアを保存し終了
ranking(4-cnt)=ranking(4-cnt-1) ; ⑥ 現在の順位より下位のランクをずらす
loop
}
sc=0
return
*********************************************************************
上記のスクリプトを実行するとこんな感じ↓
スペースでスコア加算し5位よりも大きいスコアなら、エンターを押した時にランキングに反映されます。
ほぼ、マクセルさんのスクリプトを写しただけですが、ランキングスクリプトとしては
これで十分な感じですね。
後は、これに名前を関連付けで保存&読み込み出来るようにするべく試行錯誤しています^^;
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!