「ウソザナ」TEST1
前から作ってみたいと思っていた「ウソザナ」の製作に取り掛かりました。
まずは、自キャラモジュールを作ってみました。
適当なフォルダに次のファイルを用意し、HSPでxana_test1.hspを実行してみて下さい。
- common.hsp (ここからゲット)
- xana_test1.hsp (↓からゲット)テストスクリプト
- xana_my.hsp (↓からゲット)自キャラモジュール
- Xana_tile060227-4.bmp (DENZI部屋さんのところからゲット) ※XANADU風タイル(自キャラ)をbmp保存して下さい
テスト方法
- 矢印キー で上下左右に移動します。
- SPACEキーで装備を変更します。
- TABキー で装備種別を変更します。
- ESCキー で終了します。
スクリプトは、今後も改良していく予定です。
xana_test1.hsp
; ; プログラム :「ウソザナ」を作ってみる TEST1 ; ; 作成 :ふじぽん ; ; Copyright :http://d.hatena.ne.jp/fujiponXP ; ; 利用素材 : ; ; □ドット絵 :DENZI部屋(http://www3.wind.ne.jp/DENZI/diary/) ; タイトル :XANADU風タイル(自キャラ) ; 更新日 :2006年02月28日 ; ファイル名:Xana_tile060227-4.png ※BMP形式で利用します。 ; ; 変更履歴 ; ver.1.0 2009/11/08 新規作成 ; ; ライセンスに関する表示 #include "common.hsp" about_lisence ; グローバル定数 #module ; ウィンドウID #const global sid_main 0 ; 描画用 #const global sid_myload 1 ; 自キャラ読み込み用 #const global sid_mycopy 11 ; 自キャラgcopy用 ; 定数 #const global cx 32 ; キャラクターサイズX #const global cy 32 ; キャラクターサイズY #const global wtime 50 ; 描画待ち時間(ms) #const global HO_LEFT 0 ; 方向 左 #const global HO_RIGHT 1 ; 方向 右 #const global HO_UP 2 ; 方向 上 #const global HO_DOWN 3 ; 方向 下 #global ; モジュール読み込み #include "xana_my.hsp" ; 自キャラ用 ; 画面定義 screen sid_min, cx*9, cy*9: title "ウソザナ" ; 描画用 m_myPicset "Xana_tile060227-4.bmp" ; 自キャラ用 ; 装備 ; 服 0:ノーマル赤 1:ノーマル白 2:レーザーアーマー 3:ハーフプレート 4:フルプレート ; 頭 0:なし 1:フルヘルム 2:プレートヘルム 3:赤髪 4:白髪 5:茶髪 ; 盾 0:なし 1:赤小 2:赤大 3:黒小 4:黒大 ; 武器 0:なし 1:剣 2:槍 3:杖 4:斧 5:弓 6:鈍器 dim eq , 4: eq.0 = 0, 0, 0, 0 dim eqmax, 4: eqmax.0 = 5, 6, 5, 7 ; 変数設定 eqpos = 0 ; 装備種類 ; 自キャラ生成 newmod my, charactor m_myEquip my, eq.0, eq.1, eq.2, eq.3 ; 装備 gsel sid_main *main redraw 0: color 50,80,80: boxf ; 画面クリア ; キー入力 stick key,15,1 if key&128 : end ; ESCで終了 if key&1024 : eqpos = (eqpos + 1) \ 4 ; TABで種類を変更 if key&16 { ; SPACEで装備を変更 eq.eqpos = (eq.eqpos + 1) \ eqmax.eqpos m_myEquip my, eq.0, eq.1, eq.2, eq.3 } ; 移動計算 ret = m_mywalk(my.0, key) ; 移動確定 m_myWalkcommit my ; 自キャラ表示 m_mydisp my redraw 1 await wtime goto *main
xana_my.hsp
; ; モジュール定義:「ウソザナ」自キャラ用 ; 作成 :ふじぽん ; ; モジュール名 :charactor ; ; モジュール変数:位置x,y, 方向ho, パターンpt, 移動計算用nx,ny ; ; Copyright :http://d.hatena.ne.jp/fujiponXP ; ; 変更履歴 ; ver.1.0 2009/11/08 新規作成 ; #module charactor x, y, ho, pt, nx, ny ; 画像セット #deffunc m_myPicset str fname buffer sid_myload: picload fname ; オリジナル画像用 buffer sid_mycopy, 10*cx, cy ; gcopy用 return ; 変数初期化 #modinit x = 8*cx: y = 4*cy: ho = 0: pt = 0 gsel sid_mycopy: pos 8*cx,0: gcopy sid_myload, 2*cx, 5*cy, cx, cy return ; 装備 #modfunc m_myEquip int p1, int p2, int p3, int p4 gsel sid_mycopy: boxf pos 0 ,0: gcopy sid_myload, 2*cx, p1*cy, 8*cx, cy ; 体 pos 9*cx,0: gcopy sid_myload, (3+(p1=1 | p1=4))*cx, 5*cy, cx, cy ; 死亡 color 0, 133, 111: gmode 4, 8*cx, cy,255 if p2 > 0 : pos 0, 0: gcopy sid_myload, 2*cx, (p2+12)*cy ; 頭 if p3 > 0 : pos 0, 0: gcopy sid_myload, 12*cx, (p3- 1)*cy ; 盾 if p4 > 0 : pos 0, 0: gcopy sid_myload, 12*cx, (p4+ 3)*cy ; 武器 return ; 描画 #modfunc m_mydisp gsel sid_main: color 0, 133, 111: gmode 4, cx, cy,255 pos x, y: gcopy sid_mycopy, (ho*2+pt)*cx, 0 return ; 移動計算 #modcfunc m_mywalk int k key = k: dx = 0: dy = 0 if key&1 :dx = -4: ho = HO_LEFT : key=0 ; 左移動 if key&4 :dx = 4: ho = HO_RIGHT: key=0 ; 右移動 if key&2 :dy = -4: ho = HO_UP : key=0 ; 上移動 if key&8 :dy = 4: ho = HO_DOWN : key=0 ; 下移動 if (dx=0) and (dy=0) : nx = x: ny = y: return 0 nx = (x + dx + cx*8) \ (cx*8) ny = (y + dy + cy*8) \ (cy*8) pt = (pt + 1) \ 2 return 1 ; 位置確定 #modfunc m_myWalkcommit x = nx: y = ny return ; 位置x #modcfunc m_myX return x ; 位置y #modcfunc m_myY return y ; 位置nx #modcfunc m_myNX return nx ; 位置ny #modcfunc m_myNY return ny ; 方向ho #modcfunc m_myHo return ho #global