; 珠音のジャンプアップ♪ ; HSP tamane dot sample game ; このスクリプト及び素材データは自由に使用することができます。 ; 自作のプログラムに入れて発表することができます。 ; ; カーソルキーで左右に移動、スペースキーでジャンプ ; コインをすべて取ったらクリアです ; トゲにあたるとアウトです ; ; マップデータを書き換えることで ; 面の形を自由に作り変えることができます。 ; ; #pack "yama2.jpg" #pack "parts.bmp" #pack "tamadot.bmp" #pack "se_block2.wav" #pack "se_break3.wav" #pack "se_foot.wav" #pack "se_jump2.wav" #pack "se_puyo.wav" #packopt name "tamane_jump" sx=40:sy=40 ; セルの大きさ mx=16:my=12 ; マップを並べる大きさ wx=640:wy=480 ; 画面のサイズ hitparts=3 mysizex=64:mysizey=64 myspd=4 grav=14 celload "yama2.jpg",1 gsel 1 bgmaxx=ginfo_sx:bgmaxy=ginfo_sy screen 0,wx,wy title "珠音のジャンプアップ♪" ; 素材の読み込み celload "parts.bmp",2 celdiv 2,sx,sy celload dir_tv+"tamadot.bmp",3 celdiv 3,mysizex,mysizey ; 音のデータを登録 mmload dir_tv+"se_block2.wav",0 mmload dir_tv+"se_break3.wav",1 mmload dir_tv+"se_foot.wav",2 mmload dir_tv+"se_jump2.wav",3 mmload dir_tv+"se_puyo.wav",4 mmload dir_tv+"bgm12.mid",5,1 mmload dir_tv+"bgm19.mid",6,1 *gtitle ; タイトル画面 mmplay 5 *gtmain ; タイトル画面のループ redraw 0 pos 0,0:gmode 0,wx,wy:gcopy 1,0,400 color 255,255,255 font msgothic,40,1 pos 100,100 mes "珠音のジャンプアップ♪" font msgothic,26,1 pos 148,260 mes "Enterキーを押してスタート" redraw 1 await 16 stick key if key&32 : goto *ginit ; [Enter]が押されたか? goto *gtmain *ginit ; ゲームスタート時の初期化 stage=1 *start ; マップデータの読み込み sdim mapd,$10000 notesel mapd cr="\n" ; ; マップデータ(ここを書き換えてください) ; 空白(スペース)は何もない部分、「0」はカベです ; 「*」 ← コイン / 「+」 ← トゲになります ; マップの行数は増やすことができます。 ; 横方向にマップを増やすことができます。 ; (横方向のサイズは最初の行が基準になります) ; mapd+=" "+cr mapd+=" "+cr mapd+=" "+cr mapd+=" * "+cr mapd+=" * 00 "+cr mapd+=" 000 "+cr mapd+=" "+cr mapd+=" 00** 00 00 "+cr mapd+=" 00 "+cr mapd+=" ++++ 00 "+cr mapd+=" 0000 00 "+cr mapd+=" 0000 "+cr mapd+=" *** "+cr mapd+="++ 00000 00 00 "+cr mapd+="00 00 "+cr mapd+=" 00 *"+cr mapd+=" 00"+cr mapd+=" 0000 "+cr mapd+=" *** "+cr mapd+=" 00000 000 "+cr mapd+=" 000 "+cr mapd+=" 00 00"+cr mapd+="000000000000000000000000"+cr ; noteget s1,0 ; mapsizex=strlen(s1):if mapsizex0 : goto *main2 if coin>=coinmax : goto *main3 await 16 goto *main *main2 ; プレイヤーやられ mmstop mmplay 1 repeat redraw 0 gosub *drawbg gosub *drawmap gosub *mymove font msgothic,40,1 pos 150,200 color 255,255,255 mes "ジャンプしっぱい" redraw 1 await 16 stick key if key&32 : break ; [Enter]が押されたか? loop goto *gtitle *main3 ; クリア repeat 600 redraw 0 gosub *drawbg gosub *drawmap gosub *mymove font msgothic,40,1 pos 150,200 color 255,255,255 mes "ジャンプせいこう" redraw 1 if cnt=16 : mmstop : mmplay 0 await 16 stick key if key&32 : break ; [Enter]が押されたか? loop goto *gtitle ; クリアしたらタイトルに戻る *mymove ; プレイヤー操作 stick key,15 x=px:y=py myrun=0 if myflag!=0 { mydir=32 myflag=myflag+1 key=0 } if key&1 : mydir=12 : myrun=1 : x=x-myspd if key&4 : mydir=28 : myrun=1 : x=x+myspd if x<0 : x=0 if x>=(vmaxx-mysizex) : x=px if myrun>0 { i=mysizey-1 : gosub *myarea if a>0 { gosub *chkitem x=px } } if myjmp>0 : goto *mymove3 ; 通常時 if key&16 : myjmp=1 : mygrv=-grav : mmplay 3 : goto *mymove3 i=mysizey : gosub *myarea if a=0 : myjmp=1 : mygrv=8 : goto *mymove3 goto *mymove2 *mymove3 ; ジャンプ中 y=y+mygrv mygrv=mygrv+1 if mygrv<0 : goto *mymove2 if mygrv>16 : mygrv=16 i=mysizey : gosub *myarea if a>0 { mmplay 2 gosub *chkitem y=(mapy*sy)-mysizey : myjmp=0 mydir=0 } if y>=vmaxy : gosub *mydead *mymove2 ; プレイヤー描画 px=x:py=y a=mydir if myrun>0 { myani=myani+1 a+=(myani/4)\4 } gmode 2,mysizex,mysizey x=px-viewx:y=py-viewy pos x,y:celput 3,a i=0 if x<240 : i=(x-240)/40 if x>(wx-320) : i=(x-(wx-320))/40 viewx=limit( viewx+i, 0, vbasex ) i=0 if y<160 : i=(y-160)/40 if y>(wy-240) : i=(y-(wy-240))/40 viewy=limit( viewy+i, 0, vbasey ) return *myarea ; 自分の足元マップを調べる mapx=(x+10)/sx mapy=(y+i)/sy if mapy>=mapsizey : a=0 : return if mapy<0 : a=0 : return a=map(mapx,mapy) if a>=hitparts : return ; 接触のあるパーツID mapx=(x+53)/sx a=map(mapx,mapy) if a>=hitparts : return ; 接触のあるパーツID a=0 return *chkitem ; 障害物・アイテムのチェック if a=3 { coin=coin+1 map(mapx,mapy)=0 mmplay 4 return } if a<6 { gosub *mydead } return *mydead ; やられフラグを立てる myflag=1 return *drawbg ; 背景描画 startx=-viewx\sx ; マップの表示開始X座標 starty=-viewy\sy ; マップの表示開始Y座標 ofsx=viewx/sx ; マップデータの参照開始X座標 ofsy=viewy/sy ; マップデータの参照開始Y座標 ; 奥の背景も少しスクロールさせる gmode 0,wx,wy x=0:y=viewy*(bgmaxy-wy)/vbasey pos 0,0:gcopy 1,x,y return *drawmap ; マップ描画 y=0 drawx=mx:if startx!=0 : drawx=drawx+1 drawy=my:if starty!=0 : drawy=drawy+1 gmode 2,sx,sy repeat drawy x=0 repeat drawx a=map(ofsx+x,ofsy+y) if a>0 : pos x*sx+startx,y*sy+starty:celput 2,a x=x+1 loop y=y+1 loop return