TEST6
「ウソザナ」マップエディタ作成中 2 で作成したマップデータを元に、BMPファイルを作ってみました。
それらしいマップ画面になっています。
これを、「ウソザナ」TEST4 で作った画面モジュールと合わせて、ドットスクロールさせてみました。
適当なフォルダに次のファイルを用意し、HSPでxana_test6.hspを実行してみて下さい。
- common.hsp (ここからゲット)
- xana_screen.hsp (ここからゲット)画面表示用モジュール
- xana_test6.hsp (↓からゲット)テストスクリプト
- Xana_tile091129-2.PNG (DENZI部屋さんのところからゲット)
- nisemap.bmp (↑からゲット)テストマップ
うまく起動するとこんな画面でニセマップを移動させることができます。
テスト方法
- 矢印キー で上下左右にマップを4ドット単位でスクロールします。
- ESCキー で終了します。
今回はbmpファイルを作ってマップを動かしましたが、実際にはマップデータから仮想画面にマップを描画し、そ
れを実際に表示させることになります。
早く、自キャラで移動できるようにしたいですが、まだまだ先は長いです。
スクリプトは、今後も改良していく予定です。
xana_test6.hsp
; ; プログラム :「ウソザナ」を作ってみる TEST6 ; ; 作成 :ふじぽん ; ; Copyright :http://d.hatena.ne.jp/fujiponXP ; ; 利用素材 : ; ; □ドット絵 :DENZI部屋(http://www3.wind.ne.jp/DENZI/diary/) ; ; タイトル :XANADU風タイル(ステータス) ; 更新日 :2007年04月01日 ; ファイル名:Xana_tile070401-3.png ※BMP形式で利用します。 ; ; 変更履歴 ; ver.1.0 2009/11/21 新規作成 ; ver.1.1 2009/11/22 TEST3(自・敵移動)+TEST4(ステータス表示) ; ver.1.2 2009/12/09 TEST6 ニセマップスクロール ; ; ライセンスに関する表示 #include "common.hsp" about_lisence ; グローバル定数 #module ; ウィンドウID #const global sid_main 0 ; 描 画用 #const global sid_map 10 ; マップ用 ; 定数 #const global cx 32 ; キャラクターサイズX #const global cy 32 ; キャラクターサイズY #const global wtime 30 ; 描画待ち時間(ms) #const global HO_LEFT 0 ; 方向 左 #const global HO_RIGHT 1 ; 方向 右 #const global HO_UP 2 ; 方向 上 #const global HO_DOWN 3 ; 方向 下 #global ; モジュール読み込み #include "xana_screen.hsp" ; 画 面表示用 ; 画面生成 newmod scr, m_screen, "Xana_tile091129-2.bmp", 9, 9 ; 画面表示用 m_scName scr, "Fujipon" m_scTitle scr, "NoviceFighter" m_scHitPoints scr, 1250 m_scGold scr, 12500 m_scFood scr, 7845 m_scExpAt scr, 1000 m_scExpMg scr, 0 m_scWepon scr, "Dagger" m_scMagic scr, "Needle" m_scWear scr, "Cloth" m_scShield scr, "Gloves" m_scItem scr, "Spectacles" m_scDraw scr, 0 ; ニセマップ読込 buffer sid_map: picload "nisemap.bmp" *start gsel sid_main redraw 0 gmode 1, 9*32, 9*32, 245:pos 16,16: gcopy sid_map, mx, my redraw 1 *main await wtime ; キー入力 stick key,15,1 if key&128 : end ; ESCで終了 if key&1 : mx = limit(mx - 4, 0, 20*32-32*9): goto *start if key&2 : my = limit(my - 4, 0, 20*32-32*9): goto *start if key&4 : mx = limit(mx + 4, 0, 20*32-32*9): goto *start if key&8 : my = limit(my + 4, 0, 20*32-32*9): goto *start goto *main