トップページgamedev
1001コメント296KB

HSP - Hot Soup Processor [7]

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。04/06/10 04:28ID:cbXY3kVC
前スレ
  HSP - Hot Soup Processor
   http://game.2ch.net/gamedev/kako/1005/10053/1005332663.html
  HSP - Hot Soup Processor [2]
   http://game.2ch.net/test/read.cgi/gamedev/1035428757/
  HSP - Hot Soup Processor [3]
   http://pc2.2ch.net/gamedev/kako/1043/10436/1043609896.html
  HSP - Hot Soup Processor [4]
   http://pc2.2ch.net/test/read.cgi/gamedev/1047082415/
  HSP - Hot Soup Processor [5]
   http://pc2.2ch.net/test/read.cgi/gamedev/1058507713/
  HSP - Hot Soup Processor [6]
   http://pc5.2ch.net/test/read.cgi/gamedev/1078660876/

関連サイト
  ONION software (本家)
   http://www.onionsoft.net/
  HSP CENTER
   http://hspcenter.com/
  HSP ML
   http://garde.esprix.net/hsp-ml/
0318名前は開発中のものです。04/07/06 23:21ID:7Csr8IqI
当方のHSPがおかしい・・・
OS(XP pro)なんだが、await 1がどうみてもwait 1になってる・・・それもawait 10までwait 1。
でも、ソースによってはwait 1扱いにはならない。
なんだよ、これ・・・OTL
0319名前は開発中のものです。04/07/06 23:21ID:IwrX1p6y
goto命令で、
ラベル名に変数を使うのは仕様上無理らしいんですが、
他の方法でそれに近いことをするのは出来ませんか?
ないなら諦めて、地道に名前書きますが・・・
0320名前は開発中のものです。04/07/06 23:38ID:FsblUBdJ
>>319
onで実現できるように書いたら
0321名前は開発中のものです。04/07/06 23:43ID:KeokYOn1
on gotoでは駄目?
0322名前は開発中のものです。04/07/06 23:55ID:7KCQMY1y
>>315
速いソートルーチンを組んでおくと
ゲームを作る上でめちゃめちゃ便利なので
(ハイスコアのソートとか、ホーミング武器の標的選択順とか)
面倒でも手をつけておくことをおすすめする。
0323名前は開発中のものです。04/07/06 23:58ID:IGUAa5VB
>315
水を差すようで悪いが
労力の割にはあまり報われない気が…

自機当り判定が2*2ドットでも敵弾の最小8*8(東方の最小弾が見た目上はこの大きさ)が貫通するのに
相対速度が最低でも10ドット以上(敵弾の判定も見た目より小さいのかもしれないけど)

8*8の弾なんてせいぜい1フレームあたり6〜8ドット移動ぐらいまでだと思うし
1フレーム1〜2回くらいの当り判定計算でも十分な希ガス。
いくらなんでも1ドット動くごとに判定してやる必要はないと思う。

もっと小さい敵弾を想定しているならある程度仕方ないけど。

HPS製の飛翔鮎(体験版しかやったことないけど)みたいに思いきって最小敵弾16*16にするとか。
東方を久しぶりにやってみたら速い弾は16*16で8*8の弾は遅いし。(意外と16*16の弾がメインだった)
案外1フレーム1回しか計算してないのかもしれない。

032431904/07/07 00:11ID:dPzWJtlV
onですか・・・
分岐が数百個なので結構面倒ですね・・・。
文字が横に伸びてしまうのがちょっと難点ですが
それで頑張ってみることにします。
ありがとうございました
0325名前は開発中のものです。04/07/07 00:15ID:lBWiEqny
>>324
本家より引用
> on a goto *00,*01 ・・・ *09
> on a-10 goto *10,*11 ・・・*19
> on a-20 goto *20,*21 ・・・
0326名前は開発中のものです。04/07/07 00:21ID:du4anfvD
まあ、ラベル多いのが嫌ならラベル使わないような書き方にするしかないな。
if文が多くなりそうだけど。
0327名前は開発中のものです。04/07/07 00:41ID:+Z9KVqsR
>>323
うむ、それについては俺もさすがに考えた(X*Y弾がAドット移動して云々とか)
でも8*8の弾が5ドット動いて、自機が4ドット動けば9ドット
突き抜ける可能性があるのよー。あと、判定は特殊なことしない限り四角形だから、
カドに斜めに入っていったときは判定の幅が小さくなってしまう。

それから、8*8で円形を描くとカドが空くでしょ?
空いたところまで判定入れるの変だな、って思うから、
自分は8*8の弾だったら、判定は6*6or5*5にしたいのよ。

飛翔鮎はやったことないけど妖々夢はある(体験版だけど)
妖々夢の場合は弾遅いけど、怒首領蜂やケツイみたいなのだと
これスゲーなってのが良くある(と思わない?)
ま、そういう有名な弾幕STGを
パクろうってのは無理だけどね(汗
032832704/07/07 00:45ID:+Z9KVqsR
すまそ、よく見たら被った内容多かったね・・・
0329名前は開発中のものです。04/07/07 01:14ID:+Z9KVqsR
TMAX = 50:dim TX,TMAX:dim TY,TMAX:dim TF,TMAX:dim TH,TMAX
dim TSIZEX,TMAX:dim TSIZEY,TMAX:ZX = 30:ZY = 200
screen 0,300,300
*MAIN
redraw 1:redraw 0:color 255,255,255 : boxf:stick KEY,15
if KEY&1 : ZX -= 4
if KEY&2 : ZY -= 4
if KEY&4 : ZX += 4
if KEY&8 : ZY += 4
color 0,0,0 : boxf ZX,ZY,ZX+2,ZY+2:COUNT++:COUNT2++
repeat TMAX : if (TF.cnt=0)&(COUNT>=10):TF.cnt = 1:TX.cnt = 30:TY.cnt = 20:TSIZEX.cnt = 8:TSIZEY.cnt=8:TH.cnt=1:COUNT = 0
if (TF.cnt=0)&(COUNT2>=10):TF.cnt=1 : TX.cnt=30:TY.cnt=20:TSIZEX.cnt=8:TSIZEY.cnt=8:COUNT2=0:TH.cnt=2
if TF.cnt { if TH.cnt=1:TY.cnt += 7
if TH.cnt=2:TY.cnt += 5 : TX.cnt += 5
color 0,0,0 : boxf TX.cnt,TY.cnt,TX.cnt+TSIZEX.cnt,TY.cnt+TSIZEY.cnt
HX1 = TX.cnt-ZX : HX2 = (-TSIZEX.cnt<HX1)&(HX1<2):HY1 = TY.cnt-ZY : HY2 = (-TSIZEY.cnt<HY1)&(HY1<2)
if HX2&HY2 : color 180,0,0 : boxf : TF.cnt = 0
}
if TY.cnt>=300:TF.cnt=0
loop:await 16:goto *MAIN
ちょっと試してみたけど微妙だね・・・
向かって動くと抜ける、
カドは場所によって抜ける
033032304/07/07 01:26ID:f8rNee75
>.327
自機が2*2で敵弾が5*5なら貫通に必要な相対速度が7ドット以上やね。
自機が4ドット速度で5ドット速度で向かってくる敵弾に突っ込めば相対速度は9ドット。
貫通しちゃうね。

自機2*2って小さすぎないかな?(他の弾幕ゲーはどうなんだろ)
上の例なら、自機5*5なら相対速度9ドットでも貫通しないし。

すまそ
怒首領蜂やケツイはやったことないや。

飛翔鮎(hspdx+α)体験版 まだあった。
ttp://www.h7.dion.ne.jp/~tenkuu/

…なんて書いてたらテストサンプルが書きこまれてるのでやってみて寝まつ。
0331名前は開発中のものです。04/07/07 02:43ID:bXVEuOsH
飛翔鮎の2周目?って鬼のように弾速いけどすり抜けないのかな。
0332名前は開発中のものです。04/07/07 02:45ID:h5g+gru7
速すぎて、すり抜けたことが分からないとかw
0333名前は開発中のものです。04/07/07 04:04ID:BWy2IZPg
CAVEシューは確か弾は大きいのも小さいのも全て1ドットで自機は結構大きめだったような
弾幕シューだと一般的に弾か自機どちらかの当たり判定が極小でもう一方は見た目通りかな?
0334名前は開発中のものです。04/07/07 05:28ID:bXVEuOsH
でも怒蜂や大往生よりガルーダのほうが判定小さく感じるな。
0335名前は開発中のものです。04/07/07 07:19ID:f8rNee75
>333
敵弾のほうが小さいケースもあるのか。STGあんまりやらないからシランカッタ。
まぁ両方小さかったらほとんど当らなくなるだろうけど。

個人的にはSTGに限らずアクションゲームの当り判定は見た目どおりのほうが落ち着くな。

ところでリプレイ機能ってどうやってるんだろう?
全ての自機、敵、弾のフレーム毎の位置を記録してるのかな?

ランダム要素が一切なくて入力ログだけをとってるとか?
0336名前は開発中のものです。04/07/07 07:33ID:du4anfvD
>>335
ランダムがあろうとなかろうと関係ない。
なぜなら、乱数の時に自分でシード指定すれば
おなじ、ランダムを再現できるから。
0337名前は開発中のものです。04/07/07 08:33ID:f8rNee75
>336
なるほど。
なんにせよ敵も味方も座標ではなくて
挙動を再現する方法になるな。
0338名前は開発中のものです。04/07/07 08:45ID:du4anfvD
1フレーム単位で全部保存していったらとんでもない量になる。
まあ、せめてタイミング(敵&弾を出す)を覚えさせくぐらいにしないと。
でも、プログラムがめんどくさくなるからランダム再現が一番楽だと思う。
0339名前は開発中のものです。04/07/07 13:02ID:+m8/f1N8
フレームごとのキー入力再現で良いのでは…。
0340名前は開発中のものです。04/07/07 14:36ID:SnTIiwPj
>>339
敵の動きが毎回完全に一致ならね。
ランダム要素使ってるのにキー入力だけでやったらおかしなことになる。
0341名前は開発中のものです。04/07/07 16:22ID:goM21MnB
乱数シードもいっしょに保存しておけば1対1に対応するんじゃないか?
HSPの乱数がどうなってるか知らないけど。
0342名前は開発中のものです。04/07/07 16:23ID:bXVEuOsH
randomizeも一緒に保存すれば良いでしょ。
0343名前は開発中のものです。04/07/07 16:24ID:bXVEuOsH
WAO
被った。
034425404/07/07 23:06ID:+Z9KVqsR
みんなの意見・指摘のおかげで、
無事、うちのPCでFPSを落とさずに敵弾200個を出すことに成功しますた!
自機を4*4ドットに妥協して、敵弾の最小は6*6に。
速さ3以上の弾だけ3ドットに1回の判定を入れることに。

ただ、今は敵弾200個強の時にギリギリで、その他の細かい処理が入ると
どうなるかわからんね。わからん。

感謝の気持ちたっぷりで
報告させてもらいました。ありがとう!
0345名前は開発中のものです。04/07/07 23:39ID:f8rNee75

いつか遊ばせてくれ
0346名前は開発中のものです。04/07/07 23:48ID:N42GpwnW
そいや、最近の弾幕シューて敵弾増えるとソフトでスローかけてるよね。
それやればもう少しごまかせるんじゃない?>>344
0347名前は開発中のものです。04/07/08 00:10ID:cqJ2IUqs
>>303
*@fで強引にやるやり方はバカにできね
caseよりはやくなった まじで
0348名前は開発中のものです。04/07/08 00:38ID:BqmycLWh
>>345
9月下旬までに完成したらこのスレに貼ろうと思うよ
10月になっても現れなかったら挫折したとみて間違いない(爆

>>346
奥の手として頭の片隅に入れておくw
多分自動でスローかかるからわざわざルーチン組む
必要はなさそうですが

>>303のやつ俺も参考にしたね
括弧使うとかなり遅くなるみたいだから、
初めて計算順序を意識してみたよw
0349名前は開発中のものです。04/07/08 00:49ID:xB5ofvzI
オリジナルで作ってコンテスト出せば?
0350名前は開発中のものです。04/07/08 01:00ID:U79Ccyfn
まぁ弾の進行方向真正面にわざわざぶつかっていくこと自体希なケースだし
仮に正面衝突しても、許容値9(自機4*4、敵弾6*6)に対して10の相対速度でぶつかっても
貫通確立は1/9
11の速度でぶつかれば2/10
12の速度なら3/11
13の速度なら4/12 (…計算あってるかな?)
自分ならちょっとくらいの貫通はめんどくさくて目をつぶりそうw

>349
そのほうが有意義かもね


・・

とか書いている間にスゲーーー良い方法を思いついた!!
貫通対策。
0351名前は開発中のものです。04/07/08 02:19ID:xB5ofvzI
>とか書いている間にスゲーーー良い方法を思いついた!!
>貫通対策。

それだけ書いて消えるな!
気になるだろ!w
0352名前は開発中のものです。04/07/08 02:45ID:U79Ccyfn
>351
すまそ w
本当に妥当な方法かどうかフォトショップでのグリッドで方眼紙作って検討してた。

◆漏れが今思いついた貫通対策◆(暫定版)

自機の当り判定に加えて「金魚の糞」式仮想当り判定部を加える。(グラディウスのオプションみたいな)
※ただし、自機停止時には金魚の糞は自機と同じ位置(つまり無し)
金魚の糞に喰らったら、当った弾の移動方向から妥当性を判定する。

例えば ↑から↓にまっすぐ飛んできた弾を自機を横に移動して避けて、金魚の糞に喰らった場合
判定は回避、
金魚の糞が弾の進行方向と同じ(この場合自機の↓にある=自機が↑に進んでる)場合はHit

自機が2*2の当り判定で敵弾最小が6*6なら自機の進行方向逆の後方5ドットに2*2の金魚の糞を配置する。
これで、敵弾に正面衝突しに行った時のみ貫通してしまうのなら貫通を防げる。

難点は自機の方向は8方向しかないこと。敵弾は360度の方向があるから厳密性には欠けるかも。


眠いから朝起きてもっかい妥当かどうか考えてみる w
0353名前は開発中のものです。04/07/08 03:33ID:xB5ofvzI
>>352
判定をもう一つ持たせるってことは判定回数が単純に倍になるんじゃ…。
0354名前は開発中のものです。04/07/08 04:18ID:U79Ccyfn
●…TL

飲み杉かもしれん。普通に1フレーム2回判定したほうがマシだな。
0355名前は開発中のものです。04/07/08 05:38ID:xB5ofvzI
やっぱり、すり抜ける可能性が高い弾(判定小&高速)だけ細かく判定して、
すり抜ける可能性の低いのは通常通りってのが良いんじゃないかなあと思った…。
0356名前は開発中のものです。04/07/08 16:11ID:4Im7pYkj
弾をすり抜けるのは紙一重でたまに避けるシステムですと
仕様にしてしまえばいい。
0357名前は開発中のものです。04/07/08 18:03ID:5941rvZk
いや、そりゃあマズいだろ!
0358名前は開発中のものです。04/07/08 19:37ID:LTYZ/id/
自機の動きと弾の動きを線分にして
それらが交わってるか調べるってのは?
0359名前は開発中のものです。04/07/08 20:53ID:IzDEooJQ
>>358
それは本気で言ってるのか・・・?
0360名前は開発中のものです。04/07/08 21:08ID:5941rvZk
バッファスクリーンに弾の大きさの分だけ描画して色判定は?
全部を描画すると重くなるから自機の周りだけ。
大して変わらないか、逆に重くなる可能性もあるが・・・
0361名前は開発中のものです。04/07/08 21:31ID:U79Ccyfn
そもそも1フレームで貫通するほどの速度は当り判定のすり抜け云々以前に
見た目が許容できないかもしれない。

個人的には
最速でも自身の見た目の大きさの ドット数/フレーム 以内までかなぁ
(自機が16*16なら 16ドット/フレーム 敵弾8*8なら 8ドット/フレーム)
欲を言えば自身の半分まで
(自機が16*16なら 8ドット/フレーム 敵弾8*8なら 4ドット/フレーム)

それより速いと残像拳みたいにみえる。
0362名前は開発中のものです。04/07/08 21:38ID:h44yiRt3
弾幕シューは基本的に弾のろいしな。
0363名前は開発中のものです。04/07/08 22:01ID:LTYZ/id/
>>359
漏れの頭じゃこれしか思いつかなかった。
0364名前は開発中のものです。04/07/08 22:27ID:U79Ccyfn
ビミョウに話し変わるけど、丸い当り判定を使ってるのは漏れだけかな?

丸いって言ってもキャラ間の距離を当り判定に使ってるだけだけど
結果的にはほぼ丸になる。
0365名前は開発中のものです。04/07/08 23:44ID:1VeToSQa
そうでもないでしょ。
でも、大抵、長方形か丸。
まあ、計算的に多角形とか複雑な形は重くなるしなぁ・・・
0366名前は開発中のものです。04/07/09 14:26ID:2obD+d6H
四角の判定ならなんかRECT構造体の重なってる部分かえしてくれるAPIあったんでそれつかってぴたら?
0367名前は開発中のものです。04/07/09 17:53ID:ePV6ulJz
インターセクトってやつか
0368名前は開発中のものです。04/07/09 18:57ID:QP1jsMXM
sinとか√とかそいゆう数学的な計算はどうやるんですか?
0369名前は開発中のものです。04/07/09 19:17ID:QlzJ/HhZ
そいゆうのはマユアリュに書いてあるヨ
0370名前は開発中のものです。04/07/09 19:38ID:QP1jsMXM
また質問なんですが
*main1
x=mousex : y=mousey
color 255,255,255:boxf 0,0,99,23
color 0,0,0:pos 0,0:mes "X="+x+"/Y="+y
getkey a,1
if a : goto *main2
await 5
goto *main1
*main2
end
こんな感じのソフトでHPSのウィンドウじゃない別のウィンドウとかでやりたい
のですがどうやったらいいんですか?
0371名前は開発中のものです。04/07/09 19:48ID:bufBX0Vb
どこを別のウィンドウでやりたいんだ
0372名前は開発中のものです。04/07/09 20:30ID:QP1jsMXM
だからこれはHSPのウィンドウからマウスが出たら計ってくれないじゃん?
それを他のウィンドウとかゲームとか操作とかしながら常に計ってくれるようna
0373名前は開発中のものです。04/07/09 20:39ID:bufBX0Vb
*main1
ginfo 0
x=prmx : y=prmy
color 255,255,255:boxf 0,0,99,23
color 0,0,0:pos 0,0:mes "X="+x+"/Y="+y
getkey a,1
if a : goto *main2
await 5
goto *main1
*main2
end

こういうことをいってんの?
0374名前は開発中のものです。04/07/09 21:00ID:QP1jsMXM
おしい!けど違う。それは他のウィンドウやファイル操作しようとしたら消えてしまう。
0375名前は開発中のものです。04/07/09 21:06ID:bufBX0Vb
もともとそういう仕様ちゃうんか。。。

onclick *click
*main1
ginfo 0
x=prmx : y=prmy
color 255,255,255:boxf 0,0,99,23
color 0,0,0:pos 0,0:mes "X="+x+"/Y="+y
await 5
goto *main1
*click
end
0376名前は開発中のものです。04/07/09 21:08ID:QlzJ/HhZ
レスもらっといて、おしい!じゃねーヨ。
おまいの説明不足だろ。
368の質問といいリア厨以下?
0377名前は開発中のものです。04/07/09 21:14ID:jpMqo0Gr
まあそうでしょうな
だが気にするな
0378名前は開発中のものです。04/07/09 21:17ID:d0zXeIj1
>>370

HSP以外のウィンドウで処理できるものを作りました。
これで完璧です

;--------------------
#include "llmod.as"
mes "対象のウィンドウをクリックしてください"
repeat:wait 1:stick a:if a&256:break
loop:ginfo:pm=prmx,prmy
dllproc "WindowFromPoint",pm,2,1:mes "hWnd:"+dllret
pm=dllret:dllproc "GetDC",pm,1,1:mes "hdc:"+dllret
hdc=dllret:mref bm,67:repeat
ginfo:x=prmx : y=prmy
color 255,255,255:boxf:color 0,0,0:pos 0,0:mes "X="+x+"/Y="+y
pm=hdc,0,0,100,18,bm.4,0,0,0xCC0020:dllproc "BitBlt",pm,9,5
wait 5:loop
;---------------------------
0379名前は開発中のものです。04/07/09 21:34ID:bZYm//1m
人の手を借りまくってコンテストに応募とか?
0380名前は開発中のものです。04/07/09 21:58ID:gTxmdHxb

ちょっと改造してやった。
キャプチャソフト
自由に使いたまい。

;--------------------
#include "llmod.as"
mes "対象のウィンドウをクリックしてください"
repeat:wait 1:stick a:if a&256:break
loop:ginfo:pm=prmx,prmy
dllproc "WindowFromPoint",pm,2,1
hwnd=dllret:pm=hwnd:dllproc "GetDC",pm,1,1
hdc=dllret:mref bm,67
pm=hwnd:dim rect,4:getptr pm.1,rect
dllproc"GetClientRect",pm,2,1
screen 0,rect.2,rect.3
pm=bm.4,0,0,rect.2,rect.3,hdc,0,0,0xCC0020:dllproc "BitBlt",pm,9,5
redraw
stop
;---------------------------
0381名前は開発中のものです。04/07/10 01:10ID:KWaKpCVn
HSPでMicrosoft SAPIを使ってテキストを喋らせるのはどうやるんですか?
0382名前は開発中のものです。04/07/10 13:00ID:pwR4qrgx
コンテストなんて興味ない。ただ自分が使いやすいソフトが作りたいだけ
0383名前は開発中のものです。04/07/10 13:25ID:NDQ8qWEL
おしい!けど違う
0384名前は開発中のものです。04/07/10 13:33ID:gc5EpECZ
>>381
http://www.kct.ne.jp/~okuda/comlab/TextToSpeach/TextToSpeach.html

#include "rrmod/com/obsolete.as"
の一行を追加

LOLLIPOP ver3.00 β12をソースと同じフォルダに解凍しておく
http://yokohama.cool.ne.jp/chokuto/download/index.html

とりあえずこれでしゃべる
OSによってインストールされてるTTSエンジンが違うから
何か入れないとダメな場合もある
http://falsh2ch.hp.infoseek.co.jp/TTSengines.htm
0385名前は開発中のものです。04/07/10 16:39ID:ghQod0F3
#include "llmod.as"  ;llmod.asを使えるようにする?
mes "対象のウィンドウをクリックしてください"
repeat  ;ループ開始
wait 1  ;0.01秒待つ
stick a  ;何か押されたらaに1を代入
if a&256:break  ;aと256がともに正しければループ抜け出す?
loop  ;ループ繰り返す
ginfo  ;prmx.prmyにマウスの位置を代入
pm=prmx,prmy  ;pmにマウスの位置を入れる?
dllproc "WindowFromPoint",pm,2,1  ;WindowFromPointにマウスの位置を渡す?
mes "hWnd:"+dllret  ;?
pm=dllret  ;?
dllproc "GetDC",pm,1,1  ;?
mes "hdc:"+dllret  ;?
hdc=dllret  ;?
mref bm,67  ;?
repeat  ;ループ開始
ginfo  ;prmx.prmyにマウスの位置を代入
x=prmx  ;xにprmxを代入
y=prmy  ;yにprmyを代入
color 255,255,255  ;色を白に
boxf  ;画面を白色に塗りつぶす
color 0,0,0  ;色を黒に
pos 0,0  ;カレントポジションを0,0に
mes "X="+x+"/Y="+y  ;XとYを表示
pm=hdc,0,0,100,18,bm.4,0,0,0xCC0020  ;?
dllproc "BitBlt",pm,9,5  ;?
wait 5  ;0.05秒待つ
loop  ;無限ループ繰り返し
初心者なのでよく分からない所があります。教えて下さい。
038638104/07/10 16:50ID:8YC4WY/H
>>384
激しく感謝
0387名前は開発中のものです。04/07/10 16:51ID:NDQ8qWEL
> aと256がともに正しければループ抜け出す
まるで翻訳サイトの直訳みたいだね
0388名前は開発中のものです。04/07/10 16:53ID:wCy6cDas
× stick a ;何か押されたらaに1を代入
○ stick b ;押されているキーを2進数を単位に取得する
× a&256:break ;aと256がともに正しければループ抜け出す?
○ a&256:break ;256と同じビットが1なら抜ける

○ #include "llmod.as" ;llmod.asを使えるようにする?
○ pm=prmx,prmy  ;pmにマウスの位置を入れる?

  dllproc "WindowFromPoint",pm,2,1  ;WindowFromPointにマウスの位置を渡す?
説 WindowFromPointにマウスの座標を渡して、カーソルの下にあるウィンドウのハンドルを取得
  mes "hWnd:"+dllret  ;?
説 カーソルの下にあるウィンドウハンドルを表示
  pm=dllret  ;?
説 ウィンドウハンドルをpmに代入
  dllproc "GetDC",pm,1,1  ;?
説 カーソルの下にあるウィンドウのデバイスコンテキストを取得
  mes "hdc:"+dllret  ;?
説 デバイスコンテキストを表示
  hdc=dllret  ;?
説 hdcにデバイスコンテキストを代入
  mref bm,67  ;?
説 HSPが持つBMSCR構造体をbmに割り当てる
  pm=hdc,0,0,100,18,bm.4,0,0,0xCC0020  ;?
説 HSPのウィンドウからカーソルの下にあるウィンドウへコピーするように設定
  dllproc "BitBlt",pm,9,5  ;?
説 ビットブリット(BitBlt)を行う。gcopyと同様の機能。
0389名前は開発中のものです。04/07/10 17:25ID:ghQod0F3
>>388
説明どうも。
でもほとんど分からなかったり・・・汗

F1押しても出てこなかったり説明が変だったりして難しい
0390名前は開発中のものです。04/07/10 17:54ID:ghQod0F3
>>369
マニュアル読んだけど
-2147483647〜2147483647 10進整数
$0〜$FFFFFFFF 16進整数(0xでも可)
%0〜%111111... 2進整数(0bでも可)
'A' 文字コード(1バイト)
+,-,*,/ 加算,減算,乗算,除算
&,|,^ 論理演算(and,or,xor)
\ 割り算の余り
=,<,>,! 条件式(同じ,小さい,大きい,同じでない)
==,<=,>=,!= 条件式2(同じ,以下,以上,同じでない)
<<,>> 左、右方向にビットシフト

しかなかった。これだけですか?
0391名前は開発中のものです。04/07/10 18:21ID:NDQ8qWEL

演算子と関数は チョト チガーウ
039237804/07/10 19:56ID:9WTV9sSx
ネタなのであまり気にしないように
↓他のレスとかぶってるけど解答
stick a  ;aにキーコード取得
if a&256:break  ;※@aに256が含まれていたらループを抜ける
pm=prmx,prmy  ;pm.0にprmx pm.1にprmyを代入
dllproc "WindowFromPoint",pm,2,1  ;WindowFromPoint=pmの座標にあるウィンドウのHWNDを求める
mes "hWnd:"+dllret  ;HWNDを表示。気にしなくてもよい
pm=dllret  ;pmにdllret(返り値)を代入
dllproc "GetDC",pm,1,1  ;HWND(pmに代入された値)からHDCを求める
mes "hdc:"+dllret   ;HDCを表示。気にしなくてもよい
hdc=dllret  ;hdcにdllret(返り値)を代入
mref bm,67  ;bm=ID:0のウィンドウのBMSCRのポインタ
pm=hdc,0,0,100,18,bm.4,0,0,0xCC0020  ;※Apm.0にHDCpm.1に0以下0,100,18,bm.4,0,0,0xcc0020を代入
dllproc "BitBlt",pm,9,5  ;画像をコピー

※@
aを二進数にした場合
左クリックされた(256がaに代入される)→a=10000000
右クリックされた(512がaに代入される)→a=100000000
左&右を同時にクリックされた(256+512がaに代入される)→a=110000000
ifの&条件は8ビット(8桁)目が1だった場合という意味
例)
10000000;実行される  11111111;実行される
00000000;実行されない  01111111;実行されない
※A
pm=hdc,0,0,100,18,bm.4,0,0,0xCC0020は
pm.0=hdc : pm.1=0 : pm.2=0 : pm.3=100 : pm.4=18
pm.5=bm.4 : pm.6=0 : pm.7=0 : pm.8=0xCC0020
と同じ意味で、
pmの内容はBitBltに送るデータ(HSPで言うp1,p2,p3,p4,・・・・と同じ)
0xCC0020は頭に0xがついているので16進数の扱い     0xCC0020 = 13369376
0393名無しさん@そうだ選挙に行こう04/07/11 07:49ID:Rk2V9Rp9
さて去年はいろいろあってコンテスト出せなかったけど
今年もやってくれたから出したい所。
0394 ◆HOTsoUpxjY 04/07/11 10:30ID:DdfpPQJL
>>368 >>390
sinならマクローリン展開とか
平方根ならニュートン法とか何か使って
モジュールを自作すればいいかも
面倒ならそういうDLLを探すとか〜
0395 ◆HOTsoUpxjY 04/07/11 10:46ID:DdfpPQJL
今探したらちょうどHSPWIKIに
「HSPコンテスト:ショートプログラム:数学・物理編:sin/cos」ってあったよ
0396名前は開発中のものです。04/07/11 21:54ID:/JWLGNZC
おいおい!もう応募してる奴いるのかよ。こりゃ最後までにはとんでもない応募数になりそうだな。
0397名前は開発中のものです。04/07/11 23:00ID:ZIs9hoN/
コンテストの作品にリバーシがあるが
14才で作れるなんて大したモンだ。
0398名前は開発中のものです。04/07/11 23:56ID:9DUNAGkh
しかもそのリバーシは強いぞ。油断すると負ける。
今までやったHSP製リバーシの中では最強レベルじゃないかと。
ただ、思考時間がちょっと長いがな・・・。
0399名前は開発中のものです。04/07/12 20:03ID:/j8cWC5m
すげーな。尊敬してしまうわ。俺30過ぎだけど。
0400名前は開発中のものです。04/07/12 20:10ID:gvw1JXEZ
年齢と才覚って別に関係ないよ
0401名前は開発中のものです。04/07/12 20:22ID:MhF3X/Gv
経験の少ない奴でレベルが高い→天性の才能
経験の多い奴でレベルが高い→経験・知識・etc...
(※上には当てはまらなかった人のみ)

前者はいずれかなり上にいくんだろうな・・・飽きなければ
0402名前は開発中のものです。04/07/12 20:25ID:wXVm5haw
399はそういう意味で言ったんじゃない気が…
0403名前は開発中のものです。04/07/12 20:31ID:/j3+rOli
もともとC言語プログラマでHSP歴が短いだけ
0404名前は開発中のものです。04/07/12 20:35ID:MhF3X/Gv
14歳でHSP歴1年なのにか。
0405名前は開発中のものです。04/07/12 21:16ID:gvw1JXEZ
長くやってりゃ技術力が高いってもんなの?
じゃあ、うすa
0406名前は開発中のものです。04/07/12 21:19ID:9bKY8Y1v
378を使ってクリックしたウィンドウで座標を常に表示するんじゃなくてクリックしたウィンドウでそこでクリックしたときの座標を表示するように
したいと思って
改造したんだけどなぜか表示されなくてサブルーチンが深すぎますってわけのわからないエラーが出ます。
サブルーチンなんか使ってないのに
0407名前は開発中のものです。04/07/12 21:19ID:9bKY8Y1v
#include "llmod.as"
mes "対象のウィンドウをクリックしてください"
repeat
wait 1 :stick a :if a&256:break
loop
ginfo :pm=prmx,prmy
dllproc "WindowFromPoint",pm,2,1
mes "hWnd:"+dllret
pm=dllret
dllproc "GetDC",pm,1,1
mes "hdc:"+dllret
hdc=dllret
mref bm,67
*saisyo
repeat
stick a
if a=256:goto *hyouji
wait 5
loop
*hyouji
ginfo
x=prmx
y=prmy
color 255,255,255
boxf
color 0,0,0
pos 0,0
mes "X="+x+"/Y="+y
pm=hdc,0,0,100,18,bm.4,0,0,0xCC0020
dllproc "BitBlt",pm,9,5
wait 5
goto *saisyo
0408名前は開発中のものです。04/07/12 21:21ID:MhF3X/Gv
repeatはbreakで抜けろ〜♪
0409名前は開発中のものです。04/07/12 21:26ID:9bKY8Y1v
サブルーチンエラーなくなりました
0410名前は開発中のものです。04/07/12 21:29ID:9bKY8Y1v
ginfo
pm=prmx,prmy
dllproc "WindowFromPoint",pm,2,1
mes "hWnd:"+dllret
pm=dllret
dllproc "GetDC",pm,1,1
mes "hdc:"+dllret
hdc=dllret
mref bm,67
をコピーして*houjiのところに貼り付けたらなんかできました
0411名前は開発中のものです。04/07/12 21:47ID:d6Lfxib4
>>405
いや、つ〜か年齢的なものが凄いって話じゃないの
αカットとかもしてたらすごいな

14歳の時何してたっけ…
0412名前は開発中のものです。04/07/12 23:15ID:NnchSN47
>>411
チンコばかりいじってたな・・
0413名前は開発中のものです。04/07/12 23:52ID:1XHAxn/e
>>411
Live2ch使いながらRPGツクール2000とHSPして、そしてこのスレの>>413を取ったな・・
0414名前は開発中のものです。04/07/13 00:03ID:0zEjAb+8
ようこそ厨房。がんばれよ。
俺はテグザーやザナドゥで遊んでいた。
0415名前は開発中のものです。04/07/13 01:17ID:CiNvsXsI
14才の頃はBASICでゲーム作ってた・・・
486の33Mhzだった・・・
0416名前は開発中のものです。04/07/13 01:45ID:g6EadT8G
>>411
HSPの速度で、枝狩りしないほうが逆にすごいと思う。
件のゲームは見てないけど
041741404/07/13 03:23ID:0zEjAb+8
10歳くらいのときならMZ-80のS-BASICでゲーム作ってたな…
ゲームといっても数字当てとかそんなんだが。
■ このスレッドは過去ログ倉庫に格納されています