まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
明けましておめでとう御座いますm(_ _)m
作製開始から8ヶ月。今年中の完成を目指して頑張って行こうと思っております^^;
で、ハイスコアの保存方法を簡単なスクリプトを作って考えてみました↓
*************************************
;初期設定
buffer 1 ;ウィンドウ1をバッファ画面として用意
screen 0,300,200;メイン画面(ウィンドウ0を640x480で用意)
color 255,255,255;色に白を指定
boxf 0,0,300,200;画面を白で塗りつぶす
sc=0;初期スコア
sdim name,3;名前用に3文字分のメモリを確保
exist "score.dat";score.datファイルがに有るか調べる
if strsize=-1 : gosub *score_sakusei;score.datファイルが無ければ*score_sakuseiへ
bload "score.dat",hisc,,;score.datファイルを読み込んでhiscへ代入
notesel name;noteloadを使用する為に変数を宣言
noteload "name.txt";name.txtを読み込み
;メインループ
*main
redraw 0;仮想画面を指定
gosub *hyouji
gosub *score_kasan
redraw 1;メイン画面を更新
await 16;これを入れないとパソコンが固まる
getkey syuryo,27:if syuryo=1:gosub *score_hozon;escキーのチェック。押すと*score_hozonへ
goto *main;*mainに戻る
*score_kasan
if sc>=hisc : hisc=sc : color 255,0,0 : pos 100,40 : mes "New record!";スコアがハイスコアを超えたら、ハイスコア更新
stick ky,16;スペースキーのチェック
if ky&16 : sc+100;スペースキーが押されている時は得点加算
if sc>999999999 : sc=999999999 : hisc=999999999;999999999以上でカンスト
return
*hyouji
color 255,255,255;色に白を指定
boxf 0,0,300,200;画面を白で塗りつぶす
color 0,0,0
pos 0,0
mes "Hi-SCORE "+hisc+" 名前 "+name;ハイスコア表示
pos 0,40
mes "SCORE "+sc;スコア表示
pos 0,60
mes "スペースキーでスコア加算"
pos 0,80
mes "Escでハイスコアと名前を保存して終了"
return
*score_sakusei;score.datファイルが無い場合にscore.datを作製
hisc=573;初期ハイスコア
name="kt.";初期ネーム
bsave "score.dat",hisc,,;score.datにハイスコアを代入して保存
notesel name;notesaveを使用する為に変数を宣言
notesave "name.txt";name.txtにname内の名前を保存
return
*score_hozon
bsave "score.dat",hisc,,;score.datにハイスコアを代入して保存して終了
if sc>=hisc {;ハイスコアが更新された時
name=""
color 0,0,0
pos 0,100
mes "あなたの名前は?"
input name,,,3
button "保存",*name_hozon
}
if sc<hisc {;ハイスコアが更新されなかった時
color 0,0,0
pos 0,100
mes "ハイスコアは更新されませんでした"
button "終了",*owari
}
stop
*name_hozon
notesel name;notesaveを使用する為に変数を宣言
notesave "name.txt";name.txtにname内の名前を保存
end
*owari
end
*************************************
HSP3.0使用
実行するとこんな感じ↓
スペースキーを押していると得点を加算していき、ハイスコアを超えたら名前とスコアを保存して終了。
次回起動時は、その保存した名前とハイスコアを読み込んで起動させるって感じです。
名前はname.txtに、スコアはscore.datに記録されるようにしました。
でも、ハイスコアファイルって消したりする事もあると思うので、最初にexist命令でscore.datファイルが有るかどうか確認して
無ければ、name.txtとscore.datファイルを作成するようにしています。
とりあえずコレでハイスコアだけなら保存出来るようになりました。
でも、最終的にはランキング表示して得点の多い順からソートしていくようにしたいのですが
そうなると上手いやり方が思いつかないんですよね・・・
まぁ、また暇な時にでも考えようと思っています^^;
作製開始から8ヶ月。今年中の完成を目指して頑張って行こうと思っております^^;
で、ハイスコアの保存方法を簡単なスクリプトを作って考えてみました↓
*************************************
;初期設定
buffer 1 ;ウィンドウ1をバッファ画面として用意
screen 0,300,200;メイン画面(ウィンドウ0を640x480で用意)
color 255,255,255;色に白を指定
boxf 0,0,300,200;画面を白で塗りつぶす
sc=0;初期スコア
sdim name,3;名前用に3文字分のメモリを確保
exist "score.dat";score.datファイルがに有るか調べる
if strsize=-1 : gosub *score_sakusei;score.datファイルが無ければ*score_sakuseiへ
bload "score.dat",hisc,,;score.datファイルを読み込んでhiscへ代入
notesel name;noteloadを使用する為に変数を宣言
noteload "name.txt";name.txtを読み込み
;メインループ
*main
redraw 0;仮想画面を指定
gosub *hyouji
gosub *score_kasan
redraw 1;メイン画面を更新
await 16;これを入れないとパソコンが固まる
getkey syuryo,27:if syuryo=1:gosub *score_hozon;escキーのチェック。押すと*score_hozonへ
goto *main;*mainに戻る
*score_kasan
if sc>=hisc : hisc=sc : color 255,0,0 : pos 100,40 : mes "New record!";スコアがハイスコアを超えたら、ハイスコア更新
stick ky,16;スペースキーのチェック
if ky&16 : sc+100;スペースキーが押されている時は得点加算
if sc>999999999 : sc=999999999 : hisc=999999999;999999999以上でカンスト
return
*hyouji
color 255,255,255;色に白を指定
boxf 0,0,300,200;画面を白で塗りつぶす
color 0,0,0
pos 0,0
mes "Hi-SCORE "+hisc+" 名前 "+name;ハイスコア表示
pos 0,40
mes "SCORE "+sc;スコア表示
pos 0,60
mes "スペースキーでスコア加算"
pos 0,80
mes "Escでハイスコアと名前を保存して終了"
return
*score_sakusei;score.datファイルが無い場合にscore.datを作製
hisc=573;初期ハイスコア
name="kt.";初期ネーム
bsave "score.dat",hisc,,;score.datにハイスコアを代入して保存
notesel name;notesaveを使用する為に変数を宣言
notesave "name.txt";name.txtにname内の名前を保存
return
*score_hozon
bsave "score.dat",hisc,,;score.datにハイスコアを代入して保存して終了
if sc>=hisc {;ハイスコアが更新された時
name=""
color 0,0,0
pos 0,100
mes "あなたの名前は?"
input name,,,3
button "保存",*name_hozon
}
if sc<hisc {;ハイスコアが更新されなかった時
color 0,0,0
pos 0,100
mes "ハイスコアは更新されませんでした"
button "終了",*owari
}
stop
*name_hozon
notesel name;notesaveを使用する為に変数を宣言
notesave "name.txt";name.txtにname内の名前を保存
end
*owari
end
*************************************
HSP3.0使用
実行するとこんな感じ↓
スペースキーを押していると得点を加算していき、ハイスコアを超えたら名前とスコアを保存して終了。
次回起動時は、その保存した名前とハイスコアを読み込んで起動させるって感じです。
名前はname.txtに、スコアはscore.datに記録されるようにしました。
でも、ハイスコアファイルって消したりする事もあると思うので、最初にexist命令でscore.datファイルが有るかどうか確認して
無ければ、name.txtとscore.datファイルを作成するようにしています。
とりあえずコレでハイスコアだけなら保存出来るようになりました。
でも、最終的にはランキング表示して得点の多い順からソートしていくようにしたいのですが
そうなると上手いやり方が思いつかないんですよね・・・
まぁ、また暇な時にでも考えようと思っています^^;
PR
この記事にコメントする
カレンダー
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 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事