[過去ログ] ゲームプログラミング相談室【Part5】 (970レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
776(1): 03/12/26 07:40 ID:/X8b3kq4(1) AAS
>>775
文字通りバッファ(シーン毎にファイルから読み込んでスプールしておく?)
なのは置いておいて、>>770が聞いてるのは実データの格納場所じゃなかろうか。
かなり好意的な解釈だが。
777: RPG開発中 03/12/26 08:09 ID:xfqL31qs(2/2) AAS
>>776
今は実データの場所は、各種グラフィックやマップ・文字列、
イベント、敵などの各種データなどを収めたシナリオファイル
内だね。最初にこのシナリオファイルを読み込んで、その中の
文字列をバッファに格納しておく。
まあ、文字列はプログラムの実行中にバッファにあればよい
から、別にコードで設定しようが、ネットから読み込もうが
省1
778(1): 03/12/26 11:30 ID:FaDIMQyf(1/2) AAS
質問 (。・_・。)ノ
DirectPlayの利点が良くわからん。Socketで独自AP層実装するのに比べて何が良いの?
779(1): 03/12/26 13:09 ID:UokTH8Xi(1) AAS
それがサクっとできる人には無用の長物かと。
780: 03/12/26 13:39 ID:FaDIMQyf(2/2) AAS
>>779
ありがd
781: 03/12/26 14:10 ID:rER+QHNY(2/2) AAS
>>RPG開発中
で、それが >>765 に対するアドバイスなのか?
782: 03/12/26 18:45 ID:njogeIUI(1) AAS
>>778
WindowsやUnixに強度に依存させないために用意されてるんじゃないの?
DirectXにさえ対応していれば、BSDソケットをサポートしてない環境でも開発できるように。
もちろん、事実上そんなプラットフォームは存在しないんだけど
783: 03/12/27 09:57 ID:otsUTq2D(1) AAS
ワロタ
784: 03/12/27 10:07 ID:bl7gErOG(1) AAS
XBOX...
785: 03/12/27 11:10 ID:xG/hPzox(1) AAS
>>769
小学生でもベクトルと言う言葉を知らなくても概念的なものは
カンのようなもので理解してたと思う
そのあたりは算数、数学のセンスなのかもしれない
ちょうど方程式と概念的には変わらない「○+3=5 さて○には何が入る?」
っていう問題が小学校の算数ですでに出るような、そんな感じ
786: [hこpれkごpkspzkj] 03/12/27 14:04 ID:/LeFILZK(1) AAS
みなさん聞いてください
ロールプレイングで敵と味方が戦って敵か味方のHPが0になったら
終了させたいのだが これはクラスを使って処理させたほうが賢明なのだろうか?
皆さんのこういったときどんなことをするのですか? ぜひ極意を教えてくれたらなぁ
と思います
駄文ですまん
787: 03/12/27 14:10 ID:3jGoR22p(1) AAS
あああああああああはやめたの?
786 名前:名前は開発中のものです。[hこpれkごpkspzkj] 投稿日:03/12/27 14:04 ID:/LeFILZK
みなさん聞いてください
788(4): 03/12/28 17:40 ID:bDUHUyQ0(1/2) AAS
dairectinputでキーを押している間○○の処理をする・・
ってなことできるんでしょうかもしあるんだったら教えてください。
おねがいします。
789(1): 03/12/28 19:17 ID:xJqaw/Og(1) AAS
もう少し質問をわかりやすくお願いします。
790(1): 03/12/28 19:53 ID:VT+x31QU(1) AAS
>>788
メインループで
キーチェック()
if(キーが押されている) 処理()
791(2): 03/12/28 21:02 ID:bDUHUyQ0(2/2) AAS
>>789
>>790
すいませんわかりにくくて、
例えば
キーチェック()
if(キーが押されている)処理()だと
キーを連打してるみたいになると思うんですが
省7
792: 03/12/28 21:42 ID:cQ9iWriQ(1) AAS
スレッドを作ればいくらでもできるだろ。
793: 03/12/28 22:12 ID:HAEX+AYe(1) AAS
>>791
while(キーチェック() == 押されてる){
やりたい処理()
}
これだとそれっぽいけど、
キーをチェックする間隔がやりたい処理に依存するよ。
794(3): 03/12/29 00:31 ID:FUYmq8vt(1/2) AAS
ゲームならメインループをまわしておくんだろうから
前回のキー状態を保存しておいて、押された・押されたまま・離されたを
チェックするのがいいと思う。
char key押された;
char key押されっぱなし;
キーチェック() {
if (key押された = キー状態)
省2
795: 794 03/12/29 00:36 ID:FUYmq8vt(2/2) AAS
途中で書き込んでしまった・・・。
char key押された;
char key押されっぱなし;
キーチェック() {
if (key押された == キー状態) {
key押されっぱなし = キー状態;
} else {
省13
796: 788 03/12/29 00:49 ID:EhxFp05R(1/3) AAS
>>794
参考になります。ありがとうございました。
797(1): 788 03/12/29 01:09 ID:EhxFp05R(2/3) AAS
>>794
またまたすみません。
上のプログラム参考にして考えてみたのですが
キーが離れたときの判定の仕方はどうすればいいのでしょうか?
798: 03/12/29 02:10 ID:hxW8tM+Y(1) AAS
//宣言
BOOL PushKey[256];
//Set
WM_KEYDOWN:PushKey[wParam]=TRUE;break;
WM_KEYUP:PushKey[wParam]=FALSE;break;
//条件
if(PushKey[VK_何たら]){
省2
799: 03/12/29 02:11 ID:9w54kjof(1) AAS
一つ前の状態を覚えておいて前回が押しで今回が離しなら条件成立。
でいいんでないかい?
っていうかこの状態ですでに聞きまくりだと、後で困るよ。
聞く前にまず何通りかの方法を自分で考えてみたほうがいい。
800: 788 03/12/29 02:40 ID:EhxFp05R(3/3) AAS
そういうやり方があったんですか。さっそくやってみますね。
色々ご指導ありがとうございましたー。
801: 03/12/29 10:35 ID:Vxcs8OWB(1) AAS
ON
___| ̄ ̄ ̄|__
OFF
てな感じで、紙に書いてどんなタイミングだと、
「押した瞬間」や「離した瞬間」と判断できるか、シミュレートしてみるといいよ
802(1): 03/12/29 11:56 ID:7K1ivY4a(1/2) AAS
状態用意しなくても
GetAsyncKeyStateでいいやん
803(1): 03/12/29 17:02 ID:18lQqtmb(1) AAS
>802
え?状態用意しなくても過去のキー情報か離した瞬間を検知するものがあるん?
804: 03/12/29 17:12 ID:gqFMSN3K(1/2) AAS
GetKeyboardStateもいいよね〜
805(1): 03/12/29 17:40 ID:7K1ivY4a(2/2) AAS
>>803
要件は「押している間」だけだろ?
その瞬間を検知する必要があるわけではない。
さらに>>791とか見てもキー押下イベントを受け取りたいわけじゃなくて
状態をポーリングしてるんだからKeyState系のAPIだけで十分。
806: 03/12/29 18:31 ID:YOFpqX8j(1) AAS
>>805
>>797
807(1): 03/12/29 20:18 ID:byuoOUNe(1) AAS
新米プログラマ「キーが押されている状態をチェックする方法は分かったんだ。
だけど、今度はキーが押されていない状態のチェックする方法がないんだ!」
新日プログラマ「キーが押されている状態の逆をやればいいんだよ」
新米プログラマ「逆?」
808(1): 03/12/29 20:32 ID:gqFMSN3K(2/2) AAS
押されているならば、その状態を変数に記録、
押されていないならば、変数を調べて押されていたか知ればいい
こんな感じで
bool key;
...
if(GetKeyCheck() == true){ // GetSKeyCheck() : キーが押されているか? 押されているならtrue、押されていないならfalseを返す
key = true;
省8
809: 03/12/29 20:56 ID:R24Z9q+x(1) AAS
>>807
BlackBoxキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
810(1): 03/12/29 21:25 ID:LZHqhzbl(1) AAS
キーボードは大気にふれている限り、気圧によって圧されているのだよ。
811: 03/12/29 21:29 ID:TqzRIVhA(1) AAS
>>810
IDがlzh
812: 03/12/30 08:54 ID:cbrmbjiy(1) AAS
IDまで圧されたかw
813(2): 03/12/30 19:03 ID:8NY1Jixm(1) AAS
質問させて下さい!
javaapplet でうまくキーが取れない… というか同時押しを認知してくれないんで、とても使いづらいんで、キャラクターがバリバリ動いてくれないんで、なにか妙案はないでしょうか?
814: 03/12/30 19:08 ID:89Usy+84(1) AAS
んでんでんで
815: 03/12/30 19:34 ID:riQ5Bg3Y(1) AAS
いんで、いんで、いんで
816(1): 03/12/30 20:12 ID:0/qWWE1o(1) AAS
>>813
3年前に組んだコードで残ってた。動くか覚えてないけど、
こんな感じでやってみたら?
publicclassC_Keyboardimplements KeyListener{
publicstaticfinalintMAX_KEY= 256;
publicbooleankey[] = new boolean[MAX_KEY];
publicvoidClear(){
省17
817(2): 03/12/31 02:12 ID:Fl7cRe53(1) AAS
ゲームなどで使われている独自文字入力欄[日本語対応]を作りたいのですが、、
どうやって実現してるのか謎です。DirectXでできるのかな?
誰か情報お持ちの方、些細なことでもけっこうですので教えて下さい。
818: 03/12/31 02:51 ID:9cxCAb2/(1) AAS
>>817
Immなんたらっていう名前のIMEを制御するAPIあった気がするけど、それが役に立つんじゃないのか?
819: 03/12/31 09:54 ID:zUm4t1iL(1) AAS
>>817
ふざけんなお前
検索すればすぐ出てくるだろう
820: 03/12/31 10:08 ID:lLGxR34f(1) AAS
ワロタ
821: 03/12/31 12:09 ID:gCPPzIqu(1) AAS
>>808
おいおい
GetKeyCheck() != true
なんじゃないのか?
822: 813 03/12/31 13:10 ID:S0g1wDUS(1) AAS
>>816
遅くなってゴメンナサイ、おかげさまでキャラクターがバリバリ動きます!
ありがとうございました。
追記、"key[VK_SPACE]" と書くとエラーみたいでした。
823: 03/12/31 18:56 ID:d+s4Rpq7(1) AAS
MIDIを使ってキーマニみたいなの作りたいんだけど、
何か参考になるページとかない?
824: 03/12/31 20:06 ID:6efuChc2(1) AAS
外部リンク[asp]:www.microsoft.com
825: 04/01/03 14:56 ID:UZ7OEUkf(1) AAS
よくタイマースレッドって言葉を聞くんですが、
これってビジーループしてタイマーを監視しつづけ、
変化があればメインスレッドに通知するスレッドのことですか?
これだとCPU使用率が100%になる気もするんですが、
それでいいもんでしょうか?
826(1): 04/01/03 15:13 ID:YFxdCNxD(1) AAS
100%で構わない。
Nスク作者もその方法を薦めている。
827: 04/01/03 16:54 ID:zrdxHy1T(1) AAS
そいや、smfを解析するための公開ソースって無かったっけ?
828(2): 04/01/03 20:47 ID:GciE0Bqf(1) AAS
>>826
おまえはアホか
829: 04/01/04 00:42 ID:3jP9OI5L(1) AAS
>>828
なんか困ることあるの?
830(1): 04/01/04 01:19 ID:QijQXGlg(1/3) AAS
>>828
Nスクの作者にたてつくつもり?
やめといたほうがいいよ、その道の権威なんだからさ。
ボコボコにされちゃうのが見えてる(藁
831: 04/01/04 01:27 ID:Rr6GNz9Q(1/2) AAS
Nスクって何ですか?
832: 04/01/04 01:58 ID:HVBGttSC(1) AAS
Nステなら知ってるよ
833: 04/01/04 01:58 ID:a27RA1XL(1/5) AAS
>>830
それは怖いですねー (棒読み)
834: 04/01/04 02:28 ID:ttqUyCpj(1/2) AAS
突然申し訳ありません
レスを読んできたところ、WIN32API環境において、
標準のキースキャンの方法は、いまだ分かりません。
directxを用いた方法は多分有効だと思いますが、
WIN32APを用いて、Iもしくはそれに準じた形の標準的なキースキャンの方法はあるのでしょうか?
私はMS-DOS時代、割込禁止設定、割込ベクタトラップ、MS-DOSキーバッファ潰し、
で生き延びてきました。
省1
835(1): 04/01/04 02:34 ID:Rr6GNz9Q(2/2) AAS
コールバック関数でWindowsメッセージが送られてくるので、
そのうちWM_KEYDOWNとかそんな感じのメッセージを処理すれば
良かったんだと思う。
所謂標準のSDKでは。
836: 04/01/04 03:24 ID:ttqUyCpj(2/2) AAS
>>835
レスありがとうございます。
でもそれでは、左矢印キーを押しながら、右矢印キーを短時間押すだけで
停止する処理系になってしまうと思います。
PORT 9 (PC98)監視に準じたWIN32APIの処理系を再現したいと考えております。
何か良いアイデアは無いでしょうか?
837(1): 04/01/04 04:14 ID:Ct0gv1Hf(1/2) AAS
いや停止はいないでしょ。
なんでそんな処理系になってしまうかわからん。
普通にキーの状態を取得するAPIとしては
GetAsyncKeyStateとかがあるけど。
838(1): 04/01/04 05:14 ID:vNXDyGpd(1) AAS
>>837
再びレスありがとうございます。
GetAsyncKeyStateの関数は以前から目を付けていくつかテストしておりましたが、
winmm.libとの絡みの問題と踏んでおりました。
while(1){}内のタイマ関数を少し見直してキースキャンプログラムを組みなおしてみます。
レス上の指摘どおり処理系の停止は無いとの前提で、
メインループの時間優先のコーディングと、
省2
839: 04/01/04 05:48 ID:Ct0gv1Hf(2/2) AAS
釣りなのか本気なのか区別つかん。
840: 04/01/04 09:07 ID:Ok/KhNOJ(1) AAS
Nスクの作者?
葱板でボコボコに叩かれてたじゃん
841: 04/01/04 09:08 ID:dA/sKtx4(1) AAS
Nスクは日本のスクール水着ってことだよ
842(1): 04/01/04 11:11 ID:GJKuDEDj(1) AAS
>>838
だからメインループでろくにも変更されない変数を監視するなって言ってるんだよ
タイマー使いたかったらWM_TIMERをチェック
何?タイマーの精度が気に入らない?
OSの選択をそもそも間違っている
しかも他アプリケーションに迷惑かけるので、誰も使わんよ
843: 04/01/04 11:31 ID:7Q2vPaHr(1/2) AAS
せめてマルチメディアタイマーを使うか、
マルチメディアタイマーのコールバックだとデバッグしづらいのであれば、
マルチメディアタイマーでイベントシグナルを発生させるかすれば、
おおよそ1ms程度の精度は得られる。
844(1): 04/01/04 21:00 ID:GmFh16RM(1/4) AAS
> しかも他アプリケーションに迷惑かけるので、誰も使わんよ
そういうの神経質に言う人たまにいるけど、CPU100%使うゲームで迷惑喰ったことないな
裏でどんなアプリ走らせながらゲームやってんの?
それか電力消費の気になる携帯機とかの話してる?
845(1): 04/01/04 21:30 ID:a27RA1XL(2/5) AAS
>>844
> 裏でどんなアプリ走らせながらゲームやってんの?
ブラウザで Web の攻略ページ見てたり、メッセンジャーで話してたり。
846(1): 04/01/04 21:40 ID:QijQXGlg(2/3) AAS
Nスク作者様の登場だ。
皆、もてなすように。
847(2): 04/01/04 21:57 ID:GmFh16RM(2/4) AAS
>>845
ゲームがフォアグラウンドのままブラウザ使ったりしないよな?
インアクティブになったときにビジーループ止めればいいだけじゃん
Windows標準添付アプリのピンボールだってそうやってるぞ
メッセンジャーは使ったことないから知らん
ピンボールと併用して何か障害出るのか試してみてくれ
848: 04/01/04 22:07 ID:pvm3jmnY(1) AAS
障害があろうが無かろうが、あまり人に勧めるもんじゃないと思うが。
849: 04/01/04 22:23 ID:JwhI6BDv(1/3) AAS
>CPU100%使うゲームで迷惑喰ったことないな
俺は実際これで迷惑被ってる
CPU100%占有するアプリは迷惑この上ない。
Nスクってマジでそうなの?
>インアクティブになったときにビジーループ止めればいいだけじゃん
ちなみにNスクはこれをちゃんとやってるの?
850: 04/01/04 22:28 ID:GmFh16RM(3/4) AAS
> 障害があろうが無かろうが、あまり人に勧めるもんじゃないと思うが。
そう思うのはあんたの勝手。俺は
> しかも他アプリケーションに迷惑かけるので、誰も使わんよ
と書いてあったから、誰も使わなくなるほどの迷惑というのがどういうものか教えて欲しいだけ
851: 04/01/04 22:35 ID:a27RA1XL(3/5) AAS
>>847
> インアクティブになったときにビジーループ止めればいいだけじゃん
それもどうかと思うなぁ。ウィンドウがアクティブでないときでも動かしておきたい
処理もあるが、そっちだけイベントドリブンにすると話が面倒になる。
> インアクティブになったときにビジーループ止めればいいだけじゃん
だから、裏で起動してるブラウザとか IRC とか。IRC なんかは、ほかのユーザが
書き込んでくるのを眺めてたりするから、非アクティブ状態でも、スムーズに動いて
省1
852: 04/01/04 22:37 ID:a27RA1XL(4/5) AAS
追記。WM_TIMER は優先度低すぎてアレだが、マルチメディアタイマと
PostMessage(), あるいは Sleep() 組み合わせて使うと、それなりの結果
が得られるぞ。
853: 04/01/04 22:44 ID:GmFh16RM(4/4) AAS
> それもどうかと思うなぁ。ウィンドウがアクティブでないときでも動かしておきたい
> 処理もあるが、そっちだけイベントドリブンにすると話が面倒になる。
あー、よくわかった
ゲーム自体を環境として動かすような、アップルタウン物語みたいなやつを言ってるのか
リアルタイムアクション系ゲームのことしか考えてなかったスマソ
> PostMessage(), あるいは Sleep() 組み合わせて使うと、それなりの結果
そうそう、とりあえずビジーループの中でSleep(0)呼んで残りタイムスライス放棄しとけば充分
854: 04/01/04 22:45 ID:zDQFoC6I(1) AAS
ケイス・バイ・ケイス
まったく、死ねよ坊や達
855: 04/01/04 22:48 ID:QijQXGlg(3/3) AAS
> >インアクティブになったときにビジーループ止めればいいだけじゃん
> ちなみにNスクはこれをちゃんとやってるの?
長年にわたる研究の結果、ビジーループが最も効果的であるとの
結論に至ったため、Nスクはビジーループを採用しております。
これについての反論は受け付けません。
856: 04/01/04 22:51 ID:a27RA1XL(5/5) AAS
なんか必死に燃料を投下してるヤツがいるな……
上下前次1-新書関写板覧索設栞歴
あと 114 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s