TEST6

「ウソザナ」マップエディタ作成中 2 で作成したマップデータを元に、BMPファイルを作ってみました。
それらしいマップ画面になっています。


これを、「ウソザナ」TEST4 で作った画面モジュールと合わせて、ドットスクロールさせてみました。


適当なフォルダに次のファイルを用意し、HSPでxana_test6.hspを実行してみて下さい。

  • common.hsp (ここからゲット)
  • xana_screen.hsp (ここからゲット)画面表示用モジュール
  • xana_test6.hsp (↓からゲット)テストスクリプト
  • Xana_tile091129-2.PNGDENZI部屋さんのところからゲット) 

XANADU風タイル(ステータス)をbmp保存して下さい

  • 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