HSP - Hot Soup Processor [14]
( ,,,)
.( ,,) スクリプト言語 HotSoupProcessor について
( ,,). ゲーム製作の視点から、また~りと語り合うスレ。
, -──- 、
(,;::-──-; )-、
.|` ̄ ̄ ̄´;;|ヽ l * 質問する前に検索してみる事
l; :::;;;l-' / * ヲチ、ネタなどはスレ違い
,-ヽ───.'-、´.. * 歴代スレ、関連サイトは
>>2-4 あたり
ヽ ──── '
ONION software (本家)
http://www.onionsoft.net/
Q&A
Q HSPで○○は作れますか?
A あなたの努力と根気次第です。じゃんけんからRPGまで、
ありとあらゆるゲームが作成可能です。
Q 構造体は使えますか?
A 使えません。但し、モジュール変数という型が用意されています。
Windows API を呼び出す際は、構造体の変わりに配列を使用します。
Q ポインタはありますか?
A 文法上では正式にサポートされていませんが、
varptr などの関数で変数のポインタを取得できます。
ユルサン
8 :
名前は開発中のものです。:2006/12/10(日) 01:26:18 ID:zccatKOK
Q&A
Q HSPで○○は作れますか?
A あなたの努力と根気次第です。じゃんけんからRPGまで、
ありとあらゆるゲームが作成可能です。ただし、速度には気をつけてください。
あなたの環境で動くからと言って、あなたよりロースペックのマシンでも同じよう
に動くことは保証できません。あなたの環境がロースペックだったりすると、てっ
きりawait 16で調節しているから大丈夫だと思っていたら、実はあなたの環境で
は16msを超えていて、あなたよりハイスペックのPCでは速過ぎて恐るべき難易度
になっているかもしれません。まあそんなことを言い出したら他言語でも似たような
もんですが、HSPはインタープリタであるが故に、他のコンパイラ型言語に比べる
とリスクが高いということです。まあ所詮HSPなんだからメインの用途はフリーソフト
と考えましょう。それでもシェアウェア、同人ソフトを作りたいなら、あんまし速度の
ことを気にしなくていいアドベンチャーやRPGタイプのエロゲにしとくのが無難です。
これまたそんなことを言い出したら他言語も同じような状況ですが。
Q 構造体は使えますか?
A 使えません。但し、モジュール変数という型が用意されています。
っていうかいいですか?ここはゲ製作板です。あなたがツールを作りたいのであ
れば、構造体を使いたいという気持ちは分かります。しかしね、ここでの目的は
ゲ製作なんですよ。ゲ製作を知りたきゃゲ製作の歴史を学ぶことです。芸無狂人
氏や中村チュン氏が、構造体を使ったんですか?MSX時代のコナミが、構造体を
使ったんですか?そんなもん使わなくても、ゲームは作れるんです。確かに構造体
を使うことによりプログラムが美しくなったりするかもしれません。ですが、ブツは
HSPです。あなたはHSPのソースを誰かに見せるんですか?
Q ポインタはありますか?
A ハア!?ポインタをいったい、何のために使うんですか?メモリを節約したいんで
すか?速度を速くしたいんですか?いったいいつの話をしてるんです?縄文時代
ですか?いいですか?ブツはHSPです。あくまでの趣味での利用がメインです。
あなたは、HSPを個人で使います。誰にもソースを見せません。
Q HSP3用の逆コンパイラはありますか?
Q ポインタはありますか?
A varptr()で変数のデータ領域のポインタを取得できます。また、dupptrで特定のポインタをさす
特定の型の変数を宣言できます。これらは、外部DLLとのデータのやり取りなどに利用できます。
初っ端から質問で悪いんだけど
hmm.dll他拡張プラグインの命令ってモジュール内では使えないの?
昔のプラグインは宣言時にglobal指定されていないので関数に @ を付けるべし
で、HSP3の逆コンパイラ マダァ-? (・∀・ )っ/凵⌒☆チンチン
>>12 @もそうだが、ne.jpも忘れるなよ。おk把握?
16 :
名前は開発中のものです。:2006/12/11(月) 20:20:17 ID:aS2OzGdA
17 :
名前は開発中のものです。:2006/12/11(月) 20:52:35 ID:AyvkJWpa
おれもあるサンプルスクリプトみてて@がついてるのみて
なんだ?と思った
18 :
名前は開発中のものです。:2006/12/11(月) 21:05:51 ID:v6qY7QEq
HSP難しいナリィとか言ってる奴たまに見かけるけど何なの?
HSPが難しいとか言ってる奴は多分人生上手く過ごせないんじゃないの?
HSP難しいナリィ
20 :
名前は開発中のものです。:2006/12/11(月) 22:09:36 ID:Ryo2anDC
HSPむず痒いナリィ
ナリィ
HSPと人生を比べるほうが難しいナリィ
23 :
名前は開発中のものです。:2006/12/12(火) 04:09:13 ID:NMRZ9Hz0
命令の実行速度を調べるのに
タイマー系の命令って何を使えばいいですか?
色々あるけど精密な時間を取るのにオススメがあったら教えてナリィ
timeGetTimeナリィ
>>23 gettime()を秒換算して1万回単位で計測すればどうかと
その引いた差分が経過時間なのだから
もっと細かいのは知らん
SNRI
ソニー
∧_∧ 任天堂?スクエニと組んでボコボコにしてやんよ
( ・ω・)=つ≡つ
(っ ≡つ=つ
/ ) ババババ
( / ̄∪
ソニー スクエニ
∧_∧ ∧_∧
;;;;;、(・ω(:;(⊂≡⊂=(・ω・`)
(っΣ⊂≡⊂=⊂≡ ⊂)
/ ) ババババ ( \
( / ̄∪ ∪ ̄\ )
任天堂 ソニー スクエニ
∧_∧ .・,'∧_∧;,. ∧_∧
(´・ω・)=つ≡つ);;)ω(;;(⊂≡⊂=(・ω・`)
(っ ≡つ=つ (っ ⊂) ⊂=⊂≡ ⊂)
/ ) ババババ | x | ババババ ( \
( / ̄∪ ∪ ̄ ∪ ∪ ̄\ )
>>23 BASIC+マシン語の時代からゲ製作やってるおっさいから見ると、おまいのやってる
ことは木を見て森を見ずだと思うぞ。そんなこと気にしてるうちにどんどん時間は過ぎ
ていく。いやむしろBASIC+マシン語の時代の人々は、BASICの各命令を実行するのに
かかる時間を精密に計測する奴なんてごくわずかだったろうな。速くしたきゃマシン語
使うしかないことは分かりきってたんだから。
そんなことしてるうちにどんどん年月が経ち、「こんなおっさんになって、フリーソフト
のゲームなんか作ってる場合か?」って思うお年頃になってくるぞ。人生のうちで作れ
るゲームの本数は、おまいが思ってるほど多くない。HSPの命令実行速度を分析して
る時間があったら、どうやったら面白いゲームになるのか?を考えるのに頭を使った
方がいい。幸いにして昔のBASICと違い、今はインタープリタのHSPでも、少々非効率
的なプログラミングをしてもなかなかの速度が出る。
てかWindowsのせいだよな。自分のPCではちゃんと動くが、古いPCやノートではまと
もに動かないかもしれない。シェアウェアならそこまで気にしなきゃいけないかもしれ
ない。しかしフリーソフトならそんなこと気にしなくていいはずだ。動かない?ハッ!
知らないねえ。だってタダなんだから。動かないんならあきらめてくれよ。
ところが実際にはフリーソフト作家はそういうふうには割り切れない。環境による違い
はいつまでも悩みの種としてつきまとう。今はインターネットの時代で、容赦なくコメント
をつける。「動きませんよ。遅いですよ。OSはなんとかです」と。んなもんOS名教えて
もらったって対処できないよなあ。
ぶっちゃっけ俺はノート、しかも結構年数のたったやつだ。今のフリーソフトの弾幕
シューティングをやると20、30fpsとかに落ちる。でも俺はそんなことには怒らない。
むしろ「またCAVEかよ」って思う。「CAVEもういいよ」と。
HSPの命令実行速度を調べることが素晴らしいアイデアにつながってるんなら頑張っ
てやってくれ。ナリィ。
俺
∧_∧ 長文?読解力のある俺がボコボコにしてやんよ
( ・ω・)=つ≡つ
(っ ≡つ=つ
/ ) ババババ
( / ̄∪
俺 一文の長さ
∧_∧ ∧_∧
;;;;;、(・ω(:;(⊂≡⊂=(・ω・`)
(っΣ⊂≡⊂=⊂≡ ⊂)
/ ) ババババ ( \
( / ̄∪ ∪ ̄\ )
適当な改行 俺 一文の長さ
∧_∧ .・,'∧_∧;,. ∧_∧
(´・ω・)=つ≡つ);;)ω(;;(⊂≡⊂=(・ω・`)
(っ ≡つ=つ (っ ⊂) ⊂=⊂≡ ⊂)
/ ) ババババ | x | ババババ ( \
( / ̄∪ ∪ ̄ ∪ ∪ ̄\ )
>>29 マジレスすると
ボトルネックを調べたいんだろナリィ
超遅レスな上に全然共感できない長文書く
>>29は
NHKの集金人にでもなっちまえナリィ
簡潔にまとめる努力を
長杉だが大筋同意
まとめると
「細かいことに時間を使ってる暇があったら面白いゲームを考えろ」
って言いたいのだろうが、
俺に言わせれば、そんなどうでもいい事に対して長文書く暇があったら
世の為、人の為に尽くせと言いたいナリィ。
あと私情だが「タダで配ってるんだから文句言うな」みたいな思想は
俺は大嫌いだったりする
あ、ネタ?
というか新スレになってからちっとも進んでないから
いい燃料にはなってるかもな
むしろ、使ってやってんだから、文句ぐらい言わせろだよな。
>>29 他人に見せるために、
他人の目に触れる場所に出しておきながら、
他人が見ることを意識していない。
「一事が万事」という言葉があるけど、>29の文章からでも
おっさんがどのようなコードを書いて、どのようなゲームを作るのかが推測できる。
その結果が「動きませんよ。遅いですよ。OSはなんとかです」
といったコメントとして返ってきてるんじゃないか?
・今は非効率的なプログラミングをしてもなかなかの速度が出る
・実行速度分析よりも、どうやったら面白いゲームになるか考える
・動作保障しかねるからフリーソフト
もっともらしく聞こえるけど、すべて、
「効率的なプログラミング」「実行速度の速さ」「動作保障」
を実現することができないダメな自分を正当化するための言い訳にしか聞こえない。
命令の実行速度を調べる手間は、作品ごとに、毎回かける必要はない。
一度苦労して高速化・効率化のノウハウ得てしまえば、
後の作品では、それを応用するだけで済む。
それにより「遅い」と言われなくなるのなら、惜しむような手間じゃない。
ゲームで【素晴らしいアイデア】が重要なのは同意するが
動作が遅いとか、起動しないとかでは、
アイデアを評価してもらう以前の問題だろう。
何かのコピペのような文章なのでスルーしようかとも思ってたが。
おっさん自身がどこかで感じてるであろう矛盾を読み取れたので、
少々酷かと思いつつ、レスした次第。ナリィ。
長文は読みませんよ。ナリィ。
ナリィ。
コーディングもこんな感じなのかね…
>>29 ループの最深部での小細工は通常の3倍の効果だぜ。
>動きませんよ。遅いですよ。OSはなんとかです
つか、おっさいの数年前のノートでちゃんと動くなら
他の誰も遅い、とは言わんのでは...
ここはオサーンばかりのスレですか?
現役幼女でHSP弄ってるのは俺だけか
42 :
名前は開発中のものです。:2006/12/15(金) 22:43:16 ID:t2gc+Unq
HomoSexualProcessor
43 :
名前は開発中のものです。:2006/12/16(土) 01:56:14 ID:3Mpm6pG4
2004年LegendUse
HSPでスパロボ風ムービーは作れるんでしょうか! 教えてください!
真面目な話、量産のためのツール作りとか加算とかどうやっていいんだか全然わからんなぁ
45 :
名前は開発中のものです。:2006/12/16(土) 22:50:57 ID:6JH5y41f
>>44 >>5 >真面目な話、量産のためのツール作りとか加算とかどうやっていいんだか全然わからんなぁ
量産?加算?よく分からん
最初は皆全く分からない
自力で調べたり上達の道を歩ける奴は普通 出来ない奴は低脳
その前に44が言っている意味がわからん
48 :
名前は開発中のものです。:2006/12/17(日) 02:23:31 ID:2RjZZyjm
>>44 加算も分からんのだったらプログラミングは辞めたほうがいい。
いや、日常の生活にさえ支障をきたすと思うし、
君にぴったりな施設もあると思うから、おかあさんに相談してみましょう。
49 :
名前は開発中のものです。:2006/12/17(日) 11:39:29 ID:/yZ10mH4
加算ってプログラミング中の足し算?それともムービーをつなぐこと?もしくは何かの隠語?
50 :
名前は開発中のものです。:2006/12/17(日) 12:50:57 ID:80e7MdEp
>>44 res=1+1でおk
ムービーならmmplayでおk
あと日本語でおk
日本語が一番難しそうだな
52 :
名前は開発中のものです。:2006/12/17(日) 21:10:45 ID:ZuJdtId/
Hentai
Scatoro
Play
このスレ臭いです
画像の加算じゃね 基本的にまんま足し算なわけだが
hspdx。スプライトの管理(描画順とか)っていつも悩む。
あらかじめ用途ごとに区間を決めてやってるんだけど、
これでいいのん?
今は動いてるからいいんだけど、非効率な気がしてならん。
56 :
名前は開発中のものです。:2006/12/19(火) 05:12:09 ID:LrFDJRAp
hspdxならその方がいんじゃね?
そうしないとスプライトを全部をソートする必要が出たりするし・・・
hspdxfixならZソートあるから描画順を処理する必要ないけどな
(それでもスプライトNoの区分けはするが・・・)
57 :
名前は開発中のものです。:2006/12/19(火) 21:24:52 ID:vgSZU7fu
俺は大量に自動で生成するのは気にしないでプレイヤーとか重要なのだけを決めてる
楽だがなんか大雑把
結論としては、細かいことは気にするな、でおk?
hspdxは使ってないが、MSXでゲ製作してた経験から言うと、ってMSXでゲ製作した経験
から言わなくても同じだけど、やっぱ適当に決めていって後で直すんだろうな。
ノート(現代ならテキストエディタか?)に何番から何番までは何、って書きつつ、プログ
ラミングしながら増やしていく、と。で、敵の最大量っていくらにしよう。とりあえず32個
にしとこうか。ああ!あとで100個にしたくなったらどうしよう!プログラミングって案外
そういう細かい所で悩むんだよな。技術を極めていくのは楽しい。が、何かを決めるのは
苦手だ。変数の名前決めるのだって悩むぜ!そういう、決断力のない内向的な人が
プログラミングやってるわけだよ。
まあたぶん、MSXと違って現代ではスプライト枚数なんてめちゃめちゃ多いだろうから、
多めに考えとけばいいんじゃね?敵100個、敵弾256個、とか。
で、後で「しまった!アイテムより敵弾の方が上だ!」って思ったらちまちま書き直すわけ。
それはいいとして、プログラミング技術が高まってくるにつれて悩ましくなってくるのが、
スプライトの優先順位が動的に変わる場合だよ。擬似3Dとか。一番手前のキャラを
1番優先順位高くしないとだめだろ?すると奥行き方向でソートしないとだめだ。すると
毎フレーム何十個何百個のソートをやって、実行速度的には大丈夫なんだろうか?
とかいってうじうじ悩むわけだよ。理論だけでは分からない、実際にやってみないと
分からない。これまた内向的プログラマーの苦手とする所だ。
あとコップからボールが飛び出してくるような演出を考える場合とかね。飛び出す
時はコップの裏にいるんだけど、飛び出た後はコップより手前にいるんだよ。
ま、理論派の人は一般的には敵何個、敵弾何個にしてるのかをググって決めたら
いいよ。プログラミングを始める前に最初に細かいところまで仕様を決めちゃう。
理想的なウォーターフォールモデルだな。
でも普通は試行錯誤を繰り返すしかない。これは、プログラミング年数がいくら長く
なろうが同じだ。そう、プログラマーとはクリエイターだ!ゲ製作者とは、開拓者だ!
結論。今のスプライトは意味がない。単純に画像コピーの方が自由にできる。
60 :
↑:2006/12/20(水) 14:24:08 ID:Pmclb248
言いたいことは
「でも普通は試行錯誤を繰り返すしかない。」
これだけのようです。他は読むだけ無駄です。
一応最初に区分けはしてるけど、変更しやすいようにマクロで書いてるな
>>59「53:38 ID:x9MQwzPB」まで読んだ
でもまぁ別に29ほど嫌悪する内容ではないからいいがw
前置きが長くて最後の行に「結論」とあるから、死刑判決かなんかじゃね?
読んでないからわからんけど
配列変数に文字(半角英数)って入れれないのかな?
また入れれる方法ってあります?
質問スレ行ったけどあれじゃ・・。
ごめんなさい。速攻で自己解決しましたorz
66 :
名前は開発中のものです。:2006/12/20(水) 22:06:25 ID:LM/1xOiT
あるファイルを単独で開くと
#HSP script preprocessor ver3.0a / onion software 1997-2005(c)
#Source file not found.[userdef.as]
#Can't write output file.
こんなのが表示されて起動(コンパイル+実行)できないのですが、
2個以上開いたら起動できます。
何が原因なのでしょうか。
67 :
名前は開発中のものです。:2006/12/20(水) 23:05:25 ID:Tkqmed6t
「HSP拡張マクロを使用する」をチェックしてない
カレントフォルダが実行できるだ所になってない
このどっちかと予想
マは文章力が無い
ということは判る
文章よりプログラムで気持ちを伝えたい
70 :
名前は開発中のものです。:2006/12/21(木) 00:32:32 ID:3PC/arN8
プログラムよりCUIで気持ち悪さを伝えたい
お前らをICUにぶち込みたい
アナルソリューション
73 :
名前は開発中のものです。:2006/12/22(金) 18:30:48 ID:9GDDKjwV
マップチップを使用するゲーム製作について
くわしく書かれているサイトってありますか?
アナルソリューション
面白いと思ってんのかな
つか俺はHSPの前身であるLSPの頃からの愛用者なわけなんだが
いきなり何の話だ
アナルソリューション
面白いと思ってんのかな
break
loop
82 :
名前は開発中のものです。:2006/12/23(土) 15:52:42 ID:IbKnIwru
ファイルを開いた後にコンパイルすると、そのフォルダにファイルができるのを
どうにか次のバージョンで改善してくれないのだろうか?
83 :
名前は開発中のものです。:2006/12/23(土) 17:17:39 ID:qXWjRFVv
>>82 あれは、あれで良いんだけどな・・・
編集中保存前にエディタが落ちてもhsptmpに
さっきテスト実行したスクリが残ってて助かった事が何度か・・・
>>82が言いたいのは、そのテンポラリンふあいるが作られる場所を
別なところに変えたいってぇことじゃまいか。
アナルソリューション
たぶん去年も同じことを書いたが、おまいらクリスマスイブもプログラミングか?
あわれな奴らだ。
アナルソリューション 12/24 バージョン
A「クリスマスの予定は?」
B「え、特にないけど?」
A「えー、お前何もすること無いの?うはww哀れww」
B「つか、クリスマスってそんなにそんなに特別だと思ってないし」
A「でた、強がるなよ、相手がいないだけだろwww」
B「いや、相手とか関係なくて、ただクリスマスってだけで
不必要に騒ぎ立ててるのが不思議だと思うわけ」
A「でたでた、強がるなよww 本当はみんなと一緒に騒ぎたいんだろww
仏教とか言ってないで素直になれよwww」
っていう会話が、本当にウザいと思っているBは私です。
>>88 そんな貴方に朗報!
クリスマスは男女だけのものじゃない!
男と男のクリスマスもある!兄貴と熱い夜にしようぜ!
ア ナ ル ソ リ ュ ー シ ョ ン ド ッ ト コ ム
おれは何是にアナルソリューションばっかり書き込んでるんだ・・・ orz
goto *byouin
*byouin
repeat
mes "エラー"
loop
おにたまが同人ソフト出したよな・・・
あの優しそうな人があの内容・・・って考えるとなんかハラハラするわ。
やっぱり、本当にロリコンっているんだなって。
せいぜい犯罪を犯してHSPが衰退しないようにと祈るばかりだ。
そもそもHSP自体…
絶賛ざんす
天才は往々にしてロリコンなのさ
>>93 リアルに起きそうだな・・・
アナルソリューション
同人ソフトっていつの話?
ねぎ麻雀
そうか、天才ってのは脳年齢が若いから、自然若い方を好むということか。真理。
>>100 ということは、つまり俺は大天才ってことだ
五つ神童、十で天才、二十歳過ぎればただの人
とはそういう意味だったのか
学習的神童よりも創作的神童なら年取っても神童の場合が多い
104 :
名前は開発中のものです。:2006/12/26(火) 23:28:40 ID:pdZrcPJM
あほな談義に花を咲かせる暇があったら、誰かHSPでWake On LAN
使えるプラグインを作ってくれ
105 :
名前は開発中のものです。:2006/12/27(水) 00:46:48 ID:l1yvfUAS
#uselib "WakeOnLAN.hpi"
dialog "Wake On LANって何だ?",1,"脳内エラー"
106 :
名前は開発中のものです。:2006/12/27(水) 01:08:23 ID:5WGfxPNK
dialog "Wake On LANとはLAN内のコンピュータの電源を遠隔操作で入れるパケットのこと",0,"OK?"
mes "そんなの普段使わないよな?"
goto *
>>108
tonkusu
>>106 mes "普段使わないが私用ソフトだと必要なときとかありそうだな"
if WinAPIとかに無いのかな?
hgimg3のDirectSoundサウンド再生機能で、
oggファイルを再生するとブツブツとノイズが入るのですが、
解決方法はありますでしょうか?
つぶやきシロー乙
if コーデックが悪い:最新のコーデックをインスコ
if ソースが悪い:サンプリングレート変えたりビットレート変えたりして試してみそ
HSPには問題ないと思われ
112 :
109:2006/12/28(木) 01:22:35 ID:t8yM08bG
111>>そうですか・・・
貴重な意見ありがとうございました
hmm.dllでogg再生すると同じ環境でもなぜかノイズが出ません
どうしてかなぁ・・・?
hmm.dllをogg再生させてhgimg3と組み合わせて使ってるんで
(hgimg3でogg再生した時はhmm.dllは完全に消して書き換えてテストしてました)
hgimg3単体でogg再生できれば容量少なくて便利なんですよね・・・
今やってみようと思ったんだが、wav以外再生できないはずじゃ
114 :
名前は開発中のものです。:2006/12/28(木) 05:21:07 ID:YS7fBwDE
HSP3.1b6でogg再生の再生が出来るようになった
出来たばかりだからバグはあるだろうな・・・
wavも0.2秒以下ぐらいの小さいのだと再生されなかったりするし
(3.1b6のは試してないけど)
>>114 おっ、まじでか!
情報㌧
ogg関連は色々と質問してたのにスルーされてたからなぁw
HSPでvorbis.dllとか使えないのかね?
とりあえずoggを再生してみたが俺のところはノイズが出なかった
だが、リピート命令出してないのにリピートするわ、固まって閉じれないわで使いもんにならんなw
スレ違いかもしれんがogg形式の利点について
体感的にkwsk
>>117 MP3よりも音質対容量がメリーゴーラウンドな感じ。
でも負荷がジェットコースターのような感じ。
しかもライセンスがGIFみたいにサブマリンありそうだからお化け屋敷みたいな感じ。
oggは「使用料払えや!」って言い出したmp3に対抗して作った不可逆圧縮
オープンでフリーな上にmp3の半分ぐらいの容量で済む最高なやつ
負荷かかるっぽいけどmp3の半分ぐらいの容量なんでラグタイムは少ない気もする
WMAじゃ駄目なん?
>>12 低ビットレートでエンコした時の低い音の音割れが気にならない?
MP3の方が十倍マシ。
WMAって商用利用するときはマイクロソフトに金はらわんとダメじゃなかったっけ?
wavでいいです
流れぶった切るけど
モジュール変数って配列で定義できないの?
>>125 どうやって?
#module test ary
#modinit int a,int b,int c
ary = a,b,c
…
これじゃ単なるローカル配列変数として扱われてしまうし…
何やってんだよ
>>#modinit
こんなの初めて見た
ver3系統は進化したんだなぁ
後ろに@つけてどうにかできんのか?
>> 126
#module test ary
#modinit int a,int b,int c
ary = a,b,c
return
#modfunc disp
mes ""+ary.0+","+ary.1+","+ary.2
return
#global
newmod v, test, 0, 1, 2
newmod v, test, 3, 4, 5
disp v.0
disp v.1
ってことか?
131 :
名前は開発中のものです。:2006/12/29(金) 22:40:35 ID:K39tpT8L
>>130 あ、出来た!
つか
>>126であってるのか
うまくいかないと思っていたのは気のせいか…
㌧
シューティングゲーム作ってます
自機の弾を配列変数で扱って、
複数の敵や障害物も配列を使ってます。
当たり判定をrepeat loopでチェックしようとしているんですが
cntが1のときは弾も敵も配列の一つ目しか当たり判定ができません
すべての弾においてすべての敵の当たりをチェックするには、
どうすればいいですか?
主観のPID(n番)を決めて、n番からみた当り判定すればいい。
だから、repeatをネストさせればいいんじゃない?
repeat maxSLED : n = cnt
/*基本処理*/
/*当り判定処理*/
repeat maxSLED
if (n != cnt) {
}
loop
loop
この方法をすぐに思いついたけど
数が5000発とかだと遅いのと、nとn2が重複して判定されるのが問題ね。
解決策は弾に種類をつけて2分割するとか、nとn2を当たったら弾くとかね。
多分、聞きたいことと違うかな?
一度別の変数に配列変数の中身を入れておいて
二つのうち一つを固定してしまうということですか?
それで、いけそうな気がします
返信ありがとうございます
tama_max = 30 ;自弾の量
dim tf,tama_max ;フラグ
dim tx,tama_max ;x座標
dim ty,tama_max ;y座標
dim tsx,tama_max;自弾Xサイズ
dim tsy,tama_max;自弾Yサイズ
enemy_max = 30 ;割愛
dim ef,enemy_max
dim ex,enemy_max
dim ey,enemy_max
dim esx,enemy_max
dim esy,enemy_max
~~~~中略~~~~
repeat tama_max
tcnt = cnt
if tf.tcnt {
repeat enemy_max
if ef.cnt {
;自弾vs敵 判定。
tmpx = tx.tcnt - ex.cnt : hx = (-tsx.tcnt<tmpx)&(tmpx<esx.cnt)
tmpy = ty.tcnt - ey.cnt : hy = (-tsy.tcnt<tmpy)&(tmpy<esy.cnt)
if hx & hy {
;お前はもう、当たっている
tf.tcnt = 0
ef.cnt = 0
}
}
loop
}
loop
>>133の文章もワケワカメだし
>>134の理解も的はずれで笑えるな。いや2ちゃんに
「笑えるな」って書いても実際には全然笑ってないわけだけど。
dim tamax,10 : dim tamay,10 ; 自機の弾の座標
dim tekix,100 : dim tekiy,100 ; 敵の弾の座標
dim tekistat,100 ; 敵の状態。1なら普通、2なら爆発中とする。
repeat 10
i=cnt
repeat 100
j=cnt
; 自機の弾を16*16、敵を32*32とする。
if (tamax(i)<=(tekix(j)+31))&(tamax(i)+15>=tekix(j))&(tamay(i)<=(tekiy(j)+31))&(tamay(i)+15>=tekiy(j)) {
tekistat(j)=2
}
loop
loop
てか素直に「HSP講座」と「当たり判定」でググることをお勧めする。
HSP3って、C言語風の書き方を模してきてる割には
なんで添字指定子を[]にしなかったんだろう…
式が超見辛いorz
自分もそっちが好みなんだけど、初心者向けに
使う記号の数をなるべく少なくしてるんだと思われ。
もともとはBasic風言語とうたってるしね。
何を今更
>>139 技術はすごいけどシューティングゲーはつまらないからなー
弾避けるの面倒なだけじゃん
引数と配列が同じなのは見づらいな
格ゲーはガードが面倒なだけじゃん
レースはコースに沿うのが面倒なだけじゃん
ADVは選択肢選ぶのが面倒なだけじゃん
パズルは考えるのが面倒なだけじゃん
RPGはレベル上げが面倒なだけじゃん
冬房に反応すんなよw
ガード不可な格ゲーを作ればいいんだな
コースのないレースゲーを作ればいいんだな
選択肢のないADVゲーを作ればいいんだな
考えのいらないパズルゲーを作ればいいんだな
レベル概念のないRPGを作ればいいんだな
RPGがいつから努力ゲーになったんだ?
役割を演じてこそRPGだ。だからADVこそがRPGだろう、いや、
格闘を演じてこそ格ゲーがRPGだろう、いや、レーサーを演じてこそ
レースゲーがRPGだろう、いや、パズルとしての思考行動こそ役割を演じるRPGだろう。
冬、恐るべし。
レゲー板に似たような粘着厨が居たが、それの類かね。
コンピュータRPGはRPGじゃないからそういう理屈は無意味
150 :
名前は開発中のものです。:2006/12/31(日) 17:37:44 ID:5UO8NMKC
さすがに年末+コミケで人いなさすぎw
今日からHSPを使い始めた俺が宣言。
「HSPでゲーム作る。」
2chで宣言しちゃったぜ。うはwwww
どこを縦読み?
ああ、冬か!!
で、どんなゲーム?
どうせ俺らが3日で作れるようなゲームを1ヶ月で作るつもりだろ
154 :
150:2007/01/01(月) 14:10:51 ID:9XMf8K/9
やあ、やっとレスついた。さみしかったよ。
HSPを年越しでTV見ながら色々触ったんだけど、一つのファイルで殆んどの処理したほうがいいの?
>>154 モジュール
・メイン呼出.hsp
・処理.as
・システム.as
156 :
150:2007/01/01(月) 15:18:22 ID:9XMf8K/9
>>155 おk。産休。
モジュールでの変数の取り扱いがヘルプ読んでもイマイチだったんだけど
ほかのサイト見たらわかった。
ルフィとかいうクソコテはまだ居るのかね
昨日からHSPを使い始めた初心者ですが
今年のコミケではHSPを使ったゲームを販売予定なので皆さんよろしく!
うるさい黙れ!
// :/:::::/::::::.!:::|:::: !::::::::、:::::::::::::::::、::ヽ::::::::ヽ
!|:::/::::::.!:::::::|:::∧::::|、::::::::!.、:::::::::::::ヽ: !:::::::::: !
i:l: ::|:/:::.!::::::ii|_:| ヽ:::!l\:::!'、\::::::::::::!::!::::::::::::.!
. |/l:::.!|, :::ヽ::::l'l:lヽ、ヽ:|l'´ヾr==ミ、:::::::|::|:::::::!::::: !
|::.!l:.!::::::lヽ|,==、 `' ヽ \:|:: !: ::: !::::::.! うるさいうるさいうるさい!
l/ `ヽ::|:::l , - 、 ll'::::!.l:::::.!:::::::.!
l`l::.!! l/ ̄ ヽ /.!::::.!:|::::::.!:::::::l
!::::.!.!ヽ ヽ ノ /::::|:::::|::.!:::::.!:::::::.!
.!::::| !::::.` ー 、._ ´ ,/ |::: !:::::|:::l::::::.!:::::::|
|:::::|.!::::.!:::::.!:::::::::`Г l-,|::::.!::::|::::::.!:::::::|
|::::::l':::::.!::::::|:::::_, -/} /:l:::::lー-∟: !:::::::.!
!::::::|:::::_!, .‐' ´.:.:.:!r- 、_ /.:.:.:!::::l// /`ヽ:: !
. |::::::|/ ヽヽ.:.:.:.:.:.lィーミ./.:. :.:.:.!:::.!/ / !::.!
. |:::::::! ヽ ヽヽ.:.:.:.ヽ / .:.:/ !::::| / |::::!
162 :
150:2007/01/02(火) 10:28:57 ID:lm09oM/V
引数無しのreturn値有りのモジュールは作成できないのでしょうか?
質問の意味がよくわからないです。
2.6ですまんが。3.0以降でもちょっと調べりゃできんじゃね?
#module
#deffuc meirei
mref st,64 ;stat
st = ret ;戻り値。
return
#global
>>163 引数が無い、戻り値がある関数は作れるよ
#module
#defcfunc menu
mes "start menu"
mes "end menu"
ret = 1
return ret
#global
こういうことです
別ファイルから呼び出しているのでreturnで返さないと変数が返せないのです
>>166 どうやるのでしょうか?
いくらやっても「文法が違います」と出てしまいます
#defcfuncで定義したものは式(の一部)として関数形式で
呼び出さないといけないけど、それはOK?
result = menu()
とか
mes menu()
みたいに。
>>168 呼び出し側の()忘れてました!
引数が無い場合は#deffuncと同じように何もつけなくてもよいものだと思っていました
ありがとうございます
バグっちゃバグだな。重箱の隅つつくようなもんだけどな。()ありの記述もなし
の記述もどっちも可、てのはどうなのかな。おにいたまとしても大変になるだけ
じゃね?おにいたまはTexを目指してるのか?HSPユーザとしても嫌じゃね?
自分のプログラムを疑うんじゃなくて、HSPを疑うの嫌じゃね?「ヘルプには書い
てないけど、こういう書き方しないとだめなんだなあ。そういう仕様なんだなあ。
まあ所詮フリーソフトなんだし、仕方ないや」みたいな。んまあそんなこと言い出
したら拡張プラグインの方がひどいわけだが。
いっそ引数があろうがなかろうが()が書いてなかったらエラーにした方がよくね?
>>170 > いっそ引数があろうがなかろうが()が書いてなかったらエラーにした方がよくね?
エラーになるよ。引数があるかどうかじゃなく、関数か否か。
命令と関数の違い、ってマニュアルに書いてあるけど
非効率なコーディングをしても今のPCなら何の問題もないだろうけど、
非効率な文章書いても誰も読んでくれませんよ…
非効率っつーか、可読性だよな。
そういう点ではコーディングと一緒だなw
既にコンテスト2007に向けて作り始めてる人っていないのーん?
早すぎかな。
結果的には去年から作り始めていると言える。
2.6で質問でする。
現在でかいウィンドにスクロールバーを付けて、色々弄っている最中なのですが、
スクロールバーの位置は「ginfo 4」で取得できるモノの、制御の仕方が
どうにも判りません。
スクロールバーのx、yを指定するとその位置にバーが移動するような命令、
もしくは何らかのプラグインなどありましたら、是非お教え下され。
objsend -28,$114,x<<16+5,a,1
objsend -28,$115,y<<16+5,a,1
>>178 え?もしかして神?w
まさか五分でそのものズバリな回答を貰えるとは思ってませんでした!
とりあえず試した見たら、本当にバーが動いて感動。
おいおい、また解析を進めていくことにします。
ありがとうございました。
180 :
名前は開発中のものです。:2007/01/13(土) 16:34:22 ID:utTgEWyi
http://pc10.2ch.net/test/read.cgi/gamedev/1111242845/ ('(゚∀゚∩_ ↑からキタよ!おいらをどこかのスレに送って!
/ヽ 〈/\ お別れの時にはお土産を持たせてね!
/| ̄ ̄ ̄|.\/
| .モツ煮..|/
 ̄ ̄ ̄
現在の所持品:たばこ・ライター・コーヒー・PlayStation3(60GB)・枕・PlayStation3(60GB)
聖教新聞 ・PlayStation3(60GB)・外付けRIGEL340MHDD・PlayStation3(60GB)・寄生虫キムチ
虫食い付きウールセーター・PlayStation3(60GB)・PlayStation3(60GB)・クターの生首・PlayStation3(60GB)
LANケーブル・PlayStation3(60GB)・リラックマ・マリモ・六法全書・単三電池
ファブリーズ・PlayStation3(60GB)・水・PlayStation3(60GB)・クタウイルス ・寄生虫入りキムチ
ワセリン湿布・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
あんぱん ・エレメント・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
びすけっと ・タカヤ3巻・ネルハード ・バスタードソード・PlayStation3(60GB)・ふくにゅうの巻物・PlayStation3(60GB)
洗濯機・PlayStation3(60GB)・いわとびぺんぎん ◆HgjahDUOLI・能登ウイルス・CCの食べかけのピザ
・PlayStation3(60GB)・少女セクト2・初代beatmania筐体・スカイシャークのプラモ・PlayStation3(60GB)・PlayStation3(60GB)
・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・ポケモン・PlayStation3(60GB)・PlayStation3(60GB)
・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
hgimg3で質問です。
addxfileで読み込んだモデルの、xyzサイズを取得するにはどうすれば良いのでしょうか?
getscaleだと、表示倍率しか取得できないみたいなのですが。
おはつです、質問させてください。
HSPでゲーム作ろう! → HSP3.0用のRADツールがない・・・ → 作った
という流れで、ここにいるんですが、評価をお願いするスレって、ここでいいんでしょうか?
ここでいいよ
+ +
∧_∧ +
(0゚・∀・) ワクワクテカテカ
(0゚∪ ∪ +
と__)__) +
HSPでRADなんて作る必要あんの?
186 :
182:2007/01/13(土) 23:53:21 ID:UgnnHimy
187 :
182:2007/01/14(日) 00:06:26 ID:Y29P4iKa
>>187 ・現在何のモードかわかるといいな
・もしくはツールボックスを表示とか
・グリッドの大きさを変更とか
・えっ、ウインドウの大きさ変えれないの?
・えっ、inputとかmesboxとか配置できないの?
・えっ、mesの出力内容変更できないの?
・えっ、hspファイル出力できないの?
とか、いろいろありますが、まずは乙です
まだまだ進化できる予感
今後の活躍に期待
190 :
182:2007/01/14(日) 01:51:50 ID:Y29P4iKa
RADは面白いけどボタンとか使わないからね・・・
ツリーでノード表示・ラベル管理・コンパイラ標準だったら使う。
操作が分かりにくいから、別ウィンドウにボタンかヘルプ作ったら?
意味わかんなくて消したよ
>>182 とりあえず公開しようという姿勢はいいが、まだ未完成過ぎて評価が難しい。
もう少し出来てから公開するか、ワケあって未完成で公開するならば、
予定された将来像をある程度明確にしないと「がんばったね」みたいな回答になっちまうよ。
今日シャッフルプログラムをマスターしたよ
HSPって奥が深いなあ
HSPじゃなくてアルゴリズムじゃない?
ソートの方が奥が深い
いや乱数のほうが
197 :
名前は開発中のものです。:2007/01/15(月) 22:49:58 ID:ZK+/xnSw
SHUFFLE!プログラム・・・・・・楓がたくさん・・・・・・作っていい?
ハンコ絵のアレか
HGIMG3を使って、3Dゲームのサンプルを作っていますが。2つ質問があります。
20*20の床になる箱を、敷き詰めただけで、ゲームにならない程
重くなってしまいますが、HGIMGではこんなもんなんでしょうか?
それとも、もっと軽くする方法があるのでしょうか。スペックはセレロンの2.5ギガです。
もう一つは、これをEXEに変換して、実行すると必ず「内部エラー(1)」
が出てしまいます。ファイルパスをいろいろ変えてみても駄目で、原因がわかりません。
ソースファイルです。よろしくお願い致します。
http://gamdev.org/up/img/8636.zip
ちわーす。
VIPからきました。
っかここどこ?
201 :
名前は開発中のものです。:2007/01/16(火) 03:40:18 ID:iHmtdt7B
>>199 DX3D使ってるからCPUよりグラボが問題(当たり判定で遅くなってるなら別だが・・)
家(1.7GHz)ので199のを実行してもCPU使用率5%以下だった
あと、実行ファイル作るのは 実行ファイル自動生成(Ctrl+F9) でやってる?
自分のところじゃこれで問題なかったよ
>>199 たしか内部エラー1はプラグインが見つからないときにも出たはず。
HSPフォルダにあるhgimg.dllを作成した実行ファイルと同じフォルダにコピーするか、
#packopt runtime "hsp3hg.hrt" をスクリプト先頭のほうに追加して
Ctrl+F9で実行ファイルを作るか。hgimg.dllを同梱せずに配布できるので後者がお勧め。
203 :
199:2007/01/16(火) 08:36:12 ID:WSb0vIsm
>>201さん
当たり判定をスキップしても、やはり速さは同じでした。
グラボはオンボードなので、やはり、うちの環境のせいみたいですね。
見えない床だけ、板にしてみたら、なんとか使えそうです。
EXEファイルは、自動生成にしたら、解決しました。
自動生成は、ただ操作を簡略しただけで、手動生成と、
出力するものが一緒だと思い込んでいましたが、違うんですね。
返答ありがとうございました。
204 :
199:2007/01/16(火) 08:49:24 ID:WSb0vIsm
>>202さん
ありがとうございます。
手動で作成したファイルを、実行する時は、もちろん同フォルダにhgimg.dllを入れましたが、駄目でした。
なんで手動だとエラーが出るのかはわかりませんが・・
dllを同梱しないで済む方法は、知りませんでした。完成したら、やってみたいと思います。
>>199 グラボとかよく分かんねーけどちゃんと動いたよ。かれこれ5年以上前に買ったノートPC。
ゲームを作れる環境:
○自分の環境でも動くし他人の環境でもちゃんと動く。
△自分の環境では動くが古いPCやノートだと動かないかもしれない。
×自分の環境でも他人の環境でも動かない。
他人の環境ではちゃんと動くのに自分の環境では動かないて・・・。悲惨だな。作るの
あきらめたら?w
自分のプログラムだけが遅いのか、似たような他の人のゲームも遅くなるのか。
あとfpsとか数値で比べないとイマイチどれくらい遅いのか分からんかな。
ボールが止まって見える!
>>202 hgimg.dll以外のDLLでも同梱しなくていい方法ない?
製作者の環境が悪いのはだめでしょ
俺は、製作者の環境で動いても他のPCで動かない という方がよっぽど問題だと思うけどな。
スペックの強いPCで作るよりも弱いPCで動くようにさせるほうが親切かと
どっちにしろ環境が良い方が作業効率も上がると思うよ
だからスペックの強いPCでみんなができるゲームを作るのがいい
「格差社会だから貧しい人に合わせよう!」
「貧しいのは努力(スペック満た)してないヤツだろ」
みたいな論議だな
個人的にはスペックは高めで動作させたい
おもしろければ嫌でもユーザーからスペック上げてくれるし
3Dやったことないんで変なこと言ってるかもしれんが
床は平らな板にしたらだめなん?
>>213 まあ実際問題、一部の超人気洋ゲー以外、重いゲームにユーザー側がスペックを
合わせてくれるなんて有り得ないけど。
大体快適に動作しないのに、ユーザーが面白さを理解できるわけ無いしな。
ま、開発機がしょぼいと開発効率が落ちるんで、動作検証用として
別に古めのマシンを用意するのが吉。
>>214 それでも作れるけど、坂の表現とか大変でしょ
表面の陰とか変わってくるし、物理処理とか入ったらバレる
いくら面白いからって、フリーゲーム如きのためにスペック合わせるやつなんているのかよ?
周りが面白いって言っても、俺のPCで動かなかったら速攻ゴミ箱行きだな。
基本的にユーザーは俺を始めとして自己中だと思わないと。
自分のPCだけでオナヌーとして作ってるなら別にいいんだけどさ。
>>217 前レスで言ったけど格差社会と一緒。
どちらが良いとか悪いとかじゃなくて 追求嗜好 の問題
スペック上げないとできない手法があるわけでピクセルシェーダ1.0~2.0みたいな
個人的にはピクセルシェーダ1.1は標準じゃないと辛いと思う。
>>218 PCゲームは軽ければ軽いほど、それをプレイできるユーザー層も増えていくわけで、
軽いのと重いのとを比べたら、絶対的に軽い方が良いに決まっている。
勿論画質重視品質優先の糞重たいゲームもあるにはあるが、それだって「重い」部分にはなんの価値もない。
結果が同じなら軽い方が良いに決まっているわけで、ただゲームの"質"の分だけ、
ユーザーが開発側のいいわけを我慢してくれているに過ぎない。
つーか前スレのその話とやらをよく知らんのだが、格差社会とどう関係があるんだ?
>>213の最後の行とか言ってるし、
>>216の最後の物理処理でバレる云々とか、
更にはピクセルシェーダなど繊細な技術を使ってるらしいA+2O3bTuは
よほどクオリティ高いゲーム作ってるんだな・・・HSPで。
無知な俺にはただの知識のひけらかしにしか聞こえないわけだが。
>>219 重い部分に意味ないって当たり前じゃない
>>219のいう軽いはユーザースペックが足りない側前提じゃない?
インフラは整備されるに越した事はない
重くしないためにプログラム改良とスペック上げる
なにが”質”だよw
表現力少ないゲームで言い訳してるほうが技術者としてどうかと思う
>>220 クオリティは求めちゃだめか?
そう聞こえたならそうなんだろう
>>221 今イチ何を言っているのか、お前の文章は判りにくいな。
要約すると「クオリティ重視」ってこと?
"技術者"と言う言葉を前面に出すなら、尚更「ほどほどの品質をほどほどの負荷で」
実現させるのが技術者ではないかと思うわけだが。
ま、結局好きでやってるわけでしょ?
アマチュア精神全開で
「俺は自分の好きなモノを好きに作ってるんだ。ユーザーなんか知らん。文句あるか?」
とでも言えば、別に誰も文句なんか付けんよ。
格差社会とかなんとか言って、変に一般化しようと欲を出すから、色々文句も言われるわけで。
>>222 thx アマチュア精神なきゃやってらんねーよ
格差社会だせば食いつくヤツいるかと思った
他のスレでも出したら 突然レス増えたしな いいな格差社会
>>221 中段一行目の スペックを上げる って、開発側とユーザー側どっちの?
高速化もできないウンコ(開発側)が、その穴埋めをするために開発環境スペックを強化する(=結果的にユーザーのスペックも強化せざるを得ない)
って言うのだとしたら論外だな。
ユーザーの立場を考えないなら、初めから公開するべきじゃない。
自慢のハイスペックマシンで、独りで作って、独りで遊べば良い。
ゲーム全体のクオリティと、
高度で繊細な処理を施したグラフィック等のクオリティを一緒にしちゃダメだろ。
~すれば釣れると思っただとか~はよく食いつくだとか
負け犬の遠吠えにもなってねえよな。
>>223 ピクセルシェーダを使ったどんなに表現が素晴らしくて綺麗な
グラフィックを使おうと、動かなかったらただのゴミ。
プログラム以外で、"サウンド・グラフィック・ハードウェアスペック"
なんかに頼る技術者って笑いものだわ。
>>224 改良してもハード側のスペック限界が存在するから
ハード側に付加してる機能を活用するのが自分のいうスペック理想
クオリティは言うとおりだ
その発想はなかったわ
動かないゴミ作ったことあるのかね
俺はないから分からん
要は、メモリ1G食うような糞OSにみんな喜んで飛びついてくれるか?
って事だろ?
俺はお手上げッス\(^o^)/
まあおまいら誰も等しく間違ってはいないけれど、スペック論争虚しす。
_,,..,,,,_
/ ,' 3 `ヽーっ
l ⊃ ⌒_つ
`'ー---‐'''''"
時間軸的に少しだけ進んでいるか遅れているかの問題であって、結局のところ何もかも時間が解決する問題であると俺は定義するよ。
開発者がユーザーをどれだけ考えるか、という点だったわけで、
スペックに限った論争じゃないと思うんだけど。
そもそも、HSPスレでわざわざする話題でもないけど。
ちなみにどこかの勘違い君のために言っておくと、格差社会論争でもない。
少なくとも、時間が経てば解決する問題ではないわな。
ユーザーに対し常に高いレベルのマシンスペックを要求する開発者は、
時代がどう変わろうと、やっぱり相対的に高いマシンスペックを要求する。
結局、そいつの開発した最新のソフトを味わえるのは、いつの時代も
常にほんの一部のユーザーに過ぎんと言うわけだ。
233 :
名前は開発中のものです。:2007/01/19(金) 16:43:58 ID:ziCSp6tF
そりゃ僻み根性丸出しだよ。
極端に言えばファミコンしか持ってない奴がWiiのゲームやりたくて
「なんでファミコンで出来るようにしないんだ」って喚いてるようなもんだ。
>>233 どうも論点を理解してないね。
結局、ユーザーの平均層から狙いを外せば、その分だけユーザーが減るというだけの単純な話。
高いとか低いとか言う問題じゃないんだよ。
Wiiのソフトをファミコンで出したところで、数が売れないのには変わりない
(つーかもっと売れなくなるだろうがな)。
まぁ、アイデアとかアルゴリズムがすげーってんならまだしも、
そこまでハードを要求するほど面白いゲームなのかと小一時間(hsp
これがもし家庭用ゲーム機ならスペックがどうこう言ってられないよ
決められたハードで動かさなきゃいけないんだからなぁ
>>231-236 ∧_∧ ブワッ
Σ(´ヾヽヾ'""''ソ;μ,
/ヾ ,' 3 彡
しミ ミ
彡 ミ
/ソ,, , ,; ,;;:、ヾ
ようは、コンフィグでクオリティ変えられるようにしとけばいいんだろ。
ユーザーのスペックに合わせられるように。
たいして難しい技術でもないし
非難轟々の予感。
マニュアル以上の資料はないとおもわれ
自分で研究する他ないわな
そしてその成果を公開してくれれば言うこと無しw
不思議だよな。だってHSPってフリーソフトじゃん?Mameだっていろいろな亜流が存在
するし、WinnyだってpoenyだのWinnyPだのいろいろな亜流が存在するじゃん?
このスレでも「じゃあお前にとって理想のHSP作れよ」なんて常套句じゃん?
この辺でHSPの亜流ができてもおかしくないよね。HSP本体と同梱されているプラグイン
くらいは再現すると。しかもそれはインタープリタじゃなくてコンパイラだよと。もう烏合の衆
が集まって速度に関する議論しなくていいよと。しかも整数より実数を先に書かなくちゃ
だめだとか、拡張プラグイン独特の変な仕様とか全部改善するよと。あ、そんなことし
てくれたとしてもUNIXなんて全然関係ない俺には全然関係ないや。
てかUNIXにHSPなんているの?俺大学の時と会社に入った最初の頃しかUNIXなんて
さわったことないや。その後ダウンサイジングが進み、今じゃPCの価値があの頃より
はるかに上がった。UNIXなんて一部の高級志向の奴がやってるだけじゃん?
高級志向の奴はCやりゃいい。
今となってはあれだが、そのためにこのスレとか応用スレがあるんじゃないの?
>>239 どういう資料が欲しいのかいまいちわからん
言語仕様?HSP内部のコンテキスト情報?
245 :
名前は開発中のものです。:2007/01/23(火) 15:27:05 ID:HaydFWqU
ダイソーの「実写でボクシング(HSP製)」があったから買ってみた。
他にもHSPで作られた100円ゲームってあるのかな?
去年のコンテスト最優秀賞のゲームなんかも売れちゃいそうだし。
今更だけどHSPって結構スゴイかも・・・
どういう契約で作者にどれだけもうけがあるのか興味深いな~
ダイソーって創価だっけ?
学会員になれば(ry
249 :
名前は開発中のものです。:2007/01/23(火) 20:54:37 ID:xa6PzjyG
2.6までは数学関数がない、演算子の優先順位がないなど無料言語らしい
仕様だったね
無料言語?
無料処理系?
フリー配布の言語って意味じゃね?
無料で配布されてるもの相応の機能しかなかったって感じの意味だと思うが。
ではC++も無料言語ですね?
255 :
名前は開発中のものです。:2007/01/23(火) 22:02:03 ID:WqfL7ZRO
格闘ゲームを作りたいと思い、講座を巡ったのですが見つかりませんでした。
HSPコンテストの入賞作品の格闘ゲームを参考にしてみようかと、プレイしてみたのですが、
ぎりぎりで2000の私のPCでは重すぎて止まってしまいました。
98あたりの人でもプレイできる格闘ゲームを作るのは無理なのでしょうか?
3Dか2Dかはまだ決めていません。
マジレスで、可能。
だがその質問内容だと、厳しいかもしれませんな。
3Dは無理なのでは。2Dだから簡単になる、というのも
人によっては間違いだと言われるかもしれないが。
ソースうpから始まる虚しさ
ゲーム作ってみたんだけどうpしてみてもいい?
うん
すごく…HPが多いです
button('∀')"('Д')",*(T∀T)
で出てくるボタンって無骨すぎるんで、なんかこうもっと可愛らしいボタンに
代えたいなぁって思ってるんですけど、そういうのって出来ますか?
いや、いますぐやろうってワケじゃないんですけど、
なんとなくゲーム作ってみたくって、でも、可愛いボタンに出来たらイイナって、
だから聞いてみただけなんです。
出来るかどうかだけでいいんです。教えていただけませんでしょうか。
263 :
名前は開発中のものです。:2007/01/24(水) 23:04:44 ID:ipAD47lc
>>262 標準命令だけで出来るか忘れたけど
buttonは自由に作れる
つーか、ゲームならwinのボタン使う必要も無いと思うが・・・
(俺は手抜きしたい時にしか使わない)
なんでreadme.txt.txt.txtになってんの?
>>263-264 自分のレベルが、プログラミングって何?な超初心者なもんで
>ゲームならwinのボタン使う必要も無いと思うが・・・
と言われても「へーそうなんだぁ、なるへそ」としか…
とりあえずいろんなHPみてまわってますがまだまださっぱりです。
HSPを弄りだしてからは、なんというか、
どんな酷い糞ゲーでもものすごく素晴らしいゲームに思えてきます。
ゲーム作るのって大変なんですね。(TДT)ゞ敬礼
>>260 シューティング苦手だから評価付けられんのよ。・゚・(ノд`)・゚・。
これって敵の弾に当たることが前提なの?
女の子に罵られるんですけど…
60fps固定がなぜか出来んorz
>>260 ウィンドウ(画面)がちっこい。
背景の流星と敵弾の見分けがつきにくい。と思ったら、あれ敵弾だったのか……
自機の判定の小ささと敵弾の小ささとあいまって、敵弾がすり抜けていくから流星かと思ったよ。
自弾を発射した時のシグナル(機体が赤く輝く)と被弾の爆発が重なって見えない。
とりあえず画面がちっこいのがなんとも……。
コメントありがとうございます
最新のはバグも一応ないはずなので
これで制作終了にして似たようなのを作ります
レス
携帯からなんで見にくいのは承知を
>>266 それは触れない約束です
>>268 まあそんな感じです
倒すだけを考えてあります
>>270 >画面ちっこい
ですね
イメージ使い回して大きめの作ってみます
gzoom使わないのは面倒だから(ry
>敵弾
小さすぎましたね
こちらは大きめにするべきですね
>シグナル
なるほど
てかシグナル要りませんね
>画面ちっこい
二回も言われてしまいましたww
精進します
動作は中々良く出来てると思う。
バッファに書いてgzoomで拡大してクライアントエリアにコピーしたらどう?
ところで、変数名よくこれで把握できるな。
俺は小さなツールとかでもMainWindowRedrawSW等ほぼフルネーム(?)で付けちまう。変な癖が付いちまった
おいおい、名前空間とか使えよ
274 :
◆NL8WvejZ.U :2007/01/28(日) 17:27:30 ID:BQ8jvKa6
age
>>271 お前は始めたばっかりの初心者だからもっと精進しろ、としか言いようがないな。
>それは触れない約束です
てきとーりーどみーかなんか知らんがユーザーをバカにしすぎ。せめて日本語書けよ。
ユーザーは怖いぞ。お前が1年後、このゲームをはるかにバージョンアップしたもの
をHSPコンテストかなんかに出したとしよう。数件のダメ出しレスがついて終わりさ。
>まあそんな感じです
>倒すだけを考えてあります
うらやましいなあ。俺にもお前のそのずうずうしさを分けてくれ。ゲームじゃねえよこん
なの。
>イメージ使い回して大きめの作ってみます
>gzoom使わないのは面倒だから(ry
そういうことじゃない。とりあえずフルスクリーンのやり方覚えろ。gzoomなんて今は
まだ使うな。今の時代過去の名作がいくらでもタダでダウソできるんだから、拡大縮小
を効果的に使っているゲームをたっぷり研究してからgzoomとかほざけ。
>小さすぎましたね
>こちらは大きめにするべきですね
これはその通り。ただ今の弾量で大きくしたら「なに考えてんだこいつ」って思われる
だけだろうがな。
>なるほど
>てかシグナル要りませんね
今の弾幕ゲームは「当たり判定はここだけですよ」っていうのを知らしめるために
シグナルつけてるのもあるな。俺はそれ自体疑問だけど。∴お前の言う通りシグナル不要。
>>272 >動作は中々良く出来てると思う。
どこが?ああそうかお前はヘビー弾幕シューターか。
>>275 それぞれにお返事ありがとうございます
あくまでも自己満足なんでそこんとこ許してください^^
で一応画面が大きくなった新しいバージョンを公開しました
よければ感想指摘ください
どうやら、かわいそうなやつがいるな
>>276 あんた偉いな、頑張れよマジで。
むしろ親切な奴とオモタ
ツンデレな
>>276 -0-2nd. ゲームとして普通に進化していますな。
でも個人的には耐久値がバカみたいだった前作の方が好みでもあります。
前作限定の改良案。
耐久値を100ぐらいにする。
自機は相手の攻撃を食らうことでパワーアップ(耐久値残り10とかで最大)
その状態では耐久値回復アイテムが出易くなる。
耐久値回復でパワーダウン。
ちび弾(ダメ1)
おお弾(ダメ20)
敵機(ダメ50 )
いかにパワーアップ状態を保ちつつ、おお弾はもちろん敵のちび弾にも当たらないように回避して
かつ緊急の時は回復アイテムで回復するか。
こんなのどうでしょ?
いいな、それ
282 :
276:2007/01/31(水) 03:09:35 ID:VNsJU2cS
多分明日(今日)に0 2ndのv045をULするので良ければどうぞー
弾のネタが思いつかない
>>277 ありがとうございます
より一層ゲームらしさを出すために頑張ります
>>278 親切な人もいるもんですね
>>279 9:1くらいのツンデレ
>>280 まずテストプレイありがとうございます。
なるほど…でもその改良案だとむしろ別作品で作った方がいいかもですね
1.5なんて名前で
作品名兼バージョンじゃまいか
284 :
282:2007/01/31(水) 19:55:37 ID:VNsJU2cS
あ…うp忘れた
285 :
282:2007/02/01(木) 19:14:39 ID:l4ykSH1x
>>285 タイトルの音楽、耳いてぇwww
弾とボムを同時に撃てないのは仕様?
あと、解像度はこのままでいいから、フルスクリーン対応にしてくれ
対戦型のタイピングゲームで、必殺技とかを出す時って
やっぱりファンクションキーとかを押して出すのが一般的なのかな?
Fキーとか何かボタン押して、技名を高速タイプで発動とか
それなんてウィザードリィ?
290 :
名前は開発中のものです。:2007/02/04(日) 01:54:51 ID:c5dzfcac
競馬ゲーム作ろうとしてるんですが、逃げ馬の進み方とか追い込み馬とか進み方を変えたり、いつも同じ走りをしないようにしたいんです。
あと順位判定とかも悩んでます。優しい方教えて下さい><
馬それぞれに最大加速度とか進み方のタイプとか体調とか性格とか固有の値をつければ?
順位判定は馬の位置を進める毎に、ゴールを超えてないか判断して、超えたら順位与える(まだゴールしてない馬は-1とか)
ゴールした馬が(出馬数-1)になったらレース終了と
1位がゴールする時にゴール馬とその後ろの馬の位置の差を出しとけば、
292 :
名前は開発中のものです。:2007/02/04(日) 04:54:42 ID:3ETpllfL
>>291 プログラムの仕様まで考えてやるおまいって優しいな。
294 :
285:2007/02/05(月) 12:59:16 ID:MpgotcBb
>>286 テストありがとうございます。
>タイトル音楽
あの音ですかwもう少しソフトの方がよかったですかね
>弾ボム
れっきとした実力不足でした
やり方わかったんで頑張ります
>フルスクりーん
フルスクリーンのやり方がわからなくて困ってます
dxはesbufferだかで読み込む必要があるみたいですし
hgimg3はテクスチャだかよくわからないのでまだ立ち入れないです
何か他に方法が無ければこれで頑張るしかないですかね
フルスクリーンは
chgdispで可笑しな倍率にならない適当な解像度(640x480とか)に変える
bgscrで変えた解像度サイズのフルスクリーンを作成
↑のバッファに描画
やったことないから合ってるか知らないけどな!
296 :
名前は開発中のものです。:2007/02/05(月) 15:28:07 ID:Qiul0unw
>>294 dispermes="カラーモードの変更はできなかったが\n解像度の変更は正常に行なわれた。","解像度の変更ができなかった。"
bgscr 0,640,480,0,0,0 ;枠なしウィンドウを0,0の位置に制作
gsel 0,2 ;常に最前面
chgdisp 1,640,480 ;解像度を640,480 に
if stat>0 {
dialog dispermes(stat-1),1,"エラー"+stat
end ;終了(解像度変更でエラーが出た時)
#deffunc chgdispend onexit ;終了時に自動で呼ばれる命令(ここじゃなくても直接実行されない所ならどこでもいい)
chgdisp 0 ;解像度復帰
return
}
297 :
名前は開発中のものです。:2007/02/05(月) 16:05:36 ID:QBhYS/sc
SRPGを作ろうと思っているんですが、森など、行動力を多めに消費するよう
なマスを作った場合、移動範囲の検索はどういう風にやったら良いと思いま
すか?
平地を負荷0として行動力から地形にあった負荷を引いたものを索敵に使う行動力に使えばいいんでない?
ちょっと考えてみた。
・全てのマスはその地形の「消費行動力」の情報を持つ(平地=1 森=2など)
・全てのマスは「検査済み」のフラグを持ち、全てfalse。
・全てのマスは「この地点に移動可能」フラグを持ち、全てfalse。
・全てのマスは「この地点まで最良のルートで移動した場合の残り移動力(以下最良値)」の情報を持つ。
・キャラが最初にいる場所の最良値に移動力をセットする。
・全てのマスに対して、全てが検査済みになるまで以下の処理。
・・このマスが検査済みでなく、上下左右いずれかが検査済みである場合、
その(最大4つの)最良値のうち最低の値から、さらにこのマスの消費行動力を引いた値を、このマスの最良値としてセット。
「検査済み」をtrue。
このマスの最良値が0以上であれば「この地点まで移動可能」フラグをtrue。
とりあえず、味方にぶつかるとか敵に遮られた場合とか考えてないけど。
300 :
299:2007/02/05(月) 17:33:46 ID:4crcw9g+
訂正
× その(最大4つの)最良値のうち「最低」の値から、
○ その(最大4つの)最良値のうち「最大」の値から、
お題が出される、その効率的な処理を考えるのが楽しい。
そんな時期が俺にもありました
じゃあちょっとカレーの好みにうるさい人工無能を組んでみれ。
賞品は不二家のシュークリーム
用意出来るのかい
304 :
294:2007/02/06(火) 00:50:01 ID:H0MQ/l9y
305 :
名前は開発中のものです。:2007/02/06(火) 15:25:58 ID:rDCcR2NQ
●を書いたとしてそれを自動で自由に動くようにしたいんです。ランダムを使うかのはわかるんですがどう使うかずっと悩んでます。わかる人教えて下さい。
>>305 本当に適当でいいならこんな感じ、汚くてすまん・・・
wx = 640 : wy = 480
x = wx / 2 : y = wy / 2
screen 0, wx, wy, 0 : randomize
repeat
x += rnd(3) - 1
y += rnd(3) - 1
redraw 0
color 0, 0, 0 : boxf
color 255, 0, 0
pos x, y : mes "●"
redraw 1
await 1
loop
307 :
294:2007/02/06(火) 16:19:53 ID:H0MQ/l9y
>>306 汚くないと思うむしろ綺麗
>>296 実行してみました。
できた。ありがとう。フルスクリーンで検索した俺がバカだった
ところで
>解像度はそのままでいいからフルスクリーン
このゲーム(0c2)をやるためには最低限1024x768必要
∴フルスクリーンいらなくね
まわりを真っ暗にすればいいわけか?
awaitは16だろ
>>307 フルスクリーンウィンドウ?にして1024x768以上の解像度があるなら変倍しないでいいんじゃね?
>>308 >awaitは16だろ
10とか100じゃなくて、16と言うところになんか意味合ったりする?
>>309 何かで16以下は重くなるだけとか読んだ気がするだけで、いつも使ってる値ってだけ
意 味 は 無 い
311 :
名前は開発中のものです。:2007/02/06(火) 18:31:43 ID:rDCcR2NQ
await16でFPS60ぐらいになるんじゃなかったっけ?
>>310 aw 1~15 だとどっちみち16msくらいかかるもんね。
お前ら根本的に勘違いしてるだろ、ウェイトって言うのは、
と説明始めようと思ったが、
毎スレ恒例のディスプレイ同期の話じゃん。
荒れちまえ\(^o^)/
weight:字体の黒さ,線の太さの程度
全ウェイターが荒れた!
計算させてみればわかるけれどawaitは精確には止まってくれないよ
await 1
にして、あとは自分でfpsに合わせろって感じ
317 :
名前は開発中のものです。:2007/02/07(水) 00:47:28 ID:Tc5MU8hy
>>309 await 1 って、やってもWinXPとか2000だと大体10ms以上止まる
16って、言うのは1000/60が約16.6だから良く使われる
HSP3とDXFIXでゲーム作ってるんですが、
wavファイルを複数同時に再生できるプラグインってありませんか?
いろいろ探してみたんですが3に対応してるのがどれかわからなくて。
CWSDRV.DLLでやろうとしても、なぜか上手くいかないし。
あと、Easy3DってDXFIXと一緒に使うのは無理ですか?
>>319 snd_load "sound_001.wav",0 にしてる以外はほとんどそのとおりにやってます。
HSPだけだとうまくいくんですが、DXFIXと一緒にすると
snd_load の行でシステムエラーが出ます。
dsoundex.asを使うとエラーは出ないのですが音が出ません。
これもDXFIXを使わなければ同じ記述でちゃんと音はでます。
mmloadとmmplayを使えばちゃんと再生されるんですが、何が原因なのかわかりません。
#include "dsoundex.as"
ds_init
ds_load "sound_001.wav",1
↑これでロードして
if文使って攻撃当たったら↓で再生するだけなんですが。mmload mmplayで置き換えると問題なしです。
ds_play 1
drv_initやds_initはちゃんとes_screenで画面作成してから記述してます。
;
>>321 順番が逆。drv_iniしてからes_iniしてみれ。
#include "CWSDRV.as"
#include "HSPDXFIX.as"
onexit goto *owari
drv_ini
es_ini
es_screen 640,480,16,0,1
es_cls:es_dialog "wav",16,"wavfile"
if esr_stat=0 :goto *owari
a=refstr:pos 0,0:color 0,0,0:es_mes "file="+a
snd_load a,0
snd_play 0,CWS_PLAY_LOOP
repeat:stick s:if s=128:break
await 0:es_sync -16,0:loop
*owari
es_bye:drv_bye:end
>>322 できました。ありがとうございます。
> ※標準DirectXプラグイン "HSPDX.DLL" と同時に使用する場合は、
> es_screen で画面を作成後、ds_init を実行してください。
> そうしないと、画面が出なくなります。
dsoundexのヘルプにこう書いてあったので気づきませんでした・・・。
もう一つ、DXFIXの全画面表示で入力ボックスみたいな感じでテキスト入力させて変数に文字列入れるには何を使えばいいですか?
どこをどう読めば ds_init と drv_init を同じように読めるんだよ
ドキュメント読めないだけの連発質問ウザイ。
drv_iniはCWSDRV.asの初期化
ds_initはdsoundex.asの初期化、それぞれ別のプラグイン。
dsoundex.asのヘルプに「es_screen で画面を作成後、ds_init を実行してください」とあったので
drv_iniもds_initと同じようにes_screenの後に記述するのかと思ったんだけど?
で、実際に両方ともes_screenの前に記述したらそれぞれきちんと動いた。
drv_iniとds_initを同じように扱ったらいけなかったの?
/*
>>325 ID:AwlcnWEsはマニュアルは一応読んでるみたいだけどな。
マニュアルに書いてない事項については、
自分で試行錯誤することをスグに諦めて、他人にすがるみたいな所がみられるね。
>>326 "間違ってないはずなのに「うまく動かない」"ときは、
"自分で勝手に正しいと思い込んでいる"部分を見つけないといけない。
今回の場合は、「CWSDRV」と「HSP DirectSoundExtension」が
機能的に類似しているからといって、勝手に「同じ扱いで良い」と思い込んでる。
どのマニュアルにもそのようなことは書いてないのに。 */
初期化もloadもplayの命令文もほぼまったく同じような記述の仕方だったので
中は同じような処理をしているんだろうなと思って同じように扱いました。
ck_joystickとjoystickぐらいの差ぐらい。
で、ds_init と drv_iniを同じように扱ったらだめだった理由を教えて下さい。
実際に同じように扱って両方ちゃんと動いているのだけど、このやり方はだめなのですか?
あと
>>321のdrv_initはdrv_iniのタイプミス。
;変更前(CWSDRV.as)
es_ini ,,3600
es_screen window_x, window_y, 32,,SCREEN_MODE,1
ds_init
↓
;変更後
ds_init
es_ini ,,3600
es_screen window_x, window_y, 32,,SCREEN_MODE,1
;変更前(dsoundex.as)
es_ini ,,3600
es_screen window_x, window_y, 32,,SCREEN_MODE,1
drv_ini
↓
;変更後
drv_ini
es_ini ,,3600
es_screen window_x, window_y, 32,,SCREEN_MODE,1
>>327 すみません、まさかヘルプが間違ってると思わなかったので・・・。
で、
>>324の入力ボックスの件。
標準命令のinput命令のようなものを全画面モードで使えないか?
ということだと思うけど。
これも、そういった事項についてはマニュアルには書いてないねぇ。
-> ここで諦めずに、試行錯誤してみようか。*/
#include "HSPDXFIX.as"
onexit goto *owari
es_ini
fs=1 ;=0でフルスクリーン
es_screen 640,480,16,0, fs
a=123:pos 0,0:input a,100,20,10
repeat
es_boxf 0,0,640,480
stick s:if s=128:break
pos 0,200:es_mes "a="+a
await 0:es_sync -16,0
loop
*owari
es_bye:end
/* 一応動くことは動くが、見栄えも良くないねぇ・・・。
ウィンドウモードでの動作もHSP本体、DXFIXの仕様外くさいから・・・
さぁ、どうしますか?
ー> キーボード入力を読み取って、文字列変数に加えたり削除したりする
擬似input命令なモジュールでも自作するべきやろね。
自分の作品のためなんだし、こっからは自分でやってみておくれよ。
出かけるのでこれまで。*/
>>329 MIA氏の名誉のために、ヘルプの件についていうとー
HSP DirectSoundExtensionはHSP2.xx用で
HSP3への対応はうたってない。
そして、ヘルプに書いてあるのは、
HSPDXFIXへの対処ではなく、HSPDXへの対処法。
すでに2つもの思い込み違いがあるよ。
ほな。
b7が出てるようだ
>2007/02/06 3.1b7
>
>ラベルの位置を変数に記憶させるためのラベル型を追加。
>スクリプトエディタの検索方法を修正。正規表現による検索を追加。(HSPBT#53)
>スクリプトエディタの外部ツール登録が保存されない不具合を修正。(HSPBT#73)
>vartype関数の変数指定で配列変数を指定できるように修正。(HSPBT#102)
>repeat命令の第2パラメーター指定で無限ループを生成することがある不具合を修正。(HSPBT#95)
>oncmd命令で有効化・無効化を行なうとエラーが出ることがある不具合を修正。(HSPBT#66)
>ユーザー定義関数内で関数の戻り値が代入される変数型が変更できない不具合を修正。(HSPBT#90)
>ヘルプの誤記を修正。(HSPBT#97)
>型を拡張するプラグインで型変換に失敗することがあった不具合を修正。
>拡張プラグインHGIMG3の機能追加と不具合をいくつか修正(詳細はhgimg3.txtを参照してください)。
>>332 ま、ゲ製作者にはほとんど関係ない修正なんだろうな。たぶん。
>ラベルの位置を変数に記憶させるためのラベル型を追加
何に使うんだ?
if文を羅列させなくて済む
336 :
名前は開発中のものです。:2007/02/09(金) 00:21:43 ID:rjgg8G8D
>>335 よくわからんから使い方教えてほしい
むずくて理解が無理だ
goto や gosub の飛び先のラベル名の指定に、変数が使えるんじゃね?
ラベル型変数 = *start
goto ラベル型変数
みたいな。 便利そうだ。
>>338 なるほど、if文を羅列する必要がなくなるな。
正規表現検索は作業量的にでかいな。頑張るなぁ
でもHSPユーザで正規表現に明るい奴がどんくらいの割合いるんだか
俺も暗いが
ところで、夜中に質問。
hsp2.61なんですが、ウィンドが複数ある状態で、特定のウィンド内のmesboxの内容を
objprmで書き換えると、対象のウィンドが強制的にアクティブになってしまいます。
具体的には以下のようなコードの場合なのですが、これを何とか回避して、
裏側でこっそりmesboxの内容を書き換える方法はないモノでしょうか?
-------------------
screen 0
pos 10, 10 : objsize 150, 24
button "ボタン1", *button01
sdim mes_1,1000
pos 10, 50 : mesbox mes_1, 240, 24, 1
screen 2
pos 10, 10 : objsize 150, 24
button "ボタン2", *button02
sdim mes_2,1000
pos 10, 50 : mesbox mes_2, 240, 24, 1
*main
wait 10
goto *main
*button01
mes_2 = "ボタン1が押されました"
gsel 2,0 : objprm 1,mes_2
goto *main
*button02
mes_1 = "ボタン2が押されました"
gsel 0,0 : objprm 1,mes_1
goto *main
>>341 「objprm 1,mes_2」、「objprm 1,mes_1」
の代わりに
「objsend 1,12,0,mes_2」、「objsend 1,12,0,mes_1」
で、どうかな。
title mes_1,1
でもいけるヨ
>>343 おぉ・・・ほんとだ。
title命令でp2指定ができて、そんな意味があったとは
なぜかHSP3では廃止されてるのな。
ラベルtypeを使ってHSPでタスクシステムとかか?
馬鹿みたい。
>>342 >>343 おおぅ、ここは神が多くて困ります!
バッチリです。どうもありがとうございました。
逆コンパイラって存在するんですか?
2.61用の逆コンパイラもってる人いない?
あと実行ファイルからAXファイルを抜くやつも・・・すまんorz
ベクターにある抜くツールは、古くてヘッダーがおかしくなる
349 :
名前は開発中のものです。:2007/02/09(金) 22:18:08 ID:FOd7Jwpc
とりあえずダウンロードして入門も全てよんだ
数値計算ッテドウヤルンダ?
座標計算じゃなくて普通に「1+1」っていれると「2」ってでてくるのとか
>>350 それしても2と表示されないからどうやるんだろうなと
HSP3.0で
mes 1+1 とだけ書いて実行すると
2と表示されました。
353 :
名前は開発中のものです。:2007/02/09(金) 22:47:25 ID:1G/snrPz
>>351 ん?
mes 1+1
って、書いて F5 押すだけで左上に 2 って出るだろ・・・
HSP2でstopしてないからウインドウが消えるとか?
質問です。
mmloadでmp3を再生したのですが
音量が不安定になって、音割れしたり聞こえにくくなったりしてしまいます。
回避策もしくは別の命令やプラグイン等でうまく再生出来る方法があれば教えて下さい。
KexMP3というDLLを試してみたんですが、バッファオーバーフローで再生できませんでした。
>>356 使ってみましたがやはり音の変化が激しい部分、例えば曲の始めの無音部分からイントロ部分への移りかわり等で
音割れが起きたり、本来は無いはずの音量の波が出来てしまいます。
ビットレートに問題があるのでしょうか、160kbpsなのですが。
>>357 HSP側の問題でなく、codecの問題だろ。
・「本来の音」は、どのアプリで確認したのか
・ffdshowのようなものでmp3デコーダーの設定を変更してないか。
言ってみ
治りました、ありがとうございます!
>>358さんの仰る通り、codecの問題でした。
wmpでは普通に聞こえていたので全く気づきませんでした。
ffdshowのmp3デコーダーをdisabledにしたら万事解決です。
スレ違いな質問になってしまってすみませんでした…。
あとhmmdllはとても便利そうなので活用させて頂きます。
360 :
名前は開発中のものです。:2007/02/11(日) 02:56:36 ID:p9WKRd/6
最新のベータ版hsp31b7のhgimg3についての質問させてください。
hgsetreq SYSREQ_2DFILTER,2
って2Dバイリニア補間と書いても
hgrotate命令でのダイレクト描画時に、
バイリニア補間しなくなった気がするんですが、
環境の問題でしょうか?
仕様変更なのかも・・・
ちなみにVer.31b6のhgimg3だと2Dバイリニア補間できてます。
361 :
名前は開発中のものです。:2007/02/11(日) 04:34:45 ID:r5mamvmx
HSP ver.31b7出たんだな
362 :
名前は開発中のものです。:2007/02/11(日) 05:13:36 ID:gCwLP8t7
>>360 texload2でテクチャ読み込むと補間出来た
仕様かバグかは分からない
363 :
名前は開発中のものです。:2007/02/11(日) 05:24:38 ID:gCwLP8t7
texload2だとアルファチャンネル付きの画像じゃないと
透明色なしになるのか・・・
なんか重くなりそう・・・
β7キタ━(゚∀゚)━(∀゚ )━(゚ )━( )━( )━( ゚)━( ゚∀)━(゚∀゚)━ !!
365 :
360:2007/02/11(日) 14:09:40 ID:p9WKRd/6
報告ありがとうございます。
もう少し調べてみますが、使い勝手も考えて
Ver.31b6のhgimg3を使ってこうと思います。
366 :
名前は開発中のものです。:2007/02/11(日) 16:32:02 ID:d03suuH7
#module aonc
#define global addonclick(%1)clickl@aonc=%1:_addonclick
#deffunc _addonclick
if onclickon=0{onclickon=1:onclick gosub *onclicklabel}
id=-1:repeat oncnt:if idlist(cnt)=0{id=cnt}:loop
if id<0{id=oncnt:oncnt++}
clicklst(id)=clickl:idlist(id)=1:return id
#deffunc delonclick int delid
if delid<oncnt {if (delid+1)=oncnt {oncnt=limit(oncnt-1,0,oncnt)}else{idlist(delid)=0}}
return
*onclicklabel:for i,0,oncnt:if idlist(i){gosub clicklst(i)}:next:return
#global
button gosub "labelA 削除",*del:button gosub "labelB 削除",*del
movl=*N,*L,*U, *LU,*R,*N,*RU,*N,*D,*LD,*N,*N,*RD,*N,*N,*N,*N:x=320.0:y=240.0:xy=sin(atan(1,0))*4
addonclick *labelA:addonclick *labelB
repeat:redraw 0:color:boxf:color 255,255,200
stick ky,$f:gosub movl(ky&$f):pos 100,0:mes a:mes b:pos x,y:mes "▲"
redraw 1:await 15:loop
*N:return:*L:x-4:return:*U:y-4:return:*R:x+4:return:*D:y+4:return
*LU:x-xy:y-xy:return:*RU:x+xy:y-xy:return:*LD:x-xy:y+xy:return:*RD:x+xy:y+xy:return
*labelA:acnt++:a="labelA "+acnt+" "+cnt+" "+iparam+" "+wparam+" "+lparam:return
*labelB:bcnt++:b="labelB "+bcnt+" "+cnt+" "+iparam+" "+wparam+" "+lparam:return
*del:delonclick stat:return
ちょっとラベル型を使ってみた。strみたいに labelで新規命令のパラメータタイプ
としては、まだ使えないみたいマクロで変数に入れてから変数として渡して対応
(button "",*abcみたいに直接指定した時に対応するため)
ラベル型を式に使う事も出来ない
逆コンパイラもってる人いませんか?
どのバージョンでもいいです。
そんなのあるの?
有志で作ってるサイトあるよ
でも、なぜか検索で出てこない
中の人はHSP2.6とかの逆コンパイラ作った人なのかな?
逆コンしたら正常に動かないソースが出るのならあったなぁ
ラベルが消えるとか…APIはどうだとか…
ラベルが消えてもいいです。
逆コンパイラがほしいのですが、どこにありますか?
逆コンパイラなんていらないだろ
リバースエンジニアリングにはダーティーなイメージが付きまとうしな。
バージョンを問わないだとか、逆コンパイルする目的を示さないあたり、
実際ロクな使い道じゃないだろう。
目的を示す必要があるなら示します。
昔作ったゲームのソースを無くしたので、
それを実行ファイルから復元したいだけです。
言うと思った
が、それなら「どのバージョンでもいいです」はおかしいだろ?
長い間、ネットで公開していて、
いくつかのバージョンを使ってバージョンアップしていたので、
どのバージョンでも大方良いと思ったからです。
そんなソースを外部メディアにバックアップしてないのもどうかと思うが。
HSP2.55~2.61用なら、「HSP 逆コンパイラ」でGoogle検索すれば
Vectorにある物が思いっきりトップに出てくるぞ。
全機能使うには、いくらかの金が必要なようだが。
同等のゲームを作り直すのにかかる手間ヒマを考えれば安いもんだろ。
逆コンパイルとか以前に動いてるのをみて処理を予想できないなら意味ないっしょ
忘れたなら 勉強しなおせるいい機会
この話題はおわり 他のが沸く前に
すいません。最後に1つだけお願いします。
expを使ってaxにしたやつを教えて頂いたソフトにかけたのですが、
ヘッダーが違いますと言われました。なぜなんでしょうか?
ヘルシア吹いた
383 :
名前は開発中のものです。:2007/02/12(月) 21:08:01 ID:EN6Hiq9g
mes 2.4^3
みたいなのやるとき、どうするんすか?
HSPで作ったソフトで商売してる人いる?
386 :
383:2007/02/12(月) 22:55:34 ID:EN6Hiq9g
>>384 おーーさんくすです。
ざっと読みましたが関数電卓レベルの計算は内部で実装してないんですね。
見掛けでかい式になるのがまんすれば、なんとかなりそうです。
技術計算で少し目をつぶれば、他はかなりよさそうですね。
388 :
名前は開発中のものです。:2007/02/13(火) 04:46:26 ID:rIw2M+fr
いや、HSPで作ったソフトをシェアウェアとかにしてる人いるのかなぁって、、
別に問題はないんだよね?
そうかな
>>388 吉里吉里だろうが、Nスクだろうが、HSPだろうが
全て作者次第だろうが…
>>390 そんな無気になることでもないだろ
常識的に考えて・・
393 :
名前は開発中のものです。:2007/02/13(火) 14:53:04 ID:kAlK9wyi
>>392 自分で調べる
教えてもらったら礼を言う
って、事が出来ない奴に常識的にどうこう言って欲しくないw
>>387に対する礼儀がなっていないからです。
一生懸命あなたのために貴重な時間を割いて調べたのかもしれないのです。
自分の期待した答えでないからと
「いや」のただの2文字で好意を踏みにじったのです。
自分の言葉足らずの文章のせいで誤解をさせた上に、
自分で調べるという最低限の努力もせず、相手に無駄なことをさせたのです。
詫びの一言ぐらいあってもいいでしょう。
ムキになるのは当たり前です。
常識的に考えて・・
>>385 有名なメモリークリーナーってHSP製じゃなかったっけ?
飛翔鮎
ダイソーで100円で売られてる
「ザ・ボクシング 実写でボクシング」
ってHSPコンテスト入賞作だったような・・・?
スクリーンセーバーとかHSP製多そう
HANAGE2もショップ99で販売されてたな
Kz3はしきりすぎだろw
385について別にピザ食いながら鼻息立ててキレるほどのことでもないなと
思ったよ、俺は。
ピザ食っちゃダメですか
鼻息立ててキレなければ多分おk
でも太るなよ。
健康面の不安定さから、国内医療費食い潰すのに加えて、外貨絡みの多い穀物関係の消費は無意味に貿易財政逼迫するから。
ただでさえ破綻しそうなドルを、この国は保有しすぎですけん。
国産の穀物だけで食えとは言ってないけど、バランス良いまっとうな食事心掛けたら国内需要が自然と増えるよって程度の話ー
マジレスすると
俺メタボリック
HSPはキチガイを呼ぶ力があるらしい
407 :
名前は開発中のものです。:2007/02/15(木) 06:22:55 ID:T4SorQda
多次元配列の変数に文字列を代入することは不可能なんですか?
1次元の配列変数ならできたんですが・・・。
>>407 可能です。
sdim mojiretu,256,3,3
mojiretu(0,0)= "叶恭子","本名小山恭子","長女"
mojiretu(0,1)= "叶春栄","本名不詳","次女"
mojiretu(0,2)= "叶美香","本名玉井 美香","三女"
repeat 3
j=cnt
repeat 3
i=cnt
pos i*160,j*32
mes mojiretu(i,j)
loop
loop
stop
411 :
名前は開発中のものです。:2007/02/15(木) 23:49:40 ID:UV1ebeZU
HSPでWizっぽい3Dダンジョンつくりたいのですが、
3Dダンジョン部分の簡単なサンプルとかないですか?
413 :
411:2007/02/16(金) 00:10:53 ID:14qwsicF
>>412 どうも。早速ダウンロードしました。
HSP3なんですが、palcopy 2 がエラーでます。
頭がな
416 :
名前は開発中のものです。:2007/02/16(金) 01:43:53 ID:ppH9PRcO
palcopyは廃止されてる
sp30\common\hsp3util.as
の bmppalette を見てみ
417 :
名前は開発中のものです。:2007/02/16(金) 02:02:56 ID:ppH9PRcO
hsp30\common\hsp3util.as
hが抜けてた・・・
418 :
名前は開発中のものです。:2007/02/16(金) 23:53:45 ID:ppH9PRcO
>>365 今日試したらtexloadでも補間出来た
何か条件があるのかも・・・
419 :
418:2007/02/17(土) 00:33:49 ID:bW0Rt6ue
>>365 すまん勘違いだった
texload2も関係ないや
420 :
名前は開発中のものです。:2007/02/17(土) 13:53:05 ID:/kaaJsCE
gmode ←2で設定してます
gcopy ←まあ基本ですよね
gzoom ←回転も一緒にやってくれるのって無いですか?
grotate ←これが説明書と違って上手く透過できない時があるのですが、なぜでしょうか?
421 :
名前は開発中のものです。:2007/02/17(土) 15:49:27 ID:8zaigqCL
grotateはgmodeが5か6のときだけ使えば解決
>>420 多分、gmodeが4以降の黒で透過ならcolor 0,0,0と書き込むと
旨く色抜きできるかもしれません。
color 0,0,0
pos xx,xx
gmode xx,xx,xx
grotate xx,xx,xx
423 :
名前は開発中のものです。:2007/02/18(日) 21:32:54 ID:oMzBretM
在日=竹石圭佑らしいが、熊本の済々黌の弓削達也って奴も朝鮮人だろ
在日って顔が日本人とは全然違うもんな
おや?
425 :
420:2007/02/19(月) 12:27:02 ID:N5sPNDQg
回答ありがとうございます。
426 :
名前は開発中のものです。:2007/02/20(火) 02:16:00 ID:hQkR02aA
ラブちぇんって番組の効果音聞くとHSP思い出す
427 :
名前は開発中のものです。:2007/02/20(火) 16:31:25 ID:35NxbGRL
すいません、かなり初心者な質問なのですが、HSPでRPGを作ろうと思うのですが
キャラの向きってどうやって表示させるのでしょうか?
BMP画像で4方向のキャラの絵がかいたやつがありますよね、あれを使って表示
させたいのですが、どうすればいいかわかりません。
なんか、説明が下手でわかりにくいかもしれませんが、わかる方がいられましたら
よろしくおねがいいたします。
428 :
名前は開発中のものです。:2007/02/20(火) 17:34:10 ID:UJXvMqBN
>>427 まずキャラをどうやって表示してるか書け
まぁ、簡単にやってみると
screen 1,32*4,32,0,0,0 :font "MS ゴシック",32,1 :mes "←↑→↓" :screen 0,640,480,0,200,100 :x=300:y=200
repeat
stick ky,$fff
if ky=1 {ctx=0 :cty=0 :x-4}
if ky=2 {ctx=32 :cty=0 :y-4}
if ky=4 {ctx=64 :cty=0 :x+4}
if ky=8 {ctx=96 :cty=0 :y+4}
pos x,y :gcopy 1,ctx,cty,32,32
pos 0,0 :mes "stick="+ky :redraw 1 :await 15 :redraw 0 :color 255,255,255:boxf :color
loop
こんな感じ(分かる安さ優先)
どーせ、アニメーションもさせるんだろうから
screen 1,32*4,32*4,0,0,0 :font "MS ゴシック",32,1
repeat 4:pos 0,cnt*32 :color 200*(cnt=1),200*(cnt=2),200*(cnt=3):mes "←↑→↓" :loop :screen 0,640,480,0,200,100 :x=300:y=200
repeat
stick ky,$fff
if ky=1 {ctx=0 :x-4}
if ky=2 {ctx=32 :y-4}
if ky=4 {ctx=64 :x+4}
if ky=8 {ctx=96 :y+4}
if ky&15 {cty=((cnt/3)\4)*32}
pos x,y
gcopy 1,ctx,cty,32,32
pos 0,0 :mes "stick="+ky :redraw 1 :await 15 :redraw 0 :color 255,255,255:boxf :color
loop
こっちはアニメ付き
>>427 キャラの向きを変数で持っとけばいい。
↑0、→1、↓2、←3みたいに。
方向キー入力の度に現在の向きを数値で保存しておいて、後は実際にキャラを描画する際に、
保存した方向の値を元に、表示する画像を選べば良いだけ。
画像データを配列にして持っておけば、if文もいらないからもっと楽。
431 :
427:2007/02/20(火) 17:56:20 ID:35NxbGRL
432 :
名前は開発中のものです。:2007/02/20(火) 18:32:53 ID:nJaWXZmF
>>431 まずはシューティングだろ、技術的に考えて…
なんでやねん
シューティングらしきものを作るのは楽だからな。
まあアクションの細分ジャンルみたいなもんだから
フォーマットが限られてるという理由もある。
こんな基本的なこと質問してるレベルじゃあ
ろくなモン作れないさ。
まぁシューティングからかな
ドラクエ式RPGを最初に作ろうってのは無謀
つーか、普通のRPGみたいなのは素材が問題だからなw
難易度的には簡単だと思うが、ドラクエみたいなのを作ろうとしたら膨大な素材が必要だし一人で作るのはまず無理だな
技術的に可能でもとてもやる気がもたんだろうw
RPGとかノベルゲーは思いのほか
プログラムが面倒だぞ
アクション系はものにもよるけど
結構いきあたりばったりでいける
個人的な経験上、RPGやノベルゲームは、システムを作るかゲーム内容を作るか、
絵や絵素材を描き込むか、三つの内の二つまでが根気の続く限界だったw
昔初めて作った自作RPGも、結局ドット絵で4方向キャラ絵描くのが大変で、
システムじゃ対応させていたのに、画面じゃ初代DQ1と同じ正面固定キャラだったり・・・
最終的には、くだらないツール作り・・・
マップ上のキャラだけポリゴンにするとかw
443 :
名前は開発中のものです。:2007/02/21(水) 02:24:31 ID:fMYYp1Y1
randomize
sexplay=rnd(100)
if sexplay = 0 : dialog "プギャー"
F5
! プギャー
('A`)
200回実行して、一度もプギャーされないんだが
>>431 ドラクエ型RPGよりも
20年前のウィザードリー型
(直線だけで書かれたヘボイ3D迷路のダンジョンで
ストーリーが殆どないRPG。
あるのは迷路探索と戦闘と店の売買と宝探しと
多少のイベント)
のRPGのほうが作りやすいんじゃないかい?
それだと、ソースのテンプレみたいのもあるし
マップがあまり広くなくても大丈夫だし
ストーリーも殆どいらないし
主人公や仲間のグラフィック書かなくていいし
重要なのは敵の出現率と強さのバランスだけだから
(これは重要。本当に重要)作りやすいよ。
>>445 消防の頃、88で自作の3DRPG作ったのを思い出す。
初めて自分の作ったダンジョンの中を歩いた時は、そりゃ感動したもんだ。
LINE文が、描画中の線が目に見えるほど遅かったのには難儀したが。
>>446 俺もやったけど、描画は遅いんであらかじめ描いておいてパレットチェンジで対応した。
描画の速さはちょっと自慢だったが、完成してないので誰も見ていないw
>>447 ああ、そう言う方法の方が早かったかも知れないですな。
あんまり遅かったんで、俺はLINE文を自作のマシン語で置き換えて作ってたよ。
まあダンジョンの中歩けた時点で満足して、俺もゲームらしいゲームには作らなかったけど・・・
>>446 消防でか。すげーな。
俺の通ってた小学校にいたら間違いなくヒーローだぞ。
450 :
447:2007/02/21(水) 21:57:51 ID:sqTKc8XK
さすがにマシン語は無理だったw
緑の点を打つ、あたりで挫折した覚えがあるよ。446すげーな
つーかここHSPスレじゃねえかw
てかなんでそんな人間が今HSPなんだよ
ラクだからじゃないのか
いくつかの数字から、何個か選ぶみたいな命令ってあるの?
ロト6用に簡単なものをつくってみたいんだけど、
ぱっと思いつくrepeatとrndをつかった文だと、重複した時の対処を
一つずつやっていかなきゃならないけど、
なんかもっときれいな形にできないかなと。
ぱっと思いつくrepeatとrndをつかった文で重複した時の対処を一つずつやっていけばいいと思う。
ちょっと分かりにくいかもしれない。
シューティング作ってるんだけど、弾の出し方がよく分からない。
・押しっぱなしで出続ける(最大何発とかの制限あり)
・離すと切れる
は出来るんだけど、
・一回押したら最後まで出る(ミサイルが4発時間差で出たり)
ってのが出来ない。
だれかヒントを…
ショットボタン押されたらカウンター生成(カウンター≠0ならショットボタンを無視)
↓
カウンターが規定値に達したらカウンターを0に。
↓
カウンターが特定の値のとき、自機の座標に応じてショットを生成
↓
ループ
で良くね
ミサイルのフラグ(待機、発射中、硬直中、残弾無し、一時使用不可)を作って
キー押されたらフラグ変えて、ループ中に作ったif文で関数なりなんなりに飛んでけばおk
モジュール空間にミサイル発射間隔とカウンタ等を入れるのがお勧め
>454
そうですかそれしかないですか(´・ω・`)ションボリ
#include "hspda.as"
*saisho
dim a,6
randomize
repeat 6,0
*yarinaoshi
a(cnt)=rnd(43)+1
if cnt=1 & a(1)=a(0) :goto *yarinaoshi
if cnt=2 & (a(2)=a(1) or a(2)=a(0)) :goto *yarinaoshi
if cnt=3 & (a(3)=a(2) or a(3)=a(1) or a(3)=a(0)) :goto *yarinaoshi
if cnt=4 & (a(4)=a(3) or a(4)=a(2) or a(4)=a(1) or a(4)=a(0)) :goto *yarinaoshi
if cnt=5 & (a(5)=a(4) or a(5)=a(3) or a(5)=a(2) or a(5)=a(1) or a(5)=a(0)) :goto *yarinaoshi
loop
sortval a,
repeat 6
mes a(cnt)
loop
mes "\n enterでもう一回。ESCで終了"
*keycode
stick key
if key&32 :cls :goto *saisho
if key&128 :end
await 1
goto *keycode
つくって見たんだけど、EXEファイルが実行してもエラー。
どうすれば良いか全然分からん。( つД`)
;その件に関するオレ的考え
*selnum ;数字選定
dim r,44
repeat 6
repeat cnt+1
a=rnd(7)+1:if r(a)=0:r(a)=1:break
loop
loop
;表示
repeat 43,1:if r(cnt) :mes cnt
loop
;まだやるかい
mes "\nENTERで「元気…イッパイ…だぜ…ヘッ…」\nESCで、「ヒ…」":a=0
repeat:wait 1:stick key
if key&32 :a=1:break
if key&128 :end
loop
if a:cls :goto *selnum
461 :
460:2007/02/22(木) 05:07:35 ID:lPfRj7VD
;6行目間違い。デバッグ用の数値のままだった。
a=rnd(43)+1:if r(a)=0:r(a)=1:break
462 :
名前は開発中のものです。:2007/02/22(木) 06:26:39 ID:TB+Oxm9G
>>459 出来るなら [Ctrl]+[F9] で実行ファイル作ってる?
>>453 ロト6のやつ
randomize: notesel a: repeat 43,1: noteadd ""+cnt: loop
repeat 6: i=rnd(43-cnt): noteget n(cnt),i: notedel i: loop
repeat 6: mes n(cnt): loop: stop
>460
オメスゲーナ。やり用によってはこうやってできるのか。
ちょっとわからんところ。
repeat cnt+1 の意味と最後にa=0とかa=1の意味とか、
良かったら教えてくれ。
if ってこういう使い方もあったのか。ヘルプだけじゃワカラン。
>462
内部エラー38とか言われる。何がダメなのかわからないので、晒してみた。
>463
重複が重複のまま・・。
465 :
名前は開発中のものです。:2007/02/22(木) 14:41:18 ID:TB+Oxm9G
>>464 >内部エラー38とか言われる。何がダメなのかわからないので
「38 "外部DLLの呼び出しに失敗しました"」
hsp30のフォルダにあるhspda.dllを
作った実行ファイルと同じフォルダにコピーしる
>465
うぉうデキタ。トン
exeにしたときは同じとこにないとダメなのね。憶えた。
一緒にひっくるめてファイルにしてくれるもんかと思ってた。
できた記念に一口買ってくるヮ
8、11、12、16、19、38
思いきり当たらなそうだけどなーorz
>>464 思いついて適当に書いたけど
問われて改めて考えると、バグの元や無駄があるのに気づくな…。
─repeat cnt+1 は─
無限ループに陥るのを回避するために、ループ回数を指定してるんだけど
「ランダムで数字を選んだ時、すでに選択した数字とカブってる」
という状況は、7回以上連続して発生してもおかしくないんで、
試行回数 cnt+1 では不十分だ…。
>463氏の、選択した数値を抜き取っていく方法なら、
同じ数値が選ばれる問題は発生しないから、そっちのほうがいいやね。
─a=0とかa=1は─
キー待ちループの所で、
どういう理由でループを脱出したかを、あとで判定するための
フラグ操作のつもりだったのだけど、
脱出する理由は一つだけなんだから、フラグ立てるまでもなかった。
repeat:wait 1:stick key
if key&32 :break
if key&128 :end
loop
cls :goto *selnum ;これで十分だった。
HSPでRPG作ろうと思ってるんだけど、音楽の再生(BGM)までの時間遅くない?
これを皆さんどうやって解決してますか?
なんじゃそら
データの無音時間が長いんじゃねえの
>>466 そぉい!
#define ALL 43 //0~42の合計43個から
#define NEED 6 //6個選ぶとして
dim a, ALL
repeat ALL
a(cnt) = cnt
loop
repeat NEED
idx = rnd(ALL-(cnt+1))
idx += (cnt+1)
//ここで2つをスワップ
tmp = a(cnt)
a(cnt) = a(idx)
a(idx) = tmp
loop
//処理が終了した、結果を確認 ****
repeat ALL
mes "a[" + cnt + "] = " + a(cnt)
if(cnt == (NEED-1)): mes "↑ ここまで"
loop
#define ALL 43 //0~42の合計43個から
#define NEED 6 //6個選ぶとして
if ALL < NEED : dialog "ALL が NEED 未満\nALL="+ALL+" NEED="+NEED,1,"MyError!" : end
//初期化
dim a, ALL
repeat ALL : a(cnt) = cnt : loop
//シャッフル
randomize
repeat NEED
idx = rnd(ALL-cnt)+cnt //←*******ここ、これでもいけるんじゃね?*********
//ここで2つをスワップ
tmp = a(cnt) : a(cnt) = a(idx) : a(idx) = tmp
loop
//処理が終了した、結果を確認 ****
sdim result, 32*ALL : notesel result
repeat ALL
noteadd "a[" + strf("%2d",cnt) + "] = " + a(cnt)
if(cnt == NEED-1) : noteadd "↑ ここまで"
loop
mesbox result, ginfo_winx,ginfo_winy, 0
472 :
名前は開発中のものです。:2007/02/22(木) 23:57:08 ID:TB+Oxm9G
>>468 .MID?
なら音の初期化に時間が掛かってる(仕様)
それが嫌なら MCI コマンド で
mpegvideoのデバイス使用したりすればいい
BGMは普通にオーディオファイル使いなよ
474 :
470:2007/02/23(金) 10:12:11 ID:E2Prn5Yf
>>471 指摘と訂正ありがとう!
言われて気づきますた。
>>470は rnd() で拾う範囲が間違ってました。
>>468 ___________________
| GuruGuruSMF || 検 索 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
↑
SMFでBGM鳴らすと嫌がられるかもよ
kwsk
高性能なソフトウェア音源持ってるとオーディオ鳴らすよりメモリ食うから
ゲームの処理自体も遅くなるってことか>476
俺もMIDIは嫌だな。
環境依存だから作曲者の意図した音色で鳴らないし、内蔵のはとにかく音がヘボイ。
外部音源(GM非対応)持ってるんだけど、MIDIのルーティングそっちにしてると
勝手に変な信号送るしな。
基本的には用量が小さい以外のメリットはないからオーディオデータのが良いよ。
フリー素材使う&レコーディング環境が無いならSMFデータでも仕方ないが。
mp3はライセンスがあれだからoggだね
>477
俺が見てるゲーム系スレでMIDIだと一部に叩かれたりしてたってだけ
478-479みたいな話だった
俺もホムペでBGMにしてるとことかウザいし、内蔵の音嫌いなんで切っちゃってるがw
GGSMFは指定すれば外部音源も使えるが、
DirectMusicモードにすればどのパソコンも共通のDLSを使うんだぜ(そのDLSを変えれば別だが、普通はしない)。
処理は重くならない。
まぁ音がショボイのは髪の毛が抜けるほど同意なんだけどさ。
連ですまんが俺は
スーファミチックなグラフィック = SMF
3Dなど、綺麗なグラフィックや世界観 = オーディオデータ
でいいんじゃないかと思っている
でもまぁ個人差はあるよね
どちらもオーディオでいいと思うけどw
何らかの理由でとにかくデータを小さくしたいなら別だが
ジャンルによるけど、オーディオだと素材が見つからないんだよね。
聴いたことあるやつだったりして萎えたり。
MIDIは豊富だけどどこもショボいし、
かといって自分じゃ作れないし…
はぁ
>>483 ああ、それ分かるわ~
ファミコンチックな絵にはmusic.comのMMLで。
winで鳴らすプラグインあったよな…
いいわ。アレ。
TSSで良いんじゃね。HSP用プラグインあるし。
あとMIDIデータがあるならGXSCCでオーサリングするとか。
とにかく環境依存のSMFは、技術的に他に選択肢が無い場合以外は回避が吉。
わかった!
別でソフト音源を自作して配布すれば人類みな兄弟だ
そりゃPSGの時代にSCC積むってんなら分かるけど。
MIDIやmp3じゃだめなの?
低脳回線の俺にとっては、5分くらいかけて一生懸命落としたやつが、
超ハイクオリティなオーディオデータ使ってても
内容が糞だと本当に萎える。
作者は自分の技量に合った容量の音楽データを決めてくれよな/(^o^)\ハッナザッワサーン
チラ裏だけど
俺はショボいMIDIのほうがゲームには味があっていいなと思う時がある
>作者は自分の技量に合った容量の音楽データを決めてくれよな
ムチャクチャ言うとるw
だからTSS使えと
ここはミュージックフォーマットスレですか?
HSPの話題ないのかね
TSSをHSPで使ってみよう
元から進行遅いんだし何話題にしてももうなんでもよくね?
と妥協気味なんだが。
というか、こういう話題で荒れなかったのは奇跡な気がしてきた。
>467
レストンクス
cnt+1はそういうことだたのかー。
あの時はcntがどこにかかっているのかまだ良くわかってなかった。
でも これは (cnt+1/43)^(cnt+1) ってことで
確率としてはよっぽどと思うけど、
プログラマからすると高い方なんだろうか。
組んで計算してみようかと思ったけど、累乗してくれる命令が見つからない。
a=はフラグなのね。なるほどね。フラグってそうやって表すんか。
別のプログラムでこのやり方使ってうまくいった。勉強になりました。
>470-471
ようやっと仕組みがわかった。これも凄いな。
こういう発想は慣れればすぐ出てくるものなのかとただただ感心。
でもそれだけじゃ悔しいのであえていうと、
ロト6にゼロはないから、 a(cnt)=cnt+1にシル。
hsp wikiが
アクセス権限がありません
とかで見れない・・・俺だけ?
見れるが
……何かやらかしたんじゃないだろうなw
499 :
名前は開発中のものです。:2007/03/02(金) 22:52:48 ID:xch9HBdf
>>497 俺は開ける
ついこの前開発wikiが
>07/02/28から07/03/01までの間アクセスできない状態が続きました。原因はスパムによる高負荷だったようです。
だったみたいだから
そのうち繋がるんじゃね?
まりがとう。
ところで、
装備品やアイテムのパラメータがExcelで管理できたら
製作者的に便利だと思ったんですが、
HSPとのやりとりは難しいですかね・・・?
今はnote命令でやってるんですが視認性があまり良くなくて・・・
>>500 本格的なxsl形式対応は難しくても、csvなら簡単じゃね?
まあ何をどういう感じにしたいのかは知らんが。
>>500 今はどんな感じに(noteで読んでる)ファイル作ってる?
503 :
名前は開発中のものです。:2007/03/03(土) 13:18:13 ID:a544u/75
HSP3です。
screen で作成したWindowを、HSPスクリプトディタみたく、
最大化ボタンを追加し、起動時に最大化を行う
(ただしタスクバーと重ならないように)
ようにする方法があれば教えてください。
Wikiの過去ログで最大化ボタンを追加する方法がありましたが、
タスクバーの後ろに画面が重なったり、
プログラム実行時、自動的に最大化する方法がわかりませんでした。
こんなカンジです
;武器データの例(各0行目=インデックス=武器ID)
;10行目;ファイル名,アイテム名,材質
;11行目;アイテムの説明
;12行目;損壊後ID,耐久度,重量
;13行目;切断力,刺突力,衝撃力
;14行目;対切,対刺,対衝
;15行目;切,穿,打
;16行目;構えN,構えT,構えW
;17行目;持易N,持易T,持易W
;18行目;価格,汎/重
;19行目;欠番(改行だけを入れる)
Excelだとフィルタとか使えてアイテム間のバランス調整が楽だなあと思いまして
>>503 #uselib "user32.dll"
#func ShowWindow "ShowWindow" int, int
// BOOL ShowWindow(
// HWND hWnd, // ウィンドウハンドル
// int nCmdShow // 表示状態
// );
#func SetWindowLong "SetWindowLongA" int, int, int
// LONG SetWindowLongA(
// HWND hWnd, // ウィンドウハンドル
// int nIndex, // 変更するデータの指定
// LONG dwNewLong // 新しい値
// );
#func SetWindowPos "SetWindowPos" int, int, int, int, int, int, int
// BOOL SetWindowPos(
// HWND hWnd, // ウィンドウのハンドル
// HWND hWndInsertAfter, // 配置順序のハンドル
// int X,int Y,int cx,int cy, //位置と大きさ
// UINT uFlags // ウィンドウ位置のオプション
// );
#define GWL_STYLE -16
#define WS_OVERLAPPEDWINDOW 0x00CF0000
#define SW_SHOWMAXIMIZED 3
#define SWP_FRAMECHANGED 0x0020
screen 0,ginfo_dispx,ginfo_dispy,0,,,640,480
SetWindowLong hwnd, GWL_STYLE, WS_OVERLAPPEDWINDOW
ShowWindow hwnd, SW_SHOWMAXIMIZED
SetWindowPos hwnd, 0, ginfo_wx1, ginfo_wy1, ginfo_dispx, ginfo_dispy, SWP_FRAMECHANGED
とりあえず作ったぜ?最大化はこんな感じ?
で、タスクバーが重ならないのはフルスクリーンではないのか?
506 :
503:2007/03/03(土) 14:33:02 ID:a544u/75
>>505 早い回答ありがとうございます。
>>505の内容を新規作成で実行しましたが、ウィンドウがちらっと見えて速攻落ちました。
ちなみにこちらで作ってみたのを下に書いてみます。
screen 0,10,10,2
sz_w = ginfo(20)
sz_h = ginfo(21)
screen 2,sz_w,sz_h,,0,0
cls 4
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#uselib "user32.dll"
#cfunc GetWindowLong "GetWindowLongA" int,int
#func SetWindowLong "SetWindowLongA" int,int,int
#const GWL_STYLE -16
#const WS_MAXIMIZEBOX 0x00010000
ws = GetWindowLong( hwnd, GWL_STYLE ) //ウインドウスタイル取得
ws = ws | WS_MAXIMIZEBOX //最大化ボタン表示フラグを追加
SetWindowLong hwnd, GWL_STYLE, ws //ウインドウスタイルを再設定
gsel 2,-1 : gsel 2,1 // [最大化ボタン]再描画のため
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
>で、タスクバーが重ならないのはフルスクリーンではないのか?
フルスクリーンというのは、↓こんなのですか?
;$$$$$$$$$$$$$$$$$$$$$$
bgscr 2,ginfo(20),ginfo(21),,0,0
cls 4
;$$$$$$$$$$$$$$$$$$$$$$
というより、やりたかったのは最大化ボタンで最大化するとタスクバーを避けた範囲で最大化し、
タスクバーの高さをちょこちょこいじっても、追従してウィンドウの下枠が移動してくれるのです。
>>506 落ちたっすかwwwwwwサーセンwwwwwww
そのままコピペして全角スペース残って無いだろうな?#defineの所。もし、そうならプロセスが残ってるはずだ
>フルスクリーン
そんなの
>追従してウィンドウの下枠が移動
そのスクリプトでその通りに動いてるが?というかWindowsが勝手にやってね?
508 :
506:2007/03/03(土) 14:54:53 ID:a544u/75
>>507 もうしわけございません。//の行をそのままやってました。
ちゃんと整理すると思い描いていたとおりの動きで感激です。
かなり嬉しいです。どうも。
510 :
名前は開発中のものです。:2007/03/04(日) 17:15:14 ID:wznVdj4V
突然の質問失礼します。Pcbnet2のサンプルのsample01_SimpleChatをコンパイル+実行
してみたのですが、HSP3ではエラーになってしまいます。
ソースコンバータ(HSP2をHSP3に変換してくれる)にかけたのですがサーバ側は問題
ないのですが、Client側でエラーが出てしまいます。
85|*main
86| tcpfail soc
87| if stat : tcpclose soc : dialog "接続が切断されました!",1 : end
88| tcpgetl buf,1024,soc
89| if stat : gosub *recv
90| instr a,msg,"\n"
91| if a!-1 : gosub *send
92| wait 1
93| goto *main
line89がエラーと出るのですが、どうしたらいいでしょうか? 教えてください
>>510 ソースコンバータを過信しすぎだな。
HSP3.1b7で実行すれば、エラーメッセージに原因が表示されるぞ。
instrを関数にしろ
513 :
1:2007/03/05(月) 00:21:04 ID:6FToFsAD
>>512 instrを関数にしたいのですが、例えばa=instr(p1,p2,"string")ですよね?
このa=のaの部分を何にすればいいのかわかりません;;
>>511 早速DLしてきて試してみます! ありがとうございます ペコリ
>>513 ヘルプ見ろって・・・
>instr(p1,p2,"string")
>p1=変数名 : 検索される文字列が格納されている文字列型変数名
>p2=0~(0) : 検索を始めるインデックス
>"string" : 検索する文字列
これでインデックス(自然数)が返ってくる。無ければ-1が返ってくる
515 :
1:2007/03/05(月) 00:34:38 ID:6FToFsAD
>>514 すみません;; 本気でわからないのですが、instr(a,msg,"\n")では
パラメータ式の記述が無効です。
ってなります;;
↑ごめんなさい、1じゃないです。
>>515 C言語とかだと有効だけど、HSPでは関数の戻り値を入れる変数が必要
つまり、index=instr(a,msg,"\n")みたいな感じで。
というか、戻り値使わないと関数を実行する意味無くね?
ほんとにすみません;; index=のindexの部分を何にすればいいのかわかりません。
instrでmsgから"\n"改行?を探してるのかな?ってぐらいにしかわからないです;;
あ! HSP2のinstrのヘルプ見てわかったんですが、a=(msg,,"\n")にしてやればいいのかな?
ですが、これで実行してみるとチャット欄にhelloって文字を打ちエンター押すと
10行ぐらいhelloってずらずら続いてしまいます・・・・
やはり違うのかな・・・・
index = instr(msg,0,"\n")
これでmsgの中身をインデックス0(1文字目)から検索して"\n"があるインデックスがindexに入る
例 : msg = "hello\n"の時
6文字目にあるのでindexには5が入る。
521 :
名前は開発中のものです。:2007/03/05(月) 02:11:49 ID:6FToFsAD
>>520 はい、そこまではわかりました。 でも、こんどはメッセージを送信したときに
メッセージがずらずら~っといっぱい出てきてしまいます;;
Test17>test
Test17>test
Test17>test
Test17>test
Test17>test
こんな感じです;;
もう、思いつく限りの関数はHSP3用に直したのですが・・・;;
原因がさっぱりです
522 :
名前は開発中のものです。:2007/03/05(月) 02:14:37 ID:6FToFsAD
*send
s=msg
instr a,s,"\n" //ここもa=instr(s,,"\n")に直しました
getstr ss,s,a+2
poke s,a,0
s+=ss
buf="say "+s+"\n"
tcpput buf,soc
objprm 0,""
return
//動作がよくわからなかったのでためしに書いた。
s = "0123456789\nabcdefg"
ss = ""
a = instr(s,0,"\n")
mes a
getstr ss,s,a+2
mes ss
poke s,a,0
s+=ss
mes s
つまり文字列途中の改行を抜きたいってことでいいのか?
もしそうならinstrとstrmidをセットで使ったほうが楽
strmid(buff,instr(buff,0,"\n")+2,256)
これでbuff内の\n以降が取得できる。
余談だが、\nって二文字分なのな。\n\rに変換してるってどっかで見たが・・・
524 :
名前は開発中のものです。:2007/03/05(月) 02:48:59 ID:6FToFsAD
>>523 さん ほんとうにありがとうございます。
いぇ、改行を抜きたいのではなくて、pcbnet2のサンプルのsample01_Simplechat
をHSP3で正しくコンパイルしたいだけでして・・・;;
>>524 というか俺、さっきも書いた気がするがHSP3から入ったからHSP2の知識が全く無い。
移植そのものの役には立てそうにない。
しかし、良いスクリプトってだいたいHSP2だな・・・
526 :
名前は開発中のものです。:2007/03/05(月) 02:58:45 ID:6FToFsAD
>>525 ですねぇ;; ソースコンバータがもっとバージョンアップしてくれれば・・・・
↑
すごい他力本願^^;
527 :
名前は開発中のものです。:2007/03/05(月) 03:54:46 ID:IdxZqlrk
>>522 msg=""
objprm 0,""
return
一応これで出来た
hsp2だと objprm 0,"" で使ってるバッファも影響受けるのかな?
なんかごちゃごちゃやってるみたいだけど
ソースコンバータ通したスクリプトを
90行目
a=instr(msg,0,"\n")
135行目
a=instr(s,0,"\n"):msg=""
にするだけの話だぞ
529 :
名前は開発中のものです。:2007/03/05(月) 04:04:56 ID:6FToFsAD
>>528 おお!! でけた! 528さん、ありがとうございます;;
このサンプルでpcbnet一生懸命勉強しようと思います。
どうもありがとうございました ペコペコ
530 :
名前は開発中のものです。:2007/03/05(月) 04:19:35 ID:IdxZqlrk
sdim msg,1024
mesbox msg,200,24,1
repeat
s=msg
;instr(a,s,"\n") ;2用
a=instr(s,0,"\n") ;3用
if a>0{objprm 0,""}
title ""+msg
wait 1
loop
stop
やっぱり objprm の動作が2と3で違うな
2ならobjprm で操作したら使ってる変数内容も
変化するけど 3は変わらない
バグっぽいけど・・・
関連付けてる変数を更新して、それをobjprmの引数にすれば
OKなんだけどね。
ていうかウィンドウキャプション、改行コードも表示されちゃうんだ。
知らんかった。
532 :
名前は開発中のものです。:2007/03/07(水) 17:18:17 ID:nPv9ImbS
サーバ側からクライアント側へ画像を転送するにはどうすればいいですか?
533 :
名前は開発中のものです。:2007/03/07(水) 18:44:46 ID:nwF22j0Y
>>532 HTTPのGETコマンドで画像ファイルのURLをリクエストすればいい。
でもバイナリデータだからHSPだと切り出しがツライかも。
534 :
名前は開発中のものです。:2007/03/07(水) 20:09:37 ID:nPv9ImbS
>>533 いあ、HTTPではなくて、サーバ側のbufferに描いた画像をクライアント側
にgcopyするみたいなことってできないですかね?
>>534 クライアント側がサーバになり(ポートを開いて接続を待ち受ける)、
サーバ側がクライアントとして振舞う(クライアントに接続に行く)ことで
ファイルを送りつけることは可能。
でも現実にはルータやファイアウォールとか、サーバの規約とか、
ウイルス扱いされるとか、ネットワークの安全性とか、色々な問題が予想されます。
>>534 クライアント側に初めから用意されている画像を、
『どの位置か』といったシンプルな情報だけを通信でやりとりして、
それを基にクライアント側で処理させるのが無難。
何のためにそれをしたいのかを書かないと、大したアドバイスは出来ないと思う。
絵チャットみたいなのをしたいの?
537 :
名前は開発中のものです。:2007/03/07(水) 21:53:25 ID:nPv9ImbS
>>536 なるほど。 別になにかしたいってわけではなくて、ただ、どうやったら
できるのかな?って疑問に思っただけなんです^^;
「どの位置」をクライアント側に渡してやればいいのかあ。
考えてみます。
どうもありがとうございました。
538 :
名前は開発中のものです。:2007/03/08(木) 17:40:29 ID:TEJL+ADw
レースゲームのサンプルスクリプトってどこかないですか?
アクセルとブレーキの実装ってどうやっているのか知りたいのですが。
>>538 物理計算を単純にした感じでいいんじゃね?
アクセル 前進
ブレーキ 停止
じゃなくて
アクセル 速度上昇
ブレーキ 速度減少
にして、速度によって位置を変えていけばいいんじゃね?
って回答でおk?
541 :
名前は開発中のものです。:2007/03/08(木) 19:34:54 ID:TEJL+ADw
>>539 すいません、物理計算っていうのがわかりません;;
542 :
名前は開発中のものです。:2007/03/08(木) 19:42:23 ID:TEJL+ADw
>>540 なるほどお!? わかったような、わからないような・・・
普通のキー入力だと、キーを離すとキャラクタが止まってしまいますよね?
キーを離しても、慣性で進んでいくような、レースゲームでは当たり前でしょうが、
経験が浅いのかおつむがバカなのかその具体的な方法が思いつきません
*main
//キーチェック
if(加速キーが押されてたら):加速度=加速度+いくらか
if(減速キーが押されてたら):加速度=加速度-なんぼか
//座標更新
座標=座標+加速度
//グラフィック表示
pos(座標…
gcopy(グラフィック表示…
//ループ毎に減らす(アクセルを踏んでないとエンジンブレーキ)
加速度=加速度-ちょっと
goto *main
レースゲームだとたぶんキャラの位置は固定で背景だけが動く
だろうから適当に工夫してちょ
544 :
名前は開発中のものです。:2007/03/08(木) 20:29:52 ID:TEJL+ADw
>>543 おお!ありがとうございます! これを元に考えてみます
どうでもいいけど
加速度→速度
いくらか・なんぼか→加速度
じゃね?
それもそうだ
本能で書いた
すまぬ
gzoomでキャラクターが画面向こうからこっちに迫ってくるようにしたいんですが
背景で画面をクリア(残像を消去)しながらやるとちらついてしまいます。
多分gzoom命令のせいだと思いますがちらつかなくする方法ってありますか?
redrawとかは当然使ってるんだよね
gcopyではチラつかないのにgzoomだとチラつく?
向かってくるキャラが女性なんだろう。
だから色々チラつくんじゃないかな。
550 :
547:2007/03/10(土) 07:57:00 ID:BrhUO2D5
うまくいきました。
初歩的なことですいませんでした
551 :
548:2007/03/10(土) 08:53:38 ID:s4EgJTT+
( ゚д゚ )
どっかのHSPまとめサイトかなんかで、
このTIPSは理解しやすいように変数に全角文字を 使ってるけど
行儀が悪いので半角に換えましょう
みたいな事が書かれてたんだけど、・・・行儀悪い?
俺見易くなるようにNOを#とかにしてるけど・・・
後で思わぬ不具合が出るとか?
プログラムの書き方なんて千差万別
どの書き方がよくてどれが悪いなんて無い
その手の宗教発言は真に受けるべからず
555 :
名前は開発中のものです。:2007/03/10(土) 16:21:45 ID:C28IpD1h
HSPでアクションゲームつくりたいんだけどどこかいい解説サイトはないかな
昔は「美しいプログラムを書きましょう」だの「スパゲッティ」だのよく聞いたんだけどな。今はソースを
他人に公開することもなく、チームを組んで作るとか後で後輩に引き継ぐとかするのでもなければ
行儀なんてどうでもいいんだろうな。現実にはそういう場合でもきったねえんだけどさ。
でもHSPなんてフリーソフトなんだから、やっぱ標準的な書き方しないと心配じゃね?変数を全角で
書いて、もし変な不具合が起こったらどうしようってずーっと心配しなくちゃいけない。行儀がどうこう
ってんじゃなくて、信用できない。起こらないんだろうけど。てか現実にはマイクロソフトだってそんな
に信用できないけどさ。
>>552 Dr.Dに怒られちゃうぞ。
>>555 シューティングでもテトリスでも作り方がある程度分かればアクションも作れるだろ。あとはたっぷり
アクションゲームをやることだ。お前の言ってるアクションが格闘アクションのことだったら知らんけど。
てかHSPでアクションゲームに特化して解説してるがなかったら作れないってんならやめちまえ!
でも頑張ってね。(←ツンデレで)
どうせ横スクロールモノだろ?
シューティングよりも、テトリスの方が似てるかな。
テトリスの棒が左右に歩いてジャンプできれば、一画面物アクションなら出来たも同然。
すごろくゲームのサンプルスクリプトどこかにありませんか?
サイコロの出た目によってコマが進むしくみが知りたいのですがどうすればよいのかわかりません。
クマー
>>559 双六は、マップのデータの持ち方が意外にややこしいかもな。
・・・どうも、それ以前の段階で詰まってそうな感じだけど。
>>559 まず一方通行&一直線のすごろくを作って、
配列インデックスと座標データとコマ表示の関係を学ぶといい。
1.一方通行&一直線のすごろく (基本)
2.クネクネしたすごろく (応用)
3.ぐるぐる回るすごろく (モノポリーなど)
4.分岐やループのあるすごろく (人生ゲームなど)
5.目的地があり、好きな方向に動けるすごろく (桃太郎電鉄など)
この流れで作っていけば君もすごろくマスターだ!
>>552 同一ソース内に全角と半角を混ぜるなんて、
ちゃんと動いたとしても、気持ち悪くて出来ないな。
万が一、半角スペースのつもりで全角スペースを入れたときとか
見つけにくいんだよ意外と。
「そんなミスするわけないだろ(笑)」とか思っててもやってしまうのが
プログラミング。
少なくともそういう、「全角だろうが半角だろうがOK!」
っていう教え方をする先輩や上司はいないだろうな。
というか既に結論出ちゃってるけど、
個人でやるなら自由にすればいい。
団体でやるならマナーを守れと。
ビリー「全角スペースなんて小さな事でお悩みの貴方に送る、テキストエディタ TeraPad!」
エディタで色分けやら下線強調表示できたところで、コード次第ではどのみち死ねますね
統一すんのは検索効率もあるし
どっちのスタイルにせよ
コメント文をソースに書くとき
全角にして半角に戻すのって面倒臭くない?
VC++でもしょっちゅう間違えてソースの方に
全角スペース入れてしまってコンパイル蹴られる。
漢字キーがもうちょっと近くにあると嬉しいのだが
コメントを英語で書けば何の問題も無い
// sore naisu!
スペースは常に半角とか、IMEの設定でできなかったっけ?
>>559 マルチ乙w
釣りじゃないんなら
なにがわかんないのか書けばいいと思うよ
ああ、会社ではそれにしてる
シフト押しながらスペースで全角スペースになる
なんで家ではやってなかったんだ俺
なんか理由があった気がするが…忘れた
hspdxfixについて質問なんですが…
es_set等でスプライトの優先順位を設定した際に
数値が大きいスプライトが手前に表示されるのですが、
小さいほうを手前に出来ないでしょうか?
なんか設定ミスってんのかな、俺。
573 :
名前は開発中のものです。:2007/03/11(日) 09:11:36 ID:iZ4HV+4f
多角形塗り潰しの命令でおすすめのないでしょうか?
ウィザードリィ風な3Dダンジョンをつくるのに台形の塗り潰し機能を使おうとしてます。
壁と天井の色を分けて裏画面で奥から手前に向かう順番で壁で塗り潰していってるのですが、
pal_DrawPolygonを使っていると、画面を何度か更新しているうちに
色がどちらか一方の色だけにかわってしまいます。
その謎命令については良く知らんが
gsquareじゃ駄目なん?
つーか単なるあんたのプログラムミスじゃん。
その不具合が確実に起こる短いソースを書け
577 :
573:2007/03/11(日) 15:49:57 ID:iZ4HV+4f
>>574-576 サンクス!
gsquareにかえたら問題解消でした。
短いソースかいてみます。
578 :
573:2007/03/11(日) 17:46:02 ID:iZ4HV+4f
起動した後、Enterキーを押すたび、同じ画像が再描画されます。
ぽち、ぽち・・・と、Enterキーを、20回くらい押し続けると、
なぜか画像が変化します。
pal_DrawPolygonは、ここ↓
http://www.vector.co.jp/soft/win95/prog/se209258.html #include "palhsp.as"
repeat
stick KY
if KY=32 {
screen 2,640,480 : cls 4
buffer 3,640,480 : cls 4
for j, 11, 7, -1 : for k, 3, 12,1 : for i, 6,15,1
pal_SetPoint 0,310+i*2,310+i*2
pal_SetPoint 1,410+j*2,310+j*2
pal_SetPoint 2,410+k*2,410+k*2
pal_SetPoint 3,310+k*2,410+k*2
color 25,125,50
pal_DrawPolygon 4,1
redraw 1
next : next : next
gsel 2,1
gcopy 3,0,0,640,480
}
wait 5
loop
リンク先はマンドクセからみてないが
基本命令の使い方すらわかってないのは良くわかった
こんなレベルでプラグイン使うな
あと、せめてこのソースが何をしようとしているか
ぐらい書け
「ボタン押している間だけ台形が表示される」か?
なんでメインループの、しかもキーチェックの中に
screen,bufferがあるんだ?
もっとソフトに叩いてやれよ。
HSPスレは初心者もしくはプログラム触り始めの人間が
現れるとすぐにムキになってブッ叩くクセがあって良くない。
>>578 これはひどい
初めて見るプラグインで、役に立ちそうな機能を持ってたので
どんな代物なのか自分でも確かめるために、>578の件を調べてみたが。
一見、HSPでも問題なく動いているように見えるけど、
更新されたのが2002年2月で、HSP3が出るずっと前のプラグインだから
HSP3には完全対応してないんじゃないかと思った。
実際、>578のスクリプトを2.61用に一部修正して実行したら、
描画が変化する問題は発生しなかった。
それにしても
>>578 これはひどい
ボタン1回押すごとに、324個のポリゴン描画してるのは
573の意図したものなのか、疑わしいな。
参考までに。 wait 5の前に
title str(cnt)
とか追加して、実行してみるといい。
これが573の意図した動作なのかどうか。
#include "palhsp.as"
screen 0,640,480 : //ループに入れるなカス!IDは0だろ
buffer 3,640,480 : cls 4//透過色用に黒か?
//意図は知らんがループ前に作ってちゃ駄目か?
for j, 11, 7, -1 : for k, 3, 12,1 : for i, 6,15,1
pal_SetPoint 0,310+i*2,310+i*2
pal_SetPoint 1,410+j*2,310+j*2
pal_SetPoint 2,410+k*2,410+k*2
pal_SetPoint 3,310+k*2,410+k*2
color 25,125,50
pal_DrawPolygon 4,1//んなマイナーなプラグイン知らん
next : next : next
gsel 0//描画対象を0に戻せ
repeat
redraw 0 //まず描画を裏画面にセットしろカス
color 80,50,50 : boxf //まず先に画面を背景でクリアしろカス!
//色をつけてみたのは透過するか確かめる為だ
//その上から描きたいものを載せろこのウジムシ!!
stick KY,32 //押しっぱなしの処理がしたいのか?ボウヤ
if KY=32 {
gmode 2//透過コピーで良いのか?
gcopy 3,0,0,640,480 //ID3に描いといた奴をコピーで良いのか?
}
redraw 1 //全部描き終わったら裏画面を表画面に反映しやがれ
title str(""+cnt+" "+(cnt/60))//秒間60フレームより速ければ秒より速く表示
await 5//awaitにしてみた
loop
//お前のママでもエスパーでもないんだ
//何やりたいかなんか知るかカス
//動的に変化させて表示させる意図なら知らん!自分で考えろ
//マニュアルのredrawとscreenとgselとこ100回読んで氏ね
どうでもいいことだけど
>screen 0,640,480
いらなくね
>redraw 0
redraw 2のがいいはず。
まあ実際はたいして変わらんが。
>KY=32
KY&32のがええかも。仕様によるが。
>gmode 2
ループの外に出せるね。
思い切りひっぱたいた後で一行ずつ丁寧に教えててワラタ
ツンデレってこのスレのことやね。
screenとgmodeについては
今後の変更のことも考えてそうした
背景を透過なしで使う可能性が高いからな
redrawはそうだっけ?忘れた
keyはコイツには&の説明すんのはめんどかった
587 :
1/2:2007/03/12(月) 02:01:28 ID:UmbRWuRt
>>559 分岐無しだけど・・・
準備
#define colrgb(%1) color ((%1)
>>16),(((%1)
>>8)&$ff),((%1)&$ff)
#module
#deffunc getdat var indx,array ps,int no,int fg,local notdat,local strdata
chk='=' , ':' , ':' , ':' , ':'
noteget notdat,0:if fg=1 {indx=strsizeindx(no):masmax=no}:getstr strdata,notdat,indx,','
if strsize>0 {if fg=0 {masmax++:indx+strsize:strsizeindx(masmax)=indx}:idx=0
repeat 5:getstr tmpstr,strdata,idx,chk(cnt):if (strsize>0) {idx+strsize
: ps(cnt)=int(tmpstr)}loop}else{return -1}return masmax
#deffunc masmov array pdat,int pno,int masno
dupptr masdat,varptr(pdat(0,pno)),4*5:getdat indx,masdat,masno,1:return
#global
mas="0=16:16:100:80:,1=120:25:80:70:,1=200:32:80:70:,1=280:50:80:70"
mas+",1=300:130:80:70,1=220:150:80:70,1=140:180:80:70,1=80:230:80:70"
mas+",2=40:290:80:70:1j0n,1=120:300:80:70,3=200:290:80:70,1=280:310:80:70,10=360:340:120:90"
evmes="☆スタート☆","イベント無し","分岐点\n(未実証)","一回休み\n(未実証)","4","5","6","7","8","9"," ★ゴール★"
evcol=$f08080,$8080c0,$505080,$806030,$806030,$806030,$806030,$806030,$806030,$806030,$5080f0
evmcol=$ffff50,$a0f0f0,$f000f0,$101010,$806030,$806030,$806030,$806030,$806030,$806030,$f05060
randomize:buffer 1:notesel mas:repeat :getdat indx,ps,0,0:if stat<0 {break}
masmax=stat:colrgb(evcol(ps(0))):circle ps(1),ps(2),ps(1)+ps(3),ps(2)+ps(4),1
colrgb(evmcol(ps(0))):pos ps(1),ps(2)+ps(4)/2-8:mes evmes(ps(0)):color:pos ps(1),ps(2):mes masmax-1:loop
playernam="①","②":playermax=2
続く
588 :
2/2:2007/03/12(月) 02:06:06 ID:UmbRWuRt
メイン
repeat:dim pdat,5,playermax:dim player,playermax:playerno=0:sai=0
gsel 0:clrobj :pos 500,100:button gosub "サイコロ",*rndsai:repeat:redraw 0:pos 0,0:gcopy 1,0,0,640,480:
if (sai>0)&(((cnt-tim)\15)=0)&mov{sai--:player(playerno)++:if sai=0{playerno=(playerno+1)\2::objprm 0,"サイコロ"}}
repeat playermax:masmov pdat,cnt,player(cnt):if pdat(0,cnt)=10 {Gaul=1}:color:x=pdat(1,cnt)+pdat(3,cnt)/5+cnt*32
y=pdat(2,cnt)+pdat(4,cnt)/5:circle x,y,x+17,y+17,1:color cnt*255,(cnt=0)*255:pos x,y:
mes playernam(cnt):loop:pos 0,0:color:mes "残り("+sai+")"
if Gaul{break}:repeat 2:pos 200-cnt,5-cnt:color (playerno*255)*cnt,(playerno=0)*255*cnt
mes "[ "+playernam(playerno)+" ] の番です。":loop:redraw 1:await 10:loop:Gaul=0:pos 250,220:color 255:
mes "[ "+playernam(playerno)+" が ゴール しました]":redraw 1:wait 200:loop
*rndsai:if sai=0 {sai=rnd(6)+1:title "サイの目["+sai+"]":mov=0:objprm 0,"移動"}else{mov=1:tim=cnt}:return
適当に改行してコメント入れてけば読めるだろう
589 :
名前は開発中のものです。:2007/03/12(月) 11:04:23 ID:mM+HHXub
awaitって何ミリ秒ウェイトしてるの?
確かawait 16なら前のawaitから0.016秒「待った」後でウェイトが入るんだよね?
590 :
559:2007/03/12(月) 11:37:51 ID:NDVpsEF4
FPSを60に近づけたい時は、awaitの値を16にするんですよね。
うちの環境では、15と16では、かなりの差があり、15の方が正確に、秒をきざんでいるのですが
環境に依存するのでしょうか?
repeat
a+
title "" + a/60 + "秒"
await 15
loop
気になるようなら時刻を拾って補正すればいいんでは.
そこまで面倒かけてする必要があるかは謎だが.
うちも15の方が近い(60FPSよりやや早めになる)
16ってのは単に1000を60で割ったら16~17が一番近いってだけだろうから
理論上は60フレームで960mm秒しか待たない筈でも遅延を入れると
1000mm秒超えて結果的に15の方が近くなるのだと思う
たぶんマシンパワーが無いほど遅延が大きいと想像するがよく知らない
エロイひとの解説を待とう
俺はOSのスレッド切替が10msで実行単位が20msだから間をとって2の乗数でキリのいい16、だと思ってた
594 :
名前は開発中のものです。:2007/03/12(月) 12:59:26 ID:UmbRWuRt
>>591 await 1 とawait 10 を比べてみ
ほとんど違いが無いから
Win2000以降のOSだとawait 1でも10前後待つ
winmm.dll
timeBeginPeriod タイマー精度の設定
timeEndPeriod 設定解除
timeGetTime 設定に合った精度で経過時間を取得できる
kernel32.dll
Sleep 設定に合わせた精度で待つ
これらの組み合わせで、ある程度正確に待てる
使い方が分からなかったら、モジュールにして
公開してる人が居るから利用させて貰えばいい
有る程度正確って言うのは、Sleep 1としても
2ms待ってしまう環境があるから
2ms未満は時間を監視しながらループ回して
待てば正確さは増す(けどCPU使用率は上がる)
注意としては、awaitとSleepは別物なので、
Sleepを使っていてもawait 0は必ず必要
無いと閉じるをクリックしても終了出来なかったり
マウス座標収得やオブジェクトボタンの操作も出来ない
>>592-594 回答有難うございます。
探してみたところ、MIA氏のtime.hpiが良さげなので、使ってみます。
596 :
名前は開発中のものです。:2007/03/12(月) 17:18:23 ID:UmbRWuRt
>>595 それは用途が違うHSP2時代のawaitが
少し処理を食ってたから作られた物で
タイマー精度には関係ない
hsp Manager で検索してみ
>>570 何がわからないのかわからないのが初心者クオリティ
>>596 サンクス! Time Manager for HSP3ですね。
599 :
578:2007/03/12(月) 20:48:26 ID:bHRnq+dr
>>579-584 いろいろ、ありがとうございました。
>>583のプログラムはいろいろノウハウがあって驚きました。
自分のとは比べ物にならないほど綺麗に画面が切り替わりました。
初心にもどって頑張ります。
またきます。
初心者じゃなかったのか
601 :
583:2007/03/12(月) 21:15:42 ID:PDxfvhOI
( ゚д゚)、ペッ 地球人め
コーディング能力・・・5だと?!
603 :
名前は開発中のものです。:2007/03/15(木) 21:35:25 ID:R/FJK7NS
コミュニケーション能力はマイナスみたいね。
>>603 誰がうまいことをいえと・・・
この2日間の空白を作ったのはは明らかに空気が詠めない子だね (`ω´;)
605 :
名前は開発中のものです。:2007/03/16(金) 12:32:21 ID:s337brCd
今日ぐぐったら、ウィンドウ半透明化のサンプルを見つけた。
これから全てのウィンドウを半透明化してやるぜフゥーファハハハハー
606 :
名前は開発中のものです。:2007/03/16(金) 23:28:12 ID:5xoFEMkV
なんだ、XPで擬似Vistaでもやる気か!
>>605 HSPだとメインウィンドウだけしか半透明にできないよね。
もし、子ウィンドウも半透明にできるんだったら知りたい。
>>608 重くなりました・・・
特にタブブラウザと2chブラウザが致命的だたーよ
610 :
名前は開発中のものです。:2007/03/17(土) 21:02:55 ID:Z5sWvh6/
メモリ2GB以上推奨じゃね。
611 :
名前は開発中のものです。:2007/03/26(月) 00:48:34 ID:pDPzBZgB
あげる
いらない
フルスクリーンとウィンドウを動的に切り替えるdirectxのdllは無いのでしょうか?
hspdxfixじゃ切り替えようと思うと急に落ちてしまって・・・
処理として凄く面倒だから対応していないソフトって結構あるね
再起動後に有効になります。
で良いんじゃね。
iniファイルとかを書き換えて再起動でいいんじゃね?
617 :
613:2007/03/28(水) 21:59:47 ID:A5jDWsKh
切り替えは再起動がやはり前提になるのですね・・・返答、ありがとうございました
再起動ってかDLL解放して再初期化だな
;フルスクリーンじゃなくて、全画面ウィンドウへの切り替えなら…
#include "HSPDXFIX.as"
sx=800:sy=600:screen 0,sx,sy,0:d3d=0
es_ini:if stat : goto *owari
onexit goto *owari
es_screen sx,sy,32,0,1,d3d:if stat : goto *owari
es_cls 0,0,0:wx0=ginfo_wx1:wy0=ginfo_wy1
*main:await 0:kyP=ky:stick ky,ky:if (ky=128):goto *owari
color 0,0,0:es_boxf 0,0,sx,sy:color 255,255,255:es_boxf sx-8,sy-8,sx,sy
pos 0,0:es_mes strf("あめんぼあかいな(゚ω゚)aiueo ky=%3d",ky)
if ((ky=4)&(kyP=0)) {bgscr 0,ginfo_dispx ,ginfo_dispy, 0,0,0}
if ((ky=1)&(kyP=0)) {screen 0,sx,sy,0,wx0,wy0}
es_sync -17,2:goto *main
*owari:es_bye:end
;(全画面<->窓の切り替え処理は手抜きなので、
;このままでは実用するには不都合あると思いますが、参考までに。)
あー、
カーソル右で全画面、
カーソル左で窓モードに戻す
ESCで終了、です。(読みづらいかと思ったので一応)
ZGPはできたけど
今更3には対応していないしなぁ
622 :
名前は開発中のものです。:2007/03/29(木) 04:44:25 ID:YSXEyT2v
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
ちっちゃい窓画面と二倍表示の窓画面の切り替えをしたくて、
#deffunc draw int dispbuf
getkey key,112
if key {
if key_on = 0 {
if wsize {
wsize = 0
screen 0,320,240,0,(ginfo_dispx / 2 - 160),(ginfo_dispy / 4) : cls 4
} else {
wsize = 1
screen 0,640,480,0,(ginfo_dispx / 2 - 320),(ginfo_dispy / 4) : cls 4
}
key_on = 1
}
} else : key_on = 0
gsel 0 : pos 0,0
if wsize = 0 : gcopy dispbuf,0,0,320,240
if wsize = 1 : gzoom 640,480,dispbuf,0,0,320,240
gsel dispbuf
return
「dispbufに全部描画したあとスクリーンに(拡大)コピーする」
っていう命令を作ってredrawの代わりに使ってるんだけど
なんか他にもっと簡単な手段とか無いですか?
>>623 大きさ変えるだけならwidthでいいんじゃね?
あと、clsよりboxfの方がいい。
repeat -1
chp_zure.i = furehaba * sin((kakusokudo*cnt)+(kakudosokudo*i));正弦波?
i++
if i>chp_max : i=0
//ここでずらした位置に画像をコピー処理
loop
擬似ラスタスクロールで波が作りたいんですが、自分で作ったやつを見ると何故かカクカクしてしまいます。
ズレを画像の縦の座標1ピクセルごとに正弦波で作ってやって、それをその座標でコピーしています。
・redraw入れたか?
・変数名が酷いがどう思う?
・sin( kakusokudo * (cnt + i) )のほうがいいと思うけど何か?
>>626 redrawは入れました
読みずらくてすいません。
int型になってるとか
実数で計算して最終的にint()を呼び出して変えてます。
一応左右には揺れるんですけど、波みたいに見えないんですよね
波の起こりが遅いように見えます
buffer 0
picload "test.jpg" //適当な画像
SZx = double(ginfo_winx)
SZy = double(ginfo_winy)
screen 1,SZx,SZy
kakusokudo = 0.05
furehaba = 0.0
dim chp_zure,SZy
i = 0
repeat
?repeat SZy
??chp_zure(cnt) = furehaba * sin( kakusokudo * double(cnt + i) )
?loop
?redraw 0
?color 0,0,0 : boxf
?repeat SZy
??pos chp_zure(cnt), cnt
??gcopy 0,0,cnt,SZx,1
?loop
?redraw 1
?i += 5
?kakusokudo += 0.0001
?furehaba += 0.1
?await 16
loop
ちょっと書いてみた。こんな感じでいい?
;モレも作ってみたヨ
#define PI 3.1415926535897932386
w=32 ;波の強さ
t=128 ;波の間隔
buffer 2,640,480 :picload "",1
gsel 0
repeat
repeat ginfo_winy
x=sin(PI*((cnt*360/t+a)\360)/180)*w
y=cnt
pos x,y :gcopy 2,0,y,ginfo_winx,1
loop
redraw 1: redraw 2 :color 0,0,0 :boxf :color 255,255,255
a+=16 ;波の速さ
await 16
loop
ちょい修正
buffer 0
picload "test.jpg" //適当な画像
SZx = double(ginfo_winx)
SZy = double(ginfo_winy)
screen 1,SZx,SZy
kakusokudo = 0.05
furehaba = 0.0
dim chp_zure,SZy
i = 0
repeat
redraw 0
color 0,0,0 : boxf
repeat SZy
chp_zure(cnt) = furehaba * sin( kakusokudo * double(cnt + i) )
pos chp_zure(cnt), cnt
gcopy 0,0,cnt,SZx,1
loop
redraw 1
i += 5 //スピード
kakusokudo += 0.0001 //振動数
furehaba += 0.1 //振れ幅
await 16
loop
633 :
625:2007/04/01(日) 13:39:14 ID:PkSFAggM
>>630 >>631 ありがとうございます。
初歩的な勘違いをいくつかしていたのが原因だったみたいでした。
あとできたら横揺れに縦揺れを追加する方法が知りたいんです。
一応疑問は解決したので、これはできたらでいいんですが
634 :
631:2007/04/01(日) 14:01:50 ID:l/QzLrkf
pos x,y :gcopy 2,0,y,ginfo_winx,1
↓
pos 0,y :gcopy 2,0,x+y,ginfo_winx,1
こうすると縦揺れ(?)になるヨ
pos x,y :gcopy 2,0,x+y,ginfo_winx,1
↑で縦横
// 1/2
#define SZX_EXT 128 //揺れてはみ出た分
#enum BUF_IMG = 0
#enum BUF_SECOND
#enum SCR_MAIN
//元画像バッファ
buffer BUF_IMG
picload "D:\\画像\\ありがちな虹\\25666.jpg" //適当な画像
SZx = double(ginfo_winx)
SZy = double(ginfo_winy)
//横揺れ
buffer BUF_SECOND, SZx + SZX_EXT * 2, SZy
//メインウィンドウ
screen SCR_MAIN, SZx, SZy
//横揺れ用
dim chp_zure_x, SZy + SZX_EXT
kakusokudo_x = 0.05
furehaba_x = 0.0
//縦揺れ用
dim chp_zure_y, SZy
kakusokudo_y = 0.05
furehaba_y = 0.0
i = 0
// 2/2
repeat
redraw 0
//横揺れを描画
gsel BUF_SECOND
color 0,0,0 : boxf
repeat SZy
chp_zure_x(cnt) = furehaba_x * sin( kakusokudo_x * double(cnt + i) )
pos chp_zure_x(cnt) + SZX_EXT, cnt
gcopy 0, 0,cnt, SZx + SZX_EXT,1
loop
//縦揺れを描画
gsel SCR_MAIN
color 0,0,0 : boxf
repeat SZx + SZX_EXT
chp_zure_y(cnt) = furehaba_y * sin( kakusokudo_y * double(cnt + i) )
pos cnt, chp_zure_y(cnt)
gcopy BUF_SECOND, cnt + SZX_EXT,0, 1,SZx
loop
redraw 1
i += 5 //スピード
kakusokudo_x += 0.00001 //振動数
furehaba_x += 0.2 //振れ幅
kakusokudo_y -= 0.00001 //振動数
furehaba_y -= 0.2 //振れ幅
await 16
loop
637 :
名前は開発中のものです。:2007/04/01(日) 23:23:00 ID:qmrcQHpu
>>624 亀だけど㌧
他には特になし、てことでいいのかな…
#define 変数 システム変数(cntとか)
って無理なんですかね?
コレができれば管理の手間が減らせそうなんだけど・・・
やってみればいいだろそれくらいなら
constも使おうよ
>>639 いえすでにやってみてエラーがでたんで、その回避か代替は可能かなと
>>640 #constでも、やはり変数を使ってる時点でエラーがでました
普通に需要がありそうな気がしたんですが、発想自体がイレギュラーだったのかな・・・
#define 変数 cnt
repeat 3
mes 変数
loop
;何を言っているのかよくわからないよ
643 :
名前は開発中のものです。:2007/04/02(月) 07:51:02 ID:OgFackaK
ネストしても各cntが生きてる時点でアウトな気がする
#defineはただの置き換えだろ・・・同じ意味を持たせるってわけじゃないだろ・・・
645 :
名前は開発中のものです。:2007/04/02(月) 10:16:27 ID:CBsQTNyT
>>641 >普通に需要がありそうな気がしたんですが、発想自体がイレギュラーだったのかな・・・
意味がわからね
何をするために必要なの?
意味あんの?
システム変数に値を代入したいとか...?
647 :
641:2007/04/02(月) 18:20:22 ID:yH4J2c4D
;失礼しました・・・3D関係でオブジェクトIDというのが数字で割当てられているので
;それを名前で把握する為に#defineすると言うのが目的です。
;例えば
buf="pan","pin","pun","pen"
repeat 4
#define buf(cnt) ,cnt
loop
;という感じで、p2はp1に対応したオブジェクトIDを入れて使おうと思いまして。
;bufはメモリノートパッドで大量に読むので、その手作業を減らす為です。
repeat 4
#define buf(cnt) ,cnt
loop
無意味なループじゃね?いろいろと勘違いしてないか?
649 :
641:2007/04/02(月) 20:21:16 ID:yH4J2c4D
・・・イヤそうじゃなくて・・・
>>647で書いたように、#defineが変数の中身を参照した使い方がしたいけど
仕様ではそれができない(変数自体使えない)んで、
その代わりになる方法はないでしょうか?という質問です。解りづらくてスミマセン
hoge = cnt
>>649 たぶん無理な気ガス。
どちらにしろ、#define はコンパイル前に置換するだけだから。
あえてやるなら、連想配列みたいな方法だと思うが。
オブジェクトIDと文字列が完全に固定なら、
repeat 4
mes "#define "+buf(cnt)+" "+cnt
loop
みたいにヘッダファイルを書き出してから、それをインクルードするw
652 :
641:2007/04/02(月) 20:44:30 ID:yH4J2c4D
お答えありが㌧です。
やはり私の発想はどこか飛んでたようですね。あきらめてまた一から
違う管理方法を考えます
653 :
名前は開発中のものです。:2007/04/02(月) 22:21:02 ID:fSYb2JxG
654 :
名前は開発中のものです。:2007/04/02(月) 22:31:48 ID:nAJq39ai
>>647 オブジェクトIDは何が割り当てられるか不定で
使う時には名前でIDを使いたい?
俺はこんな感じでやってる(ID何番が割り当てられるかは気にしなくていいから楽)
#include "hgimg3.as"
#enum pan=10
#enum pin
#enum pun
#enum pen
#enum objend
dim id,objend
hgini
setsizef 10,10
addbox mid
repeat objend-pan,pan
regobj id(cnt)
loop
repeat
setpos id(pan),sin(0.1*cnt)*25
addang id(pan),0.01,0.01
setpos id(pin),0,sin(0.01*cnt)*20
addang id(pin),0,0.01,0.01
hgdraw
hgsync 10
loop
連想配列が実装されたらid("名前")って出来るみたいだけど・・・
HSP3.1は連想配列の実装が予定されている・・・
そんなふうに考えていた時期が俺にもありました
656 :
名前は開発中のものです。:2007/04/04(水) 17:21:52 ID:n+Mf/sOw
age
HSPって、&と&&の区別しないんだな
俺の3時間返せ
つ【3時間】
マニュアルよめよ
↑読んでないやつ
その辺りはマニュアルに書いてない、というか、
仕様外の演算子じゃねーの?
で、β8が出てる訳だが
>・更新履歴
>
> 2007/04/05 3.1b8
>
> 新規拡張プラグインhspcvを追加。(詳細はhspcv.txtを参照してください)
> 変数データをまとめてファイルに読み書きするためのvload、vsave関連命令(hspdaプラグイン)を追加。
> HSPCL(コンソール版)のinput命令でバイナリーモード時にEOFを誤認識する不具合を修正。
> コンパイル時の追加ファイル(hspdef.as等)が存在しなくてもエラー表示しないように修正。
> 変数名情報を常に出力するオプションを#cmpopt命令に追加。
> HSPSDK(プラグイン)側から変数IDと変数名に関する情報を取得可能に修正。
> RSSモジュール(mod_rss.as)のモジュール名を修正。(HSPBT#133)
> user32.as内のGetWindowModuleFileName関数定義を修正。(HSPBT#125)
> 拡張プラグインhspinetのftpopen命令のポート指定ができない不具合を修正。(HSPBT#58)
> 拡張プラグインHGIMG3の機能追加と不具合をいくつか修正(詳細はhgimg3.txtを参照してください)。
そのb8、実行するとタイトルがb7になるわけだが
あと、アナウンスも無いけどね
正式版キタ
665 :
名前は開発中のものです。:2007/04/08(日) 08:49:30 ID:yoJuvkiJ
メッセージボックスの指定行のバイト数ってどうやって求めてる?
OSの問題でsendmsgはボツだし、地道に計算したらフリーズするし・・
>>665 note系命令で指定行取得してstrlen
新しいヘルプになって最前面に固定できなくなった?
>なんかdgdgね
ディグダグ?
dgdgならディグダグで正解じゃないか?w
新しい描画プラグインってどうなの?
描画プラグインに新しいのが出たのか?
β晩にhspcvが追加されている
が、サンプルはない
haarcascade_frontalface_alt2.xml はぐぐれ
#include "hspcv.as"
cvbuffer ,280, 212
cvloadxml "haarcascade_frontalface_alt2.xml"
cvload "認識させたい画像"
cvfacedetect , 1.0
if 0 == stat {
mes "認識失敗"
}
facearea_num = stat
cvgetimg , 0
dim maskarea, 4
repeat facearea_num
cvgetface facearea(0), facearea(1), facearea(2), facearea(3)
mes ""+facearea(0)+","+facearea(1)+","+facearea(2)+","+facearea(3)
loop
とりあえずこんな感じで認識できるはず
変数データを直接読み書きできるって事は
セーブ・ロードが簡潔にできるってことなのかな
うん
ノートパッドで切り出しとかやってセーブ・ロードに苦心してた事も
いい思い出に変わるのかな
初心者用講座とか色々廻ってたけど
電卓作るあたりで挫折した
683 :
名前は開発中のものです。:2007/04/12(木) 21:08:29 ID:bCgTq/qC
盛りage
684 :
名前は開発中のものです。:2007/04/12(木) 21:20:14 ID:j0G3mdxP
>>677 顔じゃ無い部分が認識された
よく見ると顔みたいに・・・
心霊写真かと思ったよw
電卓で挫折って・・・
なんのためにコンピュータ使ってんだろうなw
こんぽじっとぱたーん・・・・??????
デジタル土方レベルのCかBASICしか出来ない香具師でも
力技だけでゲームを作れる言語作ってくれよ!
あ、もうあるか。
688 :
名前は開発中のものです。:2007/04/13(金) 15:33:03 ID:kkKSJW2x
10,200,30,60 00 ってテキストに書いておいて、
カンマ区切りで配列にしたいんですが、
notesel fileLoad
noteload "data.txt",0
sdim Fname,32000,999
getstr Fname,fileLoad,0,','
dialog Fname.1
dialog Fname.2
って書いてもダイアログには数字が表示されませんでした。
カンマ区切りのテキストファイルから配列を作るにはどう書けばいいのでしょうか。
689 :
名前は開発中のものです。:2007/04/13(金) 15:59:15 ID:a+Uovvd0
>>688 それじゃあ、最初の一つしか配列に渡されないよ
notesel fileLoad
;noteload "data.txt",0
fileLoad="10,200,30,60,00"
sdim Fname,32000,999
index=0
repeat
getstr Fname(cnt),fileLoad,index,','
index+strsize
if ','!stat {break} ;getstrで区切りキャラクタ以外で取り出された
loop
repeat
if Fname(cnt)="" {break}
dialog Fname(cnt)
loop
end
プラグイン hspdaの csvstrと間違えた?
こっちなら一行分なら一回で配列に代入される
(でもhspdaには色々バグがあるから注意)
>>689 ありがとうございます。おかげさまでできました。
助かりました。
おれ別人だけど、ヘルプ見ながらスクリプト打ち込みたいとか?
>691
うん、ヘルプ見ながら打ち込むので俺には必要。
命令のパラメータさえ分かればいいから小さくして右上に出しっぱなしにしてたんだが。
今は画面の3分の2にエディタ開いて残りにヘルプ出してる。
ヘルプブラウザのreadme見ても何も書いてないから抹殺されたんだろうな。
作者のページにBBSもあるんだし
ここで聞くよりも、作者に直接聞いた方がいいと思うんだが
あるか、ないか、が聞きたかっただけだから。
なけりゃないで、やり方はあるから作者ページに書き込むほどでもないと判断した。
今アイテム数20個毎にページを増やすように作ってるんだけど、
コレを16個毎にして16進数で管理すると簡便化できる?
ありが㌧
HGIMG3の簡易コリジョン(AABB)は実装されてますけど、
パーツ毎判定みたいのはいつ頃に実装されるのかな?
あんまり実装遅いなら使いたくないけど、ランタイムなのが魅力的なんだよな~
おにーたまHGIMG3スケージュルも出して欲しい
パーツっつーかポリゴン毎のコリジョンか?
かなり重くなると思うんで簡易的にやったほうが良いんじゃないかと思うんだが…。
hmm使ってフルスクリーンで動画再生するとキー入力受け付けなくなるんだけど
どうしようもないですか?
256*224の解像度を512*448のウィンドウで2倍表示したいんですが、
directXを使う以外に方法はありませんか?
704 :
702:2007/04/17(火) 07:26:05 ID:/o1QDDuz
>>703 どうもッス。ファミコンぽいアクション作ってて、
gzoomだと透過色が使えないので困ってます。
705 :
名前は開発中のものです。:2007/04/17(火) 11:40:10 ID:Lf6HAn0k
>>704 読み込んだ後にgzoomで他のバッファにコピーしとけばいいだけじゃん
buffer 1
picload dir_exe+"\\sample\\demo\\jp6girl.bmp"
sx=ginfo(12)
sy=ginfo(13)
buffer 2,sx*2,sy*2
gzoom sx*2,sy*2,1,0,0,sx,sy
screen 0,640,480
gcopy 1,0,0,sx,sy/2
gmode 2
pos sx/2,0
gcopy 2,0,0,sx*2,sy
それか、表示用と違うバッファに画面を完成させてから表示用の画面にgzoom
706 :
名前は開発中のものです。:2007/04/17(火) 17:21:04 ID:jur7HrQ+
座標の扱いが違うけどgmode の設定が利くのもある
buffer 1
picload dir_exe+"\\sample\\demo\\jp6girl.bmp"
sx=ginfo(12)
sy=ginfo(13)
gsel 0
gmode 2,sx,sy ;コピー元の画像サイズ
pos 320,240+sy/2 ;画像の中心(gcopy等と違い指定した座標が中心に来る)
grotate 1,0,0,0,sx*2,sy*2
後gsquareってーのもあるけど、大量にコピーするのには向かないかな・・・
707 :
702:2007/04/17(火) 18:15:12 ID:vZNpL9Pl
最近hsp2.6でhspdxのプラグインを使ったSTG作ってるんだけど
壁に自機弾と敵弾があたると、自機弾と敵弾が消えるようにしてるんだけど
稀に弾がすり抜ける時がある。
これって敵弾と自機弾が同時に壁に衝突した時にすり抜けるのかね?
自機弾のタイプ値2
敵弾のタイプ値8
400は壁のスプライト番号
es_find a,10,a
if a=-1:return
es_check b,a,32,1,400,400
こんな感じなんだけど。
すり抜けないよう対処法を教えて欲しい。
単に弾の移動量が自機の判定より大きくて抜けちゃってるだけじゃないの?
壁との当たり判定なんてスプライトの判定命令じゃなくて計算でやれ
>>709 確かに移動速度も影響あるけど
速度を遅くしてもやっぱり同時に衝突するとすり抜ける。
で、対策を考えたんだけど
単純に衝突のサブルーチンを2つにする事により
2発動時に衝突してもOKになったみたい。
この時点で全くすり抜けなくなった。
サブルーチンを3つにすれば3発同時もOKかな。
>>711 hspdxって使ったことないんだが、そのes_checkって当たってるスプライト1つしか返さないんだな。
自前でやったほうが簡単そうだな
es_checkはもし同時に衝突してたらスプライト番号が低いほうが優先される仕組みになってる。
少しでも衝突タイミングが違えば問題ないんだけど。
あと、一度すり抜けたスプライトはすり抜け中に再び衝突判定が得られにくい。
すり抜けてる最中に他のスプライトとの衝突判定が起きるから。
あと俺の使ってるのはhspdxじゃなくてhspfixの間違いでした。
>>711 ああすまん、ちゃんと読んでなかった。壁なw
>>712 判定を始めるスプライト番号を指定できるから、ひとつ見つかったら
その番号の後から再検索すれば良い。
715 :
714:2007/04/17(火) 23:51:13 ID:2AXbs49U
自己レス
>判定を始めるスプライト番号を指定できるから
そんなもん無かったw
勘違い
716 :
名前は開発中のものです。:2007/04/17(火) 23:52:08 ID:BKWD+g7L
>>711 つーか一回当たったら判定処理から抜けてるだけじゃねーのか?w
で、使ってるのはhspdxfixだろ?
*sub
es_find a,10,0
if a=-1:return
repeat
es_check a,400,10,1,a
if a=-1:break
消す処理
a++
loop
return
これでいんじゃねーの?
>>708 その3行の前後の処理が分からないけど
出現してる敵・自機弾に、
漏れなく壁接触判定を行き渡らせるのなら
2行目のreturnが実行されるまで、
繰り返し処理をしないといけない。
*hitcheck
es_find a,10,a
if a=-1:return
es_check b,a,32,1,400,400
(bに対する何らかの処理)
goto *hitcheck
つーか、
そのプログラムを組むとしたら
*wallhitcheck
es_check b,a,10,1,400,400
if b<0: return
(bに対する何らかの処理)
goto *wallhitcheck
で済むんじゃないか?
checkのタイプ値32の説明がないから
このままでは不都合あるのかもしれないけど
間違えた。
*wallhitcheck の次の行
es_check b,400,10,1,400,400
だな。
719 :
名前は開発中のものです。:2007/04/17(火) 23:55:01 ID:BKWD+g7L
1回衝突判定が終ったら弾スプライトに+1してループさせてる。
それでもすり抜ける。
>>720 まぁ何だ。
似たような事をやったことあるけど
問題なくDXFIXで衝突判定できてたぞ。
アルゴリズムが悪いか、
>>713の書き込みから明らかだが
なんか大きな勘違いしてるんだろ。
>es_checkはもし同時に衝突してたらスプライト番号が低いほうが優先される仕組みになってる。
同じフレームで、続きから走査すれば、同時に衝突した
「スプライト番号が高いほう」のスプライトが見つかりますよ
> あと、一度すり抜けたスプライトはすり抜け中に再び衝突判定が得られにくい。
> すり抜けてる最中に他のスプライトとの衝突判定が起きるから。
お前は何を言っているんだ。
スプライト番号が高いのが優先されるかどうかはどうでもいいから適当に書いた。
すまんかった。
後半の文はちょっとわかり辛かったかな。
まあ大した事無い事なので訂正しなかったけど。
まあまだゲーム製作初めたばっかりだから勘違いしてる所は結構あると思うけど。
とりあえずもう少し勉強してみます。
プログラミングよりも日本語や人間としての常識の勉強が必要だったようです。
スレ汚しして申し訳ございませんでした。
なんだこの展開w
725 :
716:2007/04/18(水) 01:22:55 ID:bCYiqmbF
#include "hspdxfix.as"
es_ini :es_screen 640,480,16,0,1,0:es_cls 0,0,0:buffer 1
picload exedir+"\\sample\\hspdx\\TESTCHR.BMP"
es_buffer 1:es_size 64,64,50,0:es_pat 1,64,64,0:es_set 1,mousex,mousey,1:es_type 1,1
es_pat 2,64*2,64,0:es_pat 3,64*3,64,0:es_pat 4,64*4,0,0:es_set 400,320,200,4:es_type 400,32
gsel 0
repeat
es_boxf 0,0,640,480:es_pos 1,mousex-32,mousey-32
stick stk,$ffff:if (stk>0) and ((cnt\10)=0) {es_new newid,2
if (100>newid) and (newid>0) {es_set newid,mousex,mousey,2:es_adir newid,0,-500:es_type newid,2}}
rnd r,3
repeat (r*((cnt\30)=0))
es_new newid,100:if (200>newid) and (newid>0){rnd x,640:rnd y,100:es_set newid,x,y,3
es_aim newid,320,200,100:es_type newid,8}loop
gosub *sub
es_draw:es_sync 1,-10
await 0
loop
*sub
es_find a,10:if a=-1{return}
repeat:es_check a,400,10,1,a:if a=-1{break}:es_kill a:a++:loop:return
hsp2.61で作ってみたけど擦り抜けなんて起きないぞ?
(最初3.0aの方で作って試したけど問題なかった)
使ってる変数の初期化を忘れてるだけじゃねーのか?
島根県のみなさん、パチンコをするなら、
優良パチンコ店 エ○トワン
に行こう! 遠隔(※1)をやっていないパチンコ店は「エイ○ワン」だけ!
違法ロム(※2)を使っていないパチンコ店も「エイト○ン」だけ!
○イトワンでは、遠隔等が可能な設備は入れていません。 ロムも、警察がチェックしやすくしています。
詳しい方はご存知の通り、どんなにパチンコの遊戯人口が変動しても、その市場規模は変わりません(※3)。
要するに、客が減っても、残った客から絞り盗る量を増やして調整しているのです。
しかし、何故それが可能なのか?…ご理解頂けると思いますが、9割以上の店が確実に遠隔等を行ってます。
1万店以上のパチンコ店の中で、遠隔も違法ロムも確実にやってないのは「○イトワン」ただ1店です!
※1…遠隔とは
「お、あの客は新顔だな。勝たせて味を占めさせるか。遠隔操作で設定変更しよ」
「客が減ってきたな。ま、設定を絞めて(違法)、1人あたりから搾る量を増やせばいいか」
「あのオヤジ負け続けてるからそろそろ辞めるかもな。今日は勝たせてやるか」
※2…違法ロムとは
「うちのアタリ確率は、もちろん他と同じ『○○○分の1』ですよ!(ロムいじってるからウソだけど)」
※3 市場規模 遊戯人口
平成06年 30兆4,780億円 2,930万人
平成08年 30兆0,630億円 2,760万人
平成10年 28兆0,570億円 1,980万人
平成12年 28兆6,970億円 2,020万人
平成14年 29兆2,250億円 2,170万人
平成16年 29兆4,860億円 1,790万人
727 :
716:2007/04/19(木) 17:58:35 ID:D0ENsgxE
おーい
>>723 プラグインのバグなのか
スクリプト側ののバグなのか
環境依存の問題なのか
はっきりさせろよ……
hspdxfixに濡れ衣を着せたかもしれないのに
無視か?
728 :
名前は開発中のものです。:2007/04/21(土) 07:42:36 ID:2BG2s3w3
3.1b9公開。圧縮状態で7.5MBか。昔に比べるとずいぶん太った
気がするけど、プログラミング環境としてはまだ全然小さいんだよね。
今ではActiveBasicよりはでかいみたいだけど、使いではHSPが
圧勝だし。
729 :
名前は開発中のものです。:2007/04/21(土) 08:13:40 ID:2bdLwNha
沖縄県の方へ(命に関わる注意事項です)
沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…
※一国二制度
簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
(つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。
今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
昭和から来たんだよ彼はw
JAVAみたく500MBとかじゃないからいいよ
HSPはプラグインとサンプル豊富だから助かる
hspでデータ圧縮じゃなくて文字列圧縮できる?
出来れば、可逆でメモリーに保存したいのです
zlib試したけどメモリーだと一時保存に4倍使うからむりだったぽ
4倍使うの意味が分からんが、平文を分割してから圧縮すればええんちゃう?
超巨大な文字列を圧縮する時に、必要なmallocがでかいとかそんな意味ならば。
>>734 4倍ってのは圧縮作業の為の展開エラー対策だと思うんだ・・・
圧縮されたデータを復元するにしてもどうやってるのか分からない
zlibはHSPでは使えないのかな
>>736 メモリー内圧縮使ったことありますか?
そこで止まってます。
ボクちゃん、test_mem.as 読める?
「メモリー内圧縮」って何か特別な意味(言葉)なん?
分割して圧縮処理じゃダメなんか?
>>738 読めますよ
実行して出来たデータ配列が元より大きいのは圧縮失敗じゃないんですか?
>>740 /* おまえは何を言っているんだ? */
#include "z.as"
#const DATASIZE 3000
#define AHO(%1,%2,%3,%4) color %2,%3,%4:mes %1:color 0,0,0
sdim rdata, DATASIZE
sdim cdata, DATASIZE
sdim udata, DATASIZE
rdata={"hspでデータ圧縮じゃなくて文字列圧縮できる?
出来れば、可逆でメモリーに保存したいのです\n
zlib試したけどメモリーだと一時保存に4倍使うからむりだったぽ"}
rsize=strlen(rdata)
mes ">元データ:":AHO rdata,0,0,255:mes strf(">サイズ:%d",rsize)
/* 圧縮 */
zSetDest cdata, rsize;DATASIZE
zCompress rdata, rsize,3;DATASIZE, 3
csize = stat
mes "\n\n>圧縮データ:":AHO cdata,255,0,0
mes strf(">サイズ %d バイト",csize)+strf("圧縮率 %d",writesize * 100 / rsize)
/* 解凍 */
zSetDest udata, DATASIZE
zUncompress cdata, DATASIZE:usize=stat
mes "\n\n>解凍データ" : AHO udata,0,200,0:erf=0
mes strf(">サイズ %d バイト",usize)
/* 比較 */
mes ">元のデータと比較" : erf=0;:poke udata,12,32
repeat DATASIZE
r=peek(rdata,cnt):u=peek(udata,cnt)
if ( r ! u ) { mes strf(">不一致@ %d文字目:",cnt)+strf("元[%c]",r)+strf(" ! 解凍[%c]",u):erf=1 }
loop
if erf=0 : mes ">相違点はありません"
stop
>>740 すでに圧縮されているデータは、それ以上小さくするのはほとんど無理
というかヘッダとかで増えるぞ?
つーか、使い方が間違ってんじゃねーの?
自分には不手際がないと信じて疑わない
身の程知らずなボクちゃんの、挑発的な発言に、
ちょっと血がのぼってミスしちまったぜ。反省。
圧縮率表示のとこ、間違い。
strf("圧縮率 %d",writesize * 100 / rsize)
↓
strf("圧縮率 %d",csize * 100 / rsize)
いや圧縮自体はできるんですが・・・
ややこしいので解決でいいです
上手く説明ができなきゃ、上手く理解もできんて。
746 :
名前は開発中のものです。:2007/04/22(日) 16:54:06 ID:hYUKyQue
>>740 >stat は圧縮後のサイズです。
>書き込み先のメモリが足りないなどでエラーが発生した場合は、
>stat=0 となります。
なぁ、これをどんな解釈したんだ?
配列は拡張されないからもとより大きくなんてならねーぞ
お前配列サイズを勘違いしてねーか?
dimで確保したのは1要素4バイトだぞ?
どこにも圧縮元より大きい作業領域が必要なんて書いてねーだろ
バッファが足り無きゃstat=0になるって書いてあるだろボケ
元データサイズが小さいから、効果が分かりにくいと思って
741のスクリプトをまた少し変えて
同じ文字列を100個連結させたもの(15000byte)に対する操作を試してみたが。
圧縮したら、297byte(圧縮率 2% 弱)にまでなった。
同じデータの繰り返しだからってのもあるかもしらんが。
いやぁ、zlib初めて使ったけど、けっこう強力だな。^^
(精神衛生上 よろしくないので、ボクちゃんの事を考えるのはやめた。)
748 :
名前は開発中のものです。:2007/04/22(日) 17:44:41 ID:rmOxLuM6
サンプルにある
dim cdata, DATASIZE
zSetDest cdata, DATASIZE*4
ってーのを見て、4倍必要とか思い込んだんだろうな
dim cdata, DATASIZEのメモリサイズがDATASIZE*4なのにねぇ
なんで741のを見て分からないんだろう・・・
HSP2.62とHSPDXFIXEDのプラグインを使ってゲームを作ってるんですけど
たまにキャラや背景の色が反転してしまう時があります。
毎回ではなくてたまになんです。
何か原因があるんでしょうか?
750 :
749:2007/04/23(月) 00:25:34 ID:4Rf7CIdU
画像ファイルはBMPです。
あとパレットモードで236色にしています。
どうもプログラムが長くなってきてから色がおかしくなる頻度が高くなってきている気がします。
それとawaitの数値が多少影響してるようにも思えるんですけど。
はっきり言ってそんなんじゃ判らんw
プログラム自体を分割して問題部分の切り分けをすべし。
>>749 HSP2.62とかHSPDXFIXEDとか、聞きなれない名前なのが気になるが。
「色が反転」という症状を聞いて、最初に思い浮かぶのは
ブレンドファクターに、ESB_NEGATIVEが指定されているんじゃないか?
ということだが。
「D3Dスプライト機能を使ってない」 とか断言してしまうなら、知らん。
BMPのパレットが揃ってないとか
毎回色がバグるのなら原因究明もラクだと思うんですけど
稀にしか起こらない現象だから原因を探すのが難しいんですよ。
デスクトップの解像度とか関係あるのかな?
あと3Dは使ってないです。
めんどくさいからハイカラーかフルカラーで作れ。
ああ、そうだな。。
なんでパレットモードなんか使ってんだ。
パレチェンしたいなら別の画像持てば良いじゃない。
757 :
名前は開発中のものです。:2007/04/23(月) 04:04:26 ID:I+xnwNF2
流れ切って申し訳ない
モジュールで大きい文字列を返すといきなり落ちるんだけどなぜでしょうか?
2048byteを超えたあたりでエラーになって、それよりはるかに大きいと落ちる。
例えば、
#module
#defcfunc hana str mogera
return mogera
#global
a = "なんかでかい文字列・・・・"
mes hana(a)
↑これである程度大きな文字列で落ちる
でも、
#module
#defcfunc hana str mogera
mes mogera
b = strlen(mogera)
return b
#global
a = "なんかでかい文字列・・・・"
mes hana(a)
これだと落ちない。
なぜなんでしょうか。
758 :
名前は開発中のものです。:2007/04/23(月) 04:38:01 ID:nyr50uuI
>>757 hsp3.0aでやったけどエラーも落ちることも無いぞ?
環境書け
HSP ver3.1β8です
上の例だと落ちないけど、aの値が大きくなると落ちます。
実際に落ちるスクリプトを書きます。
j=509だと落ちないけど、j=510だと落ちます。
さらに、j=510以上でも return b とするとおちません。
j = 509
#module
#defcfunc hana str mogera
b = strlen(mogera) : return mogera
#global
sdim a,j*4+1
repeat j
b = strf("%04d",cnt) : poke a,i,b : i += strsize
loop
mes str(i) + "\n" + hana(a)
どうやって回避すればいいのでしょうか。
>759
758じゃないけど、俺のとこでも試してみたらj=510では落ちなかった。
ウチの環境だとj=10000までOK。
>759
バッファオーバーフローが原因なので、なにか計算間違いがあるのかも。
sdimで指定する値を必要な分だけ大きくすれば大丈夫なのでは?
762 :
名前は開発中のものです。:2007/04/23(月) 15:28:03 ID:ExoMwemo
>>760 それはエラーが起きてる場所が違くないか?w
>>759 β版使ってるなら最初に言えよ・・・
ver3.1β8で起きてる問題で3.0aではエラーは出無かった
β8はモジュール関係で色々不具合が出てるみたいだから
3.1b9 を試してみたら?
ダメだったら
●HSPWiKi HSP3バグトラッッキングシステム
にでも挙げとけば修正されるだろう
763 :
名前は開発中のものです。:2007/04/23(月) 15:34:21 ID:ExoMwemo
>3.1b9 を試してみたら?
自分で試した方が早そうだから試したらエラー出無かったよ
>struct型の配列終了処理でエラーが発生することがある不具合を修正。(HSPBT#144)
これ関連のバグだったのかな・・・
β8の不具合ということなので、β9を落としてみた
結果はかわらず。さっぱりわかりません。
試しにHSPのあるフォルダの
hsed3le.exe というのを起動させて
>>759をコピペして実行してみると
j = 10001 以上でエラーとなった
「Error20 in line8 バッファオーバーフロー」
そこで、sdim a,j*5+1 、 b = strf("%05d",cnt) とやると
エラーはなくなる。当然・・・なのかな。
同様に hsed3.exe でやってみると j=510 以上でエラー。
でもこちらは「error1 in line11(???) システムエラー」とのこと
一応PCのスペックは
winXP home , Athlon64 3200+ , メモリ1G
もうお手上げだが、エラーは起こらないって人の方が多数なので
びっくりするほどの初歩的ミスを犯していないか心配になってきた
俺がそのトラブルに当たったときは、ああまたHSPのバグかと思って
変数渡しのコードに変更したよ
とりあえず
>>759は、
sdim a,j*4+1
b = strf("%04d",cnt) : poke a,i,b : i += strsize
jが5桁になると、bも5文字になるのでエラーになるのは当たり前だな。
767 :
名前は開発中のものです。:2007/04/23(月) 23:26:32 ID:80wwsZlh
>>764 原因を突き止めたかもしれない
デバッグウィンドウ表示させてないか?
3.0aでもDBウィンドウ表示させてるとエラーが出た
表示を切ればj=50000とかでも3.1b8でエラーが出ない
どうだ?
これが原因なら バグトラッッキング に行ってら
>j = 10001 以上でエラーとなった
これは766が言ってる通り
だから762で突っ込み入れといたのに・・・
>>767 それが正解のようでした
デバッグウィンドウを表示させないとエラーは出なかった
5桁のほうは、単純な問題でしたね。
バグトラッキングがよくわからないけど
報告する場所があるのかな。
とにかくありがとう。
置換用のモジュール作るのに2048byte縛りはあまりにもきつかったから助かったよ
769 :
名前は開発中のものです。:2007/04/24(火) 00:18:59 ID:QtkXlejF
>>768 β版がアップされてるページの下のほうに
バグ報告用のページがリンクされてる
まだッが一個多いままなのかw
今はじめて気づいたw
気合を入れて発音しているだけですので仕様です。
修正予定はありません。
~ッッ
もっとッ
「───ッッ!!」
って感じで。恋人や家族を殺された主人公が敵と対峙したときのような、
声にならない怒りと憎しみの表現だよ。日本語ってすごいよね
ジョジョだな
776 :
名前は開発中のものです。:2007/04/25(水) 11:17:31 ID:cNm9Fqt7
ファイナルファンタジーってこれで作ってんの?
,、-―-、
丿 <`) __
,、- ''' "二ヽ_(ヽ'`(二ニ・ | \_
/ 、 !__'、_┌´ │ / `' ー┐
/ ヽ | ` | | |
___ | ヾ__| | _,、r‐'',ニ=- | / _,、-‐'゙
_| '、| ミ/ ゙、 |_,∠-''´ ̄`'ー、  ̄|-''" |
\|. | l___l / ̄ヾ`´` | ̄ ̄ ̄`'''iー、
. |/゙|  ̄ ヽ_,、-''´`ヽ _,、,、,、,、_|______|_
| ( ´ ,、- ''゙ 丿 ヾ二二二二二二二二二|ニ!
ヽ<二二二二二>~/ / / └‐┬─‐────┬┘
フ,||, / / / │ │
''´ | | _ノ /. │ │
. | | >/ ./ │ │
また音楽の話で悪いけど、ゲームでwav,midi共に音量をコントロールしようと思って
今はプラグイン二つの併用か、MCIでmpegvideoにしてやる方法の二つを試してる。
音量のためだけにプラグイン二つも使いたくないし
mpegvideoはME以前では入っていないかもしれないので
どうしようか悩んでいるのだけど
なんかいい手は無いですかね
今時midiなんぞ使うのか
どうせ作曲者の意図どおりに鳴らないし
全部オーディオデータで統一したほうがよくね
780 :
名前は開発中のものです。:2007/04/25(水) 19:09:46 ID:ZMrMyasg
( ´,_ゝ`)プッ
⊂彡☆))Д´)
>>776 パチーン!!
>>776 常識過ぎてみんなあきれてるぞ。クレジットにそう書いてあっただろ
782 :
名前は開発中のものです。:2007/04/25(水) 19:58:49 ID:vIB2Tzgo
市販ゲの殆んどがHSPだよな。
たまにツクールも見るが。
Vistaは余りにも有名
ああ、Vistaはちょっと泣いちまったよ。
もと宿敵だったアーロンをかばってキースが特攻したシーンなんか、ヤバかったな。
ていうか演出があざと過ぎ
785 :
名前は開発中のものです。:2007/04/25(水) 21:38:59 ID:jZG+4jJU
オス! おらビスタ!
冥王星に代わっておしおきよ!
>>788 職務怠慢を理由に左遷され当時の上司を逆恨みし、復讐の機会を狙ってるんだっけ
sgtって、Directsoundでソフト音源で鳴らすから環境依存にならないらしいんだけど、
負荷高いのかな?oggとどっちにしようか迷ってるんだけど、どうですか?
sgtって何
792 :
名前は開発中のものです。:2007/04/26(木) 23:15:40 ID:by3e610C
hspのアイコンってコーフィーカップみたいだけど
ジャワのパクリなの?
ホットスープだからじゃね?
794 :
名前は開発中のものです。:2007/04/27(金) 00:02:59 ID:egFvpP+c
ホット"スープ"プロセッサ
スープカップ
スープポット
javaのコーヒーカップは"ジャワ"コーヒーから?
795 :
名前は開発中のものです。:2007/04/27(金) 08:30:28 ID:WUq5gpdx
Javaは“ジャバ”コーヒーから
796 :
名前は開発中のものです。:2007/04/27(金) 14:58:30 ID:egFvpP+c
"Java coffee" の検索結果 約 305,000 件
"ジャワコーヒー" の検索結果 約 2,300 件
"ジャバコーヒー" の検索結果 約 622 件
今HSP3でシューティングを作ってる。
弾等を制御する際、モジュールでやってみたいんだけど、複数種類の弾や敵を各1つの配列でまとめる事って出来ない?
たとえば弾aとbがあって
#module a x,y,vx,vy
#modinit int cx,int cy
…
return
#modfunc amove
…
return
#global
#module b x,y,bcnt
#modinit int cx,int cy
…
return
#modfunc bmove
…
return
#global
dimtype shotmod,vartype("struct"),32
newmod shotmod,a,cx,cy
newmod shotmod,b,cx,cy
ってやってforeachで回したとき、どうやったらaはamoveで、bはbmoveで処理するように出来るの?
一種類の弾ならサンプルスクリプトの方法で出来るんだけど…
798 :
名前は開発中のものです。:2007/04/28(土) 07:22:58 ID:WZUrEfmt
自分で処理を分けるしかない(モジュールを2段にしてタイプ識別用と各種データ用で分ければ楽かな)
#module a x,y,vx,vy,anmcnt
#modinit double cx,double cy
x=cx:y=cy:r=atan(mx@-x,my@-y):vx=sin(r)*5:vy=cos(r)*5:anmcnt=0:return
#modfunc amove
if abs(320-x)>330 or abs(240-y)>250{return -1}
anmcnt++:x+vx:y+vy:pos x-16,y-16:gcopy 1,((anmcnt/10)\5)*32,0:return 0
#global
#module b x,y,r,bcnt,anmcnt
#modinit int cx,int cy
x=cx:y=cy:bcnt=0:anmcnt=0:r=0.0:return
#modfunc bmove
if abs(320-x)>330 or abs(240-y)>250{return -1}
bcnt++:if bcnt<200{r=atan(mx@-x,my@-y)}
anmcnt++:x+=sin(r)*5:y+=cos(r)*5:pos x-16,y-16:gcopy 1,((anmcnt/5)\5)*32,32:return 0
#global
#module set type
#modinit int t,int cx,int cy
type=t:if t=0{newmod shot,a,cx,cy}else{newmod shot,b,cx,cy}:return
#modfunc move int no
if type=0{amove shot(no)}else{bmove shot(no)}
if stat=-1 {delmod shot(no)}:return stat
#global
buffer 1:color:boxf
repeat 5:color ,255:siz=5+(cnt)*(cnt<2)+(1-cnt)*(cnt>1):circle 16+cnt*32-siz,16-siz,16+cnt*32+siz,16+siz
color 255::circle 16+cnt*32-siz,16-siz+32,16+cnt*32+siz,16+siz+32:loop::gsel 0
dimtype shotmod,vartype("struct"),32
repeat:redraw 0:color:boxf:title str(max):mx=mousex:my=mousey:gmode 2,32,32:max=0
foreach shotmod:move shotmod(cnt),cnt:if stat=-1 {delmod shotmod(cnt)}:max++:loop
if max<32 and rnd(50)<5{cx=320+200-rnd(400):newmod shotmod,set,(rnd(5)<2),cx,cy}
redraw 1:await 10:loop
モジュール型変数の新しく追加された要素か次に使われる要素が簡単に分かれば配列で簡単に出来るけど・・・(空いてるところを探すか空いたところを記憶してソートするしかない?)
799 :
名前は開発中のものです。:2007/04/28(土) 10:12:45 ID:hldoJq+Y
文字が多くなって文字が画面からはみ出たときは
自動でスクロールバーが表示されるようにするにはどうすればいいの?
>>799 mesboxで横スクロールバー付きエディットボックス
HSP2.6なんだけど
例えば画面内に敵キャラが100体居るとします。
主人公がそのうちの1体だけをランダムに攻撃した時に
その1体のスプライト番号を取得するにはどうすればいいですか?
802 :
名前は開発中のものです。:2007/04/30(月) 01:39:21 ID:amrAC7iW
そのスプライトは何で表示してんだ?
HSP自身にはスプライト機能は無いぞ
自分で配列に素プレイと番号を保存して管理したほうが早いだろ
【バージョン】HSP3.0
キャラクタデータの記述された設定ファイルを作って、
そこから数値を読み込めるようにするにはどうすれば良いのでしょうか?
例えば、chara.cfgというファイルを作ってその中に、
HP=500と言う文字列を入力しておくと、
mes "HP="+HP+"/500"とした時にHP=500/500と表示されるように・・するみたいな。
要するに外部ファイルから数値を読み込むにはどうすれば良いのでしょうか?
805 :
名前は開発中のものです。:2007/05/01(火) 01:20:55 ID:82VWC4K+
/*
NAME=名無し
HP=500
MP=50
の内容で chara.cfg を作ったとして
*/
fname="chara.cfg"
notesel loadat ;メモリノートパッド命令のバッファに設定
exist fname
if strsize<=0 : end
noteload fname
sdim temp,1024
repeat noteinfo(0) ;読み込まれた行数分ループ
noteget temp,cnt
getstr key,temp,0,'='
if '=' not stat {continue } ; = が無かったので、この行を飛ばす
getstr strdat,temp,strsize,0
if "NAME"=key {NAME=strdat}
if "HP"=key {HP=int(strdat)}
if "MP"=key {MP=int(strdat)}
loop
mes "NAME="+NAME
mes "HP="+HP+"/500"
mes "MP="+MP+"/50"
処理速度は無視してるけど一回で何千とか処理するんじゃ無ければ大丈夫だろう
つーか、これぐらいその辺に転がってるだろ・・・
>>805 ありがとうございました。
講座を検索したりしたのですが、hsp3以前向けだったり、iniだけだったりしたので
どうも解決出来ませんでした。調べが足りず、申し訳ありません。
今後はなるべく自力で何とかしようと思います。お手数をおかけしました。
807 :
名前は開発中のものです。:2007/05/01(火) 02:12:43 ID:82VWC4K+
>>806 ヘルプで必要になるだろう単語を入れて命令を絞って
それを使ってネット検索すれば誰でも使いそうな事は見つかるよ
今回のだと 文字列操作 とか テキスト で出てくる命令を使えば色々出てきたと思う
808 :
名前は開発中のものです。:2007/05/01(火) 13:21:29 ID:Fn3EPEPt
ツールを作っている所で、つまずいてしまいました。質問させてください。
メインウィンドウにリストボックスか、コンボボックスが、あるとして、
そのどちらかに、フォーカスを合わせた後、ボックス以外の所をクリックしても、
マウスホイールの移動量(mousew)の取得が、出来なくなってしまいす。
ボタンをクリックすると、取得出来るようになりましたが、わざわざボタンを用いずに
mousewを取得することはできないでしょうか?
>>798 モジュール型変数を二個使うとは思いつかんかった
亀ながら㌧!
>講座を検索したりしたのですが、hsp3以前向けだったり
HSPVer2.6で講座作ってた奴は、Ver3が出た時にあったま来ただろうな。「ぬおお、おに
たままで俺の努力を台無しにするのか!ちくしょー!どいつもこいつも俺の努力を踏み
にじりやがって!そんなに俺のやることなすこと全部無駄にしたいのか!そんなに俺を
役立たずにしたいのくわぁぁぁぁ!」って。
俺もだけどな。
大丈夫。
重要なのはソースではなく概念、アルゴリズムだから。
概念だったら別の言語でもよいわけで
HSPに依存する細かい使用の部分ってことでしょう
>>810 ま、三角関数や平方根を自前で計算するような無駄な努力も
必要なくなったってことで、先を見ればいいことではある
あぷろだの件ですが、 @wikiの系列ぽい所で@pagesがあります。
容量1GB(1ファイルあたりのサイズ上限はなし。ただし1MB超えると送信速度が落ちる)
PHPが使えるのでpukiを設置してみる、とかはどうでしょう。
問題あったら指摘よろしく。
すみません、誤爆しますた。
ゆるす
ゆるさん
HSP3系の講座が少ないのは、
みんな、HSPに飽きてきた可能性もある?
>>818 HSP3とHSP2たいして変わらないから
あと付属リファレンスが充実したから
>>819 まあそれでも誰も付属のリファレンスなんか見ていないんだがな
本家BBSで質問してくる香具師は少しは調べろつーの
ちょっと聞いただけで奇特なひとにサンプルを作って貰えるのが
HSP最大の売りだからな
元々ゲーム作りに詳しい講座は少ないような気がする。
HSP2.6とHSPDXFIXでSTGを作ってるんだけど
自機の斜め移動速度を縦横と同じ速さにする方法がよく解りません。
横移動 x+4
縦移動 y+4
斜め移動 x+3:y+3
位にすると大体同じくらいの速さになるけど。
でもコレだと速すぎる。
横と縦の移動量を2くらいにしたいんだけど
そうすると斜めの移動量はどうなるんでしょうか?
そういうのは数学の知識が要る。
三角関数でググれ。
あと、内部で保持する座標は画面表示と1:1の座標じゃなく、
小数を保持するために10倍・100倍の整数か浮動小数点を使え。
>>823 最も単純な方法は…
;acnt 現在までのトータルフレーム数
if acnt&1 :x+=1 :y+=1 :else :x+2 : y+=2
つまり、1フレームごとに加算する量を変えるというワケ
これだと10フレームで15ドット移動する。
if acnt&1|(acnt\5=0) :x+=1 :y+=1 :else :x+2 : y+=2
これだと10フレームで14ドット移動する。
( 1,1,2,1,2,1,1,2,1,2 )
座標を256倍で扱うという方法もある。こっちをオススメする。
実際の位置指定時には
>>8する。
x+=362 :y+=362 ;256で1ドット相当
pos x
>>8,y
>>8
>>824-826 どうも有難うございます。
とりあえず浮動小数点ってのが今の自分にはすぐに理解するのが難しいかなぁと思いますんで
>>826さんの方法でやってみたいと思います。
いやそんなもん三角関数使って計算しろよ…
縦横に移動した時の移動量が1なら
斜めに移動した時の移動量は0.707106781186547
ごめん2.6ってのを見落としてた
HSPでゲームを作ってるんだけど
作ったヤツをウェブサイトで公開したい訳ですが
フォントをMSゴシックにしてゲームに表示させても
フォントの著作権とか問題ないんですか?
>>830 ない。
と言うか、フォント内蔵の場合なら(厳密には)問題あるが、単にOSのフォントを呼び出す分には全く問題ない。
ユーザーの環境に指定のフォントが入ってなければ、表示が想定通りに行かなくなるだけだし。
どこぞの拾い物フォントを勝手に内蔵して使う分には、それぞれのフォントの許認可条件に従うこと。
まあ、基本的に、フォントをフォントそのものとして内蔵し、フォントとして使用できる形で公開しない限り、
無問題と考えて大丈夫。メチャ本格的に、大規模な商利用する場合はまた別だが、まあ気にすんな。
>>831 ということは、フォントテーブルを持ったゲームやフォントを埋め込んだPDF,
フォントを使った画像ファイルにフォントのアウトラインが誰からも見られる紙の
印刷物は問題なの?
フォントって特殊な立場だな。
フォントの利用規約による
「12歳からはじめるHSPゲームプログラミング」という本を見ながらじゃんけんゲームを作成しているのですが、
以下のソースを実行すると"#Error 18 in 6 (janken.hsp) -->代入できない変数名を指定しています"と出て、正常に実行されません。
randomize
buffer 1,,,1
picload "janken.bmp"
screen 0,320,260,1
gmode 2
*hazime
rnd R,3
pos 30,0 : gcopy 1,0,0,200,180
pos 30,70 : gcopy 1,200+(80*R),0,80,90
wait 50
goto *hazime
何かおかしな部分がありますか?
本はHSP2を対象に書かれていて、現在使用しているのはHSP3なので、そこらへんが問題だと思うのですが、いかがでしょうか?
rnd R,3
↓
R = rnd(3)
>>832 まあ結局
>>833の言うとおりなんだけどな。
生ttfをゲームに同梱して配布するのはかなりやばい。
内部にBMP化してフォントを内蔵するのも、それなりにやばい。
一枚絵の中に文字が入っている、程度ならあまりやばくない。
また、大抵の場合、フォントを内蔵したワープロソフトみたいな
「フォントを"フォント"として取り扱う形態で配布」すると問題が大きくなる。
(注:ゲームには無関係のように見えるが、よくある「名前を入力する」部分が
ワープロ的だと見なされる場合がある)
やばいなと思うなら、フォントを内蔵せず、OSのフォントを呼び出すだけにしておいたら安全確実。
一枚絵の中に文字が含まれている、程度ならまあ大丈夫。
何万と売りさばく事が前提なら、何れにしろきちんとライセンスを取っておくこと。
837 :
名前は開発中のものです。:2007/05/07(月) 22:03:17 ID:PZ9SZ2Mt
>rnd R,3
↓
R=rnd(3)
HSP2の頃のサンプルを使うなら
HSPエディタの有るフォルダに index.htmってのがあるから
その中の
・以前のバージョンからの変更点(アップデートガイド) (update.htm)
これを一度見といた方がいい
クォータービューのACTやSTGの、当たり判定は矩形のまま行っているの?
それとも、クォータービュー用(?)定番アルゴリズムとか、あるんでしょうか
別に矩形で良いんじゃないの
何か問題?
>>835 >>837 これでやっと先に進めます!
アップデートガイドの存在には気がつきませんでした。
今後は活用したいと思います。
ありがとうございました。
関数タイプになって
pos rnd(639) , rnd(479)
みたいな記述ができて楽になった
gcopy 1,200+(80*rnd(3)),0,80,90
HGIMG3のモデル領域は開放できない?
オブジェクト領域はできるらしいんだけど エロイ人ご教授ください
>>838 クォータービュー用定番アルゴリズムなんてものはない!ゲ製作はいまだに職人
の世界だっ!師匠の指裁きや筆遣いや寿司ネタの握り方を見て技術を盗むんだよ。
定番のアルゴリズムは講座や本読めば買いてあるだろう。しかしクォータービュー
だとか、ちょっと凝ったやつになるとどうだ。ブツを見てどんなアルゴリズムなんだろう
な~と想像するしかない。ブラックボックスってやつだね。でもゲ製作ってそういう
もんじゃね?ゲーム見て「これってどうやったらできるんだろう」って思う。そしてその
方法を考える。「ああこうやればできるや」って思えば技術の向上だ。
俺くらいの中級者になるとざっと考えるだけでこんだけ出てくるぜ。
・
>>839に同じ。矩形。
・円ならもうちょっとマシなんじゃないか。
・ひし型の当たり判定その1。三角形2つと四角形1つに分ける。三角形は斜めに
なった四角形の判定でできる。
・ひし型ってのは長方形が上に行けば行くほど右にずれてるってことだ。そこから
導かれる計算式は?
・計算的にはまっすぐなスクロール。表示する時だけ斜めにする。
つーか、クオータービューとか関係なく、辺り判定したいキャラの形が問題なんじゃね?
よっぽど巨大で複雑怪奇な形でもない限り矩形で問題ないが
えー?
ていうか、クォータービューって単に表示上斜めってなってるだけだから
内部処理では普通のSTG等と同じ事やってて、
表示だけ斜めにするんじゃねーの?
いや、その理屈は正しい
あ?
3Dでやるの?
849 :
名前は開発中のものです。:2007/05/10(木) 21:03:24 ID:tEu0m8/u
質問なんですがゲームで2人対戦を作るとき、
キーボードを二つパソコンにつないで同じボタンを押しても
1Pが押したのか2Pが押したのか分かるやりかたを教えてください。
お願いしますm(__)m
それは無理だろ
環境がSFCなら出来るんじゃね?
>849
やり方があるのかどうかは、知らないが。
キーボードを二つ接続したPC環境を構築している人間は、少数派だろうから、
そのゲームを一般に公開するつもりなら、別の操作系を考えるのが賢明だと思う。
自分や仲間内だけで遊ぶゲームなら、その限りではないけど。
>>849 2人以上ならゲームパッド(ジョイバッド?)を使うのが普通だろうね。
パッドvsパッドかパッドvsキーボード。
というかそもそもキーボードはゲームにむいてない。一般のキーボードはほとんど2~3キーロールオーバーだから。
あ、マウスvsキーボードって対戦もありか。w
854 :
849:2007/05/12(土) 09:38:38 ID:CHidITY3
そうですか…無理ですか…ありがとうございました。
つーか、その環境持ってるor調べようと思う奴が少ないからな。
今の時代パソコン2台でネット対戦にした方が早い気もするし。
国内で最も使われてるフリーな環境はHSPですか?
昔、PC-88mkIISRというパソコンがあって、それにキーボード端子が2つ付いてた。
友人の家にキーボード持っていって実際に試したけど
両方のキーを受け付けて、判別はできなかったな。
マウスVSキーボードも、対戦マインスイーパー作って試してもらったんだけど
圧倒的にマウスのほうが操作早くて、公平なプレイにならなかった。
まぁ、パッド2つが無難だろう。
88SRって端子二つあったっけ
おぼえてねー
ミサイル弾道計算じゃね
>>855 確かに、俺も対戦ゲーム作る時は、普通にLAN対戦にするだろうな。
そっちの方が楽だろう。
>>854 XP以降限定だけど、WM_INPUTでHIDの生データ取れば実現できるんじゃね?
試してないけどさ
863 :
名前は開発中のものです。:2007/05/14(月) 00:05:11 ID:bOzJ10Yl
マウスホイールの操作で画面スクロールさせようと思ってるのですが
mousewの使いかたがよくわかりません。。。
どうすればいいですしょうか?
mousewはスクロールされると-120とか120という値が取得できます
// 画面の高さ
y = 0
*main
// 一時保存
// -1は情報が±が反転してるから
mw = mousew*-1
// もし動いたなら
if ( mw != 0 ) {
// その数値を加算
y = y+mw
// 調整
if ( y < 0 ) {
y = 0
}
if ( y > ginfo( 13 ) ) {
y = ginfo( 13 )-20
}
}
// 描画
redraw 0
color 255, 255, 255 : boxf
color 0, 0, 0 : boxf 0, y, ginfo( 12 ), y+20
redraw 1
// 待機
await 10
goto *main
mousewって、積算型じゃなくて一度値を参照すると中身がリセットされるんだよな。
しかも、スクロールホイールを2回動かす間にmousewを一度しか参照しなかったら、
前の1回分は破棄されるというふてえ仕様だ。
あたまわるいmousewのために高頻度でポーリングするのも余計な負荷なので、
WM_MOUSEWHELLを捕まえて内部カウンタを積算したほうが便利よ。
866 :
名前は開発中のものです。:2007/05/14(月) 01:10:27 ID:bOzJ10Yl
>>864 おおぉーできました!ありがとうございます。
ifの判断でmousewをそのまま使ってたのがダメだったみたいです・・・。
5年使ってたノートが壊れたので新しいノートを買ってきた。前のは20万。今度のはノート
としては最底辺の10万だ。んで自作ゲームを動かしてみた。ひど!微妙に遅い。いや
それよりももっとひどいのがMIDI。うわ!安物のPCだとこんなふうに聞こえるんだあ。
いくつかの楽器がまともに鳴ってない。あるいは完全に鳴ってない。
5年もたってるんだぜ!?いくら安くても進化しててよくね?みんな!これからはmp3だよ!
サイズが大きいのは嫌だって奴のためにMIDI版も自分のサイトに用意しといて、俺の
サイトまで来いと。
てか速度が遅いのはいかんともしがたいなあ。これじゃあだめだ。みんな!俺はゲ製作
から撤退するよ。今まで有難う!そしてさよーおならー!ブッ!シネ!
それかawait 16からawait 32に変えるか。
MIDIが酷いのはPCのせいじゃねえw
つーか、ぶっちゃけ音質悪くても昔のファミコンのBGMの方が記憶に残ってる件w
釣りだよね?
釣りじゃなったとしたら子供だよね?
うむ。
いくら10万円でも5年前の20万円よりはスペック上だと思うのだが、
一体何があったのだ。。
10万も出してスペックダウンするくらいなら
ショップブランドのデスクトップ型にした方が良かったんじゃないか。
スルー力を君らに
873 :
名前は開発中のものです。:2007/05/14(月) 21:26:36 ID:qusRFGjc
>>867 何が原因で遅くなってるか調べたか?
ゲームが遅くなってるだけで、タスクマネージャのCPU使用率は50%ぐらいとかねーか?
つーか、OS,CPU、グラボ、メモリの違いも検討しないで買ったのかよ・・・
874 :
名前は開発中のものです。:2007/05/14(月) 23:39:40 ID:qQM3DdCm
>>867 マジレスすると、
5年前+20万=Win2000が快適に動く
今+10万=VISTAがぎりぎりで動く
とかじゃね?
hsp2.6とhspdxfixでゲーム作ってるんだけど。
midiを演奏すると一瞬画面が止まります。
hsp以外の言語でもmidiファイルを演奏すると画面が止まりますか?
いまどきmidiデータなんぞ止めてオーディオデータを使いましょう
878 :
名前は開発中のものです。:2007/05/15(火) 01:29:42 ID:OAuZRVq8
>>875 再生に使ってるデバイスの問題
初期化に時間が掛かる(WinXPだと特に遅いと聞いた)
言語自体の問題じゃないよ
HSP3ならmciのMPEGVideoで再生開始速度が
早く出来るけど2はどうだろ?
まーしかし876に同意。
BGMがMIDIのゲームは嫌われたりするし、俺の環境ではミュートしちゃってる。
内蔵のソフトシンセなんて、どっちにしてもデータ作成者の意図どおりには鳴らんし。
>>876 すみません、オーディオデータってのが何なのかよく解りません。
AVI形式のことですか?無知ですいません。
wavとかじゃね?
jpgだよ。
MOD最強
マジレスするとrarのこと
>>880 四の五の言わずググれ。理解が深まるしそっちが早くて正確。
加えて話の流れも読むとより理解が深まるとおもうぞ。MIDIと対になってるだろ?
>>876,879
理解はできる。理解はできるが、ファイルサイズを気にしてしまう悪習慣がぬけないんだ。
つい、ね。
つーか、曲自体の出来がアレなのに、音源・音質ばっかり凝ってるのもイランけどな。
まあそれはあるな
でもMIDIのBGMだったら鳴らさんほうがマシだ
それは聞き捨てならんな。
フリー素材はほとんどがMIDI
そんな時代もあったのだよ。
故にMIDI資産は膨大
しょぼい音源のゲーム臭さも何とも言えんし、
Sound BLASTERとか、そうでなくても
サウンドフォントが扱えるサウンドカードならだいぶ世界が変わる。
あとTiMidiとかいうソフト音源もオススメ。
http://twsynth.sourceforge.jp/ ぶっちゃけ音源によって音が変わるのが良いんだヨ('A`)
889 :
名前は開発中のものです。:2007/05/17(木) 17:33:48 ID:ECrUiSe6
hspext.dllを使わずにレジストリに新規キーを作成しようと思って下の
スクリプト作ってみたんですが、どうも上手く動作してくれません。
どこが間違ってるのか教えてくらさーい。XPでの使用を前提にしてます。
;****************************************************
;******************
//新規命令を作成//
;******************
#module
;関数
#uselib "advapi32.dll"
#cfunc RegCreateKeyEx "RegCreateKeyExA" int,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr
;定数
#const HKEY_CLASSES_ROOT 0x80000000
#const REG_OPTION_NON_VOLATILE $00000000
#const KEY_WRITE 0x20006
;新規命令
;p1=作成するディレクトリ
#deffunc Nh@_RegCreateKeyEx str Nh@_RegCreateKeyEx_P1
Nh@_RegCreateKeyEx_P0=HKEY_CLASSES_ROOT
nhret=RegCreateKeyEx(Nh@_RegCreateKeyEx_P0,Nh@_RegCreateKeyEx_P1,0,0,REG_OPTION_NON_VOLATILE,KEY_WRITE,0,hkey,0)
return
#global
;*******************
//メイン//
;*******************
makedir="testkey\\subkey"
Nh@_RegCreateKeyEx makedir
mes "CMPL"
stop
;*****************************************************
#module
#uselib "ADVAPI32.DLL"
#cfunc RegOpenKey "RegOpenKeyExA" int,int,int,int,int
#cfunc RegQueryValue "RegQueryValueExA" int,int,int,int,int,int
#cfunc RegCreateKey "RegCreateKeyExA" int,int,int,int,int,int,int,int,int
#cfunc RegSetValue "RegSetValueExA" int,int,int,int,int,int
#cfunc RegDeleteKey "RegDeleteKeyA" int,int
#func RegCloseKey "RegCloseKey" int
#define KEY_READ 0x00020019
#defcfunc ReadReg int _key, var _subkey, var _data
hkey = 0 //↓規定値を読み込む
if RegOpenKey( _key, varptr(_subkey), 0, KEY_READ, varptr(hkey) ) == 0 {
size = 0
if RegQueryValue( hkey, 0, 0, 0, 0, varptr(size) ) == 0 {
sdim buf, size
a = RegQueryValue( hkey, 0, 0, 0, varptr(buf), varptr(size) )
RegCloseKey hkey
_data = buf
return 0 //キーの取得に成功。
}
else {
RegCloseKey hkey
return -2 //取得に失敗。(ほぼ在り得ないと思うが)
}
}
else {
RegCloseKey hkey
return -1 //キーが無いとき
}
#define REG_OPTION_NON_VOLATILE 0x00000000 //情報はディスクファイルに保存され、システムを再起動時しても情報は失われません。
#define KEY_WRITE 0x00020006
#define REG_SZ 0x00000001
#defcfunc WriteReg int _key, var _subkey, var _data
hkey = 0 //↓規定値に書き込む
if RegCreateKey( _key, varptr(_subkey), 0, 0, REG_OPTION_NON_VOLATILE, KEY_WRITE, 0, varptr(hkey), 0) == 0 {
if RegSetValue( hkey, 0, 0, REG_SZ, varptr(_data), strlen(_data)+1 ) == 0 {
RegCloseKey hkey
return 0 //書き込みに成功
}
else {
RegCloseKey hkey
return -2 //書き込みに失敗
}
}
else {
RegCloseKey hkey
return -1 //キーのオープンまたは作成に失敗
}
#defcfunc DeleteReg int _hkey, var _subkey
return RegDeleteKey( _hkey, varptr(_subkey) )
#global
#define HKEY_CLASSES_ROOT 0x80000000
前に作ったやつをそのまま。参考に
892 :
名前は開発中のものです。:2007/05/17(木) 23:11:30 ID:ECrUiSe6
>>890 >>891 ウォォッ!ありがとう!
激しく参考にさせて頂きます。
('A`)ガンバルゼ
うを、まじかっ
-―- 、__,
'叨¨ヽ `ー-、
` ー /叨¨)
ヽ,
`ヽ.___´, <うを、まぶしっ
`ニ´
:::. : : ..:::
:::. : . .:::
::.. : : ..::
:::.. :. .: .::
:::... ... ...::
::..... ...::::
∧ ::...::: /
{ ヽ| |ノノ
_ト、Lj/}
r< { | |7ヽ、
{ ,_ェェ.L⊥.__{ノ、
j `}ー'
} ――ー-{
ヽ --―‐r'
\_ __. イ
`ー┴ ´
質問よろしいでしょうか? STGの、自機を狙ってくる弾を作りたいのですが
以下の方法だと、角度の精度が、大雑把と言うか、角度によっては弾が当たらない場合もあるのですが
どこがいけないのでしょうか。よろしくお願いします。(HSP3用です)
mx = 320 : my = 320 : ex = 320 : ey = 150 ; 敵味方座標
tx = 0:ty = 0 ; 弾座標
*main
e++ : if e = 60 : tx = ex : ty = ey : gosub *tama_houkou : e = 0
gosub *tama_move
stick k,15
if k&1 : mx-
if k&4 : mx+
if k&2 : my-
if k&8 : my+
redraw 0 : color : boxf
color ,$ff : pos mx,my : mes "▲" ; 自機
color $ff : pos ex,ey : mes "▼" ; 敵
pos tx,ty : mes "●"; 弾
redraw 1 : await 0 : goto *main
*tama_houkou ; 自機の方向を得る
a = ex - mx : b = ey - my
c = atan (a,b)
si = int(sin(c)*4) : co = int(cos(c)*4)
return
*tama_move ; 弾移動
tx+=-si : ty+=-co
return
intしてるからだろ
897 :
名前は開発中のものです。:2007/05/21(月) 15:46:33 ID:6fZCE0Or
>>895 0.1*4と0.2*4を整数にしたら幾つだ?
整数と実数の扱いがどうもよく分からんので
今だに <<8 だの
>>8 してるわモレ('A`)
899 :
895:2007/05/21(月) 16:36:22 ID:PlwO7Z3Z
>>896さん、897さん
お早い回答、有難うございます。上手くいきました
intを外す事も試してみましたが、結果は同じで、何故だろうと思いましたが
上の場合、敵味方の座標も、小数型にしておかなければいけなかったのですね
先に下の文を参考に作ったので、気付きませんでした。
#define DtR 0.017453293 ; 度 -> ラジアン
mx = 320 : my = 240
*main
redraw 0
color : boxf
color ,$ff : pos mx,my : mes "▲"; 自機
color $ff : pos ex,ey : mes "●" ; バリア
redraw 1
a++ : if a = 360 : a = 0
rok = DtR*a
si = int(sin(rok)*100) : co = int(cos(rok)*100)
ex = mx+si : ey = my+co
await 0 : goto *main
質問させていただきます
アクションゲームを作っているのですが
「→,↓,←,」のキーを押し続けると
「-->スタック領域のオーバーフローです」
のエラーが出ます
「移動、ジャンプ、ダッシュ、座り」
等の行動まで出来るようになった段階では問題なかったのですが
「攻撃」を加えた後でエラーが出るようになりました
「攻撃」関係の部分を全て消しても同じエラーが出ます
「攻撃」を加える前は同じ操作をしても
エラーは出なかったはずですが勘違いかもしれません
自分で調べられる範囲で調べてみたのですが
サブルーチンと式が間違っているらしいことはわかったのですが
指摘されている部分を見ても具体的に何が間違っているのかわかりません
( if zky=1 and atacktime=0 :atacktime+=1)
上が指摘された部分なのですが
根本的に、エラー「スタック領域のオーバーフロー」が何故出るのか解りません
長文かつ基本的な質問をしているのかもしれないのですが
もし解る方がいらっしゃいましたら教えてもらえないでしょうか
他に書くべき事がある場合も指摘してもらえると助かります
よろしくお願いします
901 :
名前は開発中のものです。:2007/05/21(月) 20:27:48 ID:z34WPkiM
>>900 大抵サブルーチンからgotoとかしてメインに戻ってたり
ループからブレイク無しでループの外に行ってたり
新規命令やサブルーチンを同じ新規命令やサブルーチン無限に呼んでたり
とかだな
>指摘されている部分を見ても具体的に何が間違っているのかわかりません
エラーで出る行番号は目安ぐらいにしかならない(特に3.0aは)
後、エラーエログも正確じゃない(特に3.0aは)
902 :
名前は開発中のものです。:2007/05/21(月) 20:30:21 ID:z34WPkiM
新規命令やサブルーチン内から同じ新規命令やサブルーチンを無限に呼んでたり
だな・・・
>>901 ありがとうございます思い当たる部分もあるのでチョットいじってみます
似たような質問で申し訳ないのですが
例えば
*sub ;(サブルーチン)
if (~) :goto *nuke
(サブルーチン命令)
*nuke
return
の様にサブルーチン内で gotoを使って命令を飛ばすのは
何か問題があるのでしょうか?
904 :
名前は開発中のものです。:2007/05/21(月) 21:30:46 ID:z34WPkiM
>>903 サブルーチンネストの限界(128?)まで行かなければいいので
gotoでジャンプすること自体は問題ない、901でもメインって言ってるだろ?
(普通メイン内にreturnなんて置かないじゃん)
ネストってーのは
gosub *A
stop
*A
gosub *B
return
*B
return
ってなってた場合*Aに飛んだときにネスト1になって
更に*Bに飛ぶとネスト2になる、returnするとネスト1になって
gosub *Bの次の行に飛ぶ
これは、gosub で飛んだ物は戻る場所を保存してるからで
だからreturnするだけで飛んだ逆順にジャンプ元に戻ることが出来る
でも戻り先を保存できる個数には制限があってそれが128個
>何か問題があるのでしょうか?
問題があるとすれば、読みにくくなる、バグの元になる
(gotoで飛んでreturnしてたら自分でも訳分からなくならない?)
特別な理由が無ければサブルーチン内で決着を付けた方が良いと思う
*sub ;(サブルーチン)
if (~) {gosub *nuke :return}
とか
サブルーチンなんて使わずに全部関数で処理すれば問題ない
906 :
名前は開発中のものです。:2007/05/21(月) 22:14:17 ID:z34WPkiM
>>905 おいおい
そう言う問題じゃねーだろ
新規関数内から同じ関数呼ぶのもネストの問題は解消できないのにw
分かった上で使わないと結局後で同じような問題で詰まるよ
Dr.デバッグ「構造化プログラミングですぞ」
オブジェクトHSPとか出たらいいのにね。
909 :
900:2007/05/22(火) 02:31:24 ID:jdPp968J
>>904 返事遅くなってすいません
解りやすい説明ありがとうございます
コレで問題可決できそうです
本当にありがとうございました
910 :
名前は開発中のものです。:2007/05/22(火) 03:25:14 ID:w8FHk1Gb
>>903 >if (~) :goto *nuke
>(サブルーチン命令)
>*nuke
>return
の*nuke~return間に何も無いなら
飛ぶ必要がないぞ
if (~) :return
(サブルーチン命令)
return
これで事足りる
途中で抜ける方に return -1
最後まで行く方に return 0
ってやっておくと
gosub *sub
if stat<0 :mes "エラー"
とか出来る
後、サブルーチン内にデータ渡して処理したくなったら
マクロ、新規命令、新規関数、モジュールとか覚えれば色々便利
911 :
HSP3:2007/05/22(火) 12:06:38 ID:8kCRlLEp
かなり初歩的な質問かもしれませんが、
背景画像をずっと表示しっぱなしで、
bufferでID2ウインドウにキャラ画像読み込んで
そのキャラを移動させた時に、boxfなどで塗りつぶすともちろん背景消えますよね?
でも塗りつぶさないと一度表示されたキャラが移動しても消えないので
移動すればするほどペンでなぞったみたいに繋がります・・・。
まとめますと
・背景は表示しっぱなし。
・キャラを表示、stickなどで動かせる。
・背景だけ消さずにキャラを一度消して、移動先で再描写。
こういう場合どうすればよいでしょうか?・・・。
boxfで一度消すやりかたで、背景なしだったら出来ます。
>>911 boxfの代わりに、背景をコピーしる。
つまり、背景画像用のスクリーンバッファか領域が必要。
913 :
HSP3:2007/05/22(火) 12:32:02 ID:8kCRlLEp
>>912 さっそくありがとうございます!
まだいまいち頭では解っていませんが、
ヒントになりました!
背景をコピーする考えでやってみまう!
914 :
名前は開発中のものです。:2007/05/22(火) 13:17:28 ID:w8FHk1Gb
>>913 buffer 1
picload dir_exe+"\\sample\\demo\\sky_bg.jpg"
buffer 2
picload dir_exe+"\\sample\\game\\shootchr.bmp"
gsel 0
repeat
redraw 0 ;redraw命令はは必ず表示ウィンドウが操作先になってる必要がある
gmode 0
pos 0,0 :gcopy 1,0,0,640,480
stick k,$f
if k&1{x-2}
if k&4{x+2}
if k&2{y-2}
if k&8{y+2}
gmode 2
pos x,y :gcopy 2,0,0,128,64
redraw 1
await 10
loop
ウィンドウ上に表示した物を動かす場合は
基本的に背景で使ってる画像で上書きする
殆んどのフレームで動きがあるよな物なら毎フレーム
背景コピー>キャラコピー と自分で処理するのが普通
(ツクールとか使ってた人が良く戸惑う・・・)
915 :
HSP3:2007/05/22(火) 13:31:10 ID:8kCRlLEp
>>914 めちゃくちゃ親切にどうもです><
もろ解りでした!
本当、根本的な捕らえ方が違ってたみたい・・・
頭が柔らかくなりました。ありがとうございました!
916 :
HSP3:2007/05/22(火) 17:19:48 ID:8kCRlLEp
911で質問した者ですが、お陰様で画面の表示方法は一通り解ったんですが
また新たに疑問が出来たので、お暇な方が居れば教えてください
キャラを操作する時の"初動動作スピード"の事なんですが、
例えば→にキャラを進める場合
キー押し始めはゆっくりで、すぐさま最高スピードになって、
キーを放してもすぐには止まらないようにしたいのですが
どうすればいいんでしょうか・・・?
キャラの表示は
>>914で教えてもらった感じにしてるのですが
試行錯誤してもよくわかりません、どうか教えてくださいませ・・・。
918 :
HSP3:2007/05/22(火) 17:28:23 ID:8kCRlLEp
>>917 ごめんなさい、よく読んでなかった・・・
HSPが出来ないのもこういう性格だからですね・・・
気をつけます!そして、ありがとうございました!
ホントに”試行”錯誤したのかと
思考錯誤してんじゃね?
>>916 x方向への移動量をdxとする。最高スピードをmaxdxとする。例えば、
・→が押されているなら、dx=dx+1。ただしdx>=maxdxなら増やさない。
・→が押されていないなら、dx=dx-1。ただしdx=0なら減らさない。
もちろんx方向への移動はx=x+dxだ。
>HSPが出来ないのもこういう性格だからですね・・・
うむ。素直ないい子じゃないか。ちんこをうpしてくれたらもっと手取り足取り教えてやって
もいいぞ。
>>930 ちょwwwそれどう見ても40代オサンのちんpだろwww
ちょwwwどこの誤爆だwww
924 :
HSP3:2007/05/23(水) 09:32:21 ID:/1RWwi8L
だめだ;;いくらやってもまじわかんない;;
誰か 914のソースで
→と←を押した時だけ916で言った通りにして貰えないだろうか?・・・
すごく優しく教えてもらってるのに、全然わかんない・・・
これだから単細胞は・・・
>>921 ありがとう!言ってる意味はすごく分かったけど、
多分こちらの捕らえ方が悪いんだろうけど、その感じでやってみると
maxdxに到達した時にそれ以上進まない・・・なんでだ・・・
むしろ、dx+1がmaxdxの数値(たとえば5なら)5までただ1を足すだけで
だんだんと加速する感じが出ないッス・・・
説明すらムズイ;;あと包茎なんで勘弁して下さい;;
>>924 x = 320.0 : vx = 0.0
y = 240.0 : vy = 0.0
repeat:redraw 0
getkey k,37:if k : vx -= 5.0
getkey k,39:if k : vx += 5.0
getkey k,38:if k : vy -= 5.0
getkey k,40:if k : vy += 5.0
x = x+vx
y = y+vy
if x < 0.0 : x = 640.0
if x > 640.0 : x = 0.0
if y < 0.0 : y = 480.0
if y > 480.0 : y = 0.0
color 255,255,255:boxf
color 0,0,0:pos x,y:mes "★"
redraw 1:wait 10:loop
最大速度は自分でやってみそ
;包茎に免じて。 >914の「gsel 0」以降を差し替え
dim dx,16:dim dy,16:repeat 16:dx(cnt)=((cnt&4)>0)-((cnt&1)>0):dy(cnt)=((cnt&8)>0)-((cnt&2)>0):loop
repeat
redraw 0
gmode 0
pos 0,0 :gcopy 1,0,0,640,480
stick k,$f:k&=$f
if dx(k) { xz+=dx(k) } else { xz -= limit( ((xz>0)-(xz<0)) , -10,10 ) }
x+=xz:if ( (x>640)|(x<-128) ) { x-=xz:xz=-xz }
y+=dy(k)*2
gmode 2
pos x,y :gcopy 2,0,0,128,64
redraw 1
await 10
loop
包茎には優しいな
あー、いま見たら間違ってるな。スマン >包茎
if dx(k) { xz+=dx(k) } else { xz -= limit( ((xz>0)-(xz<0)) , -10,10 ) }
のとこ、
if dx(k) { xz+=dx(k) } else { xz-= ((xz>0)-(xz<0)) }
xz = limit( xz , -20,20 )
とでもしてやっておくれ。
929 :
名前は開発中のものです。:2007/05/23(水) 23:14:55 ID:2ubFRilY
>>924 maxdxに到達した時にそれ以上進まない・・・なんでだ・・・
pos x+dx.y とかやってないか?w
//←→だけ加減速度付きサンプル
buffer 1
picload dir_exe+"\\sample\\demo\\sky_bg.jpg"
buffer 2
picload dir_exe+"\\sample\\game\\shootchr.bmp"
gsel 0
x=0.0:y=0.0:dx=0.0:dy=4.0:maxdx=10.0
repeat:redraw 2
gmode 0:pos 0,0 :gcopy 1,0,0,640,480
color 255,255,255
mes "x="+x+" dx="+dx:mes "y="+y
stick k,$f
if (k&5)=0 {;左右キー入力が無ければ減速
if int(dx)!0 {;dxが1未満ならdxを0に近づける
if dx>0.0 {dx=limitf(dx-0.3,0,maxdx)}else{dx=limitf(dx+0.3,-maxdx,0)}
}else{dx=0.0}
}else{
if k&1 {dx=limitf(dx-0.5,-maxdx,maxdx)}else:if k&4 {dx=limitf(dx+0.5,-maxdx,maxdx)}
}
if k&2 {y-dy}else:if k&8{y+dy}
x=limitf(x+dx,0,512) ;x+dxを0.0~512.0に収める (実数型用)
y=limitf(y,0,416)
gmode 2:pos x,y :gcopy 2,0,0,128,64
redraw 1:await 10:loop
930 :
名前は開発中のものです。:2007/05/23(水) 23:17:43 ID:2ubFRilY
あら、一行目に > やるの忘れた・・・
まぁいっかw
まぁ、普通に空気抵抗みたいな力でおk
932 :
HSP3:2007/05/25(金) 06:01:06 ID:AURAMUwd
>>925-931 返事が遅れまくりで申し訳ないです・。・
みなさんのを試しに実行してみたら
すごく僕の望んでたモノになったとです!
これらを改良してみますね。ありがとうございました
アニメーション表示まで出来て
後は敵とマップに関してが残った大きな仕事になりました。
みなさんのお陰です\(^o^)/
933 :
929:2007/05/25(金) 09:41:51 ID:xVqJ1N/T
コメント間違ってた
>if int(dx)!0 {;dxが1未満ならdxを0に近づける
0未満を0.0に
0以外ならdxを0に近づけるだな・・・
質問ばかりで申し訳ないですが、
MP3などのオーディオデータを一時停止する事って出来ますか?
あと
マリオの様なアクションゲームのマップに関する概念を教えて欲しいです・・・
>>934 >MP3などのオーディオデータを一時停止する事って出来ますか?
「HSP DirectSound Extension」とか、プラグイン使えば簡単。
>マリオの様なアクションゲームのマップに関する概念を教えて欲しいです・・・
基本は、よくある迷路ゲームとかと同じ。
画面を40x30(数字は何でも良いけど)の格子に分けて、それぞれの格子に属性を割り振る。
0だと何も無し、1だとブロックで行けない、2だと壊せるブロック、とかな。
二次元配列にすると管理が簡単。
後は自キャラの現在位置と、自キャラが次に進もうとしている格子の座標を比べた上で、
その格子の属性が0なら進める、1だと進めないというような処理を入れる。
その他、重力引っ張りとかジャンプとか、自キャラの動きに関する処理を入れれば、
大分マリオっぽくなるだろう。
一度テトリスとか迷路ゲームみたいな、単純な奴作って練習してみるのもお薦め。
おまえの次のセリフは
『マップ表示の仕方を教えてくださいこの野郎!』という!
\sample\game\mapmove1.hsp
\sample\game\mapmove2.hsp
初歩的な質問ですみません。
mmloadで音声を読み込んでおいてmmplayで鳴らしているんですが
複数のwavを同時に重なった状態で鳴らすことってできますか?
後発の音が前発の音を消してしまうのでとぎれとぎれなかんじになってしまう…
優しい奴ばっかりだな。
何があった?
>>935 すごく解り易かったです!
色々調べてたけど説明が長いだけで、解り難かったんです。
そういう風に簡潔にまとめてくれるとすごく助かります、ありがとうございました!
>>936 それは僕(934)に対しての言葉ですか??
そうならそのサンプル(?)に表示の秘密が隠れてるんですね!
じっくり吟味してきます!ありがとうございました!
(´・ω・`)
手取り足取りソースまでもらっちゃって嬉しいのは分かるが
ちゃんと理解してるか。成長しないぜ…?
>>942 そうそう、ソースのをそのままはめ込むのはやらない様にしています。
一度新規で教えてもらったソースを実行して、
一個ずつの命令をちゃんと勉強してます。
今回は初めてだから何も解らないけど、
次回作とか作る時に理解してないと困るの自分ですからね
って返信速っ
14歳からのHSPプログラミングを見ながらシューティングゲームを作っています。
スペースキーを押すと弾が発射されるようにしたいのですが、何故かカーソルキー←で弾がはっしゃれるようになってしまいました。
何故でしょうか?以下がそのプログラムです。
randomize
buffer 1,,,1
picload "flogs.bmp"
screen 0,480,320,1
MX=240 ;自分のx座標を入れる変数
MY=160 ;自分のy座標を入れる変数
SN=0
SX=0
SY=0
gmode 2
;/■/■/■メインループ/■/■/■
*LOOP1
redraw 0 ;ここから画面の書き換えを一時停止
color 0,96,0 :boxf 0,0,479,319 ;背景を深い緑で塗りつぶす
stick ky,15
if KY&1 :MX=MX-8 :if MX<0 :MX=0 ;左移動
if KY&4 :MX=MX+8 :if MX>448 :MX=448 ;右移動
if KY&2 :MY=MY-8 :if MY<0 :MY=0 ;上移動
if KY&8 :MY=MY+8 :if MY>288 :MY=288 ;下移動
gosub *shot
pos MX,MY
gcopy 1,0,0,32,32
redraw 1 ;ここから画面の書き換えを再開
await 30
goto *LOOP1
;/■/■/■弾の移動ルーチン/■/■/■
*shot
if (KY&16=16) and (SN=0) {
SN=1
SX=MX+24
SY=MY+12
}
if SN=1 {
SX=SX+12
color 0,255,255 :boxf SX,SY,SX+12,SY+4
if SX>474 :SN=0
}
return
stick ky,15
ってあるけど、kyをKYに直せばいいんじゃないかな?
軽く見ただけなんだが、他は合ってるような気がする。
947 :
名前は開発中のものです。:2007/05/26(土) 14:04:21 ID:6s2TcZXX
優先順位のせい
& よりも = が先になる
*,/ 4 高い
+,- 3
<<,>> 2
比較演算子 1
&,|,^ 0 低い
>>947 つまり、どのように直せばいいのでしょうか?
上げちゃった スマソ
>>943 包茎だけど初心者の鑑だな('A`)
>>948 ここ。
if (KY&16=16) and (SN=0) {
>>950 (KY&16=16)ここを直せばいいんですよね?
どのように直せばいいのか分かりませんが・・・。
優先順位が変わってしまうと、何故カーソルキー←で反応してしまうようになるのでしょうか?
ちなみに
if (KY=16) and (SN=0) {
だとスペースキーで弾を発射してくれますが、移動キーと一緒に押した場合だと発射されなくて、ゲームとしてはおかしいですよね。
それ以外に方法があるのでしょうか?
(KY&16=16) これは…
& よりも = の優先順位が高いのでまず、 16=16 が計算される。結果は 1
↓ すると
(KY&1) こうなっちゃう
計算の優先順位を変えたいならカッコを使う。基本中の基本ダヨ
((KY&16)=16)
>>953 なるほど!よく分かりました。
ありがとうございました。
exist "test.aaa"
fsize = strsize
if fsize == -1 : end
bload "test.aaa",file,fsize,$30
repeat
binary = peek(file,cnt)
pos x,y
mes ""+binary+"\t"+cnt
y += 20
if y >= 480 { x += 72 : y = 20 }
await 0
loop
stop
ってやったときに、何故か5ループ目で「binary = peek(file,cnt)」の部分に「パラメータの値が異常です」ってエラーがでる
バイナリファイルが悪い訳ではなさそうなんだけど…
どうか原因を探ってエロイ人
bloadの説明を100万回読め
957 :
名前は開発中のものです。:2007/05/27(日) 00:52:45 ID:RRXGBjPE
>>955 noteloadと違ってバッファの自動拡張はされない
sdim file,fsize とかdim file,fsize/4+1 とかやる必要がある
>>956 あのヘルプの書き方は分かり難いかもしれない・・・
(noteload使った後だと余計に)
bt大量修正ktkr
β10もうすぐリリース?
btって何
960 :
名前は開発中のものです。:2007/05/27(日) 02:46:07 ID:RRXGBjPE
バグトラッキング
バグ報告専用の掲示板みたいなもの
β版落とせるページにリンクあるだろ
おk理解した
962 :
名前は開発中のものです。:2007/05/27(日) 20:48:39 ID:XoiLMAio
(・∀・)
965 :
名前は開発中のものです。:2007/05/28(月) 23:49:35 ID:Yymrb+yR
dxdoundex.hpiが
ID33v2タグに対応していない
ということが解るのに
一日かかった。
古いプラグインとかがめちゃくちゃ放置で混在しまくっててわかりずらいよ
966 :
名前は開発中のものです。:2007/05/28(月) 23:50:58 ID:Yymrb+yR
dsoundexだた
DLページかその周辺に、最終アップデートの日付くらい書いてあるだろ。
オレは、プラグインに限らず、ソフトをDLするときは、常にそのへん確認しているが。
現時点で
ttp://hsp.tv/make/tool.html からリンクされてない所のプラグインは、腐りかけてるとみて良い。
968 :
名前は開発中のものです。:2007/05/31(木) 08:21:13 ID:IoKv3lvp
o2.asをインクルードしたら文法エラーとか無いわwww
969 :
名前は開発中のものです。:2007/05/31(木) 12:53:10 ID:IoKv3lvp
pcbnet2を使ったら
エラー38/(^o^)\
970 :
名前は開発中のものです。:2007/05/31(木) 13:25:43 ID:HZuEQJWp
pcbnet2.asとpcbnet2.hpiを何処に置いてる?
971 :
名前は開発中のものです。:2007/05/31(木) 13:31:50 ID:IoKv3lvp
すまん、原因は繋がってないのにtcp~命令実行したせいだった。
接続して無いだけなら命令が失敗するだけじゃね?
973 :
名前は開発中のものです。:2007/05/31(木) 14:05:04 ID:IoKv3lvp
接続せずにやると
dllの呼び出しに失敗しました
ってダイアログでて落ちるんよ
事前の接続確認とか入れてないからw
mod_joystick.asのジョイスティックのモジュールって
joyGetPosEx jstk, 0
if jstk.8 & 2 { ボタン2の処理}
みたいなビット演算がボタン2以降はできないことに今気づいた。
if jstk.8 & 1 { ボタン1の処理}
はできるけど
if jstk.8 = 2 { ボタン2の処理}
じゃないと駄目なんやね
なんか不便
975 :
名前は開発中のものです。:2007/06/01(金) 00:29:58 ID:j73l8Egc
>>974 何が?
訳分からん事言ってるぞ
モジュールとは全然関係ない部分だし(API使ってるだけなんだから)
>if jstk.8 = 2 { ボタン2の処理}
>じゃないと駄目なんやね
自分で駄目にしてるだけだろ?
ごめん。原因がわかった。モジュールとか全然関係ない。
でも、なぜこうなるのかわからんけど。論理式よくわかんね
↓
repeat
await 5
stick stk,15
if (stk&1)&(keybuf1=0) {a++}//←キー //これは動く
if (stk&2)&(keybuf2=0) {a--}//↑キー //これは動かない ?何故?
//if (stk&2){ if(keybuf2=0) {a--} }//↑キー //こっちだと動く
keybuf1 = stk//連射抑止(stick命令の場合この処理は要らんけど)
keybuf2 = stk
title ""+a
loop
追記
if (stk=2)&(keybuf2=0) {a--}//↑キー// なぜか動く
↑
「stk&2」を「stk=2」にすると動いたもんだから
>>974のような質問をした
>>977 mes stk&2 ;→2
mes keybuf2=0 ;→1
mes 2 & 1 ;→0 ふしぎ!
まぁ、HSPだとCでいう&&とか||がないっぽいので、
0か1だけを返すbool関数みたいなの作って一度噛ませた方がいいかも知れんね。
なにその糞仕様
981 :
名前は開発中のものです。:2007/06/01(金) 08:35:40 ID:j73l8Egc
>>977 おーい
良く考えろ
やるなら
if ((stk&2)>0) & (keybuf2=0)
とか
if ((stk&2)=2) & (keybuf2=0)
とかだろ・・・
if stk&2 {
これが使えてるのは0以外なら判定が成立するからで
(stk&2) ここで成立してる訳じゃない
(stk&2) これは 0 か 2 でしかない
&1 で1になるのは反対側が奇数の必要がある
そういえば、論理演算としての!が使えないのも地味に痛いんだよな。
983 :
名前は開発中のものです。:2007/06/01(金) 12:31:39 ID:jXoXCE/h
ネットワーク機能を盛り込んだはいいが
一人で複数窓デバッグしんどすぎるwww
>>978 >>981 丁寧な解説ありがとう。
0か1のbool型が戻り値になるとばかり思っていた。
これで念願のボタン1押しながらボタン2押しても反応するので
ジョイスティックでジャンプボタン押しながらムチを振れるようにできう
repeat
await 5
stick stk,15
if ((stk&1)=1)&(keybuf1=0) {a++}
if ((stk&2)=2)&(keybuf2=0) {a--}
keybuf1 = stk&1//こうやね
keybuf2 = stk&2
title ""+a+" stk&1:"+(stk&1)+" stk&2:"+(stk&2)
loop
ちょwwソレなんて悪魔城ドラキュラ?wwww
986 :
名前は開発中のものです。:2007/06/02(土) 00:25:19 ID:A107r78T
どこの誤爆だw