HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0110
gao-スプライトで敵を移動させる方法11解決


gao-

リンク

2013/1/10(Thu) 14:04:52|NO.51759

スプライトを使うのは初めての者です。

最近スプライトを知り便利ということで使ってみたくなりました。

質問は

画面外から敵がやってくる。(テストデータとして1体やってくる事にする。)

それをただ上から下へ動かすだけなのですが、es_patやらes_sizeなど

似たようなのが多すぎてなかなか理解ができませんorz...

仕様としては 

スクリーンの大きさは640,480で

敵は上から出てきて xが0,yを画面外から340まで落としたいです。

要するに左上から敵がでてきて落下していき、340で消滅という仕様です。



この記事に返信する


ru-ma

リンク

2013/1/10(Thu) 15:17:35|NO.51764

なに?スプライトって。

ジュース?
あぁ、あれね、おいしよねぇー



gao-

リンク

2013/1/10(Thu) 15:49:48|NO.51766

仕様について書き忘れていました。

2次元配列(txtデータからロード)する。

txtデータに


enemy(0,0)
敵が出るタイミング(秒数),敵の落下速度を読み込み、


要するに敵がでるタイミングを制御、敵の落下速度を制御したいわけです。

これが追記仕様です。



@key

リンク

2013/1/10(Thu) 16:46:10|NO.51768

命令を見るに拡張プラグインのhspdxfixかな・・・
まずその事を言ってくれー


でも自分はその事はわからないのですいません
特に本格的な物を作るわけじゃないならhspdxfixを使わないで自前で適当に用意するのがいいと思う



gao-

リンク

2013/1/10(Thu) 20:28:47|NO.51779

hspdxfixは使います。
知っておいた方がこれからゲームを作るときに便利なので、詳しく知りたいです。
本格的なのを作りたいので^^;



ミント

リンク

2013/1/10(Thu) 20:49:41|NO.51781

どーもこんにちはです。
私は「hspdxfix」を本格的に使ったことがないので、半分予測的な回答になります(申し訳ない)



さて本題ですが、まずはHSPの基準にある宣言とかで、
敵の動きを問題なく動作させるソースを作ることから始めた方がいいと思います。

もしHSP基準のことを把握しているのであれば、
多分「es_pat」「es_size」をある程度使うことが出来ると思います。



ヘルプテキストを見ると

wx=640:wy=480 ; 画面の解像度の指定 es_ini ; system初期化 es_screen wx,wy,8 ; スクリーン初期化 if stat=1 : goto *dderr1 if stat=2 : goto *dderr2
って書いてあるので、多分ですが考え方は大体同じだと思います。



暇人

リンク

2013/1/10(Thu) 21:21:29|NO.51784

hspインストールフォルダにサンプルフォルダ \sample\hspdx がある
ヘルプを使いながら全部見れば一通り使い方が分かる
それでも分からなければ改めて質問したら良い



gao-

リンク

2013/1/10(Thu) 22:58:47|NO.51789

とりあえず、画面を指定範囲黒くしたいのですが、

*main

color 0,0,0
boxf 0,0,680,340
color 0,0,0
es_cls 0,0,0

es_draw
es_sync 0

await 0

goto *main

このようにしても全部黒くなってしまいます。

範囲指定は間違ってないと思うのですが・・・



gao-

リンク

2013/1/10(Thu) 23:01:02|NO.51791

間違えました。

*main

color 0,0,0
es_boxf 0,0,680,340
es_cls 0,0,0

es_draw
es_sync 0

await 0

goto *main

でした。 ちなみに画面サイズは640、480です



Him

リンク

2013/1/10(Thu) 23:14:22|NO.51793

黒を黒で塗りつぶしても黒ですよ
es_boxfで色を付けてもその直後にes_clsでクリアしてはそれも真っ黒になります。

*main es_cls 0,0,0 color 255,0,0 es_boxf 0,0,680,340 es_draw es_sync 0 await 0 goto *main

一応最初の質問に対するサンプルを作りましたがもう少し基本的な事から覚えたほうがいいでしょう

#include "hspdx.as" es_ini es_screen 640, 480, 32, 0, 1 //敵の画像読み込み&設定 buffer 1 color $ff boxf 0, 0, 24, 48//赤い敵 color ,,$ff boxf 24, 0, 48, 24//青い敵 es_buffer 1//オフスクリーンバッファID:1に敵画像を転送 es_size 24, 48, 100, 1//赤い敵のサイズ設定 es_pat 10, 0, 0//赤い敵をキャラクターNo.10に設定 es_size 24, 24, 100, 1//青い敵のサイズ設定 es_pat 11, 24, 0//青い敵をキャラクターNo.11に設定 dim x, 2 dim y, 2//初期y座標 dim appear, 2 dim speed, 2 y(0) = -48 y(1) = -24 appear(0) = 3000//赤い敵が出現するまでの時間 appear(1) = 1500//青い敵が出現... speed(0) = 100//赤い敵の移動速度 speed(1) = 200//青い敵の... font "MS ゴシック", 48, 1 color $ff, $ff dim check_y dim character_no dim flg es_timer time0 repeat es_cls if flg {//敵出現フラグ es_get check_y, character_no, 5//敵の現在のy座標 if check_y > 340 {//y座標が340を超えたら es_kill character_no//敵を消去 character_no Xor 1//敵を切換 flg = 0 es_timer time0//次に敵が出現するまでの時間判定用 } } else { es_timer time1 time = time1 - time0 pos 100 es_fmes strf ("出現まであと%04dmsec", limit (appear(character_no) - time, 0, 9999)) if time > appear(character_no) {//設定した出現時間 flg = 1 es_set character_no, x(character_no), y(character_no), 10 + character_no//出現する敵のスプライト設定 es_apos character_no, 0, 1, speed(character_no)//移動速度 } } es_draw es_sync 16 await 0 loop



ppr

リンク

2013/1/11(Fri) 06:56:23|NO.51800

途中で話を切り替えますが、1帯のみを表示するという場合はdimは不要な感じがしてきます。
/*
kyax=0:kyaya=0;キャラの位置

*start
pos kyax,kyay:mes "●";キャラの位置を表示
kyax++;キャラの表示位置を変更
redraw 1:await 5:redraw 0:goto *start;何度も繰り返す
*/
私の間違いでしたら申し訳ないです。



gao-

リンク

2013/1/11(Fri) 09:48:18|NO.51806

ありがとうございます!出来ました!^0^

丁寧に教えていただき感激です。

質問に答えてくれた方々本当にありがとうございました!



ONION software Copyright 1997-2023(c) All rights reserved.