HSP - Hot Soup Processor [7]
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
04/06/10 04:28ID:cbXY3kVCHSP - 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/
0294名前は開発中のものです。
04/07/05 21:52ID:MIzlaErt最初に、5ドット進む距離を内包する正方形でも求めて、敵を絞り込んでから1ドットずつ絞り込んだ敵で判定しては?
その処理方法だとこれぐらいかな?
0295名前は開発中のものです。
04/07/05 22:12ID:+nEAs13Dお?それというのは、
敵が回りにいないのに当り判定をするのは無駄だから、
近い敵だけ探して判定すると言うこと?
まじゴメン、バカで理解できんかった・・・(='ω`)トホー
0296名前は開発中のものです。
04/07/05 22:16ID:9NpQ14pTつか少しくらいのすり抜け気にするな。
0297名前は開発中のものです。
04/07/05 22:19ID:9NpQ14pT0298名前は開発中のものです。
04/07/05 22:20ID:MIzlaErtそう。
5回、全敵に対してやるのはかなりの無駄だからなぁ・・・
できるだけ、絞り込まないと。
0299名前は開発中のものです。
04/07/05 22:22ID:Kz1aLSouいや、295さんと違い、わたしは弾のすり抜け問題なぞここを見て初めて認識したのですが。
es_checkで済ませ、すり抜けることがありうるなんて考えてもいなかった…。
294さんのおっしゃるのは、たとえば透明な、実際の弾よりも大きめのスプライトを一緒に飛ばして
それで簡易に当たり判定。
もしも判定がイエスならば、細かくさらに判定ということでしょうか?
0300名前は開発中のものです。
04/07/05 22:23ID:Kz1aLSou0301名前は開発中のものです。
04/07/05 22:42ID:+nEAs13D場に弾が200個あって5回判定すると1000、
近いのだけ抽出すれば、200回強で済むわけか。
今まで考えもつかなかったなぁ。これでかなり
処理速度が向上しそうだ、助言マジ感謝!
>>296
ゲームとして成り立つなら
気にしなくてもOKだとは思うけどねw
299氏も同じSTG製作ガンバロナー
0302名前は開発中のものです。
04/07/05 23:20ID:MIzlaErtある一定距離以上の弾は数フレーム間は判定をはしょってもいいな、と。
けど、FPSが揺れるから微妙か・・・
0303名前は開発中のものです。
04/07/05 23:24ID:Gm3z7601速度。
へんなテストばっかりだが。
0304名前は開発中のものです。
04/07/05 23:26ID:kc0/J2bA0305名前は開発中のものです。
04/07/05 23:27ID:ob4Ta5mK0306名前は開発中のものです。
04/07/05 23:29ID:+nEAs13D一定範囲内に入ったら細かくするってこと?
なんかこのスレの方々は、優しくレスくれて涙が出るよ、ありがとう!
@弾を中心に範囲を決めたレイヤーを打ち出し、
レイヤー内に対象が入ったら細かく判定する。
A弾と対象の差を求めて、対象と近づいた値のものだけを
判定する。
どちらの方法も 大雑把→詳細 と、2重の判定を
するってことになるね。ふむふむ。
Aで差を求めたほうが簡潔でいいかなぁ?
0307名前は開発中のものです。
04/07/05 23:42ID:MIzlaErtあー、302のことは、一定距離以上の弾は、初めから判定を数フレームやらないという意味ね。
説明しにくいけど
1フレームにnドット進むならmフレーム進むのはその弾中心の円内(半径mnドット)にいるはず。
逆に、自機も同じようにその自機中心の円内にいるはず。
とすると、円同士が重ならなかったら、mフレームはその弾との判定はしなくてもいい。
・・・って感じなんだけど、実装するとなるとちょっとめんどくさそうだ・・・
それに計算で逆に遅くなっても意味ないし、バグの原因を作りそうだな・・・
あんまり効力はなさそうでメンゴ(汗
0308名前は開発中のものです。
04/07/06 00:43ID:IGUAa5VBのやり方でいいんでない?
描画1フレーム中に「座標更新〜当り判定」を2回以上にする。
0309名前は開発中のものです。
04/07/06 00:45ID:IGUAa5VB遅い弾は小さくて大量
速い球はデカイor長くて小量
だし。
0310名前は開発中のものです。
04/07/06 01:22ID:7+H5IcQBそうすると当たり判定が一気に省ける。
弾幕系は当たり判定に関係ない弾が多いから。
0311名前は開発中のものです。
04/07/06 03:10ID:e7tYRum6もう一つのPC Duron 800MHz : Meで測ったら、2400msぐらい・・・
>>268とあんまり変わらない・・・
そういえば、前作ったシューティングゲー(DirectX無し)も>>268のPCより、Meの奴のほうがFPS出てるんだよね・・・
なんか、泣けてきた・・・
0312名前は開発中のものです。
04/07/06 07:32ID:TMdzeQ9wそれをやってるから処理速度が追いつかなくなる、
という話題なのだが・・・。
当り判定が突き抜ける問題はいくらでも克服できるようになったよ。
>>310
すまそ相変わらずバカで理解できなかった・・・。
詳しくお願いしま。
0313308
04/07/06 08:18ID:IGUAa5VBスマソ.斜め読みしてた。
0314名前は開発中のものです。
04/07/06 21:28ID:7g+fejGr310ではないけど例えば弾のX座標を取得して10,2040,50,80,100という風にソートしておいて
自機+-10以内に入ってる弾だけ当たり判定をするっていう事かな
やり方は違うけど弾幕の場合どの方法でも自機に近い弾だけを当たり判定するって考え方は同じかと
0315名前は開発中のものです。
04/07/06 21:57ID:TMdzeQ9wなるほど理解した
みんなのおかげで、自機に近い弾だけ判定するというのは
かなーり理解しました、マジ感謝、頭が上がらんよ
310(314)氏のも参考にして、時間はたっぷりあるので
簡易判定を飛ばす、差を求める、ソートする
の3つは全部試してみまつ
俺、暗算とか頭で考えるの苦手だから
実際に動かしてみないと理解できないんだよね
(プログラマにとって致命的だな)
試して、一番速いのを実装することにしまw
0316名前は開発中のものです。
04/07/06 22:18ID:FsblUBdJと予言
0317名前は開発中のものです。
04/07/06 22:39ID:eF+CU01H大抵は前後の順番が入れ替わるだけだから。
弾を発射するときだけ重くなるけど他は大して重くならないと思う。
毎フレーム比較するんじゃなくて各フレームで部分部分比較すれば
そんなに誤差でないと思うし。
0318名前は開発中のものです。
04/07/06 23:21ID:7Csr8IqIOS(XP pro)なんだが、await 1がどうみてもwait 1になってる・・・それもawait 10までwait 1。
でも、ソースによってはwait 1扱いにはならない。
なんだよ、これ・・・OTL
0319名前は開発中のものです。
04/07/06 23:21ID:IwrX1p6yラベル名に変数を使うのは仕様上無理らしいんですが、
他の方法でそれに近いことをするのは出来ませんか?
ないなら諦めて、地道に名前書きますが・・・
0320名前は開発中のものです。
04/07/06 23:38ID:FsblUBdJonで実現できるように書いたら
0321名前は開発中のものです。
04/07/06 23:43ID:KeokYOn10322名前は開発中のものです。
04/07/06 23:55ID:7KCQMY1y速いソートルーチンを組んでおくと
ゲームを作る上でめちゃめちゃ便利なので
(ハイスコアのソートとか、ホーミング武器の標的選択順とか)
面倒でも手をつけておくことをおすすめする。
0323名前は開発中のものです。
04/07/06 23:58ID:IGUAa5VB水を差すようで悪いが
労力の割にはあまり報われない気が…
自機当り判定が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回しか計算してないのかもしれない。
0324319
04/07/07 00:11ID:dPzWJtlV分岐が数百個なので結構面倒ですね・・・。
文字が横に伸びてしまうのがちょっと難点ですが
それで頑張ってみることにします。
ありがとうございました
0325名前は開発中のものです。
04/07/07 00:15ID:lBWiEqny本家より引用
> 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:du4anfvDif文が多くなりそうだけど。
0327名前は開発中のものです。
04/07/07 00:41ID:+Z9KVqsRうむ、それについては俺もさすがに考えた(X*Y弾がAドット移動して云々とか)
でも8*8の弾が5ドット動いて、自機が4ドット動けば9ドット
突き抜ける可能性があるのよー。あと、判定は特殊なことしない限り四角形だから、
カドに斜めに入っていったときは判定の幅が小さくなってしまう。
それから、8*8で円形を描くとカドが空くでしょ?
空いたところまで判定入れるの変だな、って思うから、
自分は8*8の弾だったら、判定は6*6or5*5にしたいのよ。
飛翔鮎はやったことないけど妖々夢はある(体験版だけど)
妖々夢の場合は弾遅いけど、怒首領蜂やケツイみたいなのだと
これスゲーなってのが良くある(と思わない?)
ま、そういう有名な弾幕STGを
パクろうってのは無理だけどね(汗
0328327
04/07/07 00:45ID:+Z9KVqsR0329名前は開発中のものです。
04/07/07 01:14ID:+Z9KVqsRdim 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
ちょっと試してみたけど微妙だね・・・
向かって動くと抜ける、
カドは場所によって抜ける
0330323
04/07/07 01:26ID:f8rNee75自機が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:bXVEuOsH0332名前は開発中のものです。
04/07/07 02:45ID:h5g+gru70333名前は開発中のものです。
04/07/07 04:04ID:BWy2IZPg弾幕シューだと一般的に弾か自機どちらかの当たり判定が極小でもう一方は見た目通りかな?
0334名前は開発中のものです。
04/07/07 05:28ID:bXVEuOsH0335名前は開発中のものです。
04/07/07 07:19ID:f8rNee75敵弾のほうが小さいケースもあるのか。STGあんまりやらないからシランカッタ。
まぁ両方小さかったらほとんど当らなくなるだろうけど。
個人的にはSTGに限らずアクションゲームの当り判定は見た目どおりのほうが落ち着くな。
ところでリプレイ機能ってどうやってるんだろう?
全ての自機、敵、弾のフレーム毎の位置を記録してるのかな?
ランダム要素が一切なくて入力ログだけをとってるとか?
0336名前は開発中のものです。
04/07/07 07:33ID:du4anfvDランダムがあろうとなかろうと関係ない。
なぜなら、乱数の時に自分でシード指定すれば
おなじ、ランダムを再現できるから。
0337名前は開発中のものです。
04/07/07 08:33ID:f8rNee75なるほど。
なんにせよ敵も味方も座標ではなくて
挙動を再現する方法になるな。
0338名前は開発中のものです。
04/07/07 08:45ID:du4anfvDまあ、せめてタイミング(敵&弾を出す)を覚えさせくぐらいにしないと。
でも、プログラムがめんどくさくなるからランダム再現が一番楽だと思う。
0339名前は開発中のものです。
04/07/07 13:02ID:+m8/f1N80340名前は開発中のものです。
04/07/07 14:36ID:SnTIiwPj敵の動きが毎回完全に一致ならね。
ランダム要素使ってるのにキー入力だけでやったらおかしなことになる。
0341名前は開発中のものです。
04/07/07 16:22ID:goM21MnBHSPの乱数がどうなってるか知らないけど。
0342名前は開発中のものです。
04/07/07 16:23ID:bXVEuOsH0343名前は開発中のものです。
04/07/07 16:24ID:bXVEuOsH被った。
0344254
04/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*@fで強引にやるやり方はバカにできね
caseよりはやくなった まじで
0348名前は開発中のものです。
04/07/08 00:38ID:BqmycLWh9月下旬までに完成したらこのスレに貼ろうと思うよ
10月になっても現れなかったら挫折したとみて間違いない(爆
>>346
奥の手として頭の片隅に入れておくw
多分自動でスローかかるからわざわざルーチン組む
必要はなさそうですが
>>303のやつ俺も参考にしたね
括弧使うとかなり遅くなるみたいだから、
初めて計算順序を意識してみたよw
0349名前は開発中のものです。
04/07/08 00:49ID:xB5ofvzI0350名前は開発中のものです。
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すまそ w
本当に妥当な方法かどうかフォトショップでのグリッドで方眼紙作って検討してた。
◆漏れが今思いついた貫通対策◆(暫定版)
自機の当り判定に加えて「金魚の糞」式仮想当り判定部を加える。(グラディウスのオプションみたいな)
※ただし、自機停止時には金魚の糞は自機と同じ位置(つまり無し)
金魚の糞に喰らったら、当った弾の移動方向から妥当性を判定する。
例えば ↑から↓にまっすぐ飛んできた弾を自機を横に移動して避けて、金魚の糞に喰らった場合
判定は回避、
金魚の糞が弾の進行方向と同じ(この場合自機の↓にある=自機が↑に進んでる)場合はHit
自機が2*2の当り判定で敵弾最小が6*6なら自機の進行方向逆の後方5ドットに2*2の金魚の糞を配置する。
これで、敵弾に正面衝突しに行った時のみ貫通してしまうのなら貫通を防げる。
難点は自機の方向は8方向しかないこと。敵弾は360度の方向があるから厳密性には欠けるかも。
眠いから朝起きてもっかい妥当かどうか考えてみる w
0353名前は開発中のものです。
04/07/08 03:33ID:xB5ofvzI判定をもう一つ持たせるってことは判定回数が単純に倍になるんじゃ…。
0354名前は開発中のものです。
04/07/08 04:18ID:U79Ccyfn飲み杉かもしれん。普通に1フレーム2回判定したほうがマシだな。
0355名前は開発中のものです。
04/07/08 05:38ID:xB5ofvzIすり抜ける可能性の低いのは通常通りってのが良いんじゃないかなあと思った…。
0356名前は開発中のものです。
04/07/08 16:11ID:4Im7pYkj仕様にしてしまえばいい。
0357名前は開発中のものです。
04/07/08 18:03ID:5941rvZk0358名前は開発中のものです。
04/07/08 19:37ID:LTYZ/id/それらが交わってるか調べるってのは?
0359名前は開発中のものです。
04/07/08 20:53ID:IzDEooJQそれは本気で言ってるのか・・・?
0360名前は開発中のものです。
04/07/08 21:08ID:5941rvZk全部を描画すると重くなるから自機の周りだけ。
大して変わらないか、逆に重くなる可能性もあるが・・・
0361名前は開発中のものです。
04/07/08 21:31ID:U79Ccyfn見た目が許容できないかもしれない。
個人的には
最速でも自身の見た目の大きさの ドット数/フレーム 以内までかなぁ
(自機が16*16なら 16ドット/フレーム 敵弾8*8なら 8ドット/フレーム)
欲を言えば自身の半分まで
(自機が16*16なら 8ドット/フレーム 敵弾8*8なら 4ドット/フレーム)
それより速いと残像拳みたいにみえる。
0362名前は開発中のものです。
04/07/08 21:38ID:h44yiRt30363名前は開発中のものです。
04/07/08 22:01ID:LTYZ/id/漏れの頭じゃこれしか思いつかなかった。
0364名前は開発中のものです。
04/07/08 22:27ID:U79Ccyfn丸いって言ってもキャラ間の距離を当り判定に使ってるだけだけど
結果的にはほぼ丸になる。
0365名前は開発中のものです。
04/07/08 23:44ID:1VeToSQaでも、大抵、長方形か丸。
まあ、計算的に多角形とか複雑な形は重くなるしなぁ・・・
0366名前は開発中のものです。
04/07/09 14:26ID:2obD+d6H0367名前は開発中のものです。
04/07/09 17:53ID:ePV6ulJz0368名前は開発中のものです。
04/07/09 18:57ID:QP1jsMXM0369名前は開発中のものです。
04/07/09 19:17ID:QlzJ/HhZ0370名前は開発中のものです。
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:bufBX0Vb0372名前は開発中のものです。
04/07/09 20:30ID:QP1jsMXMそれを他のウィンドウとかゲームとか操作とかしながら常に計ってくれるようna
0373名前は開発中のものです。
04/07/09 20:39ID:bufBX0Vbginfo 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:QP1jsMXM0375名前は開発中のものです。
04/07/09 21:06ID:bufBX0Vbonclick *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:d0zXeIj1HSP以外のウィンドウで処理できるものを作りました。
これで完璧です
;--------------------
#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//1m0380名前は開発中のものです。
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:KWaKpCVn0382名前は開発中のものです。
04/07/10 13:00ID:pwR4qrgx0383名前は開発中のものです。
04/07/10 13:25ID:NDQ8qWEL0384名前は開発中のものです。
04/07/10 13:33ID:gc5EpECZhttp://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:ghQod0F3mes "対象のウィンドウをクリックしてください"
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 ;無限ループ繰り返し
初心者なのでよく分からない所があります。教えて下さい。
0387名前は開発中のものです。
04/07/10 16:51ID:NDQ8qWELまるで翻訳サイトの直訳みたいだね
0388名前は開発中のものです。
04/07/10 16:53ID:wCy6cDas○ 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説明どうも。
でもほとんど分からなかったり・・・汗
F1押しても出てこなかったり説明が変だったりして難しい
0390名前は開発中のものです。
04/07/10 17:54ID:ghQod0F3マニュアル読んだけど
-2147483647〜2147483647 10進整数
$0〜$FFFFFFFF 16進整数(0xでも可)
%0〜%111111... 2進整数(0bでも可)
'A' 文字コード(1バイト)
+,-,*,/ 加算,減算,乗算,除算
&,|,^ 論理演算(and,or,xor)
\ 割り算の余り
=,<,>,! 条件式(同じ,小さい,大きい,同じでない)
==,<=,>=,!= 条件式2(同じ,以下,以上,同じでない)
<<,>> 左、右方向にビットシフト
しかなかった。これだけですか?
0391名前は開発中のものです。
04/07/10 18:21ID:NDQ8qWEL演算子と関数は チョト チガーウ
0392378
04/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今年もやってくれたから出したい所。
■ このスレッドは過去ログ倉庫に格納されています