sample\demo\demo.hsp » Plain Format
;------------------------------------------------------ ; HSP3 demo for ver3.31 ( sample script ) ;------------------------------------------------------ #include "hspogg.as" #include "hsp3util.as" #include "mod_sprite.as" #packopt name "hsp3demo" ; 実行ファイル作成時のみ定義してください #define RELEASE #define global USE_SOUND #module #deffunc demo_init ; デモ初期化 ; tvfolder@ = dir_exe+"\\hsptv\\" #ifdef USE_SOUND dmmini m_defvol=0 m_vol=0 m_fade=0 dmmload "theme.ogg",0 dmmloop 0,268435 ; ループポイント設定 dmmload "oot06.ogg",2 dmmloop 2,671328 ; ループポイント設定 dmmload tvfolder@+"se_tyuiin.wav",1 #endif celload tvfolder@+"bgpeas.bmp",5 celload tvfolder@+"logop.bmp",6 celload tvfolder@+"btn_hsptv.bmp",7 celload tvfolder@+"bgsmoke.bmp",8 celload tvfolder@+"btn_hard.bmp",9 gsel 0 return #deffunc demo_term ; デモ終了 ; #ifdef USE_SOUND dmmbye #endif return #deffunc sndoff ; 音止め ; #ifdef USE_SOUND m_fade=0 dmmstop #endif return #deffunc snd int id ; サウンドを再生 ; #ifdef USE_SOUND if id=1 : goto *nobgm ; 効果音の時 ; m_vol=m_defvol m_fade=0 m_id=id dmmvol id, m_vol *nobgm dmmplay id #endif return #deffunc sndexec ; サウンドフレーム処理(フェード用) ; #ifdef USE_SOUND if m_fade=0 : return m_vol+=m_fade if m_vol<-4000 : m_vol+=m_fade*2 if m_vol<=-8000 { sndoff return } if m_vol>=0 : m_vol=0 : m_fade=0 dmmvol m_id,m_vol #endif return #deffunc sndfade int _p1 ; サウンドフェード指定 ; #ifdef USE_SOUND if _p1>0 : m_vol=-4000 m_fade=_p1 #endif return #deffunc exec2 str _p1, int _p2 ; 外部ファイル実行 ; exist _p1 if strsize <= 0 : dialog "該当ファイルがないため実行できません。" : return exec _p1,_p2 return #deffunc initwall buffer 3,640,480 picload tvfolder@+"gradbg.bmp",1 x=0:gmode 0,640,16 repeat 480/16 if cnt=0 : continue y=cnt*16 pos x,y:gcopy 3 loop gsel 0 return #deffunc copywall gmode 0,640,480:pos 0,0:gcopy 3 return #deffunc fadewall int _p1 wt=_p1:if wt=0 : wt=16 repeat 32 redraw 0 copywall color 0,0,0:gfade (31-cnt)*8 redraw 1 await wt loop return #deffunc mkwall str a ; BGの壁紙作成 ; initwall gsel 3 font msgothic,32,1+16 x=20:y=64 pos x+2,y+2:color 0,0,0:mes a pos x,y:color 192,192,255:mes a x+=20:y+=60 gsel 0:cls 4 fadewall 15 pos x,y font msgothic,20,1+16:objsize 64,24,22 return #deffunc byewall repeat 32 color 0,0,0:gfade 8+cnt await 15 loop return #deffunc wipe_slide int _p1, int _p2 ; ワイプ(カーテン) ; wipe_slide 転送元id, 待ち時間 ; wt=_p2:if wt=0 : wt=48 mx=-32:repeat 60 redraw 0 repeat 32 a=cnt*20:x=cnt+mx:if x>20 : x=-1 if x>0 : pos a,0 : gmode 0,x,480 : gcopy _p1,a,0 loop redraw 1 await wt mx+:loop return #deffunc gblur int p1, int p2 ; ; 簡易ぼかしモジュール ; gblur ぼかし強度 , 方向フラグ ; ; 現在の操作先バッファに簡易ぼかしを適用します。 ; ぼかし強度は、大きい値ほど強くなります(処理も重くなります)。 ; 方向フラグは、0=XY、1=Y、2=Xの方向を選択します(通常は0)。 ; gmode 3, ginfo_sx, ginfo_sy, 128 if (p2&1)=0 { repeat p1 pos 1,0:gcopy ginfo(3) pos 0,0:gcopy ginfo(3),2,0 loop } if (p2&2)=0 { repeat p1 pos 0,1:gcopy ginfo(3) pos 0,0:gcopy ginfo(3),0,2 loop } return #global ;------------------------------------------------------ *boot ; デモ開始 ; title "HSP3.31 Demonstration" #ifdef RELEASE chdir dir_exe+"\\sample\\demo\\" #endif x=(ginfo_dispx-640)/2:y=(ginfo_dispy-480)/2 screen 0,640,480,0,x,y cls 4:color 255,255,255 pos 520,450:mes "Loading..." demo_init onexit *owari ;goto *demomain6 snd 0 *mainmenu ; メインメニュー ; gsel 6 logosx=ginfo_winx logosy=ginfo_winy gsel 0 cls sx=640:sy=200:blur=128 rate=0.0:fa=0.05:fb=0.001 ; ;color 178,208,227:boxf gradf 0,sy,640,480, 1, $b2d0e3,$f8fbfd pos 32,400:gcopy 7,0,0,200,26 objsize 200,28:pos 32,426 button "HSPTVブラウザを起動",*see_hsptv ; オブジェクト配置 ; ;objmode 1+16,1 font msgothic,16,1+16 x=114:y=240:color 192,192,255 pos x+1,y+1:mes "HSPの世界へようこそ。メニューのボタンを押してください。" color 0,0,160 pos x,y:mes "HSPの世界へようこそ。メニューのボタンを押してください。" font msgothic,16,1 x=294:y=280:pos x,y objsize 80,24,30 objimage 9, 0,0, 0,48, 0,24 button "readme",*see_readme button "demo",*demomain button "manual",*see_man button "assist",*see_sample button "editor",*see_edit button "quit",*owari objimage -1 x=390:y=282:pos x,y mes "はじめにお読みください" mes "HSPデモンストレーション" mes "HSP総合マニュアルを開く" mes "HSPアシスタントを開く" mes "スクリプトを編集する" mes "終了" *main1 ; メインメニュー画面待ち ; redraw 0 ; gmode 0,sx,1 repeat sy pos 0,cnt:ff=cos(fa*cnt+rate) gcopy 5,blur+(sin(rate+ff)*blur),cnt loop pos 268,48:gmode 6,logosx,logosy,256:gcopy 6 ; redraw 1,0,0,640,200 wait 10 ; rate+=0.1 fa+=fb if fa>0.1 : fb=-0.001 : fa=0.1 if fa<0.05 : fb=0.001 : fa=0.05 goto *main1 *see_readme snd 1 ;sndoff mkwall "・はじめに" redraw 0 text 0:color 0,0,128:textmode 2:color 255,255,255 emes {" このデモプログラムは、Hot Soup Processor Ver.3の 機能と使い方の紹介をするためのものです。 メインメニューから見たい項目を選んでボタンを押して ください。 このプログラムはすべてHSPで書かれています。 初めてプログラミングをする方は、「begin」ボタン を押して「初心者のためのHSP入門」をご覧ください。 "} ; font msgothic,16,1 pos 270,360:objsize 80,24,28 objimage 9, 0,0, 0,48, 0,24 button "menu",*go_main button "begin",*see_begin button "home",*see_home objimage -1 pos 360,362 mes "メインメニューに戻る" mes "初心者のためのHSP入門を見る" mes "HSPTV! ホームページへ" redraw 1 stop *go_main snd 1 goto *mainmenu *see_home snd 1 exec "http://hsp.tv/",16 stop *see_begin snd 1 exec2 dir_exe+"\\doclib\\beginner\\start.htm",16 stop *see_sample snd 1 exec2 dir_exe+"\\hspat.exe" wait 100 goto *owari *see_edit snd 1 exec2 dir_exe+"\\hsed3.exe" wait 100 goto *owari *see_man snd 1 exec2 dir_exe+"\\index.htm",16 goto *mainmenu *see_hsptv snd 1 exec2 dir_exe+"\\hsptv.exe" wait 100 goto *owari *owari demo_term end *demomain ; HSPデモ(フライングロゴ) ; ;sndoff sndfade -20 ; buffer 4 picload tvfolder+"onibtn.gif" sx=ginfo_winx:sy=ginfo_winy buffer 3 picload tvfolder+"hsplogo8.bmp" gsel 0 cls 4 snd 1 max=100 init_sprite 80,50,max opt_sprite 3,2 move_sprite1_init mx=sx:my=sy:x=-sx:y=240:z=0 repeat redraw 0 color 0,0,0:boxf gradf 0,300,640,480,1,0,128 move_sprite1 draw_sprite pos x,y:gmode 0,sx,sy if z>=260 { i=(z-260)*8 if i>=256 : z++ : goto *skiplogo gmode 3,sx,sy,256-i } grotate 4,0,0,0.01*(320-x),mx,my if x>=320 { z++ if z>250 { mx+=2:my+=1 } x=320 } else { x+=8 } *skiplogo redraw 1 sndexec await 15 if z>300 : break loop ; ブラークリア ; repeat 16 redraw 0 gblur 2 redraw 1 sndexec await 12 loop *demomain2 ; HSPデモ(テキスト表示) ; cls 4 snd 2 mkwall "・HSPとは?" text 10:color 0,0,128:textmode 2:color 255,255,255 emes "HSPは、Windows上で手軽に使えるインタプリタ言語です。 emes "テキストによるスクリプトを書くだけで、誰にでも簡単に emes "ウインドゥズ上で動作する、2D・3D画像を使ったゲームや" emes "スクリーンセーバー、ツールや実用ソフトなどの emes "アプリケーションを構築することができます。" gosub *waitclick byewall mkwall "・HSPの特長" text 10:color 0,0,128:textmode 2:color 255,255,255 emes "・簡単に覚えられる強力な命令セット" emes "・付属エディタですぐに使い始めることができる" emes "・作ったプログラムは自由に再配布が可能" emes "・拡張プラグイン・モジュールによる機能拡張" emes "・10年以上に渡る多くのユーザー資産と使用実績" emes "・オープンな仕様の中間言語インタプリタを搭載" gosub *waitclick byewall *demomain3 ; HSPデモ(配置オブジェクト表示) ; cls 4:color 0,0,64:boxf gradf 0,300,640,480,1,64,255 objmode 1,1 font msgothic,20,3 x=16:y=20:color 192,255,128 pos x,y:mes "・HSP3 配置オブジェクト" font msgothic,14,1 x=40:y=50:color 0,192,0:pos x,y mes "HSPでは、ボタンや入力ボックスなどのオブジェクトを" mes "自由に配置して使うことができます。下のサンプルはその一例です。" mes "他にも、多くのコントロール、ActiveXを配置することができます。" mes "「テスト終了」で次へ進みます。" sysfont:color 0,192,192 pos 40,130:mes "・けいさん" pos 40,200:mes "・グラフ" pos 40,270:mes "・メッセージ" ; objsize 48,24:color 192,192,192 cal1="123":cal2="456" caltype=0:calmark="+\n-\n*\n/" pos 60,160:input cal1 pos 160,160:input cal2 objsize 40,24 pos 114,159:combox caltype,150,calmark ; objsize 64,24 grph=10:x=310 pos 60,230:input grph pos 138,230:button "GO",*idgrph pos 138+64,230:button "RND",*idrnd ; pos 60,300:ids="ここにメッセージを入れてください。" mesbox ids,320,100,1 button "GO",*idmes ; objsize 120,24 pos 480,400:button "テスト終了",*idover z=300 *idmain color 0,0,64:boxf 210,162,369,179 color 192,192,192 cal1b=cal1:cal2b=cal2:caltb=caltype cal1a=0.0+cal1:cal2a=0.0+cal2 if caltb=0 : ans=cal1a+cal2a if caltb=1 : ans=cal1a-cal2a if caltb=2 : ans=cal1a*cal2a if caltb=3 : if cal2a!0.0 : ans=cal1a/cal2a : else : ans=0.0 pos 210,162:mes "= "+ans *idloop if cal1!cal1b : goto *idmain if cal2!cal2b : goto *idmain if caltb!caltype : goto *idmain ; if z<=0 : goto *idover z-- wait 10:goto *idloop *idrnd a=(rnd(20)+1)*5:objprm 3,a goto *idgrph *idgrph if x>580 : x=580:pos 310,180:gcopy 0,330,180,320,70 a=250-grph/2:if a>250 : a=250 if a<180 : a=180 color 255,0,0:boxf x,a,x+18,250 x+=20 goto *idloop *idmes dialog ids goto *idloop *idover *demomain4 ; HSPデモ(ノベル表示) ; cls 4 buffer 3 picload tvfolder+"sozai4.jpg" buffer 4 picload tvfolder+"jp6girl.bmp" sx=ginfo_winx:sy=ginfo_winy gsel 6 mx=ginfo_winx:my=ginfo_winy gsel 0:cls 4 wipe_slide 3 x=30:color 0,0,0 repeat 32 gmode 4,sx,sy,4*cnt pos x,0:gcopy 4 await 16 loop gmode 2,sx,sy:pos x,0:gcopy 4 font msgothic,26,1+16 text 20:color 0,0,0:textmode 1:color 255,255,255 pos 280,80 emes "ビジュアルノベルや、" emes "プレゼンテーションに" emes "利用できる高度な機能を" emes "提供しています。" mes "" emes "・画像を重ねた複雑な演出" mes "" emes "・半透明ブレンドの表現" mes "" emes "・音声と動きの同期" gsel 3 color 0,0,0:gmode 3,640,480,160 grect 320,240,0 gsel 0 wait 700 y=1:z=0 repeat 16 redraw 0 gmode 0,640,480:pos 0,0:gcopy 3 i=y>>1 gmode 0,640,y:pos 0,240-i:gcopy 8,z,100-i gmode 2,sx,sy:pos x,0:gcopy 4 redraw 1 await 16 x+=40:y+=4:z++ loop repeat 50-16 i=y>>1 gmode 0,640,y:pos 0,240-i:gcopy 8,z,100-i await 16 y+=4:z++ loop color 0,0,0 repeat 16 gmode 0,640,y:pos 0,140:gcopy 8,z,0 gmode 3,640,140,32 grect 320,70,0 grect 320,480-70,0 await 16 z++ loop repeat 16 redraw 0 gmode 0,640,y:pos 0,140:gcopy 8,z,0 gmode 6,mx,my,cnt*16:pos 258,180:gcopy 6 redraw 1 await 16 z++ loop repeat redraw 0 gmode 0,640,y:pos 0,140:gcopy 8,z,0 gmode 6,mx,my,256:pos 258,180:gcopy 6 redraw 1 await 16 z++ if z>=256 : break loop gsel 3:cls 4:gsel 0 wipe_slide 3 *demomain5 ; HSPデモ(サンプル画面表示) ; buffer 4 picload tvfolder+"hsp3scr.jpg" initwall gsel 3 font msgothic,32,1+16 a="・HSP3.31の主要機能" x=240:y=32 pos x+2,y+2:color 0,0,0:mes a pos x,y:color 192,192,255:mes a font msgothic,20,1+16 pos x+32,y+60 text 0:color 0,0,128:textmode 2:color 255,255,255 gsel 0 fadewall max=8 init_sprite 160,124,max opt_sprite 4,0 move_sprite2_init tex={" ●高機能なタブエディタ ●開発支援アシスタンス機能 ●検索機能付きヘルプブラウザ ●スマートフォンアプリ変換 ●高機能な3D表示とゲーム機能 ●各種画像フォーマット入出力 ●WEBカメラ、画像認識等の利用 ●http,ftp,rss,xml等のサポート ●Windows COM、ActiveXの利用"} z=0 repeat redraw 0 copywall if cnt=(z*250) { notesel tex if z<notemax { gsel 3 noteget a,z emes a mes "" gsel 0 } z++ } move_sprite2 draw_sprite redraw 1 await 15 if z>10 : break loop byewall *demomain6 ; HSPデモ(テキスト表示2) ; cls 4 mkwall "・HSPができること" text 10:color 0,0,128:textmode 2:color 255,255,255 emes "ビジュアルノベルから本格的な3Dシューティングまで" emes "様々なジャンルのゲーム作成ができるほか、" emes "デスクトップアクセサリ、スクリーンセーバー、" emes "画面レイアウトの試作、画像データの変換などの" emes "即席ツール、プログラムランチャーなど応用範囲は emes "アイデア次第で無限に広がります。" gosub *waitclick byewall mkwall "・インフォメーション" text 10:color 0,0,128:textmode 2:color 255,255,255 emes "HSPはホームページ上でサポートを行なっています。" emes "http://hsp.tv/ mes "" emes "HSPについての最新情報、サンプルスクリプト、" emes "FAQ、などのコーナーがあります。HSPについての" emes "ご意見、BUGの情報、要望などいつでもお待ちしています。" gosub *waitclick byewall *demomain7 ; HSPデモ(エピローグ) ; buffer 3 picload tvfolder+"onibtn.gif" logosx=ginfo_winx logosy=ginfo_winy gsel 0:cls 4 font "Arial",16,16 repeat 32 redraw 0 color 0,0,0:boxf gosub *edmes2 pos 260,290:gmode 0,logosx,logosy:gcopy 3 color 0,0,0:gfade (31-cnt)*8 redraw 1 await 16 loop wait 100 sndfade -10 repeat 5000/16 sndexec await 16 loop repeat 48 color 234,234,230:gfade 8+cnt sndexec await 16 loop snd 0 goto *mainmenu *waitclick ; クリック待ち ; i=128:ip=16 sysfont 17 repeat 200 stick key:if key : break color i,i,i i+=ip:if (i=128)or(i=240) : ip=-ip pos 480,440:mes "ボタンをクリックしてください。" wait 10 loop snd 1 return *edmes2 x=200:y=130 pos x+2,y+2:color 0,0,192:gosub *edmes pos x,y:color 255,255,255:gosub *edmes return *edmes mes "HSP DEMO script" mes "copyright 2012 onion software" mes " Music by CHOBIN,onitama" mes " Music Arranged by ArStudio" mes " Logo designed by sencha and" mes " YumeYumeYuuka" mes " CG picture by Y-jinn" return