ゲームを閉じてもランキングが残るようにメモ帳に保存したいですが
1項目しか保存されません。
最終的には名前も入力できるようにして、HSP3 DHISHを使ってホームページ上で
動くようにしたいと思っています。なにとぞご助力ください。
できる限り説明文入れましたが、我流の初心者なので分かりづらくて大変申し訳ないです。
画像データが入ったリンクです
https://42.gigafile.nu/0127-d67230b0f44dd936f5b0912c3031d29db
以下プログラムです
-------------------------
sizegt=0 /*サイズグラムトータル*/: #include "hsp3util.as" ;配列変数による文書読み書きに使用する sdim ranks,10 ;ここの数字がランキングの順位数となる dim hiscore,length(ranks)+1 ;順位数+1個分確保 arrayload "score.txt",ranks ;ランキングを読み込む noteunsel foreach ranks hiscore(cnt)=int(ranks(cnt)) ;文字列から数値に変換 loop buffer 10,640,480, : picload "title.png";50,100 顔 gsel 0 gmode 2 stage=3 : ; stageとは何回目のバス釣りかということ ★■★通常1(デバック中につき3) color 0,0,0 : boxf 0,0,640,480 : pos 0,0 : gcopy 10,0,0,640,480 color 255,255,255 : pos 120,170 : pos 335,200 : objsize 30,20 : button goto "GO!",*hajime objsel 0 : ; これが無いと2回目以降にinputボックス内に入力カーソルがデフォで出ない。 color 255,255,255 : boxf 280,330,410,350 color 35,35,35 : pos 282,330 : mes "Press space key!" stop ;■■■■■■■■■【準備】■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■/**/ *hajime cls 4 x=640 : y=280 /*ワーム座標*/ : bx=640 : by=280 /*バス座標*/: tana=0 : bass=1 : reel=0 : ok=0 : a=0 : turey=640 : sui=0 : bgm=1 : b=0 : mesx=120 : mesy=464 : sizeg=0 zacox=480 : zugoki=0 : awaxx=(awax+150) : awayy=(away+50) : awaxxx=(awax+250) : awayyy=(away-50) : awaxxxx=(awax+300) : awayyyy=(away+110) : iwax=-600 tanay=rnd(350) : if tanay<=100 : tanay+=100/*タナ位置をランダムに指定。ある程度の画面内に収まるよう調整*/ tanayy=(100*stage)+tanay/*ステージごとにタナの幅を狭くする ★■★通常 100/stage (デバック中につき100*stage) */ buffer 1,640,480, : picload "warm2.png" ;わーむ buffer 2,640,480, : picload "warm.png" ;わーむ repeat randomize : size=rnd(11) : await 1 : if size>=1 : break/*0を除外*/ loop ;bsx=91 : bsy=41 bsx=22*size : bsy=10*size/*sizeは1〜10 22,10は7cmのバス 220,100は70cmのバス*/ buffer 3,640,480, : picload "bass.bmp";90,40 左向き(通常時バス) buffer 33,640,480, : gzoom bsx,bsy,3,0,0,91,41;90,40 左向き(通常時バス) buffer 4,640,480, : picload "bass2.bmp";90,40 右向きのバス buffer 44,640,480, : gzoom bsx,bsy,4,0,0,91,41;90,40 右向きのバス buffer 5,640,480, : picload "zaco.png";25,9 雑魚 buffer 6,640,480, : picload "ture2.bmp";50,100 釣れ上がったときの縦のバス buffer 7,640,480, : picload "haikei.png";50,100 みずうみの背景 buffer 8,640,480, : picload "mizu.png";50,100 水中画像 buffer 9,1833,77, : picload "iwa.bmp";50,100 手前の動く岩 mmload "water01.wav",1,1 mmload "bubble.wav",2,1 mmload "sya.wav",3,3 mmload "win2.wav",4,0 mmload "lose1.wav",5,2 zacoy=tanay/*雑魚はタナ付近に表示*/ randomize : sizen=rnd(20) : zacoy+=sizen : if sizen<=1 : sizen=2/*雑魚とタナを少しずらす&自然な速度調整*/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;■■■■■■■■■【メイン】■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■/**/ ;noteload "type1.txt",50000 ; 外に出す。 ;sdim kaitou,500 : ; 外に出す。初期化は代入で行う。 gsel 0 mmplay 2 repeat redraw 0 gmode 2 pos 0,0 : gcopy 8,0,0,640,480 ;50,100 水中画像 if wsipo=0 : pos x,y : gcopy 2,0,0,25,10 : else : pos x,y : gcopy 1,0,0,25,10;gzoom 25,-10,2,0,0,25,10,1;わーむ if zacox>=-30 : pos zacox,zacoy : gcopy 5,0,0,25,10 : else : zacox+=1200;雑魚描画往復 if (bass=1)&(zugoki<=10) : zacox-=(sizen/2) : pos zacox,zacoy : gcopy 5,0,0,25,10 : if (bass=1)&(zsipo=1) : pos zacox+3,zacoy : gcopy 5,0,0,25,10;雑魚動く if zugoki>=(20+(sizen/4)) : zugoki=0 : else : zugoki+=1 ;雑魚の動かない時間 if bass=1 : pos bx,by : gcopy 33,0,0,bsx,bsy : else : pos bx,by : gcopy 44,0,0,bsx,bsy : if sipo=1 : pos bx-4,by : gcopy 44,0,0,bsx/5,bsy;90,40 左向き(3 通常時バス 4 反転時バス) ;if bass=1 : pos bx,by : gcopy 3,0,0,91,41 : else : pos bx,by : gcopy 4,0,0,91,41 : if sipo=1 : pos bx-4,by : gcopy 4,0,0,17,40;90,40 左向き(3 通常時バス 4 反転時バス) if sipo=0 : sipo=1 : else : sipo=0 if zsipo=0 : zsipo=1 : else : zsipo=0 if wsipo=0 : wsipo=1 : else : wsipo=0 color 155,185,185 : line -250,150,(x-5),(y+5)/*バスのサイズによるラインの位置 もとが(x-5),(y+5)*/ color 50,50,50 : boxf ,456,640,480 ;■■■■■■■■■【目印】■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■/**/ pos iwax,385 : gcopy 9,0,0,1833,77 : ;50,100 手前の動く岩 if bass<=2 : iwax-=2 if bass=3 : iwax+=18 if iwax<=-1200 : iwax=-590 if iwax>=-290 : iwax=-890 if bass=3 : color 200,255,200 : font "MS丸ゴシックM-PRO",12, : pos awax,away : mes "゜ \n\n\n\n\n\n\n\n\n\n\n . ゜ ゜\n\n\n\n\n\n\n\n . ゜. " : pos awaxx,awayy : mes "。\n\n\n\n\n\n\n\n 。\n\n\n\n\n\n\n 。 \n\n\n\n\n\n\n\n\n\n\n 。" : pos awaxxx,awayyy : mes "o\n\n\n\n\n\n\n\n o \n\n\n\n\n\n\n\n o " : pos awaxxxx,awayyyy : mes "○\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ○" if bass>=2 : awax-=10 : awaxx-=15 : awaxxx-=20 : awaxxxx-=25 if (bass>=2)&(awax<=-36) : awax=600 : randomize : away=rnd(480) if (bass>=2)&(awaxx<=-36) : awaxx=600 if (bass>=2)&(awaxxx<=-36) : awaxxx=600 if (bass>=2)&(awaxxxx<=-136) : awaxxxx=600 color 255,255,255 : font "MS丸ゴシックM-PRO",12,1 : pos 0,50 : mes "-"+10+"-" : pos 0,50 : mes "-"+10+"-" : pos 0,150 : mes "-"+30+"-" : pos 0,250 : mes "-"+50+"-" : pos 0,350 : mes "-"+70+"-" : color 255,155,155 : pos mesx,mesy : mes "【 やり方 】 【 やり方 】 " color 255,255,255 : pos mesx,mesy : mes " 「スペース」でふわっと 「←」で速巻き バスがいそうなタナを狙え! (eで終了) 「スペース」でふわっと 「←」で速巻き バスがいそうなタナを狙え! (eで終了) " : mesx-=3 : if mesx<=-640 : mesx=0 ;■■■■■■■■■【 キー入力 】■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■/**/ stick a,25 if a&1 : x-=4 : if tana>70 : bx-=50;バスの速さ★■★通常 18 (デバック中につき50) if (a&1)&(y>tanay)&(y<tanayy) : awax+=5 : awaxx+=5 : awaxxx+=5 : awaxxxx+=5 : iwax-=5 if (a&1)&(y>tanay)&(y<tanayy)&(bass=3) : iwax-=33 if a&16 : ky+=2 if a=0 : ky-=2 getkey ee,69 if ee>=1 : gosub*eend x-=2 : y+=1 : y-=ky : by=(y-20) if (y>tanay)&(y<tanayy) : tana+=1 if tana>70 : bx-=5 : bass=1 if ((tana>70)&(y<tanay))or((tana>70)&(y>tanayy)) : bx+=15 : bass=2 : if bx>=645 : bx=645 if bx<x : color 255,255,255 : pos 10,10 : mes "hitt!!" : bx=(x-(size*10)) /*バス右向き時の位置調整*/: tana=0 : bass=3 : x+=0 /*■もとはx+=2*/: ok=1 : if bgm=1 : gosub*bgmm if ((ok=1)&(y<tanay))or((ok=1)&(y>tanayy)) : x+=10 if (ok=1)&(x>=640) : gosub *owari if y>=450 : y=450 : ky=0 if y<=-20 : y=-10 : ky=0 if x<=-30 : bx+=670 : x=640 : tana=0 : if bx<x : reel+=1 if reel>=1 : gosub *tureta redraw 1 await 70 loop ;■■■■■■■■■【 釣れたとき 】■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■/**/ *tureta turey=640 : stage+=1 color ,, : boxf ,,640,480 repeat redraw 0 getkey ee,69 if ee>=1 : gosub*eend if cnt=5 : mmplay 4 gmode 2 pos 0,0 : gcopy 7,0,0,640,480 ;50,100 みずうみの背景 ;pos 200,50 : gcopy 5,0,0,480,580 gz=(nisyu*10) color 255,255,255 : line 203,180,203,turey+15 : pos 155,turey : gcopy 6,0,0,87,250 /*縦のバス*/: turey-=15 color 255,255,255 : circle 5,10,345,110,1/*吹き出し*/ color ,, : pos 35,25 : font "MS丸ゴシックM-PRO",20,1 : if stage<=3 : mes " やったネ!\n\n ただいまの釣果 "+(stage-1)+"匹!" : else : color 255,150,20 : mes " GAME CLEAR!\n\n "+(stage-1)+"匹釣れたぞ!おめでとう!" if turey<=210 : turey=210 : break redraw 1 await 100 loop pos 10,450 : objsize 140,30 : if stage<=3 : button goto ""+(stage)+"匹目を釣る!",*hajime if stage>=4 : button goto "スコアを見る!",*clear objsel 0 : ; これが無いと2回目以降にinputボックス内に入力カーソルがデフォで出ない。 stop *owari cls 4 color ,, : boxf 0,0,640,480 : color 255,255,255 : pos 220,200 : mes "逃げられちゃいました・・・" : pos 270,240 : button goto "もっかい",*hajime/**/ objsel 0 : ; これが無いと2回目以降にinputボックス内に入力カーソルがデフォで出ない。 mmplay 5 stop *clear cls 4 color 120,120,120 : boxf 0,0,640,480 : *iro gradf 0,10,640,40,0,$eeffee,$eeffee /*ランキンググラデ背景*/: gradf 40,60,560,410,1,$191970,$0000cd/*順位グラデ背景*/ ; repeat /*★■★通常 キラキラさせたかった (デバック中につきPGの位置変更中キラキラOFF) */ ;redraw 0 ;rrr+=cnt : ggg+=cnt+10 : bbb+=cnt+30 pos 50,13 : font "MSゴシック",25,1 : color rrr,ggg,bbb : font "MS gothic",36 if hiscore(0)<sizegt{ ;1位だった場合、それを祝う mes "RANKING - HIGH SCORE!!" }else{ mes "RANKING" } ; if bbb>=250 : bbb=0 : break ; if aaa>=250 : aaa=0 : break ; if ggg>=250 : ggg=0 : break ;redraw 1 ;await 100 ;loop ;await 100 ;goto*iro ;mmplay 5 ;stop if size=1 : sizeg=100 :/*サイズを重量に*/ if size=2 : sizeg=150 : if size=3 : sizeg=200 : if size=4 : sizeg=300 : if size=5 : sizeg=400 : if size=6 : sizeg=500 : if size=7 : sizeg=1000 : if size=8 : sizeg=2000 : if size=9 : sizeg=3000 : if size=10 : sizeg=10000 sizegt+=sizeg pos 90,63 : font "MSゴシック",10,1 : color 200,200,200 : mes "順 位 名 前 総重量 最大サイズ " : /**/ hiscore(10)=sizegt ;hiscoreに1つ空きを持たせたので、そこに今回のスコアを代入 sizegt=0 : sizeg=0 pos 90,90 : font "MSゴシック",12,1 : color 255,255,255 : sortval hiscore,1 ;そのうえで数字の大きな順に配列を並べなおす foreach ranks ranks(cnt)=str(hiscore(cnt)) ;数値を文字列に変換 loop arraysave "score.txt",ranks ;ランキングを表示する前に保存 noteunsel hitmp=0 foreach hiscore sortget hitmp,cnt if hitmp=10:color 255,0,0:else:color 255,255,255 if cnt<10{ ;順位によって1st、2nd、…となるようにする if cnt=0:ranktxt="1位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=1:ranktxt="2位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=2:ranktxt="3位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=3:ranktxt="4位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=4:ranktxt="5位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=5:ranktxt="6位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=6:ranktxt="7位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=7:ranktxt="8位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=8:ranktxt="9位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt=9:ranktxt="10位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" if cnt>9:ranktxt=""+(cnt+1)+"位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" mes ""+ranktxt+" "+hiscore(cnt) }else{ if hitmp=10{ ;ランク外だった場合、10位のちょっと下に表示される(マリオ64DSリスペクト) mes "\n "+hiscore(cnt) } } loop ;color 255,255,255 : mes "1位 つりうぇいぶタム "+(sizegt)+"g "+(size*7)+"cm" : /**/ color 255,255,255 : line 80,80,560,80 : line 80,110,560,110 : line 80,140,560,140 : line 80,170,560,170 : line 80,200,560,200 : line 80,230,560,230 : line 80,260,560,260 : line 80,290,560,290 : line 80,320,560,320 : line 80,350,560,350 : line 80,380,560,380/**/ color 255,255,255 : pos 230,420 : button goto "もっかい",*hajime : pos 330,420 : button goto "終わる",*eend objsel 0 : ; これが無いと2回目以降にinputボックス内に入力カーソルがデフォで出ない。 *bgmm if bgm=1 : mmplay 3 : mmplay 1 : bgm=2 : return stop *eend end stop