トップページgamedev
818コメント302KB

Windowsゲームプログラミング 質問スレ

■ このスレッドは過去ログ倉庫に格納されています
0001うゆ ◆vvvK3Fcqdg 2008/11/06(木) 21:28:45ID:lNn2skuQ
※回答する人も、質問する人も必ず読んでください

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
0410名前は開発中のものです。2009/09/11(金) 20:08:12ID:82Pb8qAz
40ピクセルの大きさのマスを4ピクセルずつ移動するって事は
壁の判定は、ちょうどマスに合っている位置から動き出そうとする瞬間のみにするとかどうよ。

つまり player.x % 40 == 0 の時のみ左右の壁チェックをするとか。

具体的には……

if ( player.x % 40 != 0 ||
map[px - 1][py] == 0 ) {
player.x -= 4;
}

かな?
0411名前は開発中のものです。2009/09/11(金) 20:23:15ID:c5vNUe99

var px:int = player.x / 40;
var py:int = player.y / 40;
//playerの移動
if (left == true) {
player.x -= 4;
if (map[px][py] != 0) {
 player.x=(px+1)*40;
}
}else>右上下に続く

こんな感じでどうかしら
0412名前は開発中のものです。2009/09/11(金) 20:25:24ID:c5vNUe99

 //playerの移動
 if (left == true) {
 player.x -= 4;
  if (map[(int)(player.x/40)][(int)(player.y/40)] != 0) {
  player.x=(px+1)*40;
 }
 }else>右上下に続く

すまん訂正
04134092009/09/11(金) 21:54:54ID:tdiXH7FQ
>>410-412
ご回答ありがとうございます。
両方のプログラムで当たるのを確認しました。
412さんのpx+1だと一マス文右に戻ってしまうのでpxのみで済ませてみました。
ありがとうございました。
0414名前は開発中のものです。2009/09/12(土) 05:22:29ID:z98JJXec
RPGのイベント処理で質問です
イベントが起こるとイベント処理専用の関数に飛ばすと思うのですが、
そのときは座標を引数に渡すのでしょうか?
それともイベントマスにあらかじめ通し番号のようなものを振っておき、
イベント関数にはその番号を渡し、select caseで対応できるようにするものでしょうか?
0415名前は開発中のものです。2009/09/12(土) 07:01:33ID:O3gITtWc
自分がやりやすい方法で実装しろとしか言いようがない。
0416名前は開発中のものです。2009/09/13(日) 00:08:12ID:AGUGCw1Z
var px:int = player.x / 40;
var py:int = player.y / 40;
//playerの移動
if (left == true) {
player.x -= psp;
if ((map[(int)(player.x / 40)][(int)(player.y / 40)] != 0) ||
((map[(int)(player.x / 40)][(int)(player.y / 40+1)] != 0)&&(player.y%40!=0))) {
player.x=(px+0)*40;
}
}else
if (right == true) {
player.x += psp;
if ((map[(int)(player.x / 40 + 1)][(int)(player.y / 40)] != 0)||
((map[(int)(player.x / 40+1)][(int)(player.y / 40+1)] != 0)&&(player.y%40!=0))) {
var xx1:int = player.x;
player.x = (px + 1) * 40;
var xx2:int = player.x;
if ((xx2 - xx1) > 35) {
player.x = (px) * 40;
}
}
}else上下に続く

先日のものです。ボンバーマンのような動きを目指したいのですが。
これだときっちりx40の座標にいないとと曲がれなくて非常に動きにくいものになってしまいます。
移動速度が変わると壁も越えてしまいます。あと左右でプログラムの量がだいぶ違ってしまうんですが
もっと簡略化などできないものでしょうか・・・、実際のボンバーマンのソースなどが気になります。。
どなたがご指導お願い致します。
0417名前は開発中のものです。2009/09/13(日) 00:16:39ID:eXPdHMCQ
座標じゃなくて、チップ単位だな>ボンバーマン。
0418名前は開発中のものです。2009/09/13(日) 00:19:33ID:ufmFSA1d
アドバイスもらうだけならともかく、プログラムを作り直してくれというのはさすがに感心しないな。

原因と結果と、自分の目標がはっきりしてるのなら自分で試行錯誤できるはずだよ。
0419名前は開発中のものです。2009/09/13(日) 00:32:47ID:QM+uLV1D
なんかもうプログラムごちゃごちゃに見える
移動に関する部分、一度全部まっさらにして書き直したほうが良い気がする…
0420名前は開発中のものです。2009/09/13(日) 00:50:42ID:2/1HGZrm
>>414
自分は座標を引数に渡す。
その座標と、設置してある全イベントを比べて、
位置が同じのを実行していく。

もちろん、マップに入った時に始まるとか、
位置の関係ない開始方法のイベントでは渡さない。
(いろんな開始方法を同じように扱うため、
範囲外である-1を渡している)
0421名前は開発中のものです。2009/09/13(日) 07:39:20ID:dEvmTtL8
>>414
位置はグローバル変数に入れておき、引数では渡さない
後は>>420と同じ
0422名前は開発中のものです。2009/09/13(日) 17:50:18ID:PX8WBuTn
俺は一定時間記憶してるキーヒストリー作って曲がらせた
0423名前は開発中のものです。2009/09/13(日) 18:31:41ID:AGUGCw1Z
軽々しく質問をして申し訳ありませんでした。
一度白紙から自分で頑張ってみます。回答ありがとうございました。
0424名前は開発中のものです。2009/09/16(水) 20:45:32ID:9Gk9YNxC
ゲームループについて質問があるのですが
@とAの形式、どちらの方が一般的でしょうか?


@
while(1)
{
  入力(キーボード、パッド)
  ゲーム処理
  出力(描画、音)
}

A
while(1)
{
  if( イベントあれば)
  {
   入力(キーボード、パッド)
  }
  else
  {
   ゲーム処理
   出力(描画、音)
  }
}
0425名前は開発中のものです。2009/09/16(水) 21:12:41ID:Acu1/qMJ
いや、2だとおかしいだろ。入力と出力を同時に行えない。
1の場合はタイトル画面やメニュー画面で入力や処理や出力を変えたいときに不便。

書くと長くなるので、http://dixq.net/g/#34
こんな感じでいいと思う。正直、動けばなんでもいいし。
0426名前は開発中のものです。2009/09/16(水) 21:45:12ID:TMi/1sDM
elseが無ければ2はまぁあるな
でも意味的には1と変わらなくなるけどね
0427名前は開発中のものです。2009/09/16(水) 22:06:47ID:MfrYy8zd
入力処理でイベント解消してるかもしれんじゃん。
0428名前は開発中のものです。2009/09/17(木) 00:55:45ID:1euYuxFh
2ch初心者です。

現在、学校の課題でX-Window Systemとかいうものでゲームを開発するというのが出されているのですが、
学校の開発環境はLinuxでviエディタで開発しています。

自宅で開発したいと思ったのですが、C++でX-Window Systemを開発することはできますか?

当方、あまり知識がなく困っています。

Cの場合、コンパイルするときに

gcc abc.c -lX11 -L/usr/X11R6/lib

この記述が必要らしいのですが、C++の場合は
ライブラリを追加するんですかね?

そのライブラリは標準とかじゃなくてインストしないとないんですかね?

もうなんか分からなさ過ぎて意味不明ですみません。
0429名前は開発中のものです。2009/09/17(木) 01:12:44ID:WBKCHyYB
>>428
まず、大事なことを言う

X-Window Systemは、Windowsではない
そして、ここはWindowsのスレ
0430名前は開発中のものです。2009/09/17(木) 01:22:42ID:cp1RSSKv
誰もレスしないと思うからおれがしてやるよ

まずスレ違いだし、そこまでキーワード知ってるんなら
linux C++ コンパイルとかでググればg++とか出んだろカス

そんなんじゃ開発なんて到底無理
お前は向いてない
消えろカス
0431名前は開発中のものです。2009/09/17(木) 01:35:47ID:1euYuxFh
>>429
>>430
ありがとうございます。
色々調べたんですが、結局分からなくて。
最終手段にここを頼ったんですが、スレ違いのようですね。
すみませんでした。
0432名前は開発中のものです。2009/09/17(木) 01:48:25ID:ssx4Df8S
>>431
Cygwin使えばWindowsでもC/C++でX 向けのソフトをコンパイルと実行できるよ。
C++に関しては>>430が言うようにg++使うといい。
0433名前は開発中のものです。2009/09/17(木) 01:49:18ID:ssx4Df8S
なんか間違えた。
C++に関してはのくだりは、gccじゃなくて、g++使えって意味ね。
0434名前は開発中のものです。2009/09/17(木) 01:51:31ID:cp1RSSKv
先生に聞けよ

gccが入ってる環境ならg++も大抵入ってる
g++ってのはC++用のコンパイラ
標準ライブラリは勝手にコンパイラがリンクしてくれるから
指定の必要なし
つまりgccをg++に変えればよろし

再度言う
お前は向いてない
消えろカス
0435名前は開発中のものです。2009/09/17(木) 02:13:03ID:1euYuxFh
えっと、質問の仕方が悪かったようです。
ほんと申し訳ないです。

C++で、
#include <X11/Xlib.h>
#include <X11/Xutil.h>
を記述してサーバ接続だったり、ウィンドウ表示だったりの記述を書いて、
C++でデバッグしたいんです。

けれど、
fatal error C1083: include ファイルを開けません。'X11/Xlib.h': No such file or directory
こういったエラーが出されるのは、Xlib.hが無いから、だというのは分かるんです。

それをLinuxのCでは
gcc abc.c -lX11 -L/usr/X11R6/lib
こういう風にリンク?を書いてるから出来るんだと思うんです。

結論として、C++で実行するには
・C++でコードを書いてLinuxでg++で実行する(C++では実行できない)
・ライブラリをインストールする必要がある
とかいうことなんですか?

向いてないのは分かります。
むしろしたくないのですが、課題なので仕方ないのです。

ほんとうに申し訳ありませんです。
0436名前は開発中のものです。2009/09/17(木) 02:19:15ID:ikGHLMwf
インクルードパスが通ってないだけだろ。
スレ違いだと分かっててここで続けるなよクズが。とっとと失せろ。
0437名前は開発中のものです。2009/09/17(木) 03:51:18ID:XYjt8Ojw
>435
とりあえずこっちに戻れ
C++でX Window System の開発
http://pc11.2ch.net/test/read.cgi/gamedev/1253115361/

g++ -Wall -o foo foo.cxx -lX11 -L/usr/X11R6/lib
ってかMakefile作れ、あと今さらXを直叩きとかないわぁ
0438名前は開発中のものです。2009/09/17(木) 07:08:56ID:ySq31WPj
>>435
言っていることが滅茶苦茶。
g++はC++コンパイラなんだから、C++で実行出来ないわけではない。
0439名前は開発中のものです。2009/09/17(木) 07:17:26ID:4nOkpMzw
>>435
早く消えろよ
0440名前は開発中のものです。2009/09/17(木) 10:40:02ID:xzC51KWx
>>435
スレ違いです
学費を払って学校に通っているのだから、課題に関する疑問は先生に聞きましょう
またできるだけ自分で調べて自主学習する癖をつけましょう
何でも人に聞いていては力がつきません
0441名前は開発中のものです。2009/09/17(木) 10:48:41ID:ssx4Df8S
>>435の人気に嫉妬
0442名前は開発中のものです。2009/09/26(土) 09:22:03ID:E2IXiY4A
確定しました。やっぱり来るみたい。今回は10月1日までは警戒が必要。
千葉神奈川静岡東京茨城や他の関東が危険

(重要事項につき会員同時公開) 2009/09/25

(5) なお、HAARPに誘引されて、関東地方ではM5前後の中規模地震が発生するだろう。

(3) HAARPの影響は大気イオンのみならず、気象現象や通信、動物の狂乱状況をも生み出し、
疑似宏観異常現象を発現させる。いわば環境テロである。
(2) HAARPは電磁波を宇宙に向けて放出、電離層を刺激し、反射して地表付近の大気イオンに影響を与えるものと聞いている。
HAARPの運用状況と大気イオン濃度変動を見比べると、明らかに同期しているとの指摘を多数頂戴した
大気イオン地震予測研究会e-PISCO
理事長 弘原海 清 大阪市立大学名誉教授
http://www.e-★pi★sco.jp/r_i★on/at★tention/090925weekly_z.html
http://s01.megalodon.jp/2009-0925-1414-33/www.e-★pisco.jp/r_i★on/attention/090925weekly_z.html
http://s02.megalodon.jp/2009-0926-0102-46/www.e-★pisco.jp/r_i★on/attention/090924weekly_e.html

HAARPの動きを四川地震のパターンに今回に当てはめると9月27日が危険
http://gol★den★tamat★ama.bl★og8★4.fc2.com/blo★g-date-20090922.html
http://s03.megalodon.jp/2009-0926-0114-47/goldentamatama.bl★og8★4.fc2.com/bl★og-date-20090922.html

世界的科学者がハープは地球の気候や人の脳を損傷させる兵器の疑いがあると
http://www.yo★utube.com/wat★ch?v=8A★MlqRsHUXI&feature=player_embe★dded#t=51★1

2ちゃんねる地震情報 
http://li★ve2★4.2ch.net/eq/

9.11事件、破壊されたWTCで働くユダヤ人は1名も死んでいませんでした。
http://da★mhantaikanuma.we★b.infoseek.co.jp/Sonota/91★1dead.html

地震来たら権力者達が犯人。・・・ユダヤ人は大量に人を殺しています。
0443名前は開発中のものです。2009/10/12(月) 23:04:42ID:Smf+4Qbv
ゲームで使う画像の種類で悩んでいます。
tgaやdds,png等アルファチャンネルが使えるもので何を使うのが
いいでしょうか…
0444名前は開発中のものです。2009/10/12(月) 23:29:52ID:AQICrxba
>>443
まず使おうとしてる言語やライブラリがサポートしてる形式を調べてみたら良いと思います。
環境によっては使えない形式もあります。
0445みけ2009/11/21(土) 14:09:05ID:K1cRQZx9
はじめまして。
actionscriptでボンバーマンを作っています。
爆弾の火炎がブロックを突き抜けないようにするにはどうしたらよいですか?
0446みけ2009/11/21(土) 14:10:44ID:K1cRQZx9
はじめまして。
actionscriptでボンバーマンを作っています。
爆弾の火炎がブロックを突き抜けないようにするにはどうしたらよいですか?
0447名前は開発中のものです。2009/11/21(土) 15:26:28ID:ooIk2Hg8
ボンバーマンが壁を突き抜けないようにできているのなら
自ずと解るんじゃないかな。
0448みけ2009/11/21(土) 15:57:19ID:K1cRQZx9
確かに、ボンバーマンは壁を突き抜けませんが、爆弾の火炎は十字に爆発するので、
ブロックがあるところで部分的に突き抜けないようにしないとならないんです。
その方法が知りたいです。
0449みけ2009/11/21(土) 16:10:29ID:K1cRQZx9
爆弾の火炎の件、解決しました。回答者の方ありがとうございました。
0450みけ2009/11/21(土) 18:13:06ID:K1cRQZx9
火炎の件、やはり解決しませんでした。ボンバーマンと
一緒のことをすると、火炎の十字のかたまりが、突き抜けず
手前で止まるだけです。言葉足らずですみませんが、正式には
ブロックは突き抜けますが、その突き抜けた部分を見えなくしたいんです。
どなたかわかる方がいらっしゃたら教えて下さい。
0451名前は開発中のものです。2009/11/21(土) 18:50:00ID:B/+Ptzyr
プログラミング言語の前に日本語の勉強からはじめよう
0452名前は開発中のものです。2009/11/21(土) 22:48:11ID:5gUZ2QdM
日本語なんか日常会話ができれば適当でいいよ。
それより英語を勉強しれ、マジで。
0453名前は開発中のものです。2009/11/22(日) 00:09:44ID:NM+RZ4x0
>>450

言ってる意味がわからんわ。
見えなくしたいのなら描画しなけりゃいいんじゃ。
0454名前は開発中のものです。2009/11/22(日) 00:43:44ID:o94KfNkS
>>450
俺のスーパー適当解釈によると

火炎が伸びる処理→ブロックと重なったか判定 true→ブロック破壊&火炎非表示の処理
という流れなのにプレイヤーの移動判定をそのまま使ったせいで
障害物の手前で火炎が伸びずに止まってしまい
ブロックと火炎が重ならないから破壊処理が呼ばれなくて困った!

・・・だとしたら伸びる予定の座標にブロックがアル/ナシ判定を追加すりゃいい
なににせよ、もうちょっと詳しく具体的に日本語でおk
0455名前は開発中のものです。2009/11/22(日) 01:10:15ID:RhhD+ORz
たぶん描画する画像の問題だろ。

●〓〓〓□■■ こうしたいのが

●〓〓⊃□■■ こうなっちまう

とか。
0456名前は開発中のものです。2009/11/22(日) 04:14:45ID:k4wHqViJ
>>450
そんなこと聞かなきゃ分からないようじゃ、やめた方がいい。
ブロックを手前から描けばいいとか。
0457名前は開発中のものです。2009/11/22(日) 05:10:12ID:d0fpruD0
ttp://www.plustarnet.com/aspil/Programming/

ここのプログラムエラーばっかで動かない・・・
ttp://www.plustarnet.com/aspil/Programming/console01.htm
たとえばこれとか動きますか?始めたばっかでかれこれ三時間ほど格闘してパソコンぶちこわしそう
0458名前は開発中のものです。2009/11/22(日) 07:09:53ID:8hLrf9nE
一応動くけど
・インクルードしてる Console.h も用意する http://www.plustarnet.com/aspil/Programming/CConsole.htm
・void main( void ) → 修正がいる場合もある
 標準的なのは int main( int argc, char **argv ) あたりですか
 うちは VC2008 IDE なので int _tmain( int argc, _TCHAR *argv[] )
・static s_nTime; → int が抜けてるから static int s_nTime; にする
始めたばかりならCや開発環境の使い方を学ぶ必要があるよ
0459みけ2009/11/22(日) 09:37:26ID:YNG3oyS5
いろいろありがとうございます。日本語勉強しないとだめですね。爆弾の件、
図解すると、
 ■               ■
 ■               ■
■○■■  こうなるのを    ◇○◇  こうしたいです。
 ■               ■
 ■               ■  
                
○は爆弾、■は火炎、◇は固ブロック。
0460みけ2009/11/22(日) 09:39:28ID:YNG3oyS5
いろいろありがとうございます。日本語勉強しないとだめですね。爆弾の件、
図解すると、
 ■               ■
 ■               ■
■○■■  こうなるのを  ◇○◇  こうしたいです。
 ■               ■
 ■               ■  
                
○は爆弾、■は火炎、◇は固ブロック。


0461みけ2009/11/22(日) 09:41:48ID:YNG3oyS5
図がうまくいかないので何度もすみません。
図解すると、
 ■               ■
 ■               ■
■○■■  こうなるのを ◇○◇  こうしたいです。
 ■               ■
 ■               ■  
                
○は爆弾、■は火炎、◇は固ブロック。


0462名前は開発中のものです。2009/11/22(日) 10:34:00ID:kGsksMh7
その図だと>>450で言ってる

>火炎の十字のかたまりが、突き抜けず手前で止まるだけです。

で、問題ないように思うのだが?

……ひょっとして、十字の火炎ってブロックごとに分割されてない、一塊のキャラなの?
0463名前は開発中のものです。2009/11/22(日) 11:38:02ID:k4wHqViJ
>>日本語勉強しないとだめですね。
皮肉言われてるのにまるばかだな。

火炎を描こうとしている所にブロックがありますか?
あるなら、描かない。それ以降、火炎は描かない。
0464名前は開発中のものです。2009/11/22(日) 14:01:31ID:bVDBV8jf
仮想マップを2つ使って解決すればいいよ
壁(障害物)がある場所とない場所の情報を扱う地形マップと
爆弾が置かれている場所と置かれていない場所の情報を扱うマップ
(爆弾配置マップとでも呼称すればいい)
炎は2つの仮想マップを参照して再帰で解決

はいお終い、簡単だろ?
0465名前は開発中のものです。2009/11/23(月) 16:17:25ID:H/bHlmfN
actionscriptで、キャラクターを一区間歩かせる方法を教えてください。
0466名前は開発中のものです。2009/11/23(月) 16:27:32ID:DESnmY0U
actionscriptとやらは知らないが
キャラクタを一区間移動させたい時は
例えば一区間の幅がnドットの場合は、キャラのXorY座標が
nで割り切れるまで移動させるアルゴリズムを用意すればよい
0467名前は開発中のものです。2009/11/23(月) 16:50:25ID:DKN6YdUZ
ここは「Windowsゲームプログラミング」スレだから
どう見てもスレ違いだがな・・・
0468名前は開発中のものです。2009/11/24(火) 03:33:12ID:wxINmZRU
>>465
Flashゲーム講座&ASサンプル集
ttp://hakuhin.hp.infoseek.co.jp/main/as.html
ここのテトリスのサンプルに466がいうアルゴリズムを組み込んで
元のよりもブロックがスムーズに落下するテトリスに改造してみるとかドーダイ?

>>467
フラッシュ用の言語だし、スレ違いってわけでもないと思うぜ
0469名前は開発中のものです。2009/11/24(火) 04:38:39ID:Yv5cTTds
ああフラッシュがWindowsじゃないって意味かと思ってたが
フラッシュもWindowsに入るっちゃあ入るのか
0470名前は開発中のものです。2009/11/24(火) 20:00:33ID:kNRV2VR9
んなこと言い出したらたいがいのものはwindowsの内に入っちまうジャン
0471名前は開発中のものです。2009/11/25(水) 07:17:26ID:ggn3dqwd
MacでもFlash作れるしね
FLASHでゲームをツクール
http://pc11.2ch.net/test/read.cgi/gamedev/1005050054/
こちらは1年前でレス終わってる
0472名前は開発中のものです。2009/11/26(木) 00:58:53ID:mKVhhsnM
それ以前にゲ製作技術の真上にFLASHの板が
0473名前は開発中のものです。2009/12/10(木) 13:24:31ID:mMLW3axY
(´・ω・`)ねことあひるが力を合わせてみんなの幸せをーーーー♪
招き猫ダック♪
0474名前は開発中のものです。2009/12/10(木) 19:11:48ID:dpejkqOL
まぁ、ニートと低学歴が力を合わせても何にも出来ないのが
この板の現実だったりするんだけどね。
0475名前は開発中のものです。2009/12/13(日) 11:03:07ID:m1TWMvid
やる気が足りないんだよ
0476名前は開発中のものです。2009/12/19(土) 15:17:11ID:SrqWqwLz
やる気&&時間&&将来==完成品
0477名前は開発中のものです。2009/12/20(日) 01:25:15ID:YJnDqFE2
やる気と経験はあるけど、時間がないですわ。

0478名前は開発中のものです。2009/12/20(日) 01:34:57ID:in60m6r4
やる気は時間に反比例しますお
0479名前は開発中のものです。2009/12/20(日) 07:22:57ID:cqN+UuPk
時間が0の時は、やっる気無限大
0480名前は開発中のものです。2009/12/20(日) 08:01:42ID:WnHpA5qg
やる気がビックバン
0481名前は開発中のものです。2009/12/20(日) 18:24:19ID:YGQ+ppzg
>>479
大掃除しなきゃいけないのに古いアルバムを見つけてしまった状態
0482マサヒロ2009/12/21(月) 18:41:32ID:wXL8lMBU
  悪  鬼
マ サ ヒ ロ様 
 参    上
0483名前は開発中のものです。2009/12/31(木) 04:34:32ID:FmcWQtTy
ゲーム修正パッチの作り方を説明しているサイトとかご存知ないですか?
EXEを差し替えるとかではなく中にあるデータファイルとかも
追加したりし差し替えたいのですが
0484名前は開発中のものです。2009/12/31(木) 07:05:16ID:zxA2fJ4G
>>483
単に上書きコピーするだけじゃないの?
アーカイブ内のファイルを置き換えたいというなら、バラしてコピーして作り直す。
1ファイルのバイナリ差分でアップデートしたいというなら、XsDFみたいなツールを
使うか、同等のものを自分でつくればOK。
0485名前は開発中のものです。2009/12/31(木) 17:15:48ID:RQA0U+Bj
失礼します。質問よろしいでしょうか?

たとえば画面内において、それぞれ異なるIDを有したボールかなにかが飛び交っているものとします。
その状況でいずれかのボールをクリックした場合、それを識別するにはどのような方法があるでしょうか?
またボールが静止しているとした場合には、どのような手段を用いるのが賢いでしょうか?

いまだコーディングは開始しておらず、自分で組めるだろう範囲を考えながら仕様を確定している段階です。
当初クリック判定は座標から判別すればいいだろうと考えていましたが、上述のような状況に直面して考え直しています。
GUIプログラミングは初心者なのでサイトを見てノウハウを学ばせていただこうと思いましたが、
調べ方が悪いのでしょうか、基礎的な部分を解説してくださるサイトが見つからず、質問させていただいた次第です。

言語はC#を想定していますが、可能ならば言語依存の少ない方法を教示していただけると嬉しいです。
お忙しい時期でしょうが、よろしくお願い致します。
0486名前は開発中のものです。2009/12/31(木) 17:21:12ID:XywEK1j8
座標で判断すればいいだろ。
なにが問題だと言うんだ?
0487名前は開発中のものです。2009/12/31(木) 17:52:22ID:RQA0U+Bj
>>486
ボールにカーソルを合わせると変色するなどといった場合も、
foreach 全オブジェクト if X座標判定 and Y座標判定
のような処理を行っているのでしょうか?

だいぶ前に別スレにて「普通はそんな非効率的なことはしない」と聞いていたので、
何かしら別の方法があるかと思っていて、しかしながら他の方法が想像つかなかったので質問したのですが、
上記発言の解釈が間違ってたんでしょうか……。それでしたら申し訳ないです。

素早いお返事ありがとうございました。
0488名前は開発中のものです。2009/12/31(木) 22:29:14ID:g+v1XGwf
初心者すぎて基礎から勉強しないと話にならないお
0489名前は開発中のものです。2010/01/01(金) 01:28:27ID:+rsZCvF1
>>487
全オブジェクトっていう言い方が気になるが、概念的にはそれでいいんでないの?
何らかのイベントでマウスの座標を取得、その後その座標をつかって、オブジェクト毎でヒットテストするってことでしょ。
それ以外にやり方あるのかな?
0490名前は開発中のものです。2010/01/01(金) 19:30:22ID:iY6VPf2L
>>488
すみません……。GUIは本当に手探りです。
自分でもあちこち探したりしているんですが、何かいい教材あれば教えてくださると嬉しいです。

>>489
ありがとうございます。
自分もそれ以外にひらめかないのですが、上述の通り別なやり方があるとだけ聞かされたんで。
多分何かしら齟齬があったんでしょうね。お手数おかけいたしました。
0491名前は開発中のものです。2010/01/01(金) 19:48:54ID:+HYk+utg
いや、GUIはというがそれ以外も初心者なんだろう?
どうでもいいから手を動かそうぜ
0492名前は開発中のものです。2010/01/07(木) 23:25:49ID:dh68R4A/
画像の表示って大抵はファイル名で指定するよね?
でも、独自のファイル形式にしたい(BMPに付加情報をつけたもの)
すると、ファイル名の指定の関数が使えない、たすけて
0493名前は開発中のものです。2010/01/07(木) 23:27:49ID:ds4UNTST
ファイルを読み込んで自分でメモリー上で展開しろ。
0494名前は開発中のものです。2010/01/07(木) 23:37:33ID:dh68R4A/
>>493
ありがとうございます
バイナリで開いて全て点で打つならできそうなのですが、
効率の面で問題がある気がしまして。
ともかくやってみます
0495名前は開発中のものです。2010/01/07(木) 23:46:35ID:TMdG719d
SetPixel()遅い
0496名前は開発中のものです。2010/01/08(金) 00:13:08ID:l0tohAlf
>>495
ありがとうございます
ピクセルを後から操作する気はないのですが、おかげさまで道が開けてきました
ImageFromStreamとかなんとかで配列をデータにできるとかなんとか。
いい感じで脳が限界です
0497名前は開発中のものです。2010/01/15(金) 14:16:35ID:fJ32mWjV
WDDM のバージョンを調べたいのですが、
DXDIAG の szDriverModelLocalized を見る以外に方法はないでしょうか?
レジストリや WMI で探してみたのですが見つからなくて…。
0498名前は開発中のものです。2010/02/04(木) 23:22:36ID:tPmHG2jz
合計5000ポリゴンある地面の上に複数のキャラクターを立たせたいのですが
そうなるとどのポリゴンの上に乗っているかの情報が必要になるんですが

全てのキャラクターが毎フレーム5000ポリゴンとの当たり判定を取るとプログラムが非常に遅くなります
処理を劇的に軽くする何かいい方法はないでしょうか?
0499名前は開発中のものです。2010/02/05(金) 00:50:33ID:CKGSeD5Z
>>498
区画分けするとか、判定用にもっと粗い地面情報で判定するとか。
500ポリゴンごと10区画にわけたら、判定回数は5000回から510回になるし、
判定用の地面として500ポリゴンにしたら、500回になるし。後者の方が実装は楽だな。
前者だと、準備とか修正とかめんどくさそう。でも、前者の方が効果は高いな。100区画にわければ、
150回だもんな。
0500名前は開発中のものです。2010/02/05(金) 02:03:11ID:EsUZ2cV5
>>490
区画にわける所までは思いついたのですが
どうしてもどこがどの区画か判断する方法がわからないのです
0501名前は開発中のものです。2010/02/05(金) 07:09:32ID:Rnn3z8ra
>>全てのキャラクターが毎フレーム5000ポリゴンとの当たり判定を取るとプログラムが非常に遅くなります
これは今どうやってるの?
0502名前は開発中のものです。2010/02/05(金) 09:51:06ID:p/uDgxLQ
>>501
ポリゴンのY軸を考慮せずに外積で内外判定を取り
その後に三点測量からその地点のYを算出する形です
0503名前は開発中のものです。2010/02/05(金) 15:53:15ID:HPolpgOh
>>500
例えば5mごとの区画に区切って、その5mの立方体に少しでも入る地形のポリゴンを
その区画のリストに追加する。
判定するときは座標を5mで割るだけで区画は求まるので、その区画のリスト中の
ポリゴンと判定する。
ただし、キャラクタが区画を跨いでいる場合もあるので、隣接する8区画を調べる必要がある。
0504名前は開発中のものです。2010/02/05(金) 23:36:57ID:Rnn3z8ra
5000個に番号付けて、XZ平面で区画判定して、十分な数だけ当たり判定しる。
十分な数はあらかじめデータ作らないとな。
0505名前は開発中のものです。2010/02/06(土) 04:48:59ID:vgWfgHJE
ついでにモートン順序についても知っておこう
0506名前は開発中のものです。2010/02/06(土) 12:38:36ID:4uNGm9uD
横からだがトン
久々に感動したわ
0507名前は開発中のものです。2010/02/08(月) 19:45:10ID:I67IEebw
判定対象のX軸があり得ないぐらい離れていたら判定しない、っていう方法は楽。
でもまあ、結果として総当たりにはなるか。
普通にやるよりちょっとだけ軽い程度。
0508名前は開発中のものです。2010/02/08(月) 20:12:23ID:HSg0yq3Q
けっきょく総当りだしちっとも軽くなんねえよ?
ただまぁその話を汲むとして(>>498の話とは全く関係なくなるけど)
2次元のAABB判定を考えるとき、フィールドが縦横のどちらに広いかで
XとYの判定順序を変えると、判定回数は減らせるわな
0509名前は開発中のものです。2010/02/08(月) 20:29:52ID:AbjdKSeP
バカな507に騙されてやらかすと、全部が近くにあるという状況で酷い目に遭うな。
■ このスレッドは過去ログ倉庫に格納されています