ウソボスイメージ ver.1.1
DENZIさんがウソザナ用のエフェクトを作ってくれたので、早速ウソボスに炎を吐かせてみました。
適当なフォルダに次のファイルを用意し、HSPでusoboss.hspを実行してみて下さい。
- common.hsp (ここからゲット)
- usoboss.hsp (↓からゲット)テストスクリプト
- Xana_tile081213-1.PNG (DENZI部屋さんのところからゲット) ※XANADU風タイル(マップ)をbmp保存して下さい
- Xana_tile081213-2.PNG (DENZI部屋さんのところからゲット) ※XANADU風タイル(敵キャラ)をbmp保存して下さい
- Xana_tile091129-2.PNG (DENZI部屋さんのところからゲット) ※XANADU風タイル(ステータス、他)をbmp保存して下さい
- 一応、ウソボスはアニメーションします。
- SPACEキーで炎を放射します。(いまいちですが、ランダムで3段階の放射角度に変わります)
今回のスクリプトも画面イメージを見たかっただけなので、コメント無しでソースも汚いです。
しかも、セコ技で100行以内の短いものにしています。(ますます見にくい><)
ですが、放射ロジックを改良したので前回よりもカッコよく見えます。
DENZIさん、ウソザナ用エフェクトセットを作ってくれてありがとうございました。
次回は、自キャラ用のエフェクトに挑戦しようかと考えています。
usoboss.hsp
; ; プログラム :「ウソボス」を作ってみる ; ; 作成 :ふじぽん ; ; Copyright :http://d.hatena.ne.jp/fujiponXP ; ; 利用素材 : ; ; □ドット絵 :DENZI部屋(http://www3.wind.ne.jp/DENZI/diary/) ; タイトル :XANADU風タイル(マップ) ; 更新日 :2008年12月22日 ; ファイル名:Xana_tile081213-1.PNG ※BMP形式で利用します。 ; ; タイトル :XANADU風タイル(敵キャラ) ; 更新日 :2008年12月22日 ; ファイル名:Xana_tile081213-2.PNG ※BMP形式で利用します。 ; ; タイトル :XANADU風タイル(ステータス、他) ; 更新日 :2009年11月30日 ; ファイル名:Xana_tile091129-2.PNG ※BMP形式で利用します。 ; ; 変更履歴 ; ver.1.0 2009/11/27 新規作成 ; ver.1.1 2009/12/01 炎をXANADU風タイル(ステータス、他)に変更、スペースキーで放射するように変更 ; ; ライセンスに関する表示 #include "common.hsp" about_lisence #module m_fire x, y, pt, zoom, life #modinit int px, int py, double pzoom x = px: y = py: life = 10: zoom = pzoom return #modcfunc m_fireDraw gsel 0: color 0,133,111: gmode 4,32,32,255 pos x, y: celput 2, 13+pt, 1.0*zoom, 1.0*zoom, 6.28*45/360 pt = (pt+1) \ 3: life-- return life #global #define cs 32 #define w 14 #define h 7 #define d (628/8) #define z 0.5 screen 0, w*cs, h*cs: title "ウソボス" celload "Xana_tile091129-2.bmp", 2, 0: celdiv 2,32 ,32 ,16,16 celload "Xana_tile081213-2.bmp", 3, 0: celdiv 3,32*3,32*3, 0, 0 buffer 4:picload "Xana_tile081213-1.bmp" randomize gsel 0: posx=10*cs: posy=4*cs: ho=2 newmod fire, m_fire, 0, 0, 0 *main redraw 0: gmode 0:pos 0, 0: gcopy 4,0,14*cs, 14*cs, 7*cs color 0,143,122:gmode 4,32,32,255 pos posx, posy: celput 3, 37+m_pt(pt), 1, 1, 0 if f { df = 10.0 - f: f-- newmod fire, m_fire, posx-(df*df), posy+(df*df/ho)+cs, limitf(df*df/50, 0.2, 4.0) } else { stick key,16 if key&16 : f=10: ho=rnd(3)+1 } foreach fire ret = m_fireDraw(fire.cnt) if ret < 1 : delmod fire.cnt loop redraw 1: await 80 pt=(pt+1)\4 goto *main #defcfunc m_pt int p ret=p if p>2 : ret=1 return ret