1 :
名前は開発中のものです。 :
2006/07/08(土) 08:23:49 ID:wKmYt1HI HSPで困っている人がいると思って立てました。 どうぞ、利用してください。
2 :
名前は開発中のものです。 :2006/07/08(土) 10:45:14 ID:m49r18dz
>>1 どうみても低能です。
本当にありがとうございました。
3 :
名前は開発中のものです。 :2006/07/08(土) 17:28:00 ID:wKmYt1HI
HSPで2ちゃんねるのスレッドの保存はできますか。 教えてください。
4 :
名前は開発中のものです。 :2006/07/08(土) 22:06:48 ID:wKmYt1HI
HSPってどんなことができるのですか?
6 :
名前は開発中のものです。 :2006/07/09(日) 08:15:48 ID:aSjtkPwz
>>4 HSPで出来ない事=構造体、クラスの定義、関数作成等(細かい処理)
HSPで出来る事 =基本的に精度は低いが何でも出来る(様な気がする)
ダイレクト]使用可能
HSPのメリット =命令、変数処理が出来れば簡単に作れる、覚えられる
初期化とウィンドウ作成処理が不必要(これが大きい)
二日あればノベル位は作れる
三日あればシューティング位作れる(人にもよる)
HSPのデメリット=人によってはHSPで作られたソフトのイメージは悪い
書籍が少ない(最新バージョンは2冊程)
就職に何の役にも立たない
7 :
6 :2006/07/09(日) 08:20:54 ID:aSjtkPwz
読み辛くてスマソ
8 :
名前は開発中のものです。 :2006/07/09(日) 13:33:46 ID:NY4Q+YKv
a=$1234567890 b=peek(a,4) こうすると2行目にエラーが…なぜ?
バッファが確保されていないからだろ。
以後質問禁止。
>>1 は削除依頼出してこい。
>>9 整数形は32ビツトだから読み取れるのは0〜3
てか入れたのを表示してみりゃ
ちゃんと代入がされてない事ぐらい分かるだろ・・・
疑問に思ったのですが、このスクリプトで何故「&」(1or2or4or8) を入れなければならないのでしょう?わくわくゲームポログラミング教室 の格闘ゲームのスクリプトなのですが…。スクリプト14行から buffer 1 picload "kakutou.bmp" buffer 2 picload "back.bmp" screen 0,480,320 gmode 2 *kuri redraw 0 pos 0,0 gcopy 2,0,0,480,320 stick ky,15 pos 0,0 if (ky&1)=1 or (ky&4)=4 { if (ky&1)=1 : x=0 if (ky&4)=4 : x=192 y=192 if (ky&2)=2 : y=0 if (ky&8)=8 : y=384 gcopy 1,x,y,192,192 } else : gcopy 1,384,192*(anime/8),192,192 anime=(anime+1)\16 redraw 1 wait 3 goto *kuri
>>14 ありがとうございます。なんとか理解しました。
なんかそっちのスレでこっちにってあったのでこっちきてました。
次からはまたそちらに行かせてもらいます。
>>6 >HSPで出来ない事=構造体、クラスの定義、関数作成等(細かい処理)
Ver3では関数作成や構造体は似たようなものができるが?
(Ver2.61でも関数作成できないことはない。メリットないけど。)
>HSPで出来る事 =基本的に精度は低いが何でも出来る(様な気がする)
精度って?
>二日あればノベル位は作れる
>三日あればシューティング位作れる(人にもよる)
最近の入門者って相当頭いいんだな。時代は変わった。
ネタにマジレスしてごめんな。
>>15 「2進数だから。」だけで理解できたのか!やっぱ最近の入門者って頭いいんだな。
17 :
名前は開発中のものです。 :2006/07/11(火) 04:40:20 ID:bmqhMkyv
>>15 >>Ver3では関数作成や構造体は似たようなものができるが?
まさかサブルーチンの事でも言っているのか?
2次配列変数や文字型変数からの変数読み込みの事でも言っているのか?
まさかありえないと思うがヘッダファイルを読み込ませるとでも言っているのか?
貴方が知っている方法を書いてくれ、実に興味深い
関数作成はAPI群のHSPだから大してメリットがないんだろ
HSPは主にCとAPIで作られているんだよ
精度ってのは言語として出来る範囲の事だ
極論だがHSPでOS作れるか?C++以上の言語を再構築出来るか?
別に俺は頭良くないが本読んで三日あればシューティング位作れたぞ?
それとCを学び始めて一週間ほどでボンバーマンもどき作ったヤツいたし
>>最近の入門者って相当頭いいんだな。時代は変わった。
それは君の頭弱いからだろうが…
玄人を気取っている素人及び入門者かおまえわ
それと出来る出来るじゃなく具体論を述べなさい
釣りにマジレスしてごめんね、おじさん
18 :
17 :2006/07/11(火) 04:42:02 ID:bmqhMkyv
19 :
名前は開発中のものです。 :2006/07/11(火) 21:29:21 ID:JfmidjRx
pngって取り込めるのか?
HSPで同人ソフト作って売ってる人ってどのくらい居る? いい加減、DirextX&VC++以外の開発方法以外もやろうと思ってるん だけどフラッシュにするかHSPにするか迷ってる。
フラッシュにしろ。 HSPのプラグインはその作者によって 商用を認めていない、あるいは利潤求めてくるものがある。
23 :
21 :2006/07/13(木) 01:37:27 ID:bitsB8nJ
>22 ありがとう。 フラッシュにするわ。
まだ使われてるプラグインでシェアウェアなんかあったっけ?
本スレに書き込みましたが、質問スレがあったのですか・・・ 3Dアクションゲーム(FPS)を作りたいのですが、 HSP3.0標準の"hgimg.as"の仕様がニガテです。 他にオススメの3D用のってありませんか?
26 :
名前は開発中のものです。 :2006/07/19(水) 20:56:35 ID:0kCyw9XK
定期あげ
>>25 Easy3Dてのが人気じゃね?使ったことないけど
>>27 >>25 の書き込みの後、HSPの3D専門スレを見つけたのですが、
hgimg3とE3Dが普通っぽいですね
自分に合う方試して作ってみます、レスありがとうございました
>>17 >>貴方が知っている方法を書いてくれ、実に興味深い
モジュール使えよ
モジュール知らないから言ってるんだと そういやまだメインでHSP2使ってる奴いるかな。
ちなみに俺は古いソフトのメンテでどうしてもって時しかHSP2触らなくなった。 今からだと式の評価順番が前方結合てのは耐えられんわ。ほか色々
33 :
名前は開発中のものです。 :2006/07/21(金) 17:07:26 ID:BalDwoVY
hsp2であったtext命令をhsp3に使いたいのですが、どうしたら使えますか。 教えてください。
HSPマニュアル総合インデックス から >以前のバージョンからの変更点(アップデートガイド) (update.htm) >text → "hsp3util.as"モジュールにてtext,emes命令を提供しています
36 :
名前は開発中のものです。 :2006/07/22(土) 13:48:21 ID:8dHhUFQq
HSPを使っている皆さんに質問ですが、 みなさんが自分で作ったもので一番傑作だと思った作品は何ですか?
mousexがどうしても「もうセックス」に見えるのですが どうしたらいいですか。助けてください。
mousexy にしたらいい
>>38 #define global mouthsex mousex
あるいは
#define global oralsex mousex
とマクロ定義して別の単語に置き換えておけば、
悩まされることは減ると思うぞ
41 :
名前は開発中のものです。 :2006/07/26(水) 20:50:48 ID:WyJVmA8l
定期age
43 :
名前は開発中のものです。 :2006/08/05(土) 08:01:13 ID:xtaYej7+
age
44 :
名前は開発中のものです。 :2006/08/17(木) 14:28:44 ID:+oB+zoYX
定期age
26.1と3、全くの初心者が使うならどっち?
3でいいんじゃね
4
1
0
50 :
名前は開発中のものです。 :2006/11/05(日) 22:12:08 ID:DG2qMDkg
スクリーンの大きさを小さくして実行する時、一瞬通常の大きさのスクリーンが現れます。 どうすればでなくなるか教えて下さい;;マジで困ってます;;;
EXEなら #packopt hide 1 をソースの先頭にでも追加すれば起動時にメインウインドウが非表示になるので ウインドウの大きさを変えてgsel 0, 1をすればOK
53 :
名前は開発中のものです。 :2006/12/08(金) 12:48:23 ID:rTbzb3Hp
これからHSPで箱庭ゲーを作ろうと思ってる俺は、どのスレで質問するのがいいですか?
screen 0,224,304,0 randomize max_x=13:max_y=18 gamedot=16 *mainlp redraw 0 color 0,0,0:boxf gosub *move_ene gosub *disp_ene gosub *make_ene redraw 1 await 50 goto *mainlp *make_ene if eneflag!0:return rnd enex,max_x eney=0:eneflag=1 return *move_ene if eneflag=0:return eney++ return *disp_ene if eneflag=0:return if eney > max_y:eneflag=0:return color 255,0,255 pos enex*gamedot,eney*gamedot mes "■" Return
56 :
55 :2006/12/29(金) 12:56:45 ID:kYk+xHnY
参考書を読んでHSPを勉強してるのですが 上のプログラムの16行目で『代入できない変数名を指定しています』 と出てしまいます。 指摘お願いします。
57 :
55 :2006/12/29(金) 13:36:50 ID:kYk+xHnY
事故解決しました。 3.0からはrnd命令が関数になってるんですね。 参考書の方を訂正しておきました。
58 :
名前は開発中のものです。 :2006/12/31(日) 00:22:29 ID:cOQJD/bo
>>22 プラグインって何使ったかわかる物なの?
コンパイルしてEXEファイルになったら分からないじゃん?
将来的に自分の知識使って小遣い稼ぎ程度の商用考えてるんですけど。。
変に隠してもトラブルの元。 readme.txtちゃんと読んだらいいと思うよ。 不安なら作者に連絡取るべき。 おにたまには取らんでも良い。
60 :
名前は開発中のものです。 :2007/01/12(金) 03:11:47 ID:htAO2VmI
すみません。 メインループの中にボタンを入れるとちらついちゃうんですが、 どうしたらちらつかないように表示できますか?
そのボタン作成のフラグを用意して、 すでに作成されているなら再作成はしないようにする。
62 :
名前は開発中のものです。 :2007/01/26(金) 22:20:06 ID:Nz05b8Ne
age
63 :
名前は開発中のものです。 :2007/01/27(土) 06:53:39 ID:C7nG8Ass
2.5Xでモジュール内から外の変数を参照するのに 「変数@」を使っていたのですが 3.XX系では「変数@」は使えなくなったのでしょうか? もし使えなくなったのなら、参照する方法はあるのでしょうか?
64 :
名前は開発中のものです。 :2007/01/27(土) 07:14:32 ID:RlNItWZr
>>63 それで使えないっけ?
それで使えないなら「変数@HSP」ってやれば使えると思った
65 :
63 :2007/01/27(土) 09:33:21 ID:C7nG8Ass
>>64 ありがとうです。何とかなりそうです……が。
もしかしてpget命令も変化しました? 変な違和感があります。
メインソースの中では普通にginfo_rなどに代入できるんですが、
モジュール内ではそれが出来ないようです。
モジュール内で別の変数に代入しなければならないみたいなんですが。
2.5X系では普通にモジュール内でginfo_r(rval)に代入できていたので……。
66 :
名前は開発中のものです。 :2007/01/27(土) 16:37:17 ID:opAhByRf
>>65 自分は2.5を使った事がないから動作の違いは知らない
なので、言われてる意味が良く分からない・・・
67 :
63 :2007/01/28(日) 05:33:39 ID:L/2/CKGg
>>66 レスありがとです。
2.5X系のソースを無理やり、3.XX系にしている最中だから他にも不具合がいっぱいくさいです。
とりあえずそっちの対処を考えます。
68 :
名前は開発中のものです。 :2007/01/29(月) 04:28:13 ID:DmWTxj26
簡単な横スクロールぽいゲームを作ってたのですが詰まりました。 画面の左右にキャラが到達したら、同じ場所だけど背景画像だけは 変えたい場合 if (carx<=-24)&(car=0):carx=画面サイズ if (carx>=画面サイズ)&(car=4):carx=-24 でループできるけど画像はどう変えるのがいいでしょうか? いっそ画像だけじゃなくステージごと移動するべきでしょうか…
69 :
63 :2007/01/29(月) 05:14:04 ID:nz5AK9kd
実験した結果、モジュールからの変数参照は 変数@ 使用可 変数@hsp 使用不可でした。 それと詳しく検証したわけではないですがpgetは あるウィンドウでRGB値を所得して別ウィンドウへ移り参照しても反映されないみたいです。 2.5X系では作画用の裏ウィンドウでRGB値を所得しメインウィンドウへ戻っても直接参照できていたので3.XX系の仕様は盲点でした。 これで修正点の一つが終わりそう……。
>>68 carxがキャラのx座標なのは分かるにしても、
carは何なんだ?とか、いろいろわからん。
if (carx<=-24)&(car=0):carx=画面サイズ:背景画像を変える処理:goto *@f
if (carx>=画面サイズ)&(car=4):carx=-24:背景画像を変える処理
*@
でいいんじゃね〜の?
/*
>>69 pget使ったことなかったから、HSP2.5xでどういう動作だったのか知らないが…
裏ウィンドウのRGB値をpgetで取得した後、ginfo(16〜18)で変数に保存して、
メインウィンドウに戻ってから、変数を参照してcolor命令で改めて色を設定すれば、
手間は増えるが、希望する動作になると思う。
;
質問とは関係ないけど
下記スクリプトで y=0だと期待通りにpgetできてない原因は分からん。
比較用にgcopyした領域との間にスキマが空いてることを合わせて考えると
おそらく、lineで描画すると、始点(p1,p2)が1ドット抜ける感じか。
*/
screen 0,640,480,1;「メインウィンドウ」
buffer 2,640,480,1;「作画用の裏ウィンドウ」
repeat 640:c=(cnt&15)<<4:color c,c,c:line cnt,0,cnt,480:loop;(裏に縞模様を作成)
gsel 0:gcopy 2,0,0,320,240;(比較用にコピー)
;
y=1;(謎)
repeat 640
gsel 2:pget cnt,y;「作画用の裏ウィンドウでRGB値を所得」
_R=ginfo(16):_G=ginfo(17):_B=ginfo(18);(変数に保存)
gsel 0:color _R,_G,_B:line cnt,240,cnt,480;「メインウィンドウへ戻って」〜
loop
;つーか「所得」に違和感を感じる。
72 :
名前は開発中のものです。 :2007/01/29(月) 22:32:16 ID:PILBo0yh
他で聞いたのですが、 「女のパンツ云々書いてる暇があったら自分で調べろ。 」 といわれたのでここで聞きます。 HSP3.0と3.0aの違いは何ですか? どこを見ても2.6との違いか3.1βの更新履歴しか出てきません。 3.0と3.0aの更新履歴を見ても、両方「2005/07/30修正」だし…
73 :
名前は開発中のものです。 :2007/01/30(火) 00:46:30 ID:xDqXk57Z
>>68 意味が分からん・・・
右端に行ったら自分は左から出てきて、背景が一画面分移動?
つーか背景をどんな風に表示してるかも分からないと何とも言えない・・・
>>69 >あるウィンドウでRGB値を所得して別ウィンドウへ移り参照しても反映されないみたいです
3.0のはginfo_rでginfo(16)をマクロで置き換えてるだけだから
pgetしたらcolorで設定してそれをシステム変数に反映してるので、
別のウィンドウを選択すると、システム変数もそのウィンドウのカラー設定になる
>>71 >おそらく、lineで描画すると、始点(p1,p2)が1ドット抜ける感じか。
それは、line命令の仕様
理由は何かあったけど忘れたw
75 :
68 :2007/01/30(火) 03:11:34 ID:HTkfnnIZ
内容が解り難い質問をしてしまったのにお答えありがとうございます。
>>69 ,
>>70 ,
>>71 さん
お三方の書き方を参考に何とか描画させたいと思います。
76 :
63 :2007/01/30(火) 07:30:32 ID:Wt7/d+Pu
>>71 >>73 レスありがとです。
71さんの通り、意図通りの動作はginfo(16-18)を変数に代入する方法で成功していました。
ですが2.5系で出来ていたことが3.0系で出来なくなった理由がわからず、その原因追求していた次第です。
>;つーか「所得」に違和感を感じる。
なんちゃってプログラムを打つ人なので……この場合、なんて言い換えたらいいんだろ。
>それは、line命令の仕様
>理由は何かあったけど忘れたw
ものの本によると
lineの終点のドットは描画されないのが、windows GDI(描画API)の仕様のようです。
これは連続した線を描画するときにかさならないようにということでしょう。
だそうです。
77 :
名前は開発中のものです。 :2007/02/13(火) 14:14:46 ID:/OyhXbRb
ジョイパット使ってキャラクターを操作するようにしたんですけど 普通にHSPなら動くのに、HSPDX使ったら 上下にしか動かなくなってしまいました 何故?きちんと動くようにするにはどうしたらいいんでしょうか?
原因を探ろうにも、情報が少なすぎて答えられないな。 難度の高い質問だぜ…!
質問です。 LZH形式で圧縮したデータをゲーム内で使用する時点で解凍し、使用後に更新されたデータを圧縮して保存しようとしています。 圧縮時、解凍時に進捗状況ダイアログを出したくないのですが、何か設定はあるのでしょうか? 特にLZHにこだわらないので他の形式でも構いません。アドバイスよろしくお願いします。
80 :
名前は開発中のものです。 :2007/05/03(木) 10:11:03 ID:8w+lt+Fb
age
81 :
名前は開発中のものです。 :2007/05/03(木) 18:05:52 ID:0ZMSvVKs
>>79 質問するなら環境ぐらい書け
HSPのバージョン
圧縮に使ったDLL
現在どんな風に圧縮展開してるかのサンプル
圧縮形式に拘らないなら
hsp ZLIB
でググればトップに出るよ
HSP2.6の頃に出来てる奴だから付属サンプルは
HSP3じゃちょっと変更が必要だけどプラグインには
問題ないかもしれない
(ちゃんと圧縮展開で来て変なエラーが出ないかは自分で検証してくれ)
82 :
79 :2007/05/04(金) 05:39:11 ID:KV83UwXl
>>80 ご指摘ありがとうございます。
バージョンは3.0、現在は下記サイトを参考にしてこのように処理しています。
ttp://lldev.jp/hsp/module/unlha32_dll.html ;-----------------------------------------------------------
#include "gm_unlha32_dll.hsp"
; ファイルのパス
filepath = "d:\\hsp\\data1.lzh"
filepath2 = "d:\\hsp\\data2.txt"
;
button "解凍", *unpack
button "圧縮", *pack
stop
*unpack
a = unlha_ext(filepath, 0)
mes stat
stop
*pack
a = unlha_cmp(filepath2, 1)
stop
83 :
79 :2007/05/04(金) 05:47:48 ID:KV83UwXl
84 :
79 :2007/05/04(金) 06:42:19 ID:KV83UwXl
79です。自己解決しました。 上記gm_unlha32_dll.hsp内のスイッチを書き換えることで対応できるようです。お手数かけました。
85 :
名前は開発中のものです。 :2007/05/07(月) 16:25:16 ID:pJH5H2Kw
一つゲーム作のに大体どれくらいの変数使うものなんですか? 考えなしにばかばか使っちゃったりしたらまずいことあるのか失敗になって
86 :
名前は開発中のものです。 :2007/05/07(月) 16:26:08 ID:pJH5H2Kw
失敬 失敗=心配
87 :
名前は開発中のものです。 :2007/05/07(月) 22:11:30 ID:PZ9SZ2Mt
>>85 変数の数にシステム側の制限は無い
でも扱う人間に限界があるんじゃね?w
と、言うか配列って知ってる?
5個表示物があったら別々に座標保存用の変数名使ってるとか無いよな?
88 :
名前は開発中のものです。 :2007/05/15(火) 19:47:04 ID:D7sivls6
hspdxで画像を描画するときに システムエラーで「DDRA.DLLに異常が発生しました」 と表示されて落ちます。 DLLのバグでしょうか?
89 :
名前は開発中のものです。 :2007/05/27(日) 04:47:12 ID:z2MNV+vZ
ぷよぷよモドキ作ってるんだけど
ぷよが千切れて落ちるのを滑らかに表示させるには
どうしたらいいか知恵を貸してください。
あとキャラ画像とかをEXE直下のフォルダに入れて
始める前に選べるようにしたいんだけど
それについても知恵があったら拝借したいです。
ちなみに今こんなかんじ
http://gamdev.org/up/img/9518.zip
…特定のフォルダに入っているファイルの指定はできるんだよな?
91 :
名前は開発中のものです。 :2007/05/27(日) 15:58:58 ID:z2MNV+vZ
>90 千切れて〜のほうは自己解決した(・∀・)! フォルダ〜のほうはウプした奴ではカレントを切り替えて読ませてる。 でもそれだと2P入れたときに上手くいかない気がしてる。
92 :
名前は開発中のものです。 :2007/05/27(日) 16:46:52 ID:GZUysg8b
HSP3用の逆コンパイラはありますか?
93 :
名前は開発中のものです。 :2007/05/27(日) 18:38:02 ID:2JXqUbAU
>>91 dirname="1\\","2\\"
p1dir=1 ; 2\ を選択
picload dirname(p1dir)+"puyo.bmp"
ってやればカレントディレクトリ移動する必要ないんじゃね?
dataフォルダ作って、そこに1\とか置いた方がすっきりするかもしれない
後、0のフォルダも作っておいてデフォルトデータにしとくのもいいかもしれない
選ばれたフォルダにファイルが無かったら0\の方を使う(同じデータを複数入れる必要が無くなる)
>始める前に選べるようにしたいんだけど
>それについても知恵があったら拝借したいです。
どの部分を聞きたいのか分からんけど
キャラ絵が Face.bmp(サイズ64*64)で1\〜10¥に全部同じ名前のファイルがあるとしたら
repeat 2
y=cnt
repeat 5
pos 160+cnt*64,200+y*64
fname=str(cnt+y*5+1)+"\\Face.bmp"
picload fname,1
loop
loop
これでキャラ絵が横5個、縦2段で表示(普通は裏に読み込むけど)される
後はボタン付けるなりマウスの座標とクリックで判定するなり
選択中枠でも表示してキーボードで選べるようにしたり
94 :
名前は開発中のものです。 :2007/05/27(日) 18:40:17 ID:GZUysg8b
HSP3用の逆コンパイラはありますか?
95 :
名前は開発中のものです。 :2007/05/27(日) 18:54:44 ID:z2MNV+vZ
96 :
名前は開発中のものです。 :2007/05/27(日) 19:37:55 ID:GZUysg8b
HSP3用の逆コンパイラはありますか?
97 :
名前は開発中のものです。 :2007/05/27(日) 19:48:58 ID:z2MNV+vZ
>>93 文字列型変数+”文字列”
ってやり方がわからなかったんだわ。
で指定したフォルダから優先して読み込もうとして
ファイルが無かった場合0から読むってやらせたくても
picloadに失敗した時点で固まっちまうんだが
98 :
名前は開発中のものです。 :2007/05/27(日) 20:42:07 ID:GZUysg8b
HSP3用の逆コンパイラはありますか?
>>97 exist
これはファイルのサイズを調べるだけの物ではないのだよ…
100 :
名前は開発中のものです。 :2007/05/27(日) 21:12:57 ID:2yxupcVu
>>97 >ファイルが無かった場合0から読むってやらせたくても
picloadの前にexistでファイル存在チェック
99の言うとおりでexistのヘルプ見てみ
>>98 無い
101 :
名前は開発中のものです。 :2007/05/27(日) 23:05:29 ID:GZUysg8b
HSP3用の逆コンパイラはありますか?
102 :
名前は開発中のものです。 :2007/05/28(月) 00:46:56 ID:Yymrb+yR
103 :
名前は開発中のものです。 :2007/06/04(月) 19:32:09 ID:gsq3V/fz
タイマー命令ってwaitとawaitしか無いんですか? CPUクロックの差を無くすにはどうしたらいいんでしょうか?
>>103 ググれば、awaitより精度の高いプラグインとか、winapiでできるってみつかるはず。
公式の笑瓶もだが 与えられた回答が理解できなかった場合 別スレで質問しなおすのが流行ってるのか?
>>105 ただ単に厨なんだろ。
マルチ質問はネチケット違反だ。
107 :
名前は開発中のものです。 :2007/06/18(月) 11:25:19 ID:hj+o5IbP
いまHSP入門っていうとこ参考にしながら練習してるんですけど、 exec "notepad"ってやったらちゃんとノートパッド立ち上がるのに。 exec "mplayer"としてもメディアプレーヤーが立ち上がりません、 ファイルの指定して試してみたんですがやっぱり無理でした。 どこがおかしいんでしょうか?
>>107 カレントディレクトリかシステムディレクトリにあるアプリケーションしか起動できない。
111 :
名前は開発中のものです。 :2007/06/19(火) 18:49:55 ID:zC53djn1
HSPで3Dアクション作っているんだけど、 モデルデータとか見られたら不味いので、 DPMファイルを使おうかと思ったのですが上手くできません。 どこかに詳しく解説しているサイトはないでしょうか?
外部ファイルを読み込み起動、その外部ファイルで使用している変数をリアルタイムで取得したいのですが、 HSPで可能ですか?
a=(ene_sp*100)/my_sp+1 : b=rnd(a)+1 if b<100 : goto *my_hit mes "ミス!よけられてしまった!" ene_spは敵の素早さ、my_spは味方の素早さで、 攻撃のヒット・ミスを判断しようとしているのですが my_spが大きくなりすぎるとエラーが出てしまいます。 なんとか直す方法ってありますか?
>>113 表現があいまいすぎて、状況がつかみにくい。
・「エラーが出てしまいます」
→ エラー番号(内容)、エラーの発生する行の情報が欠けています。
・「大きくなりすぎると」
→ 具体的な数値を絞り込もう。(99では正常だが、100ではエラー、等)
評価:もっと頑張りましょう
115 :
名前は開発中のものです。 :2007/06/26(火) 23:26:17 ID:JpnbVpdc
>>111 3D表示には何を使ってんだ?
>>112 外部ファイルで使用してる変数って何だ?
リアルタイムで収得ってなんだ?
テキストファイルに
a=1
b=2
ってあって、これを読み込み表示して、この1と2を変えたときに
スクリプト側でそのa,bの値を収得?
出来るけど、お前が理解できるような説明は出来ないだろう
>>113 >my_spが大きくなりすぎるとエラーが出てしまいます。
それは本当に大きくなる事で出たエラーか?
repeatやgosub内からgotoしてるからとか、my_spが0だったとかないか?
つーか、そんな半端なスクリプトで分かるかっつ−の
ene_sp、my_spに実際にどんな風に値を入れてるのかもわからねーし
実際のエラーは何処の処理で出たのかも書いてねーし
エラーの種類すら分からねー
116 :
113 :2007/06/27(水) 04:05:40 ID:gWCKLuJc
すみません、説明不足でした ene_sp=500,000,000 my_sp=800,000,000以上 のときにエラーが出ます。 my_sp=700,000,000以下 の時は大丈夫で、8億以上でも ene_sp=10,000,000以下 の時は大丈夫でした。 エラーの種類は19で、「0で除算しました」と出ます。 エラーの発生する行はコピペした3行のうちの一行目です。(a=(ene_sp*100)/my_sp+1) repeat命令やgosub命令は使っていません。
>>116 整数で数値を扱ってるのなら、ene_spも、my_spも値が大きすぎる。
整数値の範囲は32bit(-2,147,483,648〜2,147,483,647)なので、
(ene_sp*100)の時点で桁あふれ。
;
ene_sp=500000000:my_sp=800000000
mes (ene_sp*100)
mes (ene_sp*100)/my_sp
;
とでもして、表示値がどうなってるかを確認のこと。
で、エラーが発生してる場所は
「a=(ene_sp*100)/my_sp+1」 ではなくて、
その後にマルチステートメントで続けてる
「b=rnd(a)+1」 のほう。
エラーが発生するときのaの値をデバッグウィンドウで確認して、
あわせて、rnd命令のヘルプを参照すれば、対処方法も分かるかと。
118 :
113 :2007/06/27(水) 07:16:31 ID:gWCKLuJc
>>117 なるほど、上限に引っかかっていたんですね!
早速ヘルプを確認してみます!
ありがとうございました。
119 :
名前は開発中のものです。 :2007/06/27(水) 14:53:47 ID:wKH9+v6O
>>116 >エラーの発生する行はコピペした3行のうちの一行目です。(a=(ene_sp*100)/my_sp+1)
3行目は二つの処理が有る
そのどっちでエラーが出てるか確かめもしてないだろ?
エラーは行しか示さないんだからちゃんと自分で確かめろ
それとエラー行はよく間違う(3.0aだと)からエラーの出る行の位置を
上下に移動させたりして、エラーとして表示される行が、そこで合ってるかも確かめろ
120 :
名前は開発中のものです。 :2007/06/27(水) 15:01:20 ID:wKH9+v6O
>3行目は二つの処理が有る 一行目だ・・・
三角関数は使えないの? 平方根とかも使えないの?
122 :
名前は開発中のものです。 :2007/07/18(水) 00:29:36 ID:rCsA5jbm
sin() cos() atan() sqrt() は標準関数で出来るよ
123 :
名前は開発中のものです。 :2007/07/27(金) 16:03:55 ID:RNOy11vA
質問です。 hspsock.dllを使ってPC間の通信をしようとしてるんですけど。 sockput命令で送信した文字列がsockgetで受信しようとしても わけのわからない数字になってしまうんですけどどうしてでしょう・・・
124 :
名前は開発中のものです。 :2007/08/03(金) 02:39:12 ID:6Bf9vxZs
3.1導入したんだけど同伴しているはずのHSPLetってどこにあるの? スクリプトエディタの外部ツールにも登録されてないし。誰か教えてちょ
125 :
名前は開発中のものです。 :2007/08/03(金) 07:03:56 ID:vpz2cXn6
hsplet3.exeってーのがエディタと同じフォルダにあるじゃん
>>123 文字列も中身は文字コードって言う数値だぞ
文字列の仕組みを調べろ
HSPLetはフォルダの中から開くのが仕様なのか?
#runtime "hsplet3"
mes "
>>124 \nこういう使い方もある"
hspletっつーフォルダがあるから、ヘルプくらいは目を通しとけ
ちょっと手元に本がないんで質問です フラグ立ててそこにランダム行く方法以外に 画像をランダムで表示することは可能でしょうか? よろしければやり方かヒントをください
画像の名前をgazo1、gazo2・・・としておいて 1〜αの乱数aを発生させ、それを文字列aaに変換し picload "gazo"+aa+".jpg" のようにすればいける
130 :
128 :2007/08/07(火) 19:27:14 ID:w/K1jk/v
ありがとうございます。そっちの方が断然楽ですね
スペースキーを一度押すと次押すまで違うサブルーチンにいく ものを作りたいのですがifとstickでは押してる間しか実行されません。 どうしたらいいでしょうか?
x=1 としておいて スペースを押したら x=x*−1 として x=1ならサブルーチンAに x=−1ならサブルーチンBに とすれば? そういう意味じゃないかな
なるほど、ありがとうございます。
キャラクターの斜め移動についてなんですが、 「↑+→」などを個別に判定する方法はありますか? stick命令で6を指定しても 2(→)や4(↑)を必ず通過する形になってしまいます。
こんなのはどうか if ↑+→ goto*斜め if ↑ goto *上 if → goto *右 goto *おしまい *斜め 斜めの処理 goto *おしまい *上 上の処理 goto *おしまい *右 右の処理 goto *おしまい *おしまい
>>134 stick a,0
if a&6=6 :処理〜
137 :
名前は開発中のものです。 :2007/08/14(火) 14:22:54 ID:AwzKEGZk
mes strf("[%d]",value) : value++ だと動くのですが #define count mes strf("[%d]",value) : value++ count だとコンパイル時に #Error:macro syntax error [%err%] in line 2 [hsptmp] と出るのはなぜですか?
正しいのは #define count mes strf("%%d",value) : value++ 詳しくはわからんが#defineで%1とかを利用できるからではなかろうか。 \を\\と書かなきゃならんのと同じ感じで。
なるほど。ありがとうございました。
>>140 たぶん今は
*main
stick s, 15
redraw 0 : color 255, 255, 255 : boxf
color : pos 0, 0
if ( s & 2 ) == 2 : mes "↑ボタンが押されています"
if ( s & 4 ) == 4 : mes "→ボタンが押されています"
if ( s & 6 ) == 6 : mes "↑ボタンと→が押されています"
redraw 1 : wait 2 : goto *main
こんな感じでやってるんだろうけど、
*main
stick s, 15
redraw 0 : color 255, 255, 255 : boxf
color : pos 0, 0
if ( s & 6 ) == 6 {
mes "↑ボタンと→が押されています"
} else : if ( s & 2 ) == 2 {
mes "↑ボタンが押されています"
} else : if ( s & 4 ) == 4 {
mes "→ボタンが押されています"
}
redraw 1 : wait 2 : goto *main
こうすればok。ifの順番に注意。
>>141 親切にありがとうございます(涙)
さっき本家のhsp3掲示板にスネークヘッドの名前で質問投稿したところなんですけど、
実はああいう現象に困ってるところです。
同時押しキーを個別判定できれば直ると思ったもののそうはいきませんでした。
問題の全容を書かなくてすみません。
143 :
141 :2007/08/15(水) 15:16:01 ID:ZkgcvR+i
mmload "bgm.mid",2,1でMIDIファイルを読み込んで mmplay 2で流したあとメインループを開始させ、 mmloadでループ再生に設定しているので曲が終わったあと また流れるのですが、次流れるまで画面が一時止まります。 どうにかできないでしょうか
>>144 MIDIデータに初期化がはいってるんじゃ?
再生が一度終わるたびに初期化してるから無音になる。
初期化作業部分をとってしまうのが早いが、wavなりに変換して無音部分の削除をするほうがいいかと。
MIDI>wav変換も、wav編集もフリーソフトがあるよ。うちはそうしてる。
>>145 おお、サンクスです。形式変えて試したら動きました
MIDIだとどうも内部音源と連携するので遅くなるようでした。
ここなんで削除されないの?
148 :
名前は開発中のものです。 :2007/08/29(水) 00:33:10 ID:Vz8gtxG5
リストボックスで項目が多いとき(右側にスクロールバーが出る) 項目をクリックするとその項目がビヨンと真ん中付近に自動的に きてしまうんですが、こうならないようにする簡単な方法ありますか? 一応色々調べてみたんですが良く解りませんでした
150 :
149 :2007/09/15(土) 17:12:26 ID:aqTC9KfR
すいません
>>149 は取り消します
勘違いしてました
仕様じゃなくてプログラムがおかしいだけでした
151 :
名前は開発中のものです。 :2007/09/22(土) 17:42:16 ID:mPkOqwBy
敵とマップチップの当たり判定を書いたんですけど repeat外でのloopは無効ですとエラーが出ます。 reoeatに対するloopの数は正しいと思うんですけど。 以下ソースです。 map_chip_y_cnt=0 map_chip_x_cnt=0 repeat MAP_SIZE_Y repeat MAP_SIZE_X noteget map,map_chip_y_cnt if(strmid(map,cnt,1)="1"){ repeat ENEMY_MAX if(enemy_x(cnt)+enemy_size>map_chip_x(map_chip_x_cnt))&(enemy_x(cnt)<map_chip_x(map_chip_x_cnt)+map_chip_size){;xのこと if(enemy_y(cnt)+enemy_size>map_chip_y(map_chip_y_cnt))&(enemy_y(cnt)<map_chip_y(map_chip_y_cnt)+map_chip_size){;yのこと enemy_x(cnt)=enemy_back_x(cnt) enemy_y(cnt)=enemy_back_y(cnt) }} } loop map_chip_x_cnt++ loop map_chip_y_cnt++ loop return
608 名前:名前は開発中のものです。[] 投稿日:2007/09/22(土) 17:39:06 ID:mPkOqwBy 質問です 敵とマップチップの当たり判定を作ったんですけど、repeat外でのloopは無効ですと出ます repeatに対するloopの数は正しいと思うんですけど。 以下ソースです。 map_chip_y_cnt=0 map_chip_x_cnt=0 repeat MAP_SIZE_Y repeat MAP_SIZE_X noteget map,map_chip_y_cnt if(strmid(map,cnt,1)="1"){ repeat ENEMY_MAX if(enemy_x(cnt)+enemy_size>map_chip_x(map_chip_x_cnt))&(enemy_x(cnt)<map_chip_x(map_chip_x_cnt)+map_chip_size){;xのこと if(enemy_y(cnt)+enemy_size>map_chip_y(map_chip_y_cnt))&(enemy_y(cnt)<map_chip_y(map_chip_y_cnt)+map_chip_size){;yのこと enemy_x(cnt)=enemy_back_x(cnt) enemy_y(cnt)=enemy_back_y(cnt) }} } loop map_chip_x_cnt++ loop map_chip_y_cnt++ loop return
if gosub にしてルーチンでリピート処理するか a=0 として if(strmid(map,cnt,1)="1"):a=ENEMY_MAX としてrepeat a にすればいいんじゃねーの
154 :
名前は開発中のものです。 :2007/09/22(土) 22:55:56 ID:mPkOqwBy
>>153 ご解答ありがとうございました。
あまりネストしないほうがいいんでしょうかね
155 :
名前は開発中のものです。 :2007/09/23(日) 00:27:55 ID:hpWzX4gG
連続質問すみません。 上の方がおっしゃったようにしたらエラーは解決したんですが、 実際に動かしてみても敵の当たり判定がおかしいです。 もしわかる方がいたら教えてください。 以下ソースです。 map_chip_y_cnt=0 map_chip_x_cnt=0 repeat MAP_SIZE_Y repeat MAP_SIZE_X noteget map,map_chip_y_cnt if(strmid(map,cnt,1)="1") : gosub *enemy_block_atari map_chip_x_cnt++ loop map_chip_y_cnt++ loop return *Enemy_block_atari repeat ENEMY_MAX if(enemy_x(cnt)+enemy_size>map_chip_x(map_chip_x_cnt))&(enemy_x(cnt)<map_chip_x(map_chip_x_cnt)+map_chip_size){;xのこと if(enemy_y(cnt)+enemy_size>map_chip_y(map_chip_y_cnt))&(enemy_y(cnt)<map_chip_y(map_chip_y_cnt)+map_chip_size){;yのこと enemy_x(cnt)=enemy_back_x(cnt) ;記憶しておいた座標へ戻す enemy_y(cnt)=enemy_back_y(cnt) ; }} loop return ちなみに当たり判定のところは同じようにして自機とマップチップの当たり判定ではうまくいきました。
よくわからんが・・・ &→or っぽい気がする
あーごめんちがうわ
158 :
名前は開発中のものです。 :2007/09/23(日) 01:06:41 ID:hpWzX4gG
変数名ややこしすぎて見る気おきない。
>>151 マルチポストしたうえ、
向こうでの回答に何のレスもなしとは無礼極まりないな。
最初のエラーは
最初のif文「 if(strmid(map,cnt,1)="1"{ 」
に対応する 閉じ括弧( } )の位置がおかしいからだろうが。
if {
repeat
loop
}
であるべきところが
if {
repeat
}
loop
になっているからだ・・・と、ここまで説明せな分からんのか。
そして、「上手く動かない」のは
map_chip_x_cnt が加算されっぱなしなのが原因のひとつだ。
この問題の根っ子も、前述のif〜repeatの問題と同じで
「ある記述」の位置が間違っているだけの話だ。
「ある記述」がどの記述のことで、
正しい位置がどこなのか、くらいは、自分で考えろ。
161 :
名前は開発中のものです。 :2007/09/23(日) 15:20:07 ID:hpWzX4gG
>>160 的確なご指示ありがとうございます。
あと、無礼伝々言うなら回答すんな
行動から見込んだ通り、 ですます口調での丁寧な態度は見せ掛けだけだったようだな。 その低能で作りかけのゲームを発表したときに 作者=オマエだと 足がつかないように気をつけろよ? 相当マヌケなようだから、ありえん話じゃないぞ・・・と忠告しておく。
162たんは大人だな
>>161 の言っている事は正しい
これに懲りたら教える君も大概にしろよ
166 :
sage :2007/09/24(月) 11:02:09 ID:SyyzgDXi
>>165 いや、ほんとに
>>161 は正しいと思う。
教えるほうはいい気になってるかもしれないけど
周りから見たら気分悪い。
無礼だと思うなら教えなければいい。
そうすればお前も嫌な気分にならずにすむだろ。
161はワルモノだが、164は頭悪い。
>>166 とりあえずgoogleあたりで検索して
「マルチポスト」の意味と、その世間的な扱いを調べてきてくれ。
礼儀知らずなヤツを、礼儀知らずなまま放置しておくのが
コミュニティにとって良い事なのかどうか。
151のような手合いのやつが、このスレに溢れたとき、
「無礼だと思うなら教えなければいい」という考えでいれば、
教える立場の者は、減っていき(いずれは居なくなり)、
質問スレとして機能しなくなるだろう。
その辺にまでは、考えが及ばないか?
頭おかしいから及ばないんだよ
170 :
sage :2007/09/24(月) 11:58:23 ID:SyyzgDXi
>>168 こんなものをコミュニティなんて言ってる時点で・・・
ちょっと黙ってろバカ
あぁ、大事なことを書き忘れていたが 無礼を責めるのは、 なにより、その当人の、今後のためを思ってのことだ。 >166を読むに、勘違いされてるようなので、これも説明しておくが 回答を書き込むのも、そいつのため、と思ってすることだ。 わずかばかりのプログラムの知識をひけらかして優越感に浸るとか そんな、くだらない目的のためではない。 ・・・って、やっぱ言わなきゃ分からねーのか?
「賢い俺様があほなお前に教えてやる」みたいな 書き方で何を言っても無駄だよ 言われたほうも素直に聞けるはずが無いし 自分も同様にあほなのをさらしてしまうだけ
>174 今思えば、書き方は確かに間違っていたな。 無礼なことを出来る連中のツラの皮は、たいてい厚くて 生ぬるい言葉じゃ、届きゃしないだろうと思って 相手の癇に障るような言葉を意図的に使ったが。 無礼に腹が立っていた部分もあって、冷静さを欠いていたが、 他に書きようはあっただろうな。反省する。
無礼でもマルチでも答えが手に入る。そっちの方が問題だ。 そもそも質問がくだらな過ぎる。 教えず自分で導き出させた方がよほど当人のため。 やはり知識をひけらかしたいだけ。ゆえに教える君なのだよ。
>>176 答えを与えるのを躊躇った部分はあったんだが。
自分で導き出させたいから、[15]スレでは
最低限のヒントにしたんだが、
こちらが期待した結果は、得られなかったようだったんでな。
151から159の流れをみて
このままでは、また他のスレに書き込みかねんなと思って
それを止めさせる目的もあって書き込んだよ。
つーかさ。>176は、質問への回答をするとき、
知識をひけらかしたいから書き込むのかい?違うだろ?
困ってると思うからだな。 お礼を貰って気分良くなりたいからな。 物質的な取引はそこにはなく、つまり気持ちのギブアンドテイクなんだよ。 礼やマナーを欠いた奴にそれは期待出来ない。 答えを与えないのは 気持ちがなければ答えは得られない。それを教えるためだ。 だから教える君は嫌われるんだよ。
>>178 なるほどな。
だが、いささか結果論くさいというか。
今回のオレのやり方が通用しなかった151に
はたして、そんな高度な教え方が通用しただろうか、
という疑念が残るな・・・。
ちゅうがくせいみたいなきどったぶんしょうやめてくれませんか。 しょうじきあつくなってるのはきみだけです。
ID:K5MxOKcs
ほんとくだらねぇ質問にくだらねぇ言い争いしてんじゃねーよ くだらねぇ質問だと思ったら答えないのが普通 答えたやつはくだらねぇ質問だと思わなかったってことで そいつもその程度ってこった
言い換えると、同レベルだからスルーできないということか。 その理屈でいうと、この話題に関わってきた時点で、 あんたもその程度ってことになると思うんだが、どうかな? 言い争いに見えたようだけど、オレの方は、途中からは、 こういう件に対する他の人の考え方に興味が沸いて、 それを知るチャンスだと思って、それぞれにレスつけてみていたよ。 ・・・で、せっかく反応してくれた所、残念なんだが、 ちと時間に余裕なくなってきたんで、オレはここまでだ。すまん。
>>183 は病気
もっと煽ってやりたい所と思いつつも残念なんだが、
ちと時間に余裕なくなってきたんで、オレはここまでだ。すまん。
俺も今初めてここに来て、この展開を見たんだが、 ちと時間に余裕なくなってきたんで、オレもここまでだ。すまん。
すまん。
すまん。
ゆるさん
2Dの画面の1ドット1ドットをセルに見立てて、それぞれに高さデータを持たせて、 色々処理をして、ランダムな地形を作ろうとしています。 2Dでそれなりに作ることはできたので、この値をもとに3D化して色んなアングルから見れたら楽しいだろうな、と思ったのですが、 3Dの実装方法のようなものを勉強するのはどうすればいいのか見当がつかなくて困っています。 HSPで3Dを実装する際にオススメのサイト、講座などがあったら、教えていただけると幸いです。 よろしくおねがいいたします。
Easy3Dとか言うプラグインがあるが、それでよければサンプルWikiとかどうだろうか。
ttp://easy3d.wikiwiki.jp/ 疑似3Dでいいならd3module使えばいいかと。講座は無いけど。
とりあえず「3D」みたいな曖昧なキーワードではなく、「HSP+プラグイン名」でググることをお勧めする。
ありがとうございます。 そもそもプラグインというものがあるのを知りませんでした。申し訳ないです。
192 :
名前は開発中のものです。 :2007/10/05(金) 23:47:28 ID:eKkSLDoB
マルチしたもんだけど、 教える君うぜえええええwwww いちいちマルチ先とか晒してるしw どんだけネチっこいんだよwwwwwww あと俺数回書き込んでたからw
マルチしたもんが全部わるい
はわわ〜〜
いまだに引きずってるほうがネチっこいと思った
2まで浮動小数点が扱えず、3でようやくできるようになった??? 掛け算と割り算もできなかった?? 構造体がいまだに扱えない?? HSPなんて完全にクソだな、誰が使うかヴォケ
いや、そのりくつはおかしい。
198 :
名前は開発中のものです。 :2007/11/07(水) 07:56:05 ID:ZYbVmjpD
俺最近C初めてわかったんだが。 HSPの利点ひとつも無い。 HSP簡単簡単言ってるけど、Cも難しいことしなければそんなに難しくない。 HSP遅いし Cでいいじゃん?
お前はCでいいよ
他言語でもいいじゃんには同意だが、標準C比較なら最初の0.5歩と標準ライブラリくらいは利点じゃないか?
本当にCでいいじゃん、て思う人はこんなスレ見ません。
HSP > > > | > > > C ↑いまココ
HSPよりCで、CよりC++だと感じるこの頃 javaがHSP+C++な感じで使える 問題はjavaは速度が遅く感じることだな
HSPの逆コンってあるの?
>>204 HSPはタマネギのポタージュだから逆さにしてもコーンポタージュにはならないぜ。
どっかのプログラマが2.6逆コンパイラ作ってたよ かなり技術的で意味わからなかったけど今考えるとすごい お金もらえるなら作ってもいいけどね 需要あるのかな?
実際はすでにあるんだけどね ただ、モジュールを使っていたりすると完全な復元は難しい コンパイル時に#moduleなどはgotoに変換されるからねw 実装がオープンになったので簡単だと思う 少し前でもhspsdkが公開されていたので出来たけどね パック時の暗号についてもデコーダーが公開されているしね 結論、誰がかね払うかボケw
208 :
名前は開発中のものです。 :2007/12/13(木) 21:10:54 ID:QO/1a8k+
質問です。hsp3.1で、 mmload "hogehoge.mp3",0,0 mmplay 0 としても"hogehoge.mp3"が再生されないんです。 しかもファイル名を関係ないものにしてもfilenotfoundエラーも何も出ないから・・・ ファイル名のミスなのでしょうか? mp3なのでタグでの曲名を指定しないといけない?なのか良くわかりません・・・ ご教授ください。
ホゲホゲって何?ナメてんのか??
210 :
名前は開発中のものです。 :2007/12/17(月) 14:23:05 ID:GfKh8Y85
w
211 :
名前は開発中のものです。 :2007/12/17(月) 14:48:19 ID:/Isq6dTa
教示ならしてやろうと思ったが 教授する気はないな
212 :
名前は開発中のものです。 :2007/12/19(水) 07:16:56 ID:w9z2w0Gw
揚げ足とってばかりいないで教えてやれよ。 俺はパスだが
214 :
名前は開発中のものです。 :2008/01/08(火) 11:30:08 ID:yhZss8gC
フリーのゲームみたいなのを作ろうと思って始めたばかりです。 作ったプログラムをどうすればアイコン化(?)できるのかが分かりません。 普通、たとえばデスクトップにソフトをダウンロードしたら、 何らかのアイコンみたいのがそこに置かれるじゃないですか。 うまく説明できなくて申し訳ないのですが、 つまり赤の他人が初めて見て、そのアイコンみたいなのを、 クリックすることでゲームが始まるようにしたいのです。 今の僕の保存しているプログラムの状態だとエディターが現れるのです。 エディターから実行しなければいけません。 どうせだったら、そのアイコンみたいなのをクリックすることで、 即座にウィンドウが開くというのが理想なのです。
>>214 ……釣り?
ヘルプ(H) → HSPプログラムガイドを開く(P)
1.プログラミングガイドの中にある『●実行ファイルの作成方法』を読んでくれ。
216 :
名前は開発中のものです。 :2008/01/09(水) 10:40:43 ID:p+YHp0wl
>>215 いえ本気の質問でした。おかげでなんとか解決できました。
あとはウェブでDLしてもらえる仕組みにするべく調べている
ところです。お返事サンクスでした。
今の君のレベルならソースのまま公開するという手もありだぞ そんな基本的なことすら知らないようだとロクなソースも書けないだろうから 親切な人がソースの添削をしてくれる可能性がある
await 1〜15まで全く同じ速度(64fps)で、16にした途端急に遅くなって(40fps) 17〜31までまたずっと同じ速度(32fps)で、32にした途端また急に遅くなる(24fps)のはどういう理由? 16の倍数だけ何か補正掛かってる?
220 :
sage :2008/03/05(水) 17:54:57 ID:c2C5oBIM
>>218 俺の環境でもそうなる
バグトラックに報告キボヌ
モジュール内で/* 〜 */使うとエラー行がずれるので困る。 #module /* #deffunc test int a return */ #deffunc test2 int a poke i,100,0 return #global _test 10
エラー行がずれるバグは、ずっと前から潰しきれずにいるから もう直せない気がするぜ。
つOpenHSP バグトラは揚げるに限る
225 :
通りすがりのホゲホゲEX :2008/03/14(金) 22:17:28 ID:8U/TKdkz
どうでもいい事かもしれないが、 まぁ聞いてください。 dialogで二重に発生するソースを教えてくんださい。
227 :
名前は開発中のものです。 :2008/03/25(火) 13:32:35 ID:cnZGJcf0
クリックしたらメッセージが順に表示されるノベルゲームの様なものを 作りたいのですが素人なのでめんどくさい処理しか思いつきません もっと効率よく表示できるアルゴリズムを教えて下さい ソース *main redraw 0 stick ky,0 if ky&256 :kazu=kazu+1 ;クリックして変数に加算 gosub *serihu gosub *itee gosub *owari color 0,0,0 boxf 0,400,500,499 color 255,255,255 pos 10,410 mes a redraw 1 wait 5 goto *main *serihu ;現在の変数の数と一致するセリフを表示 if kazu=1 :a="ああ世界はなんて美しいのか" if kazu=2 :a="アンブリビエンスな世界\n決して崩れる事は無く調和のとれた\n真実の美" if kazu=3 :a="ブリゴー朝の如き朝焼けを目を細めつつ見やる\n誰にも邪魔をされない午後のひととき" if kazu=4 :a="ひとの命には限りがあるなんて誰が言ったのかしら?" if kazu=5 :a="ひとの命には限りがあるなんて誰が言ったのかしら?\nこの命の輝きは一瞬で永遠すらある" if kazu=6 :a="メナンドピア海には雄山羊が浮かび生気のない瞳で虚空へ" return
hspda.dllを使うと便利かもしれない。
>>228 調べてみます
アドバイスありがとうございます
俺はif文を並べたり、そのif文の羅列が毎フレーム処理されるのがキライだから serinum=6:sdim seristr,256,serinum seristr(1)="ああ世界はなんて美しいのか" seristr(2)="アンブリビエンスな世界\n決して崩れる事は無く調和のとれた\n真実の美" seristr(3)="ブリゴー朝の如き朝焼けを目を細めつつ見やる\n誰にも邪魔をされない午後のひととき" seristr(4)="ひとの命には限りがあるなんて誰が言ったのかしら?" seristr(5)="ひとの命には限りがあるなんて誰が言ったのかしら?\nこの命の輝きは一瞬で永遠すらある" seristr(6)="メナンドピア海には雄山羊が浮かび生気のない瞳で虚空へ" a="":kazu=1:gosub *serihu *main wait 5:stick ky,0 if (ky&256) { kazu=kazu+1:gosub *serihu ;gosub *itee:gosub *owari } redraw 1:goto *main *serihu redraw 0 color 0,0,0:boxf 0,400,500,499 color 255,255,255:pos 10,410:mes a if ( kazu<serinum ) { a=seristr(kazu) } else { a="" } return という様にするな。 自分で作るなら、さらに、メッセージ部分は別ファイルにしておいて、 ファイル読み込みで文字列配列seristrに取り込むが。
>>230 詳しい解説ありがとうございます
早速参考にさせてもらって色々やってみます
レベルアップ時に一定確率でパラメータが上昇する仕組みを作りたいのですけど、 randomize : if rnd(振れ幅)<基準値 : パラ+=1 とすると何故か上昇率10割になってしまいます。 何が問題なのか教えてくださいorz
そりゃ、基準値より振れ幅が低いからだろ 使ってる変数がどんな値をとってるか調べてみ
振れ幅は10で固定、基準値は3〜8なんでそれはないです。 rnd値を変数に入れて mes "check:"+(基準値-rnd値) を書き出してみても、正負関係なくパラメータ上がってます。
自己解決。 randmize : check=基準値-rnd(10) if check>0 : パラ+=1 にしたら予期した動作になりました。 でもどうして先の結果になったのか未だに理解できませぬ
236 :
名前は開発中のものです。 :2008/04/02(水) 15:50:10 ID:HvPuU/FR
最近HSPをはじめてみて、とりあえずテトリスでも作ってみようと思ったものの どのようにプログラムを書いていけばいいか、全く予想も出来ません… おおまかな段取りで良いので、アドバイスをもらえないでしょうか?
ゲーム画面の描画。 ランダムなり一定の順番でブロック投下。 ブロックを一定の間隔で落下。 着地するまでは左右(+下)とブロック回転操作。 着地の瞬間ブロックが横一列揃ったかどうか判定。 揃った場合ブロックを消去してそこより上のブロックをそのまま落下。 またブロック投下で以下ループ。 テトリスのルールはうろ覚えだけど、最低これくらいは 動作が必要だと思う。 テトリスがそのままサンプルとして載ってる本は無いかも しれないけど、教習本は何かと参考にはなるので 見かけたら買っておくと吉。 段取りも分からないなら尚更。 まあ、自分も必要そうな物は何となく分かっても、 どう書けばいいかはさっぱりですけどね。
とりあえずネットに初心者向けのサイトがそこそこあるので ググっとけ
239 :
名前は開発中のものです。 :2008/04/03(木) 17:26:51 ID:zWQu7jXF
>>237 >>238 アドバイスありがとうございます。
全く予想も出来ない状態でしたが、
ブロックが落ちていきながら、左右に移動が出来るところまではなんとかできました。
ですが、回転の仕方と下まで落ちきったブロックがあることを認識させるスクリプトをどう書いていいのかわかりません…
これはどのように書いて表現すればいいのでしょうか…?
ブロックの回転パターンを全て登録しておいて、 回転キーを押すごとに変更させるとか。 落ちきったブロックは当たり判定のある背景 みたいな扱いにするとか。
241 :
名前は開発中のものです。 :2008/04/03(木) 21:30:45 ID:6v8TXmU/
HSPは思い付きでパパッと簡単にプログラミングできるから楽しい その気になれば中規模開発も出来るしな
7行テトリス…は参考にはならんよな。
>その気になれば中規模開発も出来るしな 中規模ってどのくらいのもの?
244 :
名前は開発中のものです。 :2008/04/04(金) 13:12:46 ID:uf7CfSwv
>>240 >>242 回転パターンを全て登録することで、
回転しているように見せることぐらいなら出来そうな気がしました。
当たり判定は…なかなか自分には難しそうですが、
まず回転できることを目指してやってみたいと思います。
ありがとうございました。
初めて作るならシューティングが無難だぞ シューティングなら自機が動いて弾が出るだけで一応ゲームになるし そこから少しずつ肉付けしていく楽しみがある テトリスは初心者にはちょっと厳しいし、作ってもあまり報われない気がする
246 :
名前は開発中のものです。 :2008/04/12(土) 09:06:19 ID:eq1/vK6b
hsp3の質問です。 パレットモードで自作命令を使ってフェードアウトして、 画面を書き換えてからフェードインしたいんだけど、 パレットを1色にしたまま画面を書き換えると、 フェードインさせても画面がまっさらのままになります。 何かいい手段ないでしょうか。 hspdxfixにes_pafade命令があるのは知ってるけど、 256色フルに使ってるせいでウィンドウモードにできないから、 使う予定はないです。
野球とかゴルフなどの球技系スポーツゲーム作りを目論んでいます。 入門書を見てcircle文で座標を変化させてボールを動かせるようになりましたが ボールを表現する方法としてはcircle文の他にボールを描いた画像を動かしたり "●"などの文字を動かす方法もあると思います。 ゲームとして発展させるにはどの方法が適しているんでしょうか?
3D
どんなゲーム作るかによるだろ
251 :
名前は開発中のものです。 :2008/04/30(水) 13:57:02 ID:pNi4Eofe
>>248 ゲームだとDirectXは使うのか?
HSPでDirectX使うと文字の描画が遅いうえにディザも目立つと思うので
文字を動かす方法は却下
circle命令単体だと単色になって立体感がないのでボールを表現するのには向いてない
重ねてcircle使えば陰影出すこともできるが、いちいち座標指定しながら複数回circleすると
処理が重くなるのでやはり却下
(バックバッファに前もって重ねcircleの画像を作っておくのはアリ)
つーわけで一番無難なのは自前画像を用意しておく方法かと
ぁ、3Dだと問答無用でモデル用意しておかないとダメ
>>251 >ゲームだとDirectXは使うのか?
使わないとフルスクリーンに出来なくて非難囂々にならない?
タイトルバーのドラッグ・ウィンドウのリサイズ・タイトルバー右クリック 等々で wait/awaitのループが止まってしまうのが困る 精度を保ちつつ止まらないような方法はないのかね……
>>252 漏れは試したことないが
確かDirectX使わなくてもフルスクリーンにする方法はあったはず
描画速度が激遅らしいが
>>253 API叩いてwindowsタイマー使えばよかったような希ガス
記憶があやふやだから詳しくはぐぐってくれ
windowsメッセージが来てゲームが止まると何か困ることあるのか? むしろそっちの方が都合がいいと思うんだが まあHSPでなければスレッド作ってそこでゲームループ回すのが 一番スマートなんだけそれを言ってはry
>>255 たとえば、ネットワークを使っていてヘルス処理をしていると困ったりする
あと、リアルタイムアクションゲームとかだと困るかも
257 :
名前は開発中のものです。 :2008/05/05(月) 22:47:03 ID:nv4RCLDO
[参照]ボタンクリックして、自分で持ってる音楽を設定したらその音楽が流れるように したいんだけど、 mmplayで流す→mmstopで止める だと、途中からじゃなくなるじゃん? で調べたらmmplayとかじゃ無理って分かったんだけど dmmplayとかmciの使い方よく分からないから だれか教えて・・・ windowsXpね
HSPでOSつくれますかな?
259 :
名前は開発中のものです。 :2008/05/06(火) 10:18:41 ID:XQMQqWJZ
OSはXPってことです
260 :
名前は開発中のものです。 :2008/05/06(火) 11:18:37 ID:XQMQqWJZ
screen 0,180,32,8 gsel 0,2 cls 1 objsize 60,32 pos 0,0:button gosub "再生",*m_play pos 60,0:button gosub "一時停止",*m_stop pos 120,0:button gosub "選択",*m_senntaku repeat wait 1 loop *owari mci "close all" end *m_stop mci "stop music" return *m_play mci "play music" return *m_senntaku dialog "mp3;*wav",16,"音声ファイル":if stat=0:end fname=refstr mci "open \"" + fname + "\" alias music":if stat=-1:end mci "status music length":m_length=stat title ""+getpath(fname,9)+"" return で再生して聴いているあとに選択押して違う曲選んだら終わってしまう理由は? あと選択し終わったあとボタンが少しの間変になるのは?
closeしてないから
262 :
名前は開発中のものです。 :2008/05/06(火) 19:14:07 ID:XQMQqWJZ
close・・・?
*m_senntakuの最初に「mci "close music"」を持ってくるんだ 普通2chではこんな親切に教えてもらえないぞ
何か知りたいことがあったら、思いつく限りの嘘八百を 自慢げに並べ立てれば、凄い勢いで突っ込みが入って 正しい知識を得ることができる、というコピペを思い出した。
265 :
名前は開発中のものです。 :2008/05/06(火) 19:46:35 ID:XQMQqWJZ
ありがとうございます!! 2chで親切にしてもらったのは、初めてです!あきらめかけてました!
マルチ氏ね
MCIって抽象的すぎて逆に分かりにくかったりする そのくせゲームには不向きという
HSP3,1で育成シュミレーションみたいなのって作れますか? 何をどうしたら良いのかさっぱりで・・・
作れるよー\(^o^)/
>>269 そうですかありがとう頑張って作ってみます参考資料が全然なくて大変だなぁいいえコッチの話でございます全然大丈夫元気元気です
RPGなどでの画面が暗くて見えないけど、 明かりの部分だけ見えるようにするってのはどうすればできる? できれば四角じゃなくて丸や複雑な形で見えるようにしたいんだけども
一旦、bufferに描画して、そこから抜き出す。
単純に円でいいなら一番上に●を反転させた画像を描画すればいい 壁の向こうに届かないような光を再現するなら少し工夫が必要
HSPからウィンドウズメッセンジャーを操作することが出来ますでしょうか? 届いたメッセージを変数に入れたり、入力した文字列をメッセンジャーで送ったりしたいんですが…
275 :
名前は開発中のものです。 :2008/05/13(火) 02:20:31 ID:ZbiqGT4h
アゲ
>入力した文字列をメッセンジャーで送ったり これはプロセスを捕まえてウィンドウメッセージ送るだけでできなくはないが >届いたメッセージを変数に入れたり これはAPIハックしないとできないんじゃまいか
アピたんとファックと聞いて飛んできました
>>276 APIの仕様が分からないとどうにもならないということでしょうか?
公式には無いんでしょうね…
>>277 ハァハァ
>>278 まぁクローズなのがMSだからAPIの仕様なんて公開しないだろうねぇ
つーかセキュリティにも関りかねんし
すみません 少し光が見えてきたので もう少し考えてみます
>>280 1.redraw命令を使う
redraw0 → 画面消去(boxf塗りつぶし) → 描画 →redraw1 の流れで。
そのソースならwait3を挟むように置くといいかも。
redraw1
wait3
redraw0
2.stick命令を描画ループの外に出す。
*draw
←ココへ
repeat 10
←ココから
repeat 14
loop
loop
goto *draw
283 :
280 :2008/05/17(土) 14:02:57 ID:QCoyZPje
ご親切にありがとうございます! stick命令を外に出すのですね それは思いつかなかったです おかげで 滑らかに動くようになりましたぁ
284 :
名前は開発中のものです。 :2008/05/21(水) 01:52:34 ID:s7j9SVwC
USBゲームパッドのボタン数が80以上あるコントローラーを使いたいんだけど それだけの多ボタンに対応してるプラグインってある?
モジュール作ればいいんじゃねえの
モジュールを作る…っていうのがちょっとまだ出来そうに無いというか・・・ もし作るとして悩みというか疑問なんだけどたいていのstick関連の命令って 同時押しに対応するために返り値が ボタン1=2 ボタン2=4 ボタン3=8ってどんどん増えていくじゃない? 80オーバーもあったら大変な数になるよね… どうすればいいんだろ…
hmm.dllは使えないの?
hspmathで int(pow(2,3)) が7になるのはおかしい pow(2,3)だけだと8.000000なのに
mes strf("%.20f",pow(2,3))→7.9999999 なので、丸めは自分で四捨五入しないとダメぽ。 mes int( strf("%.0f",pow(2,3)) )
すみません質問です 配列変数に変数を使うことはできませんか? 例 c=3 a(c)=2 エラーが出てしまったのですが、これのせいでしょうか?
dimで宣言した?
すみません 他のところに問題があったようです ありがとうございました。
buttonを押した回数を数えたいのですがどうすればよいのでしょうか?
カウントしる
>>293 変数
これでわからんなら消防からやり直して来い
>>284 USBパッドのモジュール作ったことあるけど、
1つのコントローラでボタンは最大32までだったはず。
80以上のコントローラなんてないよきっと。
>>284 デバイス上3つとして認識する特殊なのだったら、
デバイスIDごとに押したボタンが分かるから、問題ない。
そもそも80以上ってどんなコントローラなのか気になる。アコーディオンか?w
一つ質問したいことがあるのですが・・・ *top cls font "MSP ゴシック",50,21 : color r,g,b : mes "2ちゃんねる" button "★色変え★",*irokae stop *irokae randomize r=rnd (256) randomize g=rnd (256) randomize b=rnd (256) goto *top 上のようにしてランダムに文字の色を変更できるように 作ろうと思ったのですが、どうしてもモノクロにしかなりません。 変数もちゃんと初期化してあるはずなのになぜでしょうか?
>>300 randomizeが多すぎw
randomizeは*topの上に1個だけでおk
302 :
300 :2008/06/02(月) 00:07:42 ID:ytkUioVA
>>301 randomizeを*topの上に置いたらできました。
ありがとうございました。
ちょっと意味合いが違うかもしれませんが質問です。 皆さんはHSPでプログラム組んでて原因不明な不具合が生じた事ってないですか? 私はver2.61を使用していますが、過去何度かバグと思える現象に遭遇しています。 例えば、コンパイルには成功しているのに起動後強制終了したり、 エラーが出るので履歴で確認すると存在しない行が原因だったり、 一部命令が無視されたり(同行の別の命令は実行されている)、 挙げ句には削除した行を再コンパイル後にも実行し続けたり、 と、まあいろいろ(汗 無論ハード的な問題でもなく(複数のPCで同様の現象発生)、 プログラミングの問題でも多分ありません(間接的にはあるかもしれませんが)。 ただググって見てもそれらしいバグがあるとの記事もなく不思議に思っています、 何かそんな現象があったって人はいないでしょうか。
Humanエラーが多そうだな
行を変えてみたり引数に多次元配列を直接渡さないようにしてみたり、 変数の名前を変えてみたりとよく分からんことで回避出来たりはする。 変数は1000個くらいまでが山なのか。 多すぎるとコンパイルで落ちたりすることも。 プラグイン側の問題が影響している場合もあったりで こういうのは再現のしようがないのでどうしようもないわ('A`)
原因特定できるようならバグ報告したらいいんでね?
すいません質問なんですが 格闘ゲームの処理でパッドから入力を読み取って必殺技などに置き換える プログラムってだいたいどんな感じになるんですかね? もし参考になるHPがありましたら教えてもらえたらうれしいです よろしくお願いします
>>307 1.配列変数などに方向キー入力状態(数回分〜十数回分)を保持
2.ボタン入力時に対応する技の条件を満たしているかどうか判定
あまりシビアに判定すると技が出にくくなりすぎるので、多少甘めに判定する工夫をしておく。
1フレごとにキー状態(ボタンと方向キー)を記録していって 判定は逆順つまり入力を遡ってやる。 例えば波動拳(236P)なら Pを押したか? → 6を押したか? → 3を押したか? → 2を押したか? 実際の入力は P6663332と連続してるだろうし 途中ニュートラルが挟まる事もあるのでそこは工夫。
アルゴリズムとしては、コマンド入力OK時間だけフレーム取り出して、 連続する数字は1つにして判定すれば良いということか。
308-310さんレスありがとうございます。 308さん判定を甘くするってのは309さんのレスにあるように 236Pの場合、[2]と[3]の入力の間に違う入力が入った場合許容するってことですよね 溜め系の必殺技の場合はどうなるんでしょうか? たとえば5秒分の入力状態配列を用意したときに、 溜め時間が10秒だとすると5秒以前のデータが無いので困ると思います。
五秒以前のデータが無いので困ると思います。 困るとわかっていて何故そこを工夫しない。アフォか。
>>311 >>309 の例では、違う入力を許容してるか??
その違う入力がニュートラルのことならそうだとも言えるが、なんか微妙だな。
まぁ、そのあたりは君のゲームをどうしたいかによるから好きにすればいい。
コマンド入力時間よりも長い溜め技を作りたい場合、溜め技専用の処理を用意した方が良さそうだね。
どういう処理がいいのかは俺もわからんけど、例えば……
方向入力がされていて、且つ変更が無い場合、”溜め時間”のカウントを増やしていく。
方向入力が変更され、且つ溜め時間が一定値を越えていた場合、溜めていた入力方向のフラグを立てる。
ボタン入力タイミングまでの遊びを儲けるため、溜めフラグと共に極短時間の制限時間をセット。
制限時間の間だけ溜めフラグが保持されるようにするとか。
時間計測というより 例えば 4を押したか? を30回繰り返すだけで30フレ溜めた、って事になるヨ キーの記録は技の猶予時間より長く取れば良いだけ。 並の格ゲなら3秒、(dimにして180個)もあれば十分じゃないか。
時間ってのは解りやすくする為の便宜上の表現であって、 時計確認しにいくわけでは無いので、やることは変わらんと思うのだがー。 ま、いいか。
316 :
307 :2008/06/04(水) 23:39:23 ID:gkjK2yDp
皆さんレスありがとうございます。 皆さんの意見を参考にして作ってみようと思います。
317 :
284 :2008/06/08(日) 07:46:28 ID:uHh3jCMt
遅レスすいません、いろいろ試してみましたが行き詰まったのでご意見をお願いします。
>>287 hmm.dllでは28ボタンまでしか取得できませんでした。実際には上下左右4個とただのボタン28個で32個です。
良くよく考えてみるとこれはあたりまえのことで同時押しに対応するために
ボタン1↑=2
ボタン2↓=4
ボタン3→=8
...としていくと
ボタン31=1073741824
ボタン32=2147483648
となりHSPの扱える10進数の限界を超えます。
ちなみに28ボタン目まではhmm.dllを使って検出できるのを確認しました。
なぜか28ボタン目は代入される数が-2147483648になってしまったのもなぞです。
使用したスクリプト
#include "hmm.as"
diinit
*main
digetjoystate joys,0
if joys!0 {mes joys : goto *s}
wait 10
goto *main
*s
stop
続きます
318 :
284 :2008/06/08(日) 07:47:12 ID:uHh3jCMt
>>297 最大32までというのはゲームコントローラーの規格かなにかがあってそれで定められているという意味でしょうか?
出来れば紹介していただければ助かります。
まだ複数のデバイスIDを扱っているかどうかというはどのように調べれば分かりますでしょうか?
コントロールパネル→ゲームオプション→コントローラIDでは一つしか割り当てられていないように見えましたが...
もしかすると私が扱っているのはゲームパッドとは違うものなのかもしれません...
>>299 PCダーツという商品名のエポック社から発売されているダーツボード型ゲームコントローラーです。
専用のソフトウェアが付属しておりそれで遊ぶものなのですが、通常のゲームパッドとしても使えるので自作ソフトウェアも開発できるようです。
ダーツボードというのは二十分割された円の中にそれぞれ四つの得点枠があり20x4で80+操作用ボタンで83ボタンということになります。
ネット上の有志の方が提供してくれた情報に
DIJOYSTATE2構造体のBYTE rgbButtons[128]
DIJOYSTATE2 data
data.rgbButtons[0x00] & 0x80 -> 20 SINGLE INNER
data.rgbButtons[0x01] & 0x80 -> 12 SINGLE INNER
...省略
data.rgbButtons[0x51] & 0x80 -> BULL OUTER
data.rgbButtons[0x52] & 0x80 -> 0x52 DOUBLE
data.rgbButtons[0x58] & 0x80 -> UP
data.rgbButtons[0x59] & 0x80 -> DOWN
data.rgbButtons[0x5a] & 0x80 -> PLAYER CHANGE/ENTER
というメモがあったのですが私の知識ではこれを有効活用できませんでした...
それC++の構造体 HSPでもむりくり実装しようとすればできんことはないが 読んで理解できんのなら今はまだ無理だと思う HSPを諦めてC++に行くか そのパッド使うのを諦めるかって感じじゃないかな
>>318 調べたところ、そのDIJOYSTATE2使うにはDirectX使わないといけないから、
HSPだとCOM使わないといけないと思うし激しく面倒だと思う。
>ゲームコントローラーの規格
winmm.dllのjoyGetPosEx関数使った場合に32ボタンまでしか取得できない。
#module機能使うとその中の変数はデバッグウィンドウに表示されないのですか?
デバッグウィンドウの「モジュール」チェックボックスをチェック。 モジュール内の変数は名前の後ろに"@(モジュール名)"という印が付く。 名前を付けていない場合は、"@m?" (?は数字)という印が付く。
>>322 レスどうもです
何故なのかかうちの環境ではそのチェックボックスが表示されてませんでした(HSP3.1)
インストールしなおしてみます
やっぱりチェックボックスが出ない デバッグウィンドウの下が少し切れて表示される うーん、xpアップデートしてみようかな
うーん、デスクトップでは問題ないのにノートではダメだ もう諦めたorz
あ、表示がずれてるのね。 フォントの大きさだと思うが、変更すると全てに影響出るんだよなw
404 せめて数日持つところにあげろよ
329 :
327 :2008/06/28(土) 11:02:02 ID:hSwkXd9E
HSPでOSって作れますか?
HSPでつくるメリットが無いんじゃね?
原理的には最低限のブートストラップやメモリ管理をアセンブラやCで 組めばできますが、事実上現代的な実用OSをHSPで作るのは無理です。
つーか、流行の言語でOS作れるか?って聞いても同じような回答でしょw
>>330 ムリ。理由は、HSPSDKでも見てください。
ただし、OS上で動くOSっぽいものなら作れます。
HSPで自作言語作るのと同じくらい無意味だな
VBで言語自作してた奴いたけどW
HSPでも独自スクリプトぐらいなら普通に作るよな
338 :
名前は開発中のものです。 :2008/07/04(金) 19:41:01 ID:sNfc4Ee2
repeat-loopの中でgoto文を使うのはよくないのかどうか疑問です 教えてください
じゃなくて、 gosubで飛んだところでgoto文使うことがあるんだけどこれはネストしたことになるのかな? 最終的にメインには戻るんだけど 問題はないんでしょうか?
return使って戻らないとダメ
*a if f=1:gosub b return *b gosub a return f=1であればまた*aからの処理に入りたいんです gosub aをgoto aじゃまずいかな 落ちゲーで連鎖がある限り次に連鎖しているか判定する処理に入るようにした いんです f=1であれば*aのreturnには入らず*bにいき*aの先頭にいく。f=0ならreturnでメイン に戻る なんかおかしい感じがして・・・
gosub使って複雑なことやるとすぐに破綻しそう。ラベル増やすとかして gotoだけで行った方がいい悪寒
最初からネストが深すぎる場合はともかく、サブルーチンは状態によらず 完全に行って帰ってくることが保証されてれば問題ない。 サブルーチン内でのgoto文も完全に閉じてるなら問題ない。
なんつーか、いまどき言語仕様が化石すぎなんだよなあHSPって おにたまの懐古趣味を満足させるという欲求だけで 古めかしいBASICに固執するのはユーザの利益に反するわけで、 互換性は保ちつつも3で完全に構造化言語に移行すべきだったのではと思う
描いてるうちに変数のスコープが謎めいてきて カウンタ変数iたちがうじゃうじゃいるという事態に
もとい、書いてる
>>344 でおまいは何信者なわけ?
ちなみに漏れはRubyもPythonも使ったことは無いけど断言できる
RubyはPythonよりカスであると
>互換性は保ちつつも3で完全に構造化言語に移行すべきだった しったか乙、もしくは日本語不自由者乙 「構造化言語に移行」して、どうやって前Verから互換性保つんだよwww
完全に移行しちゃったらマズいだろ… gosubに取って代われるクラスとかローカル変数とかあればいいんだが
モジュール使えば変数の管理なんていくらでもできるからいいだろ。 HSPのモジュールみたいな泥縄な解決法は大好きだw
まぁゲーム用、初心者用が売りの言語?なんだから今のままでいいでしょ HSPは構造化言語に移行しろ、なんて原付に125cc以上のエンジン乗せろって言ってるようなもんだ
ハイブリッドにすればOK
つーかさ、HSPに多言語と同じ事を望む人たちが 何故にHSPに固執してるのかがまったく理解できない
構造化したスクリプト言語の需要はRubyが満たしている。 Rubyは完璧だ。 Rubyに任せろ。
Ruby厨のふり乙
*main screen 0,800,600,4 title " " position = 0 gosub *Opening *Opening gosub *DataLoad picx = 0 : picy = 0 posx = 30 : posy = 210 pos 0.0 repeat 6 redraw 0 pos posx,posy color 0,0,0 gmode 4,,50 gcopy 2,picx,picy,picx+198,picy+49 picy = picy + 50 redraw 1 loop return *DataLoad if(position == 0){ buffer 2 : picload "chip1.bmp" } else{} としたんですが画面が真っ白なままです。画像がbuffer2から転送されてくれない 画像はきちんと用意しているし範囲内にもあるのに、なぜこうなるのかわかりません
359 :
名前は開発中のものです。 :2008/07/16(水) 14:52:51 ID:A14iXZWE
あげ忘れすまそ
*dataloadをreturnしてなくない?
else{} ってなんじゃ?
362 :
名前は開発中のものです。 :2008/07/21(月) 13:34:12 ID:gs/fNrKp
3になってnotemaxの代わりになにを使えばよろしいんですの?
notemaxでおk
hsp3.1&hspdxfixでウィンドウモードのゲームを作っています ウィンドウサイズを640×480を超えるサイズに設定する方法を教えてください es_screen 800,600,16,,1,0 などと書いてみたのですが解像度が変わり縮小されるだけでウィンドウは640×480のままでした ヘルプはもちろんHSPDXFIX.TXT内のウィンドウモードに関する制約は目を通したつもりです wikiやgoogle先生で調べたのですがフルスクリーンが前提での解説や640×480のサンプルしか見つかりませんでした どうかよろしくお願いします
width
ありがとうございます widthとscreenで出来ました 以前に試した時はes_screenとは別に新しいウィンドウが作成されてしまい使えないものと思い込んでました 今思えばウィンドウIDを間違ってただけかもしれません・・・ きっと初歩的な事なんでしょうが本当に助かりました
367 :
名前は開発中のものです。 :2008/08/31(日) 13:29:20 ID:bV2d4pM3
じゃあまずは "WM_LBUTTONDOWN" から検索してみようか。
横スクロールアクションのゲームを作りたいと思うのですが、これについて解説が載っている本はありますでしょうか?
HSPでスレッドを作るにはどうすればいいんですか? 僕の使ってるrubyという言語ではThread.newという命令でスレッドを生成できるのですが HSPではどうやればいいかわかりません
HSPは1スレッドしか起動できません メモリマップトファイルとか使ってがんばれ
MSXみたいなもんだ ゲーム作りの楽しみさえ覚えられればあとはどこへでもいける
すまん、誤爆
今ゲームを作成しています。 LANで通信対戦をする方法を教えてください。 サーバー1機、クライアント4機を予定してます。 取り扱う情報は、文字と数値です。 サーバーとクライアントと相互通信ができればOKです。クライアントから直接別のクライアントへ通信はしません。すべてサーバー経由です。 よろしくおねがいします。
すいません。質問させてください。 シューティングを作成してるのですが、次のことがわからないので教えてください。 1 line命令で光線を発射するのですが、相手機と交わってるかを判定するにはどうすればいいですか? 2 ifで1から10の間みたいに変数の値がaからbの間にあるかを判定するにはどうすればいいですか? 3 機体は全部文字(◆)で管理してますが、font命令を使わない場合、縦と横のサイズはどのくらいですか?
基本的なことだから、もうちょっと自分で調べたほうが 自分の力になる、と思うけど… 1.レーザーみたいなものかな? 先端と後端の座標の範囲内に相手機の座標が入っているか判定する。 2.書き方は色々あるけど、例えば、変数aが1〜10だったらって場合は if a>=1 & a<=10 :どうのこうの 3.質問の趣旨がイマイチわかりかねるけど、font命令でサイズを指定しない場合の デフォルトの文字サイズということなら、18だったと思う。 でも18*18だと文字によっては、見た目上当たってないのに当たったことになるかもしれない。 たぶん、公式掲示板のほうが丁寧に答えてくれる確率は高いよ。
378 :
376 :2008/10/13(月) 20:27:22 ID:bE2D2PNX
>>377 2について
if (a >= 1 & a <= 10) & (b >= 5 & b<= 20)
みたいな使い方って可能でしたっけ?
3について
ifで当たり判定を作成するときに、posで指定したものと比較すると、レーザーに当たっているのに反応しないことがあるので、当たり判定をより正確にするために文字のサイズを知りたいんです。
>>376 3について
ginfo_mesx
ginfo_mesy
380 :
376 :2008/10/13(月) 20:56:21 ID:bE2D2PNX
>>378 2.可能。わかりやすいから付けといてもいいけど、この場合別にカッコは要らない。
if b<=20 & a<=10 & b>= 5 & a>=1 こういうふうに順番も別にどうでもいい。
要は、その条件を満たしていればいい、というだけだから。
3.
>>379 さんの命令で調べられます。補足どうも。
>レーザーに当たっているのに反応しないことがある
あと、コレはもしかしたら別の要因かもしれない。
>>376 文字で悪いとは言わないが、グラフィック表示してもそれほど覚えることは増えないと思うのだがー。
まぁ、がんばれ。
383 :
376 :2008/10/14(火) 16:19:20 ID:/fohrPfw
>>382 グラフィック表示も考えたんですが、文字のほうが動作が軽いので文字にしました。
レーザーが斜めにもなるんなら 衝突判定ちょっと面倒じゃね
>>383 それは描画方法とか何か別の原因がありそう。
HSPってwindowsの操作が出来るんですか?
>>386 質問の意味不明。
具体的にどんなことがしたいの?
>>387 キーボードから操作できないソフトをキーボードから操作できるようにできないですか?
あるソフトを自動操作させたいんですけど
自動ツールは色々試してみたんだけど
マウス操作は位置とタイミングを覚えさせるだけなのでエラーになりやすいです
具体的にはブラウザのFirefoxを監視して
ページが読み込み完了と同時に動作させたいんですけど
読み込み完了は日時や混み具合によって変わります
レスポンスから文字列を取得して
そのツールのテキストウィンドーを書換えてから動作させたいです
ブラウザが読み込み完了したかはwindowsでわかるはずなので
読み込み完了と同時にそのツールを動作させたいです
>>388 俺のカンによると、HSPじゃ無理とでた。
Javascriptでやった方がいいんじゃね。
Firefoxアドオンでやれ
>>389 javaスクリプトで出来そうなんですね
情報ありがとうです
>>390 そのFirefoxのアドオンなんですよ
動かしたいソフトってのは。^^;
>>391 ああ、俺のカンがJavascriptでも無理かもしんないって叫んでる。
Javascript的にはFirefoxのアドオンの操作は対象外な気がする。
質問です。 自作メディアプレイヤーに、『現在再生してる曲が終了したら次の曲を再生』 っていう機能がほしいんですけど、ググっても詳しく教えてくれるとこがないんです。 どんな命令を入れれば、次の曲を再生してくれるか わかる人はおりませんか? それと、できれば音量の変更もつけたいです。
>>393 公式掲示板でmciの事教えてもらってるのに、わからないとは如何に?
『hsp mci』でググってもみなかったのか?
それとも試行錯誤が面倒なだけか?
そんな面倒臭いやつはzgpswでも使ってろ。
文字を表示させた後その文字を消すのはどうやるのですか?
>>395 文字の背景による。
単色なら塗りつぶすのが楽。
背景があるなら、その位置だけ同じ画像をバッファから持ってきて再描画。
>>395 もう少し初心者向け講座やってみるといいかも。
いくつかの変数の中から一番大きな数字が入ったものを 選択したいんですけど、どうすれば上手くいきますか?
ひとつひとつ比較していけばいいんだけど、 「HSP ソート」とかでググってみれば出てくるんじゃない? 並べ替え(ソート)までは必要無いのかな?
>398 質問の仕方を変えないと、欲しい答えが出てこない希ガス
>>398 変数a,b,cがあったとして、一番大きい値がbiggestに入るとすると、
biggest = a
if ( a > b ) & ( a > c ) then biggest = a
if ( b > a ) & ( b > c ) then biggest = b
if ( c > a ) & ( c > b ) then biggest = c
>>401 一行目要らん希ガス
つーか変数100ヶだったらどうするつもりだw
まぁ考え方としてはかなりイイ線逝ってるはずだから
>>398 の参考になったらいいなと思うが
>>402 1行目無いと等しいものがあるときどうなるよ?
>を>=に変えれば無問題
というか、逐次比較は有効だと思うんだわ 複数の変数じゃなくて配列変数だったら、 ループでcnt使えばかなりソースの省略になるし 問題は、いちいち1ヶ1ヶ比較していってることかな 1次元配列変数a.nの各配列に代入されている数の中から 一番大きいものを変数biggestに代入するだけなら repeat n if biggest <= a.cnt { biggest = a.cnt } loop これだけでよくなる
>>406 をヒントにして、
>>401 のバグ取り&改造版(配列でない場合を想定)
biggest = a
if ( a <= b ) then biggest = b
if ( b <= c ) then biggest = c
if ( c <= d ) then biggest = d
...( 以下同様に続く )
data=a,b,c,d,e,f,g biggest=0x80000000 repeat 7 if biggest<data.cnt :biggest=data.cnt loop
背景 人物 メッセージウインドウの順で描写しているのですが、 他所をいじらずに人物だけを変えたい場合はどうすればいいでしょうか
透過?
gmode命令のモード2とか。 人物データの輪郭線の色は0,0,0にならないよう注意。 背景が変わらず決まった位置に人物が表示されるなら、初めから背景込みの画像データにしておく手もある。
>>409 redraw 0
いじらない背景 いじった人物 いじらないメッセージウインドウ
の順で再描画。
redraw 1
でいいんでないの?
背景、メッセージウィンドウの画像の再描画(あるいは再転送)をせずに 人物の画像だけを変更したいというキチガイ的な要求だと読み取って、 イラッときた
多少重くなるが 背景、人物、メッセージをそれぞれ別のバッファに描いておいて 最後にまとめて表にコピーしてくる様になっていれば 変更のあるバッファを書き換えるだけで良い。
>>410-414 ありがとうございます。
人物をアニメーションさせたかったのですが、表示毎のメッセージウィンドウ再描写+gmodeで解決できました。
かなり初歩的な事で申し訳ないです。
416 :
名前は開発中のものです。 :2008/11/11(火) 19:25:57 ID:DSbOPPfq
hspでbmpじゃなくてgifでほぞんしたいんだあけどできないのかえ?
できるけどおまえのたいどがきにいらないしじぶんでけんさくもできないくらいばかなのかえ?
ばかだからきいいてるんだすお?
sage忘れに気付いてsage直すあたり釣りだろjk
じゃあ検索語句をおしえてちょ
自分で正解言ってるだろ?
「HSPでは画像ファイルの作成出力保存が可能な拡張プラグインや汎用ライブラリを利用するのが一般的です」 てでたお ( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \ ( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \ ( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \ ( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \ ( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \ 失礼しましたうんこうんこうんこっこーーーーーーー
ウンコチンチーン
424 :
名前は開発中のものです。 :2008/11/20(木) 00:20:02 ID:rOCxAXHs
HSPでネットワーク対人対戦ゲームを作りたいのですが、 いいサイトありませんでしょうか?無料で見れる。
425 :
名前は開発中のものです。 :2008/11/20(木) 00:30:55 ID:rOCxAXHs
あと、 無料ツールでゲームプログラミング HSP編 を持ってる方にお聞きしたいのですが、 この本は、本にそっていけば、対戦ゲーム(簡単なものでも)丸ごと1つが作れるようになっていますかね?
>>対人対戦ゲーム せめてどんな種類のゲームか書け。 トランプの対戦作りたいのに格ゲーのサイト紹介されたって困るだろ? まぁ、通信の仕方を参考にするなら関係ないが。 あと、ネットに接続するのにどのプラグインを使っているのか書け。 何でもいいなら何でもいいと、書いてくれ。 そうでないと望んだ答えは得にくいぞ。
質問です hspdxfixなんですが スプライトの反転表示ってできますか? es_excopyで画像を表示して、同じ座標に透明のスプライトを表示させることは考えたのですが、 それだとアニメーション設定ができなくなってしまいます。 できない場合はやはり反転した画像を用意する必要があるのでしょうか?
428 :
m(425 :2008/11/23(日) 00:17:57 ID:5UEPlA/k
>>426 まったくの素人で、来年あたりから本格的に始めようと思っているものなので、
よく分からないのですが、
ネットに接続するプラグイン?は何でもいいです。
あるマップで複数のキャラクターが動けるようにしたいんです。
シミュレーションのネトゲーみたいな。
>>427 es_effectで回転角を変えれば出来るんじゃね?
>>427 表示サイズをマイナスにすればおk。
x軸をマイナスにしたら横に反転。
y軸なら縦に反転。
両方なら完全な反転。
>>429 おおー!できました
ありがとう
es_effect は回転だけできるのかと思ってました。
p4で縦、p5で横が設定できるのですね。
>>430 すみません
リロードしてませんでした。
p1、p2の表示サイズの変更してもできるのですか!
どちらを使っても同じですよね
詳しい説明ありがとうございます。
やさしいなお前
質問です bsaveで保存したデータは1byteに255まで入るのであってますか? 例えば アクションゲームで使うマップでは255まではしっかり表示できて、256では1にされてしまいます。 もし256個以上のチップを使う場合は1チップに2byte用意する必要があるのでしょうか? まだこの辺の仕組みが理解できてなくて頭が混乱しております・・ 説明へたくそですみません。。
1byteが何を意味するのか調べてみたらいいと思うよ。 この先損にならないし。
ありがとうございます だんだんわかってきました。 bsaveで保存されるデータは一桁の10進数ではなくて二桁の16進数なのですね! メモ帳で開くと化ける理由がわかりました。 ということは 1byte=二桁の16進数=256個の要素ということですか! あとマップチップを257個以上使う場合は2byteずつのファイルを1つだけ用意するのでなくて、1byteずつのファイルを二つ用意してみます。 (上層、下層みたいにレイヤーっぽく)
まぁおよそそれで合ってるが、 1byte = 8bit = 2進数8桁 = 8進数2桁 なのを忘れてはいけないよ
ぁぁ最後ミスった 16進数2桁ね わかってると思うが
ふむふむ 詳しくありがとうございます やっぱりプログラミングするとこういう知識も必要になってくるのですね
この情報社会、学校で教えるべきだとおもわんか。
442 :
名前は開発中のものです。 :2008/12/12(金) 00:59:58 ID:6/iJyMTo BE:582958073-2BP(808)
専門学校で教えても無駄な現実を直視しようよ。
高校の必修科目です
fi x.7=1:mmstop:mmplay 1 ↑ これをループ内で使うとカクカクします どうすればいいんでしょうか?
mmloadのモードは何で指定してる?
説明不足な様ので追加します ループ内で getkey x,32 if x=32:mmplay 1 でキーを連打してると(1回押すだけだと音は最後まで出る)音が出なくなったので、キーを 連打しても音が鳴るようにmmstopを追加してみたんです getkey x,32 if x=32: mmstop :mmplay 1 そしたら今度はキー連打しても音が出るんですけど キー押したときに実行画面で(処理が)カクカクするように なったんです つまり、キーを連打しても音が鳴るように、カクカクしないようにできればいいんです
いまいちよくわからんが、1フレーム毎に停止&再生してるからじゃないかな?
鳴らした後、xの値はクリアされているんだろうか?
hmmあたりを使ってください
解決したんだろうか? (´ー`)y-~~
横スクロールアクションゲームを作りたくて スクリプトプログラミング 逆引きテクニックという本を購入し2日ほど練習しているのですが マップの作り方がさっぱり思いつかず、まだ上下左右への移動程度しか出来ていません。 当たり判定とかも全く分からず参ってしまっています。 ステージマップはどの様に作るのが楽なのでしょうか?
>>453 ありがとうございます。難しいですが頑張ってみます。
HSPなんて糞言語使う奴はヴァカ。 玉葱に洗脳されてるんだろ。
456 :
名前は開発中のものです。 :2009/01/04(日) 20:17:57 ID:D9+tkeKP
グラディウスのオプションの動きどうやっているのでしょうか?
自機の座標をストックしておいて、何個か置きに持ってきてるだけじゃね?
過去数十フレーム分の自機座標もってるだけだろうな 実装方法はリングバッファが楽だと思う
元々がアセンブリ言語で作られてるのにそんな手法使うだろうか 自機&オプションが連結リストになってれば座標の履歴なんぞいらないだろうに
そういえばHSPスレだったなここ
グラディウスのオプションって自機のトレースだよな? だったら自機座標の履歴がなければ絶対無理じゃん
横スクロールの背景の当たり判定ってどうやってるの? ボスキャラとかはif使いまくってるんだけど背景とか いちいちif〜とか書くのめんどくさい どうすればいいの?
>>462 キャラごとにifであたり判定するのをやめて、
配列に各キャラの座標と大きさ(と形)を入れてforかrepeatでループしながら
判定するのが良いのではないでしょうか。
例:
dim hairetu_x, teki_no_kazu
dim hairetu_y, teki_no_kazu
dim hairetu_width, teki_no_kazu
dim hairetu_height, teki_no_kazu
dim hairetu_hitpoint, teki_no_kazu
repeat HAIRETU_OOKISA
if hantei( cnt ) == ATARI then atarisyori
loop
linuxでhsp3まだー?
>>465 頭良い人が連結リストでどう処理してるのか気になるな。
どこかスレ違いにならないところで教えて欲しいものだが。
連結リストを使う場合でも、座標情報をノードに確保するわけじゃないのかね?
>>466 >座標情報をノードに確保する
>>461 では自機座標の履歴って言ってたのにww
自機停止中にオプションが勝手に移動し続けるような仕様ならともかく、
グラディウスはそうじゃないから履歴は不要
あとは高校1年生の数学がわかるならできるだろ
なんかもうわけわかめ
469 :
466 :2009/01/07(水) 14:52:37 ID:IwHpEthg
いや、おれ
>>461 じゃないし。
グラディウスのオプションって自機の過去位置を辿ってくるから、
結局その為に持つ位置情報って、自機座標の履歴と同じことなんじゃね?
>>469 レスするなら脊髄反射しないでちゃんと読んでくれないか
>結局その為に持つ位置情報って、自機座標の履歴と同じことなんじゃね?
ぜんぜん違います
>>470 違うなら違うでいいから、どうしてるのかを教えて欲しい。
説得力ないし。
ついでに言わせて貰えば 違う違ういうだけならアホでもできますので、頭の良さを生かして解るように説明してくださいよ。 言葉足らずすぎてさっぱり解らんよ。 そっちこそちゃんと読めといいたいのだが。 配列使う場合でも実現可能な処理だし、そこまで連結リストにこだわるのはなんでよ? グラディウスのオプションが解ってないとかいうオチもカンベンして欲しい。
こだわってはいないし、スレも読んでないでしょ?
>>456 は読んだ?どうやっているかの話だったわけで
こだわっているのは絶対無理といってる
>>461 。
>そっちこそちゃんと読めといいたいのだが。
どこを?
>いや、おれ
>>461 じゃないし
あなたはもうこの時点でそこまでの話に噛み合わないレスをしてるわけ
456に対する回答として、履歴なしでの実装は可能といっているのに
>結局その為に持つ位置情報って、自機座標の履歴と同じことなんじゃね?
これが的外れなレスだってわからないかな…
そのフレーム中の自機・オプションの位置はバッファ取らずとも取得できる。
ブレゼンハムしか知らない人でもなければあとはどうにでもなる。
これでわからないなら俺は投げるよ。
むしろどこがどう同じなの?
>配列使う場合でも実現可能な処理だし
見た目が同じならどんな実装だろうと同じ論なら、なぜネチネチと・・・
そりゃ、頭悪いなんて言うからだよ 降りかかる火の粉じゃなくて、自分で火に足突っ込んだだけ と解説してみる。
オプションって自機に引っ張られるんじゃなくて軌跡トレースでしょ? 自機とオプションの2点の座標からは、自機の過去軌跡情報は抽出できないと思うんだが…… 例えば ▲自機 ●オプション +------+ ルート1 { | ▲ ● | | +------+ ルート2 現在の自機とオプションの座標のみ得られた場合 ルート1とルート2のどちらをオプションがたどればいいのかわからないだろ?
ぎゃー、スペース省略されるの忘れてた 全角スペース使って修正 図だけ再カキコ +-----+ ルート1 { | ▲ ● | | +-----+ ルート2
>>473 お前グラディウスのオプションの動き知ってる?
てか、ちゃんと説明できないなら回答者気取りでレスすんなや
コナミコマンドも知らないくせにwwwww
結局473は反応無しかよw 脳内で勝手に出来たと思ってただけなんだな >>配列使う場合でも実現可能な処理だし >見た目が同じならどんな実装だろうと同じ論なら、なぜネチネチと・・・ お前がまともな回答しないからだろwwwww
普通に考えりゃ458で正解だよね というかアセンブラで作られてる事とリングバッファ使わない事の 関連性がさっぱりわからない
バカを晒しとこ
467 名前: 名前は開発中のものです。 [sage] 投稿日: 2009/01/07(水) 14:24:25 ID:DPWvleLf
>>466 >座標情報をノードに確保する
>>461 では自機座標の履歴って言ってたのにww
自機停止中にオプションが勝手に移動し続けるような仕様ならともかく、
グラディウスはそうじゃないから履歴は不要
あとは高校1年生の数学がわかるならできるだろ
うんこ
ひょっとしてオプションが自機に向かって 最短距離で近づくと思っているのかな
ここまでHSPのコードなし
ゼータクばっかり言いやがって screen 0,256,192 step=2:myx=50:myy=50:index=0 optionnum=4:delay=10 poslog=optionnum*delay dim x,poslog+1:dim y,poslog+1 repeat poslog+1:x.cnt=myx:y.cnt=myy:loop repeat stick k,0xf if k&1:myx=limit(myx-step,0,256) if k&2:myy=limit(myy-step,0,192) if k&4:myx=limit(myx+step,0,256) if k&8:myy=limit(myy+step,0,192) if k&128:end x.index=myx:y.index=myy redraw 0:cls pos myx,myy:mes ">" repeat optionnum,1 optindex=(cnt*delay+index -1)\poslog pos x.optindex,y.optindex:mes "o" loop redraw 1 if k&0xf:index=(index+poslog-1)\poslog wait 1 loop ほいよリングバッファ
通りすがりだが、 オプションの動きは履歴があれば楽に出来る。 履歴を持たなくても1フレーム内で if 自機が移動しようとしたら { repeat 自機から遠いオプションから開始 自分の一つ前に居るオプションの位置に移動(最後のオプションは自機位置になる) loop 自機移動 } とかすれば出来る。 違ったらスマン
>488 初期状態で、自機とオプションが重なっていることを考えると そのアルゴのままで実装すると、 自機、各オプションの間隔がほぼ密着状態になるんじゃないかと思うのだが
>>489 わお。確かにそうだ。
結構間隔あったよな。
とするとダミー=履歴は必須か。
;自機、各オプションとの間に速度差があればイケるんじゃないかと思ったが screen 0,800,600,1:palette 4,0,0,200,0:palette 255,255,255,255,1 sw=800<<8: sh=600<<8: dw=792<<8: dh=582<<8 ;・内部値256倍 opnum=4: opdim=opnum+1 :dim xd,16: dim yd,16 ;・偽オプション個数 repeat 16:xd(cnt)=((cnt&4)> 0)-((cnt&1)> 0):yd(cnt)=((cnt&8)> 0)-((cnt&2)> 0):loop;・方向-増分変換 dim opx,opdim: dim opy,opdim: dim ops,opdim:sdim opstr,64,opdim dup myx,opx(0):dup myy,opy(0):myx=400<<8:myy=300<<8 a=4<<8:repeat opdim:a=a*77/100:ops(cnt)=a+(a<1):opstr(cnt)="o":loop:opstr(0)=">" ;・速度とキャラ *main:wait 1:stick st,-1:sd=st&15 ;・キー入力 redraw 0:palcolor 4:boxf:palcolor 255 ;・画面掃除 if sd { ;入力あれば〜 myx=limit(myx+ops(0)*xd(sd),0,dw):myy=limit(myy+ops(0)*yd(sd),0,dh) ;・自機移動 repeat opnum,1: s=ops(cnt) ;・偽オプション移動 d=opx(cnt-1)-opx(cnt): a=abs(d): if a { if (a>s) {opx(cnt)+= (d/a)*s} else {opx(cnt)+=(d/a) } } d=opy(cnt-1)-opy(cnt): a=abs(d): if a { if (a>s) {opy(cnt)+= (d/a)*s} else {opy(cnt)+=(d/a) } } loop } repeat opdim:pos opx(cnt)>> 8,opy(cnt)>> 8:mes opstr(cnt):loop ;描画 redraw 1:goto *main ;…ダメくさいな
むしろ勝手に移動し続けるオプションの方が履歴要らんよな…
これは
>>473 に期待するしかない。
そういや本物でオプション取った瞬間ってどこに出たっけ? それでオリジナルのアルゴリズムは推測できるハズw
>>493 簡単に調べただけだから間違ってるかもだけど・・・
PCエンジン版 1個目=自機の真後ろ(噴射炎の辺り)、2個め以降=最後のオプションに重なって出現。
FC版1・2 自機をトレースした座標に出現。(出現前からトレースしてる?)
オリジナルは多分PCEと同じだったはず。
>>493 グラディウスって全部オプションの動き違うんじゃね?
初代は2目も一個目が出た位置(自機の後ろ)、グラ2は3個目なら二個目の現在位置に出現
初代ACグラディウスだけど経歴だけじゃなかった気がする
動き続けてる時はトレースのように追尾するけど、一度止まる(一定時間?)と
何処を通ったか忘れて二個目以降も次に動き始めた座標に向かう(直接自機を追ってるかもしれない)
だからスピード上げてもオプション固めたままちょっとずつ移動出来た(グラ2は出来ない)
グラ2は普通にトレースしてる感じ
グラ3はまた違う感じだったけど覚えてないw
496 :
名前は開発中のものです。 :2009/01/11(日) 01:27:54 ID:KzN2icHA
最近ちょうどそれっぽいの作って遊んでたので該当部分だけ抜粋で。 o_traceという配列で64フレームぶん時機の座標を記録。 ちなみにmvflagの判定を削除するとツインビー方式の追尾になります。 *trace ;オプション追尾記録 es_get dx,990,3:es_get dy,990,5 if mvflag==1{ o_trace(trc,0)=myx:o_trace(trc,1)=myy trc++:trc=trc\64} mvflag=0 return *chr_blt ;マイキャラ表示 es_pos 990,myx,myy repeat max_chr-1,1 es_pos 990+cnt,o_trace((trc+63-cnt*16)\64,0),o_trace((trc+63-cnt*16)\64,1) loop return
ageてしまった、すいません。
>>495 いやグラディウスはオプション固めたままちょっとずつ移動は出来ない
出来るのは沙羅曼蛇。あれはオプションに慣性が付いてる
てゆうかちょっと待って論点がおかしい
別にグラディウスのオプションを忠実に移植したい訳じゃないでしょw
雰囲気だけなら
>>487 でいいんじゃないの?
あとは
>>473 さんが独自のアルゴリズムを提示してくれれば解決という事で
凄いアルゴリズム期待してる。
>>498 >いやグラディウスはオプション固めたままちょっとずつ移動は出来ない
できるよw
5速でもオプション同士が半分ぐらい重なってる感じで移動できる
本当にちょっとずつじゃないと直ぐに離れるがw
>別にグラディウスのオプションを忠実に移植したい訳じゃないでしょw
まぁ、グラディウスのオプションって言っても一つじゃないって事が言いたかっただけだw
基本はトレースでいんじゃね?
HSPをダウンロードしたらアンチウイルスソフトに引っかかりましたがどういうことですか? さっきからソフトが何度も反応しているんですが。
503 :
502 :2009/01/17(土) 19:35:39 ID:r0wr2sqZ
>>501 AVGならその内対応される、それ以外なら公式で教えてやってくれ。
505 :
名前は開発中のものです。 :2009/01/20(火) 14:47:52 ID:R0mBGuVC
質問します。 HSPで任意の画像の特定色を半透明化させるにはどうすればいいですか?
gmode
・指定色を透明 ・全体を半透明 はデフォルト命令で出来るけど ・指定色を半透明 は工夫しないとむずいな
特定色と透明色だけで構成した別画像を用意するとか(w
バッファに置いた画像データをドット単位で判定しながら、特定色のときのみ半透明でコピー。 実現だけなら難しくないけど、もっとスマートに処理できんかな。
ごめん。
>>509 じゃ駄目だな。
まず画像をバッファに確保。
ドット単位で色を判定(pget)しながら別のバッファに表示用データ生成。
a.普通に表示する色と透明色データ(半透明のところを透明色に置き換えたデータ)
b.半透明色と透明色のみのデータ(普通に表示する色を透明色に置き換えたデータ)
実際に表示するときは生成した画像データを使う。
a.の画像データは透明色ありで普通に表示
b.の画像データは半透明で重ね合わせ
こんな感じでどうか。
ていうかgmode 7なんてあったのか。 始めて知ったわ
512 :
510 :2009/01/20(火) 23:18:57 ID:sr7RmDMn
>>511 あったんだな、そんなの……。
>>510 で組んで動作確認しちまったぜ orz
gmode 7の場合はブレンド率指定用グレースケールこみで画像データを用意しないといけないのかな?
まぁ、元画像から『指定色だけ半透明にするグレースケール付データ』を自動生成させるルーチンでも作ればいいか。
指定色が1色なら 半透明矩形描画(gsquare等)した上に 特定色を抜き色にしてコピーすれば行けるんじゃない。 コレをバッファ内でやって、後は普通の抜き色コピー。
結局506がどんな使い方するか具体的に言わないと あれこれ方法書いても意味無いかもな・・・
フリーズした時はどうしてますか? エラーの場合は行数が出るので原因特定は容易ですけれども、 操作を受け付けない場合は切っていくしかないですかね
フリーズはなったこと無いな。 どっかで無限ループになってるんじゃね?
>>515 ループにウェイトを入れ忘れた(or誤って削った)ときくらいかなぁ。
基本的にメインだけループで廻して、各処理に飛ばす構造にしてる。
>>515 デバッグ用の表示処理入れておいて、どの処理までは進んでいるのか確認するとか。
デバッグモードonの時だけ働くような情報表示つけとくと、いろいろと便利。
520 :
名前は開発中のものです。 :2009/01/22(木) 23:27:26 ID:cnVyaD4Q
age
>>487 のオプションで個別個別に弾を出せますか?
>>521 そりゃ、出せる。
各オプションの座標も解るんだし、なにか問題でも?
>>各オプションの座標も解るんだし わかりません
>>523 まずは
>>487 の処理の流れを追って、どういうことをしているのか理解しようよ。
オプションが表示されている以上、その座標もプログラムの中で指定されている。
オプションの表示と座標指定している行は簡単に見つかるはずだよ。
その直前でリングバッファのどこから情報を持ってくるか決めているから確認。
その式に実際に数字を当てはめて、どういう結果になるか調べてみたらいいと思うよ。
1つだけわかりません optindex=(cnt*delay+index -1)\poslog の \poslog はどういう意味ですか? これをつけるとどう替わるんですか?
あまりおもとめるといういみです たとえば b=a\4 としたとき、aによんがはいっていたらbにわぜろがだいにゅうされます。 さんのときわさんわるよんわぜろあまりさんなので、さんがだいにゅうされます。 かうんたーのりせっとにしようしたりします
マニュアルとかちゃんと読め マルチ氏ね
>>525 poslog=optionnum*delayで、optionnum=4:delay=10だから、poslogは40。
\poslogでどう変わるかといえば、(cnt*delay+index -1)を40で割った余りがoptindexに入る。
要はoptindexに0〜39の値をとって欲しいんだよ。
HSPで文字の表示を縦書きにしたいのですが、どうすればいいでしょうか? ノベルゲームを作っていて、やはりノベルゲームなら縦書きだろうと思ったので…。
mesとposとstrmidを駆使してがんばるしかない 通常のフォントは横書き用だから無理矢理縦書きにしても 句読点や三点リーダーは正しく表示できないが
文字コードチェックして、独自グラフィックフォントに置き換えて表示するといいかも。 サイズも揃うし、三点リーダーもOK。
ありがとうございました。 強引にやるしかないんですね…
ひらがな、カタカナ、記号、常用漢字だけで1000文字以上ある 個人で作れる量じゃないし既存のフォントを画像化して切り分けて 使用するのはほとんどのフォントで規則違反
フォント名の最初に@付けて("@MS ゴシック")、 一旦どこか別の場所に表示して、それを回転コピーすればできるw
HSPってなんで構造体使えないのでしょうか? 使わないことでどれだけのメリットがあるのでしょう?
おにたまに聞けよ
>>536 知ってる限りでは
・昔のBASIC的な手軽さを追及した。
・最初に覚えることを少なくしたかった。
・C風な言語仕様にはしたくなかった。
あとは互換性維持のため大幅な仕様変更を急速には出来ない等の理由もある。
誤解している人も多いが、HSPは何でも簡単に出来る言語ではない。
あくまでも絵や音を簡単に扱えるのが売りの言語、それ以上の事は
より相応しい言語を使ってくれとおにたま氏も言っている。
構造体はないけど実はモジュール変数という名前の クラスもどきがある
HSP2.5のころに標準命令セットで2Dシューティングもどきとか作って遊んでたレベルの人間なんですが、 現在HSPで3Dゲームを作ろうとしたとき、hgimg3とE3Dどちらのプラグインを用いるのがお勧めですか? hgimg3で作られた棒作品の完成度の高さを目の当たりにして、あの頃のhgimgとは事情が変わっているんだなと感銘を受け、 何か自分にも作れないだろうかと思いたった次第です。 率直な感想をお願いします。
質問スレの方で訪ねたのですが、解答が頂けないようなので、こちらのスレの方が話題としては適切かな?と思い転記させていただきます。 HSP2.5のころに標準命令セットで2Dシューティングもどきなどを作って遊んでたレベルの人間なんですが、 現在HSPで3Dゲームを作ろうとしたとき、hgimg3とE3Dどちらのプラグインを用いるのがお勧めですか? hgimg3で作られたとある作品の完成度の高さを目の当たりにして、あの頃のhgimgとは事情が変わっているんだなと感銘を受け、 何か自分にも作れないだろうかと思いたった次第です。 率直な感想をお願いします。 ちなみにTHE地球防衛軍のような一騎当千系アクションシューティングゲームを作りたいと思っています。 コンテスト作品を見てもE3Dを用いたもので、3Dアクションゲームとして完成度が高いと言い切れるものは少なかったので テキストやノウハウは充実していても、大規模な開発には向かない仕様なのかな、と思っています。
連投、誤爆すみませんでした……
>>541 FPS系のゲームを作るなら今はEasy3Dの方を薦める。
HGIMG3は構造上フィールド型の3Dを作るにはまだ色々と不便な点が多いと思う。
某作品(同じかどうかは判らないが)はHGIMG3の特性を知り尽くした上で
綿密に表示をコントロールしてあの表現に至っている。
(それでも機能不足に作者も嘆いている)
開発に関してもEasy3Dの方がコミュニティが充実しているので
周りの助言も得やすい(開発者も回答してくれるし)し
ある程度のハードスペックがあればEasy3Dでもかなり満足できる表現が
出来るので、現状ではEasy3Dを使うことを推奨する。
>>543 諸事情で返信が遅れたことをお詫びします。
最新のテスト版で様々な便利な機能がサポートされ始めて、hgimgもE3Dに拮抗するように思えたのですが、
やはりノウハウの蓄積という点ではe3dに一日の長がありそうですね。
ただ、問題なのは私のハードのスペックではE3Dがやたら重いことなのです。
コンテスト作品など起動さえしないものも多々ありましたし。
hgimgに比べて重いプラグインだということで、自分のPCのスペックで開発することにはかなり不安はあります。
とりあえずはE3Dに手を出して、hgimgの安定動作や普及を待ちつつ、PCの買い替えを狙っていきたいですね。
>>544 E3Dが重いのはDirectX9用だからだろうね(hgimg3はDirectX8)
D8は多少古いグラボでもある程度の速度が出るけど、D9はグラボが古いと
かなり表示が重くなるみたい。
E3Dで起動しないのはグラボが対応していない機能を使ってるからだけど
どの道今の環境では3Dは厳しいだろうね。
ちなみに3Dプラグインの選択肢としてZGPも挙げておく。
HSP2時代のプラグインだがD8用なのでE3Dよりは軽い。
(ちなみに機能的にはhgimg3と同じくらいかちょっと応用範囲が広いくらい?)
興味があったら検索してみてくれ。
546 :
544 :2009/03/02(月) 16:45:31 ID:XihqTDR2
>>545 やはり安物の一体型PCでは3Dゲームにはグラボを始めとするグラフィック関連のスペックが貧弱すぎましたかね。
時代的にはシェーダを利用した表現がブームなのでしょうが、開発環境で動かないものは仕方がないですね
ZGPのことはすっかり忘れておりました。
2007年のコンテストでZGP作品を見つけることができて、スムーズな動作にポテンシャルを見出すことはできました。
ですがもう随分下火ですので、今から勉強するのは苦労するでしょうね……。
経路探索の考え方を教えてください。 マスで区切られている場合はなんのとか出来るのですが、 そうでない場合はどうすればいいですか?
マスで区切る。
経路探索でぐぐっては というのは酷ですから、ロボット・メカトロニクス関連の書籍を読んではいかがでしょうか
csvstr命令でデータを入れる配列を100文字以上で指定すると、文字化けするんですがなぜですか?
ロックマン風の2Dアクションを作りたいんですが参考になるソースかサイト無いですか?
香ばしい香具師のワード一覧 〜出来ますか 〜出来ません 〜はありますか うまくいきません どうやって〜ですか どこが〜でしょうか 分かりません 〜みたいなゲームを作りたいんですが アクションゲームで シューティングゲームで ドラクエ(ry 等
>>552 に当てはまる香ばしい質問ですが・・・
どうしても分からないので質問させて下さい。
画像のような感じにするにはどうすればいいでしょうか?
詳しく言いますと、
・キャラ1(青)は普通にシューティングの自機のような動き。
・キャラ2(赤)はZXどちらかのキーを押している間は、ずっとキャラ1の周りをグルグルと回る。
その間キャラ1も同時に操作可能。キャラ1とは常に一定の距離を保つ。
・黒い線の円形ラインは非表示。
という感じです。
3Dで言えばキャラ1がキャラクターでキャラ2がカメラと思って頂けたら良いと思います。
本当、これだけで一週間考えてるんですが、一向に答えが出ません・・・
無学でも分かるように説明して頂きたいと思います。是非お願いします。
http://www.dotup.org/uploda/www.dotup.org24840.jpg
青の位置x、yを基点とする、赤の位置の差分を配列かなんかでもっておけば? 配列(0) x=0、y=−1 配列(1) x=1、y=−1 配列(2) x=1、y=−0 配列(3) x=1、y=1 配列(4) x=0、y=1 配列(5) x=−1、y=1 ・ ・ 上のは大雑把な例、もちろんもっと細かく刻んで入れておけば、より円運動に近くなる で、配列を昇順に読んで位置を決めるか、降順に呼んで位置を決めるかで、回転・逆回転ができそう。
>>554 おはようございます、さっそくお答え感謝です><
正直な所、ん?(;゜д゜)ってなりましたが
だんだん理解してきました。なるほど、なんか出来そうだ!
しかしfps=60とかで、ゆったりスムーズな回転をさせるには
結構な情報量が必要になりそうですね^^;
色々試行錯誤させて頂きます。本当ありがとうございました!
青の座標と赤の角度だけもっとけばよくね?
>>556 で、できましたらもう少し具体的に優しくお願いします。。
こういう場合角度ってどうやって出すんでしょうか・・・
もちろん、聞きすぎなのでウザかったら無視して下さい自重します。
考え方が逆で角度を元に赤のx,yを計算したほうが楽ってこと。 青のデカルト座標(x, y)と赤の極座標(theta)を変数に持っとく 黒い円の半径を100.0、1フレームごとに1度回転するとすると if (Zが押されてる) : theta += 3.14159264 / 180 if (Xが押されてる) : theta -= 3.14159264 / 180 赤のx = 100.0 * cos(theta) + x 赤のy = - 100.0 * sin(theta) + y
夜光
>>558 詳しくありがとうございます!
サイン、コサインなどはチンプンカンプンなので、ググる前に
教えていただいたのをそのままコピペして←→キーにして実行してみました↓
winx=640 : winy=480
screen 0,winx,winy
x1=300.0 : y1=300.0
*main
redraw 0
stick key,5
color 255,255,255 : boxf 0,0,winx,winy
if key&1 : theta += 3.14159264 / 180
if key&4 : theta -= 3.14159264 / 180
x2 = 100.0 * cos(theta) + x1
y2 =-100.0 * sin(theta) + y1
color 0,0,255:pos x1,y1 : mes "●"
color 255,0,0:pos x2,y2 : mes "●"
pos 0,0 : mes "赤x="+x2 : pos 0,17 : mes "赤y="+y2
redraw 1
await 1
goto *main
実行!!!!!!
反応なし\(^o^)/
ここまで教えてもらって分からないとか・・・
勉強を先にした方がいいっぽいですね・・・
ちょっと惜しかったな。 オレが改良してやった、コレなら動くぞ winx=640 : winy=480 screen 0,winx,winy x1=300.0 : y1=300.0 : theta =0.1 *main redraw 0 stick key,5 color 255,255,255 : boxf 0,0,winx,winy if key&1 : theta += 3.14159264 / 180 if key&4 : theta -= 3.14159264 / 180 x2 = 100.0 * cos(theta) + x1 y2 =-100.0 * sin(theta) + y1 color 0,0,255:pos x1,y1 : mes "●" color 255,0,0:pos x2,y2 : mes "●" pos 0,0 : mes "赤x="+x2 : pos 0,17 : mes "赤y="+y2 redraw 1 await 1 goto *main
>>561 うおおおおおおおおおおおおおおおお!
動いてるううううううううううううううううう!
変数thetaに小数点を入れておかないとダメだったんですね!
どこが自分のと違うのか分からなかったw
>>554 さん、
>>556 さん、
>>561 さん
御三方のお陰で出来ました!><本当に感謝します。
ありがとうございました!
ですがぶっちゃけ完全に理解した訳ではないので
教えて頂いたことを一つ一つ整理して勉強して覚えますね
本当にありがとうございました(^-^)
しつこいですが、ありがとうございました!!本当に嬉しい
かなり初歩的な質問かもしれません。 input命令を実行したとき、 すでにメッセージボックスの中に0という数字が入ってしまっています。 この0を消す方法はありませんか?
>>563 ヘルプに書かれてるけど、あれは文章が分かりづらいかもしれず。
HSPの独自仕様だけど、変数をいきなり記述すると数値型として扱われるので、
文字列型にしてから扱ってください。
a=""
input a
>>564 ありがとうございました。解決することができました。
そしてもう一度質問で申し訳ないのですが、
現在クイズゲームを作っているのですが、
不正解なのに正解と表示されてしまっています。
原因はなんなのでしょうか?
プログラムはこんな感じです。
dim b,100
dim c,100
以下略
mes "2009年4月現在の総理大臣は?"←問題文です。
b(0)=""
input b(0)
c(0)="麻生太郎"←正しい答えです。
if b(0)=c(0) :mes "正解"
if b(0)!c(0) :mes"不正解"
以下略
最近HSPやってないんで知らないけど、HSPのifも ==とか記述しなきゃいけないんじゃないの?
>>565 それだけじゃなんとも言えんが
dim じゃなくて sdim なんでは
>>566 出来るよ
>>565 b="麻生太"
c="麻生太郎"
if b=c {mes "正解"}else{mes"不正解"}
不正解になるぞ
そんな中途半端の見せられても
そこに問題なきゃ意味無いだろ
input命令で入力されるまでスクリプトが停止する訳じゃないのに
そのスクリプトでどうやって入力したのを判定するんだ?
>>568 でも565のじゃ文字列型に再初期化されてるから訳分からん
#include "hspdxfix.as" wx=640:wy=480 es_ini:es_screen wx,wy,16,0,0 if stat=1 : goto *dderr1 if stat=2 : goto *dderr2 goto *start *dderr1 dialog "DirectXの初期化に失敗しました",1:end *dderr2 dialog "スクリーンの初期化に失敗しました",1:end *start gsel 0:gmode 1 es_cls:es_sync wait 100 buffer 1:picload "○○○.gif":es_buffer 1,0 buffer 2:picload "×××.gif":es_buffer 2,0,-1 a=100:x=100:y=150 repeat if(200<=a){ pos 0,0:es_copy 1,0,0,640,480 ;背景画像 pos x,y:es_copy 2,0,0,254,197 ;動かすキャラ画像 a=0 x=x+10 } a++ es_sync await 0 loop このスクリプトをフルスクリーンで実行すると、 画面がものすごくちらつくのですがなぜでしょう? スクリプトの問題では無くPCの問題でしょうか?
>>570 フルスクリーンの場合表示用のDX用スクーンバッファAとBを切り替えて表示してる
だからAにしかコピーされないタイミングでコピーした場合Bは真っ白(初期化の状態による)
if(200<=a){
pos 0,0:es_copy 1,0,0,640,480 ;背景画像
pos x,y:es_copy 2,0,0,254,197 ;動かすキャラ画像
a=0
x=x+10
}
a=200でコピーの場合なら偶数フレームでしかコピーされてないので
初期状態のスクリーンBとコピーしたスクリーンAが交互に描画され全体がちらついてる
DXを使ってる場合は画面に変化が無くても毎フレームスクリーンバッファに必要な物をコピーする必要がある
if(200<=a){
a=0
x=x+10
}
pos 0,0:es_copy 1,0,0,640,480 ;背景画像
pos x,y:es_copy 2,0,0,254,197 ;動かすキャラ画像
みたいにする
後、○○○.gifに透明色が含まれている場合最初のes_clsでは一つのスクリーバッファしかクリアされて無いので
es_syncの後もう一度es_clsするか背景には透明色を使わない必要がある
572 :
570 :2009/04/13(月) 00:10:24 ID:lEOUcEGc
>>571 なるほど、DirectX使用の場合は毎回画像を描写する必要があるのですね。
おっしゃる通りにifの外にes_copyを置いたら、ちらつきが無くなりました。
ありがとうございました。
HSPの本買ったのですがRPGとかシューティングの作り方は乗っていて これらについてはわかるのですがアクションゲームについては書いていなかった ので独学でやってみようと思いましたが行き詰りました・・・ アクションゲームの基本、ジャンプなどのソースコード等は割りと流れている のですがこういうサンプルは大体●で自機が表示されていますね。 この自機を●ではなくちゃんとした画像を使おうとすると表示されなくなってしまいます。 シューティングの時はちゃんと表示されたんですが・・・ どなたかご教授お願いします
574 :
名前は開発中のものです。 :2009/05/06(水) 20:13:04 ID:DZdBwUvJ
ソースの内容を理解せず丸写しだからそういう事が起こる
放物線って2乗したらいいと思ってたんだけど なんかかくばる・・・どうすれば・・・
交点の密度が足りないか、計算で端数を切り落としてるんじゃないの
>>573 表示されてるのを改造したら表示されなくなったってんなら、
どこがおかしいのかはスグわかるだろ?
>>575 やりたいこととバグり方の詳細を書け
そもそもU字にならないのか、軌道は正しいっぽいけど
予想した地点にいかないのかでぜんぜん対処法が違うだろ
アニメーションみたいにキャラをうごかしてみようと思って試したら ―を|をアニメーションしたら−→+という感じで表示されてしまう |が表示されている時─を消す方法をどうすればいいかどなたか教えてください
|が表示される時は―を表示しなけりゃ良いじゃん。なんなのこの子。
前のを消してないんだろう
cls
dim aitem,1 aitem(1)="a" でやるとエラーがでるですけど、何故ですか?
>>579 ゲームの場合基本的にフレーム毎にウィンドウ全画面を背景で初期化して
その後にキャラを並べてく
初期化っつてもclsはダメな画面以外も初期化されるから
背景画像とかまだ使わないならcolor:boxfでいい
redraw 0 //毎フレーム描き変える時のやりかた
画面書き換え(描画命令は全部ここで)
redraw 1
await 15
>>584 ---------------------------
Error
---------------------------
#Error 31 in line 2 (???)
-->異なる型を持つ配列変数に代入しました
---------------------------
OK
---------------------------
文字列型と整数型は別物って事分かる?
dim aitem,1で確保されるのはaitem(0)だけな
同じ型なら自動で拡張されるけど、この場合違うからエラーで教えてくれてるんだよ
aitem=""
aitem(1)="a"
なら自動拡張される
dim aitem,2
aitem="a"
だとエラーは出ないがaitemの要素数も一つに初期化される
586 :
584 :2009/05/15(金) 12:51:25 ID:gycVf1qF
モジュール内の変数の取り回しについて思いついたこと。 ;/−−−−−−−−−−−−−−−−−−−− #module sample #deffunc df_mapload str FileName ;// 省略:bufにファイル読み込み等 mapMaxUnitX=lpeek(buf,8) mapMaxUnitY=lpeek(buf,12) ;// 省略 ;// ↓ 配列のみスクリプト内で直接グローバル指定 dim mapData@,mapLayerSize,mapMaxUnitX,mapMaxUnitY ;// 省略:mapData配列にデータ格納 ;// 最後に、外部からも参照したい主要変数をグローバルに引き渡し mapMaxUnitX@=mapMaxUnitX mapMaxUnitY@=mapMaxUnitY ; mapData@=mapData ;// 配列はメモリ浪費するしそもそも渡せないのでスクリプト内で直接指定 return #global ;/−−−−−−−−−−−−−−−−−−−− df_mapload "filename" ;//マップデータを配列に読込み ;// ↓擬似的にモジュール内の変数を参照できる mes "mapMaxUnitX=" + mapMaxUnitX mes "mapMaxUnitY=" + mapMaxUnitY layer=0 : posX=11 : posY=22 ;//適当な位置指定 mes "地形コード=" + mapData.layer.posX.posY stop ;/−−−−−−−−−−−−−−−−−−−−
……と、↑こんなやり方を思いついたんだけど これなら必要な変数だけ外部から手軽に参照できて、記述も管理も楽な気がする。 変数を浪費する以外、どんなデメリットがある? それとも普通に誰でもやってるとか、もっと上手い方法があるのかな
よくある手法の一つだよ デメリットは上のモジュールから下のモジュールの関数を読み出せないこと ファイルサイズがでかくなってモジュールが増えてくるとどの順番に定義するかに 気を使わないといけなくなることと 新しいマップを読み込むと古いマップデータが消えるから関数を使いまわせなくなること
XP環境では起きない症状なのですが Vista環境でhmm.dllを使用しているとend命令を使ったときに 「hsp3.exeは動作を停止ししました。」とでてしまいますが右上の×ボタンでプログラムを閉じたときにはでません 終了の処理が違うのでしょうか? またこの件を回避したいのですがどうしたらよいのでしょうか? Google先生で検索したのですが他のDirectXを扱うプラグインでも起きるみたいです
591 :
590 :2009/05/21(木) 08:55:20 ID:7nLNLUBu
違った 明示的にhmmendなどの命令を呼び出すとエラーになってしまうみたいなんですが onexitなどにこのような解放処理はしなくてもいいんでしょうか? hspが自動でやるのとあわさるとエラーになってるんでしょうか?
画像を読み込んで描画させるとやけに点滅します・・・・ redraw命令を使っているのに・・・なぜでしょうか?
593 :
590 :2009/05/23(土) 19:59:46 ID:Mw4Jwpw6
自己解決
594 :
592 :2009/05/25(月) 17:05:25 ID:oA2a7sNf
自己解決しました
すっごい初歩で申し訳ないんだが a=1.5 mes a みたいにやると 1.500000 って表示されるんだが、小数点1位までの表示するにはどうすればいいか教えてくれ。 ヘルプのどこにあるかわからん。
a=1.5 mes strf("%.1f",a)
>596 ヘルプ見ても%の意味がよくわからなかったけど。できた。アリガトン
色々方法はあるだろうけど >mes "" + strf("%.1f",長打力(cnt)) + " " + strf("%.1f", 選球眼(cnt)) + " " + strf("%.1f",ミート(cnt)) + " " + strf("%.1f",合計(cnt)) + "" の部分を pos_y=cnt*18 strfdat=strf("%.1f",長打力(cnt)),strf("%.1f", 選球眼(cnt)),strf("%.1f",ミート(cnt)),strf("%.1f",合計(cnt)) repeat 4 pos 80+60*cnt+(6-instr(strfdat(cnt),0,"."))*8,48+pos_y mes strfdat(cnt) loop に置き換え 「 . 」の位置を基準にするからinstr(strfdat(cnt)で「 . 」の位置を収得して、それを元に座標を決めてる 他にも↓みたいなのもある pos 100,30 :mes "長打力"、 pos 160,30 :mes "選球眼"がx座標が+60じゃなく文字の大きさで割り切れる移動量なら mes strf("% 6.1f ",長打力(cnt)+strf("% 6.1f ", 選球眼(cnt)) みたいに出来る 変換データが指定した文字数に足りない時には、%の次にスペースとか0を指定してる場合それが足される(↑の場合「 . 」を含めた文字数が6未満ならスペースが足される)
自分だったらposをいじると、もしフォントサイズが変わった時に面倒だから、 各変数を算出した直後にstrlenで字数を調べて 一定のn文字に足りない分だけスペースを追加して表示用文字列にする それから基本だけど rpeat 5 みたいなのはマジックナンバーといって あとで何の数字だったか分からなくなるから変数を使うクセをつけ方がいい 初期設定で menber=5 にしておいて、repeat menber みたいな あとは一カ所に処理を詰め込まないで 計算のルーチンは計算だけ、表示のルーチンは表示だけって分ける
>自分だったらposをいじると、もしフォントサイズが変わった時に面倒だから、 フォントサイズの設定から表示位置を決めるようにすればいいだけだけどな ↑のは"長打力"とかの表示位置が文字サイズとは関係なく決められてからposの方をいじった (文字並べるだけだと微妙にズレル) >一定のn文字に足りない分だけスペースを追加して表示用文字列にする mes strf("% 6.1f",12.3) strlen使わなくてもstrf()の機能だけで出来る
gotoとかgosubのラベル指定って文字列変数で指定できないの? そうすればmainルーチンにgosub置いて文字列変数の値を書き換えるだけで タイトルシーンからメニュー処理へ行こうするのも簡単に云々 つまり goto *label_1 を ln = "*label_1" goto ln 見たいにする事ってできないの できないんだね
できたわ ln = *label_1 gosub ln stop *label_1 mes "成功" return で上手くいった lnはポインタになるのかな mes ls ってやったらエラーになった
ラベル変数と言うのがあってだな ln = *label_1 goto ln って出来る j=1 on j goto *a,*b,*c ってやるのを↓みたにも出来る labc=*a,*b,*c j=1 goto labc(j) ってやれば*bに飛べる onはラベルの数が増えると重くなるけど、こっちは関係ない(ラベルが代入されてない所を指定しないようにする必要はあるが) どのバージョンからラベル変数が使えるようになったかは忘れた って、書いてる内に自分でやってたかw
突然失礼します。 根本的に理解が足りないとは思うのですが、ちょっとお力を貸してください。 2Dメインのゲームを作っていて、画面上に3Dのアクセント(と言うか、マスコット的なキャラクター) を表示させたいのですが、どうやるのが一番現実的でしょうか?? つまり2Dと3Dの共存なんですが、全て3Dで処理しないとダメですかね? 2D部分のものは全てスプライト使うとか。 試しにHGIMGのhgcaptureを使ってバッファの内容を持ってきてはみたんですけど やっぱり遅くて実際に使うのは無理だなぁ、という感じでした。 あー考えるほどに泥沼にはまるので、一旦仮眠します。
ちょいキャラだけならリアルっぽい爆発エフェクトとかと同じで、 3DCGっぽい出力画像をフレーム枚数分用意してアニメさせればいいだけでは? Officeの邪魔臭いイルカとかと一緒。
と言うかですね、動的にテクスチャを変えたいんですよ。
だからー、どんな変化だろうと1フレーム分ずつコマ絵にしておくことはできるでしょ。 どんな状況でどのコマを表示するかはいくらでもプログラムできる。 ゲームでカーソルにあわせてキャラの向きが変わったり、ダメージをうけて色や絵が変わるのは 動的な変化じゃないの? それをリアルなグラフィックにすればいいだけじゃん。
例えば10000パターン考えられるとして10000パターン作っておかないとダメってことか・・・。 任意の文字列(アルファベットの大文字4文字なら26^4)を1文字ずつテクスチャにして それを正四面体にランダムな並びで貼り付けて回転させる、と言う場合はかなり難しいですな。
>>609 その通りだけど本当にそれだけの数が必要なの?馬鹿なの?
レンダリングだって計算を簡略化して近似値ですませるのがアルゴリズムの工夫ってもんだろ。
いちいち一万回ずつ反射計算するのかよ。
その例なら絶対いるのは回転中共通で数フレーム+最後の4面だけ。
よりリアルにするため回転終わりを個別に作ってもたかが知れてるが、それでダメな理由は?
普通にモデル作って表示させろよ
あ、ちょっと勘違いしてたけど、文字が毎回違うなら最後の4面じゃなくて 代わりにアルファベットのフォントテーブルだな。
>>611 ええ、まぁ、そのつもりなんだけど、
2D画面との共存を考えた場合は
どう言った方法がより現実的なのかな、
と言う所なんですよ。
>>614 その3Dキャラが一枚絵を加工アニメーションさせるだけじゃ表現出来ないなら
速度的にゲーム自体をD3Dで作るしかないだろうな
今のPCならD3Dでテクスチャ使った方が2Dやる分にも軽いだろうし
hgimg3はスプライトの優先度設定が廃止されてるから廃止前のを使うか自前でソートしてID入れ替えするしかない
ただ、2Dスプライトの表示優先度は解決できても、3Dオブジェクトとオブジェクトの間に表示する事は出来ない
Easy3Dなら3Dとの融合もできる(hgimg3より重いかもしれない)
hgimg3はなんで2Dスプライトの優先度を完全に無くしたんだろうな
使ってた人の事全然考えて無い・・・
>>615 なるほど。やはりhgimg3ではちょっと扱いづらそうですね。
Easy3Dで進めることを検討してみます。
非常に参考になりました。どうも、ありがとうございます。
こんにちは。 [HSP]+[Easy3D]で3D格闘ゲームを作成しているゲーム初心者です。 「CGグラフィック」の事で質問です。 僕はメタセコイアとROKDEBONE2で3Dモデルとモーションを作成しています。 ただどうしても作れないものがあるんです。 ・回復する時にキャラクターの周りを緑のラインがぐるぐる回るエフェクト ・滝の細かな水しぶき ・モノが爆発するときに爆風が広まる感じのエフェクトモーション これらを3Dモデルで作るとなると3Dモーションを”いくつも”作らなければならずどうしたらいいかわかりません。 僕としてはBMPで描き表示させるという方法も考えましたが、やはり3Dという性質や爆発などのモーションの場合は拡大、縮小という概念を考えるとうまくできません。 よく某ゲームでは「本物の爆発モーション」のごとく爆風の拡大、煙の湧き上がり方、どす黒い色から灰色などの色の変化を表現しています。 あんな感じのCGグラフィックを作ってみたいです。 HSPに対応する「ファイル形式」でできればお金がないのでフリーで作れるソフトってありますか?
618 :
こういち :2009/07/03(金) 20:26:58 ID:8bjFy0JX
>>617 −618
名前入力しているものとしてないものがありますが・・申し訳ないです。
他スレではこの名前を使っているのでそのまま書いてしまったらこんな結果に。
ここでは名無しで統一しますので・・お願いします。
・回復する時にキャラクターの周りを緑のラインがぐるぐる回るエフェクト ・滝の細かな水しぶき ・モノが爆発するときに爆風が広まる感じのエフェクトモーション アニメートスプライトで表現するのが一般的、チープではあるが 「緑のラインがぐるぐる回る」別のモデルで作って、コードで動かすのも有り 「滝の水しぶき」パーティクルを使って煙と同じ効果を作る 「爆発」半透明の球を作って拡大する、ポリゴンが割れて飛散するアニメを作っても良い 処理スピードを考慮すると連続したスプライトが良いと思う
自機から出る弾(BMP)を表示させて飛ばしてみたんですが
移動しつつ点滅しちゃいます
>>592 さんと同じ症状だと思います‥‥
>>620 すごく参考になりました。
もう一度チャンレンジしてみます。
ありがとうございました!
逆コンパイラで画像抜きにくくしたいのですが、何か方法ありますか?
>>621 どこでもいいからゲーム製作講座のHPのひとつくらい見てみろよ
基本中の基本すぎるから
すいませんHGIMG3の2Dスプライトの半透明処理とカレントカラーを透明に。 などの方法を教えてください。 お願いします。
>>625 まずHGIMG3のドキュメントを読みつくせ
基本を覚えずにやりたい事だけできるほどプログラムは楽じゃない
逆に言えば基本さえ覚えればHGIMG3はそんなに難しくない
マルチだったか・・・
画面端のy座標200〜300からrnd関数使って敵を出現させるのは可能ですか?
>>628 rnd関数がどういうものか理解すればやり方もわかる
まずはrndのヘルプを読もう
>>626 さん
すみませんマルチ質問はモラル違反でした...
基本がなってないといけないですよね。がんばって基本を熟知できるようになります。
>>628 それは画面の座標とか関係なく0〜100の値を収得出切ればいんじゃないのか?
200に0〜100の値を足したら幾つからいくつになる?
マニュアル読め、とかのレスは、はっきり言っていらなくないか? まぁ初心者にも程がある、と質問とすらいえないようなものもあるかも知れんけど。
HSPコンテスト、今年は盛り上がる?
>>633 そんな事わかるはずなかろう、それに何を以って盛り上がったとする?
まぁ盛り上がる事を期待したいのなら、まずは自分が動く事だな
とりあえず俺は数点応募するつもりだが・・・
去年と違って今年はグロいホラーゲーム作ろうと思ったりしたけど 絶対弾かれるよな?
>悪意があるもの。不快な思いをあたえるもの。 >利用者に損害を与えるもの。または不安を煽るもの。 結構曖昧だよね・・・
>>635 ニッチではあるけれど、そういったニーズもあるわけで、
ゲーム開始時に『当作品はグロテスクな表現を用いて〜』とか注意書きありゃいいんじゃね?
作品紹介にも注意書きつけたり配慮してあれば案外大丈夫そうな気がする。
心配なら運営に問い合わせるとか。
>>636 >2.悪意があるもの。不快な思いをあたえるもの。
> (上記の解説・補足)利用者に損害を与えるもの。または不安を煽るもの。
って事だから、ウィルスやトロイ、他人への誹謗中傷・政治的な扇動が目的
みたいな物がダメなんだろう
一応ルール上は18禁ゲームもOKみたいだなw
内容にもよるだろうが・・・
HSPでイベントシーン(RPGでいうキャラが会話しながら動いたりしてるような)を作るのはちょっと厳しい?
640 :
名前は開発中のものです。 :2009/08/01(土) 10:41:54 ID:sFzdIDNo
RPGツクールなどの専用ツール以外、何で作っても大差ない
ありがとう じゃあ気合いか
アクションゲーム作ってるんですが wait 16 だと動作がスローモーションかかったみたいになるんで wait 3 にしたところ、スラスラ動くようになりましたが‥‥ これって後々問題になってくるかなぁ?
hgimg3について質問です。 外積というので旋回の左右を判断したいのですが、 p1はプレイヤー1、p2はプレイヤー2、p1yは高さですが、一定です。 fvset gaiseki , p1x , p1y , p1z fvouter gaiseki , p2x , p1y , p2z プレイヤー1の回転に合わせて外積も回転させたいのですが、どうしたらいいでしょうか。
getkey 〜〜〜・・・・ こっちが押しっぱなしでも一回の入力としてカウント stick 〜〜〜・・・・ これだと押してる間、入力状態ですよね? ボタンを押して左右に移動 ボタンを離すと正面を向いた状態にしたいんですが どうにも正面を向いてくれない ボタン入力が無かったら〜〜〜 って条件をなんとか作れませんかね
awaitでした ごめんなさい 解決しました
647 :
名前は開発中のものです。 :2009/08/02(日) 10:04:17 ID:VqA+GE3g
>>645 ifにはelseがある
getkeyは押している間入力状態
stickは押しっぱなしでも一回の入力にする事もできる
>>647 ありがとうございます
そういやHSPにもelseあったなぁ・・・
角度ごとに画像を変えるってできませんか? 45度を向いてたらこの画像を出すとか
できる。
651 :
649 :2009/08/02(日) 22:04:04 ID:Pc+SdHiH
角度ごとに画像を変えるって if a>0.00 and a<0.12:gcopy〜 if a>0.12 and a<0.24:gcopy〜 if a>0.24 and・・・ とかでいちいち指定してると重くなりますよね もうちょっとシンプルなやり方ありませんか?
試してないから適当だけど int(a * 100 / 12) で switch〜case とか
スプライト使ったらあかんの?
ああ、多分勘違いしてた
角度が0〜255とかで返ってくれば楽なんだけどな。
+16して、32で割って、スプライトのサイズを掛けるだけ。
a=atan(y,x)
a=128+a/3.1415*128 +64&255
x=a+16
>>5 &7
gcopy 2,x*64,0,64,64 ;画像は横に並べる
とか
656 :
643 :2009/08/03(月) 03:25:22 ID:5xZfsrHm
>>643 ですが、結局、外積を使わないようにして解決しました。
HSPコンテスト、活気はどんな感じになるかなぁ・・・
と思ったらもう作品公開されてる・・・ 学生なのにすげぇの作る人いるなぁ
やたら10代が多い気がする‥‥ そのうちもっと凄いの作るんだろうな
横スクロールアクションを作っているのですが 主人公の歩行アニメーションがうまくいきません if (→を押しているなら){ 2枚の絵を切り替えrepeat } if (←を押しているなら){ ・・・・・・ こんな感じで可能ですよね?
そんな一部だけ見せられてどうしろと? どう、うまく行かないかも書いてないしよ・・・ うまくいかないってーのにも色々あるだろ それまで推理して答えろってか
repeat とか入れちゃってる辺り、 多分アニメーションの仕組み自体分かってない。 hspdxとかスプライト機能のあるプラグイン使った方が楽。
画面を一旦全部消してだね、で、もう一回書き直しなさい
せめて裏で一から描いて表にコピーするぐらいはがんがれ
>>660 そのまま動かすと一瞬で絵が上書きされてるだろうからアニメに見えないだろうな
アニメの基本は一定時間表示した物を変更するって事だから
そこら辺をちゃんと作らないとアニメにならない
アニメーションしないブロック崩しとかだとそういうの一切考えなくていいよな・・・
多関節とかは? 使ったことないけど
左向き用の画像を用意 座標の指定方法は右向きも左向きも同様
>>669 >xの100までは右に向かって歩く2枚、100から200まで左に向かって・・・って感じに置いてるけど
そんな画像どこにある?
ログインしないと見れないのか
てか
>gcopy 1,anim/4\8*200 ; 画像を描画する
これ見る限りそんな仕様にはなってないぞ
同方向のアニメパターンは横200ずつの8個になってる
あぁ、自分で作った画像が50*50って事か >gcopy 1,anim/4\8*200 ; 画像を描画する これと同じようにやるなら stick key,15 ; キー入力を行う if key&1 { ; 左のキーならば{}内を実行する x=x-2 : anim=anim+1 patx=100 } if key&4 { ; 右のキーならば{}内を実行する x=x+2 : anim=anim+1 patx=0 } gcopy 1,anim/4\2*50+patx,50,50
673 :
669 :2009/08/07(金) 03:01:12 ID:f2ywf3OV
アドバイスありがとうございます なにやら左右に動くと画像が表示されなくなり・・・ >gcopy 1,anim/4\8*200 と >gcopy p1,p2,p3,p4,p5 をどう当てはめればいいのかよく分かりません 「1」はp1でウィンドウIDなんですが、「anim/4\8*200」の部分はどうなるんでしょうか? もしp2となるんであれば、今yには0が入ってる、ならば好きなy座標を入れればいい って訳でもない感じがします
674 :
669 :2009/08/07(金) 03:07:59 ID:f2ywf3OV
すいません解決しました
特定のキーを押すと2秒間移動できないようにしたいんですが どういう風にすればできますか?
1最大16msぐらい(環境とawait設定によるが)遅れるけど 1フレームぐらいだから大丈夫だろう repeat redraw 0 color 255,255,255:boxf:color stick st,$ff if st&128{end} if stp=1 { msb=gettime(7);現在のmsを収得(0〜999) msc=msb-msa;今回から前回のmsを引く msa=msb if msc<0{msc+1000};前回の方が大きかった場合-になるので+1000 msd+msc;経過時間蓄積 pos 0,0 mes "ms="+msd if msd>=2000{stp=0:msd=0:title ""};2000=2秒 経過でストップ解除 } if stp=0 { if (st&16)>0 {msa = gettime(7) :stp=1:title "ストップ中"};スペースでストップ、1/1000秒を収得 if st&1{x-} if st&4{x+} } pos x,100 mes "○" redraw 1 await 15 loop
cls以外で部分的にinputやbuttonを消すにはどうしたらいいの? screenを二つ使って表示させるんなら、なんとなくできるような気がするんだけど、 一つのスクリーン上ではできないのかな?
オブジェクト 消去 でヘルプ内検索
できた。アリガトン ただID番号調べ方がよくワカラン。上から数える以外あるの?
あぁ、まだヘルプに記載されてないのか オブジェクト配置時にはシステム変数statにIDが返る
objprm p1,p2 p1=0〜(0) : オブジェクトID指定 p2 : 変更するパラメータの内容解説 button命令やinput,mesbox命令などで画面上に配置したオブジェクトの持つ内容やパラメータを変更します。 p1には、オブジェクトIDを指定します。オブジェクトIDは、 0から順番に画面上に表示したオブジェクト1つ1つに割り当てられていく番号です。 オブジェクトIDは、オブジェクトを配置する命令実行後にシステム変数statに代入されています(通常置いた順番に0,1,2…の番号が割り当てられます)。 一応ヘルプにあったは
そこは一応目を通してはいたけど、 ようするにstatをオブジェクトのあとに表示させればわかるってことでいいのか? システム変数自体きちんと理解してないからなぁ。 statはなんか色々使って数字が変わってしまうイメージがあるんだけど。
if stat=1 とかやってると思わぬバグに遭遇する罠。 a=stat とかなるべく変数に入れようね。
statは特別は変数(通常は読み取り専用) 命令実行後に命令が成功したか等を数値で返してくる オビジェクトを配置して成功したらオブジェクトIDがstatに入ってるから 自分で他の変数(配列)に保存してやればいい input a,32,16 inputid=stat button gosub "A",*label buttonaid=stat button gosub "B",*label buttonbid=stat button gosub "input",*label buttontid=stat stop *label id=stat if id=buttonaid{title "A"} if id=buttonbid{title "B"} if id=buttontid{title str(a)} return
そうかそうか。変数を別に組めばいいのか。なるほどなぁ。勉強になります。 そういった変数は別に独立させたほうが、一手間だけどわかりやすいな。 そういう風にヘルプも読めばいいわけか。
button内のフォントの大きさはどこで変えればいいんじゃ。 ボタン大きくしてみても文字が小さいままじゃな。
ヘルプ内を オブジェクト フォント で検索
HSPで多重スクロールは厳しいですかね?
>688 みつかった。アリガトン というか、俺がやったら0件だったのに、コピペしたらでてきた。 半角スペースと全角スペースで違うのか。
ありがと~ん
>>689 PC性能と書き換える範囲、gmodeによる
3年前ぐらいのPCでも標準命令で3枚ぐらいならどうにかなるかな
半透明は二倍ぐらい重くなるから描画範囲が大きいと厳しい
>>690 全角スペースじゃ全角スペースを含めた一つの文として検索される
そうなの
普通にDirectX使えよ
アニメーションさせると動きがゴキブリみたいなカサカサって感じになるんですが もう少しズシン・・・ズシン・・・って感じにアニメーションさせられないでしょうか?
イミフ
アニメーションが早送りみたいになるので もっとゆっくりにする方法はないでしょうか、ってことです
>>697 画面書き換えごとにアニメパターンを変更するのではなく、
数回同じパターンが表示されるようにすればいいと思うよ。
とりあえず実際どうやってるのか見せてみ
>>697 アニメーションのパターンが少ないか、移動量が大きすぎるのだと思うが
確かに、もっさりした動きを表現したいならアニメパターン多めでないと厳しいな。
敵がまだ出てない時は普通の動きなのに 敵が表示された途端に自機の動きがめちゃくちゃ速くなる こんなことってありえるの・・・・・・・?
自機の移動処理を敵が呼び出してるでFA
考え方が逆だよ。 現に速くなってるんなら、その事実をまず受け入れろ。 話はそれからだ。
>>702 そうではないです・・・
time++
if(time \ 1000) = 0{・・・
これがいけないんでしょうか・・・
ソース晒してみたら?
バグは「そうではない」と思っているところにあるもんだからなあ とりあえず表示が原因なのか敵の出現が原因なのかを切り分けるために 画像表示関連の部分をboxfに変えてみたら
707 :
名前は開発中のものです。 :2009/08/21(金) 08:21:55 ID:u6ZbOicr
敵移動処理にreturn書き忘れてそのまま自機移動に流れてるとかw
HSPコンテスト、作品に対するコメントが全然ないけど もしやこれがデフォ? 寂し過ぎじゃね
>>708 他人に求めるな、自分が書くんだ・・・とは言っても既に書いてる奴ならダメか・・・
理由1 : コメント登録制の為、自分の素性が割れるのが嫌w or 作品が出来てないからコメントできない
理由2 : コメントつけたいソフトが無い or ゲーム少ねぇぞゴラァ
理由3 : コメント書く奴が少ないから書き込み難い or 誰かコメント書いてください(他人任せ)
こんな所だな、大半1か2だろうけどw
ま、匿名で好きな事が言いたいならこっちに書いとけ↓
意外に見てる奴多いから
>HSPコンテスト専用2
>
http://pc12.2ch.net/test/read.cgi/tech/1221701297/ ガキに荒らされるくらいなら超辛口批評の方が100倍マシだからな
ただし個人攻撃はウザイからすんなよ、あくまで作品の批評な
>>704 そんな部分だけ切り取られたって何の事だか解らないよ。
具体的な答えが欲しいならソース出せば誰かが答えてくれるんじゃない?
もう一度言うけどな、まず事実を受け入れた上で考えろ。
速くなってるんなら、速くなる要因が必ずあるんだよ。
敵が現れて速くなるなら、敵が現れた時に自機に影響を与える処理をしてる可能性がまず考えられないか?
そうしたらその辺の処理がどうなってるのか考えるんだ。
もしや敵と自機の変数がごっちゃになってるんじゃあるまいか
>>708 登録制になったから急激に減った
採点無しなら無登録でコメできるとかしない限り増えないだろう
HSPプログラムコンテスト2007 ユーザー評価
現在の最新コメ 2009/07/21 15:16:13
HSPプログラムコンテスト2008 ネット審査員による評価
現在の最新コメ(製作者以外) 2008/11/28 19:05:05
登録が必要ないときのは数年に渡ってコメが来たりする
HSPってmikotoのモーションデータ使えるの? どこみてもRDB2とかkeynote使ってるから不安になった
そっか、なるほどな ありがとう
すにゃんソフトはまだ生きてるのだろか
つまり更新はあるか、って事じゃないか?
シューティングゲームを作ってるんですが 敵を多数表示させることはできたんですが 当たり判定があるのが1機だけという結果になりました 画面内に出てくる敵が2機だとすれば最初の1機にしか当たり判定がありません まさか画面内に出現する敵の数だけフラグ作らないとダメ?
どんな処理の仕方してんだ、それ?
精進が足りんかったようです 出直してきます・・・
ソース晒してくれたら、具体的なアドバイスできるかもしれん。 「こうなりますけど何故ですか?」とか聞かれても、「そうなるようにプログラムしてるからだね」としか答えようがないんだよ。
プログラムは嘘をつかない
おにたまさんもコンタクトなんだろうな。きっと・・ウフフ・
>>722 配列変数を覚えたらrepeatとcntの使い方も調べてみ。
UPキーを連続押しでダッシュさせるような キーの連続入力で別の処理をさせたいのですが 詰まっております 良い方法がありましたら教えていただけませんか?
10フレ?以内に連続押しでダッシュ扱いなら メインループ中に renzoku-- if (renzoku >0)&(renzoku <10) :ダッシュ if renzoku < 0 :renzoku =10 :歩行 とか書けばいいんじゃね?
敵を多数表示させた際、重ならないようにするにはどうすればいいんでしょうか? プレイヤーが画面端から出れないようにするのと同じ感じ?
座標が一致しないようにすればいいじゃん?
敵の数の二乗分の計算が要るぞ
二乗はいらないと思うが
(敵数-1)*敵数 だから二乗よりは少ないな でも、ギリギリまで動かしたい場合「全部の敵と判定」して一番近いやつに合わせる必要がある 当たったら止めるなら動いたら当たるかどうかだけでいいが・・・ 弾と違って敵なら10個程度だろうからなんとかなるか 数が多いと一つ増えただけでコストの増え方がアレだが・・・
735 :
729 :2009/08/30(日) 18:24:09 ID:Uz4rju+H
自機が一番下にあり、真上から落ちてくる敵を避けるゲームです。 敵が登場する場所(画面端のx座標ランダム、y座標0)を被らないようにするのが理想です。 画面内に登場して落下を始めた敵の真上(y座標が違ってx座標が同じ)には敵を作れる、ってのもやりたいんですが 結構難しい気が・・・ 敵の座標同士を比べ、重ならない時に敵を作るといった具合にやるんでしょうか?
ちょっと条件を付けて 縦一列には敵が一機だけとする。 最上位行において、敵が発生する。最下段で敵が消滅する。 乱数で敵位置を作って、その列に敵が存在したら、乱数を再計算する。 もし、縦一列に複数の敵を持つとするなら、敵の存在フラグを最下段でなく 真ん中くらいに設定する(敵の大きさによるだろう)。
enemy_x.cnt-=1 敵の移動速度は1以下にはなりませんか? 0.5等小数点は使えませんでした
小数点使えない? まぁ、使わなくてもできるけど。 移動速度は実数のまま、移動距離を1/100とかにして使う手がある。 ドット単位の移動で速度を0.5にしたいなら、速度50でカウントしていって100を越える毎に1ドット進むようにする。
ddim使えばいいんじゃないの。 一通りマニュアルには目を通しておけと。
面倒なことしなくても enemy_x.cnt-=1+mcnt\2 (mcnt=1フレームごとに増加する数値) これでいいじゃん 問題は1から0.5までの数に応用がきかないことだが
それはいくら何でも応用効かなすぎ。
256倍とかの方がまだ楽。
pos enemy_.cnt
>>8 ,enemy_y.cnt
>>8
HSPでキャラ同士の会話とかイベント的なムービーを作るとなると 移動先の座標とか台詞の表示とかもいちいち書く必要がある? それともそれ用にツールみたいなのを作るべき?
HSPじゃなくてもプログラムから組むんならそうだろ
OBAQで速度の速いオブジェ同士当たり判定をうまく取る事は出来ますか? 多少めり込んでも弾いてくれればそれでいいんだけど、合体しちゃうんだわ。
縦スクロールSTGつくるとして背景を10画面分用意するとします。 バッファの確保は640*4800で確保しても問題ないですか?
747 :
名前は開発中のものです。 :2009/09/05(土) 20:17:03 ID:QKxxqo7m
それで確保して問題なかったら問題ない とりあえず最低限、自分の環境で試すぐらいはしろ
>>745 qexecは1ループ内に何度でも使用可能
qexec : qexec : qdraw
なら表示が倍速になる、という事は・・・?
画像データはいきなりビデオカードのVRAMには読めないみたいだな まずメインメモリーに読んでからVRAM転送するらしい
背景に雲があるんですがなぜかキャラと重なってしまいます・・・ 先にbufferする以外に解決方法ありませんか?
もう少し詳しく。 現状はどうなっていて、本当はどうしたいの?
キャラのほうを後に描くのはどう?
>>748 あ、なるほど!
考え方はわかったので試行錯誤してみます。
ありがとう!
754 :
750 :2009/09/07(月) 05:57:55 ID:ZRk108rW
buffer 1,400,320 picload "haikei3.bmp" buffer 2,80,40 picload "PK.bmp" buffer 3,25,15 picload "kumo.bmp" こんな感じに読み込んでるんですが この場合だとbuffer3の雲がbuffer2の主人公よりも手前に表示されます 雲を先に読み込むというのが一番の解決方法なのだと思いますが それ以外に方法はありませんか? 読み込んだ後でも場面によっては手前に表示したり・・・とか
755 :
名前は開発中のものです。 :2009/09/07(月) 07:25:29 ID:So0NR65h
それ読み込んだだけじゃん どっちが手前とか関係ないところだろ 2Dなら表示順は奥のものから順番に描画するしかない その手段が楽な言語はあるが理屈はそれ以外にない
>>754 どこまで知っているのか分からないけど、
とりあえず、gcopyを使うようにすればいいんじゃないかな。
先にgselで描画するウィンドウを指定してからね。
>>754 buffer と picload が、
何をどうする命令なのかわかってるのか?
わからなかったらf1を押してヘルプを読め。
主人公の方を雲より後に描画させる あとは要のソース見せてもらわないと…
どのレベルの質問をしたら怒られるのか ROMっててようやく分かりかけてきた
>>754 gcopyするときにバッファ2のほうを一番最後にかけばいい
*main
gcopy 1,
gcopy 3,
gcopy 2,
goto *main
bufferに読む込むだけで画像を表示できると思ってるヤツに gcopyとか言っても理解できないだろ?
762 :
名前は開発中のものです。 :2009/09/07(月) 20:28:09 ID:o2lnCto6
HSPのジャンプの速度はどうなんでしょうか?
指定した通りにジャンプします
764 :
名前は開発中のものです。 :2009/09/07(月) 20:52:56 ID:So0NR65h
HSPってジャンプするの?
他言語に比べてHSPのGOTOのスピードはどうでしょう?
766 :
名前は開発中のものです。 :2009/09/07(月) 22:52:04 ID:So0NR65h
GOTOってBASICぐらいにしかないんじゃないの?
Cにもgotoはあるよ。むしろない方が珍しい
>>767 >>754 読んでみろよ。
サンプルか何かを改造してて
>>754 のように思ったのかも知れないが、
使ってる命令の意味さえわかってないからこういうトンチンカンな事を書くんだ。
今、gcopyと言ったところで理解できるはずがない。
だからまずこの子に教えるべきなのはf1の使い方なんだよ。
HSPでファイナルファイトのようなゲームは作れますか?
スーパーファミコンに移植されてる程度のものは 作れると思うぜ
772 :
名前は開発中のものです。 :2009/09/08(火) 20:02:20 ID:I+vUAxAp
>>770 に作れるかという質問ならわからないが正解だけどね
お馬鹿な
>>772 は挫折したんだね。かわいそうに、成仏しろよ
他人を馬鹿にできるほど出来の良い作品を完成させ、残している人物なら >773のような発言をする資格があるのだろうが、 HSP界でそのような作品にお目にかかったことはない。 だが、仮に、出来の良い作品を残していたとしても その作者が>773のような発言をしているのだとしたら 作者の品位を疑われることになる。 >768のCうんぬんという発言から、 ID:yEitQA4wが、現在HSP使いではないと答えるのなら、 このスレに来て煽りレスを入れている行為の意味が問われる所であるし。 つまり 「馬鹿っていう奴が馬鹿」現象。
どんだけ顔真っ赤にして悔しがってるんだよ
真っ当な意見と思うけどね
770ですが 単純にスーファミレベルのアクションゲームは技術的に可能かどうか気になります HSP製でそんな作品は今までありました?
HSP側は問題無い 作り手の技術と根性次第
>>777 OBAQのおかげで初心者でも簡単に
アクションゲームが作れるようになった気はするから試してみれば?
初心者は突き放すのがこの世界だな うむ
>779 そうか、OBAQ使うのって物理シミュ的なゲームしか考えてなかったけど 固定画面重力ありのアクションゲーとか マリオ系の横スクロールアクションが より簡単にできるようになったんだな。 まてよ、てことは対戦格闘なんかも・・・
>>777 プレステレベルでも可能だし他言語より簡単に作れる。
ただ、各命令速度計測して高速化のための書き方と組み合わせを日々考える根性が必要。
でないとクソ遅い。
まあ作品が少ないのはそういうことだ。
書き方変えて体感できるほど速度が変わったことが無い……
思考ルーチン作るとかなり違いが出る。 STGなんかでは貴重な1msが稼げることもままある。 そんなことより ルーチン見なおしたり、DLLに投げちゃった方がよっぽど効果あるけどな…
理屈ではファイナルファイトクラスの処理ぐらいなら全然問題ない筈なんだけど このタイプのアクション作ってる人ってHSP以外でも見た事ないなぁ やっぱキャラパターンが多いから手を出しにくいんだろうか? これ以外なら大抵のジャンルのゲームはHSP製で見た事あるんだけど・・・
画面がスクロールするってだけでプログラムの難易度が思いっきり上がるような気がする
俺もそう思ってたけど、やってみたらそうでもなかったよ
横スクロールする事よりステージ構成や敵配置を考える方が難しいんかね
て言うか、なんでもバランスとるのがめんどいよね
バランスとるレベルまでいったらたいしたもんだよ
プログラム的、技術的な問題点はほとんど無いってことだもんな
まぁ、ないよ
個人の問題だな PSレベルのゲームをひとりやふたりで作れるものじゃない
¥は余りを出す anim=50なら anim/4=12 12\8=4 4*200=800 anim=50 gcopy 1,anim/4\8*200 x座標800、y座標0の位置から画像をコピー
animはフレームカウントだな。 4で割れば、4フレで一コマ進むってわけ。
動いてる敵の動きを止める→攻撃してきてまた動く 停止フラグ立ったら攻撃フラグ 攻撃終わったら移動フラグ・・・みたいな?
入れ込んでやってると目が辛くて死にそうになった
animがマイナス値になったら困るよね だから anim=anim+1\50 が必要じゃない?
オーバーフローするのは784日後だな。
802 :
名前は開発中のものです。 :2009/09/26(土) 03:19:49 ID:3AWNGTbT
キャラ移動させた時に残像?みたいなのが僅かに見えてしまいます 他の人のゲームでは綺麗さっぱりに描画出来てるのになんででしょうか・・・ やっぱフレームの問題?
redrawの説明読んでください
hspogg.asでoggを鳴らしながらwavを重ねたいんですが、 wavを重ねるとoggがおかしくなります。 これは仕様なんでしょうか?
仕様です 諦めてください
音の重ねはDirectSoundが使えるプラグインが必要だよ
ああ、やっぱダメなのかこれ… dmmloadやdmmloopのパラメータもoggはヘルプの説明と違うようだし予感はしてた。 oggとwavは同時に鳴らせないと明確に書いといてくれればいいのに… 回答ありがとね。
電子レンジで動物を乾かそうとして殺したばあさんの話を思い出した
死ねばいいのに
電子レンジで死ねばいいのに
はやく
はやく!
電子レンジで動物を乾かそうとして殺したばあさんの話を思い出して 電子レンジで死ねばいいのに
電子レンジで動物を乾かそうとして殺したばあさんの話を思い出して 電子レンジで死ね
電子レンジで動物を乾かそうとして殺したばあさんの話を思い出して 電子レンジで死ね
大切な事だから3回ぐらい言いました
スクロールアクションもののゲーム作ろうと思ってるんだけど Direct3D使うとして、背景はいちいち小さな正方形テクスチャで分割してやらないといけない? 一般的にはもっとうまい手法ある?
アクションゲームツクール
なにそれこわい
821 :
名前は開発中のものです。 :2009/10/04(日) 19:52:35 ID:VQdDtAQU
一定時間ごとに敵を出現させたいのですが 敵の出現カウントを1ずつ加算、10になったら敵を出現 その後カウントを0にしてまた最初から加算・・・っていう方式でやれば 一定時間ごとに敵が出てくると思うのですが if 敵の出現カウント=10 {敵出現フラグ=1} としているためカウントを0に戻すと敵のフラグも0になってしまいます この方法では無理がありますかね・・・?
なんで? その場合カウントを0に戻しても敵出現フラグは1のままだと思うが
等号の<と≦を間違えて出現カウント9で0に戻してるとか 出現フラグ=1にする前にループを抜けてしまってるとか そういう凡ミスじゃないの
ソース晒そうよ
その必要はなかろう
HSPって海外ではつかわれてないよね?
外国人でも使ってる人はいる 当然超マイナーだがな
先生、質問です! んと、乱数を均等に配分したいんだけど、どうすればいいんすかね たとえばdim a,20を全部rnd(10)にしたとき10が2コ、9が2コ、8が2コ…みたくしたいんす
a=10,10,9,9, (中略) ,2,2,1,1 としといて i=rnd(20):j=rnd(20):t=a(i):a(i)=a(j):a(j)=t って好きなだけ繰り返して並び替えろ。 っとrnd(10)がどの範囲の値を返すかわかってるだろうな?
10が出ないねw
831 :
あ :2009/10/05(月) 21:41:33 ID:LBC7CV67
HSPで多重起動ツール作ったのですが、2つまでは起動するのですがそれ以上できないのです。 1つ目のアプリがロード中に書き換わったら2つ目起動、2つ目がロード中に書き換われば3つも起動できるのですがPIDがランダムなので2つ目はアタッチしてくれません。 HSP言語で自動でPID取得してアタッチしてくれる命令教えてください。
>>829 あざっーす、さっそくやってみるっす
rnd()は0からはじまるんでした
むー、頭に入りきらない…
また、質問させてくださーいっ
821なんですが 敵出現カウント++ if 出現カウント=10{ 出現フラグ.cnt=1 出現カウント=0 } この場合ではカウント10になった瞬間だけフラグが1になるようです フラグはカウントが0になるまでの一瞬の間だけ1になっているようで 画面端で敵がほんの少しちらちら映ります 敵1のフラグを1にしたら次は敵2のフラグを・・・っていうことを考えてました
>>833 それは描画命令とAwaitの実行されるタイミングによるだろ
ソース見せろ
あと、redraw使ってるか?自前でbuffaつくってダブルブァッファにしてもいいけど
>>833 出現フラグを0に戻す処理はどこに入れてるの?
自己解決 カウント0にしない方法でなんとかなりました すいませんでした・・・
いや、それは根本的解決じゃないだろ 絶対にどこかで処理ミスがあるから、放置せず原因を突き止めて直した方がいいぞ。 カウント0〜9以下の間に、どこかでフラグを0にしてしまっているというか ループの間隔やタイミングを自分で把握できてない。 なぜチラチラ映るかって、1/10ずつ高速で明滅を繰り返してるからだ。 そもそも出現トリガーと出現中のフラグっていうか処理は分けて考えるべき。
ちなみに、画面消去にclsを使うとチラつく
redraw使えばチラつかんよ
>>839 何言ってんだ?
clsはredraw 1と同等の処理もされるからちらつくんだよ
ゲームオーバー画面やタイトル画面にそれぞれredraw0 redraw1 つけてるけど この使い方は間違ってる?
それじゃ誰もわからんよ redraw 0 この間に描画命令を置けば書き換え途中の物が画面に出ないってだけ redraw 1
なーるほど あーりがとう
講座サイトとかでは、真っ先に書かれてるようなことを・・・
846 :
名前は開発中のものです。 :2009/10/07(水) 21:10:59 ID:F1Tk0rxE
ツクールシリーズみたいな「お手軽ゲーム作成ソフト」に限界を感じてhsp3を使い始めたんだけど、 そこらの講座を探しても知りたいことが見当たらないから2つほど質問させてくれ。 dim a,20 でa(1)からa(20)の変数を作成して、 このうちa(6)からa(10)までの変数全てに5を加算するには、 つまりa(6),a(7),a(8),a(9),a(10)にだけ5を加えるにはどうすればいい? また、 b=7 a(b)=5 という具合にbで指定した変数に値を代入する方法をとるにはどうすればいいだろうか?
>>846 まず、dim a,20 だとa(0)からa(19)までが作成される。
番号は0から始まるから注意な。
加算するなら、一つの例としてはこう。forの代わりにrepeat文も使える。
for i,6,11,1
a(i) += 1
next
あと、bで指定した変数に値を代入する方法に関しては、もうとっくにわかってるじゃん。
b=7
a(b)=5
でa(7)=5と同じ結果が出るよ。
>>847 やっぱりrepeatとか使ってループさせるしかないのか、
でも簡単な話に答えてくれてありがとう。
()内に変数入れたらエラー起きた気がしたが、気のせいだったようだ、すまない
>>848 bがint型じゃないとエラーになると思うよ
すみません、一つ質問させてください。 HSP3.2、hspdxで、 buffer〜:es_buffer〜 ってやるとシステムエラーが出るのですが何故でしょうか? バッファで画像合成してes_bufferで送り込むのは出来るんですが遅いので、オフスクリーンバッファを先に確保してes_xferで貼り付けようと思ったんですが。
es_xferはクリッピング無し はみ出すとエラーが出る 後、確保していないバッファへコピーしようとするとエラー はっきり言って、その書き方じゃどのバッファから どんなバッファに対してやってるのかも分からないから エラーが出るスクリプト出せ
すっごく基本的な質問ですみません ボタンを複数同時に作成する方法ってないでしょうか? ボタン1、ボタン2…という感じにしたいんですが ラベル指定のところでcntがうまく入らなくて
ボタンは複数つくれるよ。 なんか変なことしてないか? cntが上手く入らないってなんだよ。 どんな風に書いてるのか見せてみ。
>>852 //ボタン処理サンプル
//指定するのは『ボタンの名前』と『処理のとび先』
button gosub "button1",*botan01
button gosub "button2",*botan02
//メインループ
//(キー入力があったら終了するだけの仮処理)
*mainroop
await 1
onkey goto *owari
goto *mainroop
//ボタン1を押されたときに行う処理
*botan01
print "ボタン1の処理"
return
//ボタン2を押されたときに行う処理
*botan02
print "ボタン2の処理"
return
//プログラム終了
*owari
end
855 :
850 :2009/10/09(金) 18:07:22 ID:MHXSwRS3
>>851 すみません自己解決しました。
es_screenの前にes_bufferを使っていたのが原因でした。
>>854 onkeyはループ中に入れなくていいのと、せっかくならオブジェクトID使ったほうがよくないか?
例えばこんな感じ
onkey goto *owari
button gosub "button1" *btn :id1=stat
button gosub "button2" *btn :id2=stat
stop
*btn
if stat=id1 :gosub *syori1 :return
if stat=id2 :gosub *syori2 :return
return
*syori1
mes "syori1:"+stat
return
*syori2
mes "syori2:"+stat
return
*owari
end
857 :
名前は開発中のものです。 :2009/10/09(金) 20:19:31 ID:jiVDQDl4
HSPでゲーム作成してる人 どのサイトから始めました? お勧めサイト教えてください(゜∀゜)
あなたとは気があうかもしれない
質問です。 //敵の名前,体力,攻撃力,防御力 "いぬ",15,10,3 "ぬこ",10,8,3 "へび",11,11,7 みたいな形で、RPGの敵データだけを格納するファイルを上記のような形にし、 本体とは分けておこうと思ったのですが、 "いぬ",15,10,3 "ぬこ",10,8,3 "みけぬこ",11,8,5 //←追加 "へび",11,11,7 このように後からデータを途中に差し込もうと考えているので、 noteloadやnotegetなどで『指定行のデータを取得』するとなるとズレてしまうんです。 ラベルなどを使えば指定キャラを取得できそうですが、 それだと二行以上使って行数が肥大して見えにくくなってしまいますので、 どうにかして途中に差し込んでもズレない方法、 もしくは行頭の『敵の名前』を取得してその行を取得できる方法はありませんでしょうか? 説明、および表記等等が下手ですいませんが、よい解答があれば教えてください。
>>860 普通にメモリノートパッドを一行ずつ調べながら、
欲しい「敵の名前」を持つ行を検索すれば良いんじゃね。
ミスした後、画面内の敵をすべて消して1からやり直しにしたいのですが 普通に残ってしまいます 画面暗転してる間に敵のフラグをすべてオフにしているのですが・・・
またお前か そんなんで分かるかアホ
え?またって・・・?
ラリってるんだろう 気にすんな
おれのプロファイリングの結果だと、別人という結論に達した
確かに前にいくらか質問したことはありますが
>>821 は自分じゃないです・・・
質問スレだけど質問しちゃいけないこともあるんですね・・・
しょーもない文句垂れの煽りを真に受けるようじゃ来ない方がいい
つーか前にもいくらか質問しといていまだにそんな質問してるようじゃこの世界向いてないかもしれん 前に質問したときはもっと詳しくとか言われなかったのか とにかくソース見せてもらわんと何もわからん
>>862 君の組んだプログラムが君がしようと思っているような処理の流れにはなっていない、とだけ言える。
その説明じゃ解らないので、ソース晒してくれた方が早いのも確か。
よし、対話方式でやってみよう 画面暗転はどうやってますか? 敵のフラグ、とはどう言ったものになっていますか?
wavファイルを2つ同時に再生って出来るか?
874 :
名前は開発中のものです。 :2009/10/12(月) 07:39:19 ID:oPHn0jxE
マジで?
876 :
名前は開発中のものです。 :2009/10/12(月) 20:32:15 ID:PMgmQhSF
コンテストも終わりか そろそろケチつけでもしようかな
>>860 ズレると何が問題なんだ?むしろズレると困るようなプログラム組んでることの方が問題
なんじゃね?それでもどーしてもズラしたくないなら途中じゃなくて最後に追加すると自分
の中で決めてしまうとか、
1,"いぬ",15,10,3
2,"ぬこ",10,8,3
4,"みけぬこ",11,8,5
3,"へび",11,11,7
みたいなデータにするとか。
>>862 敵のフラグをすべてオフにしているのに消えないのなら、フラグ以外の何かを参照してい
るんだろう。ちゃんと
・フラグが0なら描画しない
・フラグが0なら移動しない。
・フラグが0なら当たり判定を行わない
みたいなことができてるのか?あるいはお前がフラグをすべてオフにしているつもりでも
実はオフになっていないとか。
ていうかお前のプログラムはたぶんとても汚い。敵をすべて消して1からやり直しにする
んじゃなくてプログラムをすべて消して1からやり直せ。ソース晒せとか言ってる人は
>>862 の汚いプログラム全部読む気なのかねえ。
>>873 hmm.dll
>>877 今のコンテストにはもう魅力がないよ。おにたまは物理エンジンで祭りを起こそうとしてる
とうだけど効果が出てねえ。俺もとっくの昔にコンテストに応募するのやめてるよ。コンテ
スト無視してからの作品の方が人気が高い。
て言うか、何で怒ってんの?
質問。 hsp3.2、hspdxで、フルスクリーンにすると毎フレーム書き換えてる部分がちらついたり、スプライトが消えたりするんだけど何がおかしいんでしょう? es_syncをのp2を1にするとスプライトは表示されますがちらつきがひどくなりますし、2にするともっとおかしくなります。 スクリプトはだいたいこんな感じです。 *ループ on flag gosub *サブルーチン wpf=1000.0/fps es_sync wpf,0:await goto *ループ *サブルーチン gmode 0,640,480 pos 0,0 es_xfer -1,1,0,0 描画命令 es_draw return
またお前か そんなんで分かるかアホ
だったら無視しろよアホ
とりあえず、隙あらば罵倒したいってのは、どの世界でもいるね
PCのグラボがショボいんじゃね?
>>884 他のPC試してみたけど駄目だった。
>>885 gmode 0で上書きしてるから不要。
おかげさまでひらめきまして、es_xfer -1〜を、gsel 0:es_copy〜にしたら解決しました。
バッファ指定の-1と-2は封印したほうがいいみたいですね……
HSP3.2で、任意のタイミングで処理を中断して初期画面に戻りたいんですが、 gotoで抜けようとすると、sublevがどんどん溜まってしまいます。 大量のgosubを逐一チェックして戻るのは厳しいんですが sublevを任意リセットするか、このような場合にうまく戻る方法はありますか? ググると前のバージョンではgotoでリセットされたり sublevを直接で加減算できたりしてたみたいですが、3.2だとできないようでした。
>>887 そもそも設計がおかしい気もするけど。
フラグ立ったら以降の処理を飛ばすようにすれば(戻すのではなく流す)、いいんじゃね?
switchとか使って中断フラグがonの時はサブルーチン処理をスキップして メインループの終わりで初期画面に飛ばすみたいな感じじゃダメ?
gotoで処理抜け、てのが未だに馴染めなくて使ったことないんだけど 結構みんな使ってるものなの?
バカじゃねーの
goto使って抜けるって考えがおかしい そんな事やったらネストたまるのは当然
*画面1
if input=1 { gosub *画面2A }
…(略)
if exitbutton { *終了確認 }
goto *画面1
*画面2A
if input=1 { gosub *画面3A }
…
if exitbutton { *終了確認 }
goto *画面2A
*終了確認
if input=ok { goto *画面1 }
goto *終了確認
サブメニューみたいのが最大3階層まであって、大雑把には上記のようにしてました。
前画面ずつ戻るのは今まで全部処理してたんですが、
面倒なので一気に戻れる機能を付けようとしたら今回の問題が出てきました。
やっぱり設計がおかしいですか?
とりあえず、
>>888-889 を参考に地道に流す感じにします。
よくゲームなどで「タイトルに戻る」というのがあるかと思いますが
簡単に見えて、中では思ったより手間のかかる処理をしてたのかな。
>>893 *画面
switcn input
case 1
画面1の処理
895 :
894 :2009/10/15(木) 16:10:37 ID:QArj+d94
ゴメン、間違えて書き込みしちゃった忘れて
>>893 サブルーチンの組み方に問題がある。
まず
>>880 を見て欲しい。で、on gosubなりswichの飛び先が、
*終了確認
gosub *画面1
gosub *画面2
…
return
っていう感じ。
くっさ〜
ゲームを作ったのですが他のウィンドウを手前に出している状態でも操作できてしまいます・・・ 今こうして書き込んでいる時にもスペースを押せばキャラが動いています なんででしょうか・・・
ウィンドウを手前に出している状態でも操作出来るように作ったから
>898 stick使ってるなら、stickの引数で無効に出来る。使ってないならわからない。
>>900 getkey使ってました・・・
ありがとうございます
ginfoで都度チェックじゃないかな。
windows7がでたら値が下がったXP買うつもりです 7は5年後に買ってやろうかな
905 :
名前は開発中のものです。 :2009/10/25(日) 16:42:00 ID:Y5hRjsLT
HSPはやめてCにしろってよく言われるけどなんで?
>>905 HSPよりCの方が優れていると信じて疑わないから
HSPもCも一長一短なので状況に応じて使い分けるのが正しい
業務用プログラム開発の現場でHSPを使っているところはないからそういう職種に就いたときにHSPでの知識や経験が直接は役に立たない。 ってのがよくあるパターンの理由1。 あとは HSPはレベルの低いプログラミング言語でそれを使う人間も低レベル。それに気づいてHSP使うのやめた・そもそも使ってない自分はそんなやつらよりも高レベルの人間。 ていう認識による優越感を持った人がもったいらしい理由をつけてHSP使ってる人を見下して馬鹿にしてるだけっていうのもある。
まぁ小規模なアプリの開発を以外では一長四短ぐらいだからCも知っとくのはいいことだ
おれ、何年か前に比べてずいぶんとHSPを見直すようになったね だって、わりと何でも出来るっぽいんだもん
本格的な建築物を組むのに必要な本格的な道具がCなら 日曜大工程度の物を作るのに十分なのがHSP、って感じだと思う。
逆に細かいものもCだな
とにかく、ちょっとしたゲームやツールを作るのには手頃 ……と思って、素人の漏れがゲーム作ってたら数千〜1万行規模になっちゃって、 ニンともかんとも
おれもー 3000行とかって、あっという間なんだね
よくスパゲティにならないな。 俺なんて300行ですでに混乱。 ちゃんと一から設計しなおすか・・・orz
俺まだ作ってないけど、規模大きくなって見づらくなるの嫌だからモジュールってやつをこまめに作ればいいかなと 考えてるんだが、メインの1ファイルに詰め込むのが主流だったりする?
細かすぎても煩雑ってことはあると思う
あくまで漏れの素人としての意見。 gosubでもモジュールでもいいけど、機能ごとに分けるのは必須。 で、原則的には一つのルーチンで100行くらい以上は書かないようにする。 filename="xxxxx.xxx" みたいなデータ内容定義の部分はなるべく一カ所にまとめておく。 isEnemyAlive みたいに変数名は長くなってもいいから一目で分かるものにする。 ex=cnt みたいな短い変数名はループ内とかごく狭い範囲でのみ使ってもいい。 というか命名規則みたいなものは考えておく。 あとは適度にコメント残しておくだけで、 大体どこ見ても何が書いてあるかすぐ分かると思う。 それからゲーム作る時はなにげにグローバル変数的なものが多くなる気がする。 モジュール使うといちいち@つけないといけなくなるし、 @つけ忘れると思わぬ値が0化されちゃっててハマったりする。 とはいえ変数が局所化されるのもメリットではあるし。 モジュール化必須の場合もあるけど、そうでないこともあるんで ケースバイケースで使いやすいよう、見やすいように書いていく。
いや、全く同意見
質問です 人対PCのボードゲームを作っていますが HSPでグラフィックをやって 思考エンジンはC言語で書いてます 人が画面上で一手打つとその着手の情報(1バイト程度)をC言語のプログラムに送り それに応じて思考エンジンから次の着手の情報を(やはり1バイト程度)をHSPに送り返したいのです たった一バイト程度のやり取りをできるだけ簡単にすませたいのですが お勧めの方法があれば教えていただけませんか ちなみにC言語はある程度知識がありますがHSPはまったくの初心者で dllとか関係ありそうだけど難しそうだなあ、と感じている程度です(偏見かもしれませんが)
>>921 ありがとうございます
cfuncをググッて見ましたがdllと関係しているようで
今のところどうも理解できません
苦手意識が強すぎますか
dllでなくスタティックテキストでやる方法はありませんかね
noteloadあたりを使えばできるのかなと思うのですが
>>922 ざっとググってみたけど、dll作るの別に難しくないっぽいよ。
あとは#uselibでdll呼び出して、#cfuncで関数登録するだけじゃん。
あと、特にメモリノートパッド命令を使う必要がなければ、bloadしてpeek,poke等で処理したほうが圧倒的に速い。
というか、プログラム二つ同時に走らせるのか?
>>923 ありがとうございます
bloadしてpeek,poke等でやるほうが簡単そうですかね
その場合○○○.txtを同じディレクトリに作っておいて
HSP 側ではpeek,poke
C言語側ではfopenしてfgetc,fputcを使うことで
双方からの書き込みと読み込みができるという考えで基本はいいのでしょうか
>プログラム二つ同時に走らせるのか?
HSP 側からexecを使ってC言語のプログラムを開こうと思っています
>>924 バイナリデータをテキストファイルで出力したりしない。
一時ファイルは.tempとかじゃなかったかな。
二つ走らせると、同期取ったり終了メッセージ送ったりと1バイトじゃ済まないと思うよ。
下手したらAPI呼ぶ必要があるかも。
かえって面倒臭くね?
>>925 別に拡張子を何にしようと自由だろ
まあ.txtで中身がバイナリデータってなんか気持ち悪いけどw
相互通信に通常のファイルを使うのは悪手だと思う。 WM_USERやソケット使ったほうが素直じゃないか? パイプやメモリマップドファイルでもいいけど若干面倒。
>>925-927 なるほどテキストファイルにする必要はないのですね
.txtしか扱ったことがなかったものでそうするもんだと思ってました
ググッたらlpeek、lpoke、なるものを使えば4バイトまで送受信できるみたいなので
なんとかなると思いたいのですが、、、、
それでどうにもならないなら
>>927 さんの言う方法を取るべきなのでしょうが
まだ使われた用語がまったく理解できていません
勉強が必要だと思います
ググッてもなかなかhspとC言語プログラムを並走させたサンプルファイルが見当たらないので難しいです
hspはグラフィックはとても楽で気に入り始めたんですが、データのやり取りは大変なんですかね
素直にDXライブラリでも使ったほうがよかったのかな
つクリップボード
930 :
名前は開発中のものです。 :2009/11/08(日) 04:04:23 ID:gssM4f4Z
HSPで通信対戦の3D武器格闘を作りたいのですが、できますか? キャラクター同士が遠方から弾丸を打ち合い、時々近づいて 剣で斬りあうような物を想定しています。通信を可能にするプラグイン として次のようなものがありました。 O2 System、 pcbnet2、 gDP、 pcbnet2で通信ロボット格闘を作った人をネットで見かけましたが、通信が不安定という 事で、辞めてしまった人がいました。やはりHSPで3D格闘は無理なのでしょうか? 成功例を見たことがありません。
あなたが一番目の成功例になるべきだ!
HSPだからというよりはリアルタイムネットワーク対戦格闘ゲーム自体が難しい LAN内ならともかくインターネット越しだと通信遅延を考慮した設計しないと
コンテストでネット対戦実装してる人多いけど みんなかなり凄かったんだな
935 :
930 :2009/11/10(火) 03:41:19 ID:+PPe6Flj
>>934 失礼しました。
確かにネットでロボット格闘を製作されていた方は製作を続けていました。
ネット対戦部分だけを凍結されているだけだったようです。
wwww
937 :
名前は開発中のものです。 :2009/11/21(土) 23:55:57 ID:CpvOk4km
ゲーム作るとき、一番最初のメインはどこにすべき?タイトル? そこからgotoでゲームの処理ラベルに飛ばすべき?
結論出てるじゃないですかぁ〜?
939 :
名前は開発中のものです。 :2009/11/23(月) 21:22:07 ID:IiZX1H9P
アクション系でSetTimer、KillTimerを多用してgosubして描画とかしようと思っているんですが 特に問題ないですよね?
最近のパソコンを対象にするなら、あまり気にしなくていいし、 少しくらい古いのでも描画そのもの以外はたいしてネックにならない。 逆にいうと描画部分は他と比べて圧倒的に負荷が大きいんで、まずはそこに留意。 画面何枚か重ねたりするとすぐ厳しくなるから、それなりに調整や工夫は必要。
SetTimerって数十ミリ秒の精度しかないからアクション性の高いゲームだと辛くないか?
画面を何枚か重ねるって時代なのか 家のパソじゃ動かないだろな
TK-80とか使ってるって?
944 :
名前は開発中のものです。 :2009/12/12(土) 22:49:13 ID:kKlh1ECO
ついにHSP本スレは立たなくなったのか
>>941 進研模試でいうとfjがおよそ偏差値45、民放地上波は約40、
ニュース速報+は35程度を対象にしています。
ウンコブリブリ
947 :
名前は開発中のものです。 :2010/01/18(月) 22:53:06 ID:EgqVpQsE
実行中のAXファイルのパスを知りたいのですが・・・
何のために
949 :
947 :2010/01/19(火) 22:00:11 ID:iLKnSPMj
ストレートなやり方がないのなら、ないと書いてほしいんですが・・・
なくもない
ABCDE = "ZZZZZ" #packopt name ABCDE でexe自動作成すると ABCDE.exe になってしまうのですが出来ないのでしょうか?
>951 できません。 #pack命令では変数を使えないとマニュアルに書いてあります。 #packopt name ZZZZZ と書くしかないと思います。
953 :
951 :2010/01/27(水) 22:15:30 ID:osHympd8
>>952 レスありがとうございました。
う〜ん残念。
954 :
名前は開発中のものです。 :2010/03/20(土) 00:14:11 ID:CElBeO+E
age
モジュール変数内のモジュール変数の各要素を直接参照することはやっぱりできないんですかね hoge.cnt@module みたいにするとダメみたいです やっぱりイチイチ参照用の関数書かなきゃいけないのか・・・
>>955 > モジュール変数内のモジュール変数の各要素を直接参照することはやっぱりできないんですかね
> hoge.cnt@module みたいにするとダメみたいです
なぜそれでイケると思ったのかわからないけど、上記のことをするための文法がないからね。
モジュール側で、要素変数 _x の内容をゲットするための x@module みたいな名前の
関数(#modcfunc)を作っといてそれを呼び出すしかないと思う。名前を工夫すればかなり
短く書けるのでは? それでも x@module(modvar) とかの長さになっちゃうけど。
>>956 それもダメっぽいんですが
>>957 やはりそうするしかないのでしょうか。
今RPGっぽいゲームを作っていて、
Playerモジュールのmodinit時にItem_Backpack(道具袋)モジュールなどをnewmodしているのですが、
こういうのはMain関数なりなんなりで独立してnewmodするのが普通なんでしょうか。
上記のようなおそらく1つしか生成されないモジュール変数ならともかく、
例えばEnemy_Controlモジュール内にEnemyモジュールなんかを複数生成する場合もあると思うんですが、
やはりモジュールはMain関数やメインループで全て宣言しておいたほうがいいんでしょうか。
あと、例えばPlayerモジュールとEnemyモジュールって似通ったパラメータが多いので
いわゆるクラスの継承みたいなことを簡単にやれる方法はないものでしょうか。
C++とかはよくわからない(&画像とかを表示する方法が不明)なのでHSPを使っておりますので、
C++やれ 的なお答えはご容赦いただけるとありがたいです。
>>958 モジュール名と変数名合ってる?
#module もじゅーる
#deffunc だいにゅう
へんすう=1,2,3,4,5,6
return
#global
だいにゅう
repeat 6
mes へんすう@もじゅーる.cnt
loop
960 :
957 :2010/03/23(火) 15:43:48 ID:yEWpRNqM
>>959 単なるモジュール内変数の話じゃないと思いますよ。
#module もじゅーる x
のxとかのことです。ここに書いた変数はソース上では一つでも、実行時にはnewmodする度に
別のものが新しく作られます。C++で言うクラスとインスタンスみたいなもの。HSPではインスタンス
を入れとく(参照する)ためのものが「モジュール変数」。
>>959 ええと、自分が質問しているのはこういう奴です
#module b_mod prm
#modinit
repeat 10
prm=cnt
loop
#return
#global
//メイン関数
newmod b,b_mod
;mes str(
[email protected] ) ;←エラーになります
mes str(prm.5@b) ;←エラーになります
ちょっと修正
#module b_mod prm
#modinit
repeat 10
prm.cnt=cnt ;←修正前 prm=cnt
loop
#return
#global
//メイン関数
newmod b,b_mod
;mes str(
[email protected] ) ;←エラーになります
mes str(prm.5@b) ;←エラーになります
963 :
957 :2010/03/23(火) 16:18:13 ID:yEWpRNqM
>>958 > あと、例えばPlayerモジュールとEnemyモジュールって似通ったパラメータが多いので
> いわゆるクラスの継承みたいなことを簡単にやれる方法はないものでしょうか。
機能としては用意されてなかった気がする。PlayerモジュールとEnemyモジュールの共通
部分をCharacterモジュールとして分離してそれをnewmodしたものを持つようにするとか。
あとモジュールAをnewmodしてその中でモジュールBをnewmodしたりするのは大丈夫だと思う。
自分もやってるので。
あと、それに関連してメイン関数から直接各モジュール変数の要素であるモジュール変数の要素を
参照する記述方法ってないですよね。
今やってるのは
#module a_mod aaa
#modinit
aaa=rnd(5)
return
#modcfunc get_aaa
return aaa
#global
#module b_mod prm
#modinit
repeat 10
newmod prm,a_mod
loop
return
#modcfunc b_get_aaa int prmnum
return get_aaa(prm.prmnum)
#global
//メイン関数
randomize
newmod b,b_mod
mes b_get_aaa(b@,rnd(10)) ;←こんな感じなんですけど
もっとスマートな方法はありませんでしょうか
個人的には
[email protected] @b こんな感じで参照できれば一番いいのですが
>>963 やはりないですか。ありがとうございます。
>>964 みたいな手間がかかるので、なるべくモジュール変数内にモジュール変数は持たせたくないのですが、悩みどころですね
そもそも外部から参照しないのがモジュール化というものではないのか?
そうだね。マニュアルにも命令・関数経由でしかアクセスできないって書いてあるしね。
そうはいっても参照したいじゃないですか それとも各モジュールごとに描画機能持たせるとかするべきなのかなー
969 :
959 :2010/03/24(水) 03:16:35 ID:50GIZoHj
勘違いしてたのか。話をややこしくしてすまん。
モジュール内のローカル変数っていじったあとにまた呼び出したときはゴミ が残ったままですよね??
HSPの場合、モジュール内にただ書いただけの変数はローカル変数じゃないよ。 モジュール外と同じくグローバル変数。モジュールの内と外で同じ名前を使っても 別物として扱ってくれるというだけ。(Cのstatic変数みたいな感じ?) HSPでローカル変数を使いたい場合は、#deffunc(およびその他同種の命令)の行で 引数に続けて(コンマで区切る)、local hogeなどと書いて明示する必要がある。 local指定した変数は定義した命令や関数が呼ばれる度に0で初期化される仕様だった と思う。
メモ帳
>971 サンキュ HSPは明示する必要があるんだね 漏れLGP使っているのだけど実験してみたら呼び出す度に初期化されてるわ
mmload と mmplayを使ったんだけど wavサイズの大きさでpackできないというか、ならなくなったりするんだけど、 これはどういう仕様? 音も一音ずつしかならないと書いてあったけど、 大と小で別れて鳴る。メモリに2MB云々とはあったけど、これが関係しているの? あとHSPスレってなくなったの?
2MB以上になるとファイルから直接読もうとするため、 パックファイルやmemfileから再生出来ない。 hsprtをバイナリエディタで書き換えてやれば再生可能にはなる。 #80 84 1E 00 → #FF FF FF FF
>975 レスアリガトン。ただ初心者過ぎてバイナリとかワカラン。スマン。 とりあえず仕様ということで納得いたしました。 button gosub "おわり",*a *a mmload "a.wav",0,2 mmplay 0 end こんな感じでボタンを押した時に音声を再生して終了するボタンを作ったんだけど、 音声が再生している間にもう一回押すと、また再生されて・・・ となってクリックし続けると終了しないことになるんだけど、 これはボタンの仕様ということでいいの? 間にclsはさめばボタン押せなくなるから大丈夫なのは試したけれども。
仕様だろうね。 ボタン無効化するならobjenableで。
>977 トン。そして3.1の俺に死角はなかった。 objenableおぼえときます。
HSPではクラス作れないからオブジェクト指向言語ではないというのは本当か? HSPにはコレクションフレームワークがないというのは本当か? HSPにはリスト、ハッシュマップ、キュー、スタック、セット、イテレータが存在しないというのは本当か? HSPにはJava Generics、C++ templateに相当するものは存在しないのか? HSPにはprivate、protectedといったアクセス権を設定することはできないのか? HSPではグローバル変数を禁止することはできないのか? HSPには例外処理が存在しないのか? HSPではクラスが作れないなら、かわりにPerlやJavaSctiptのように擬似的なオブジェクト指向を 実践することはできないのか? HSPにはJavaのpackageやC++のnamespaceのような概念はないのか? HSPをケースセンシティブにすることはできないのか? HSPではメソッド(関数)のパラメータや特定の型のオブジェクト、変数に特定の型の代入を禁止することはできないのか? HSPでオブジェクト指向を実践できないなら、Gang of Fourのようなデザインパターンを実践することもHSPでは不可能なのか?
>>979 そういう事自体が目的なら無理にHSPを使う必要が無いので悩むだけ無駄
さんざん言われてきた事だけど 「ちょとしたことが手軽にできる」のが売りの言語に、意図と違うものを求められてもな。 ウィンドウを表示し背景色を赤から青へグラデーションさせるスクリプトを30秒で書け。 HSPならコピペすら使わず簡単なこの程度の要求を満たせないから、 C++やJAVAはHSPより生産性の劣る言語だ、とも言えてしまうのでは?