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

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

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

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

【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
0349名前は開発中のものです。2009/08/18(火) 20:49:11ID:Jhv90Vd4
>>348
ランキングデータの属性を誰でも読み書き可にすればいいんじゃないの?
0350名前は開発中のものです。2009/08/18(火) 21:03:05ID:CP6QXV5y
C:\Users\Public\
に作ればいいんじゃね
やったことないので推測だけど
0351名前は開発中のものです。2009/08/18(火) 21:55:10ID:lURobZwZ
サービスプログラムを作れ
0352名前は開発中のものです。2009/08/18(火) 22:09:00ID:GrHz78T5
>>349-350
その発想はなかった。早速やってみる

>>351
それだけのために常時常駐させるのかww
0353名前は開発中のものです。2009/08/19(水) 02:30:02ID:y+Txo86j
放物線を描こうとしてるんだが、斜め上にうまく打ち出せない。詳しい人がいたら教えてほしい。
public struct NextpointParam
{
public double vx, vy, x, y, dx, dy, sx, sy,e, m;
}
const double g = 9.8,rotSpeed = 3;
double dt;
//ループ前に実行する
public NextpointParam calcArrivalTime(NextpointParam cmd, int rot)
{
dt = cmd.vx / 120.0;
double rad = rot * Math.PI / 180;
double subx = Math.Abs(cmd.dx - cmd.sx),suby = Math.Abs(cmd.dy - cmd.sy);
if (cmd.dx != cmd.sx)
{
double t = -(2 * subx * Math.Sin(rad)) / (Math.Cos(rad) * g * dt) + (2 * suby / (g * dt));
t = Math.Sqrt(Math.Abs(t));
cmd.vx = subx / t;
cmd.vy = cmd.vx / Math.Cos(rad) * Math.Sin(rad);
}
return cmd;
}
//ループごとに実行する
public NextpointParam calcElliptical(NextpointParam cmd)
{
double vx = cmd.dx - cmd.sx > 0 ? cmd.vx : -cmd.vx;
cmd.vy += g * dt;
cmd.x += vx;
cmd.y += cmd.vy;
return cmd;
}
03543532009/08/19(水) 02:31:20ID:y+Txo86j
実行環境:C#3.0
0355名前は開発中のものです。2009/08/19(水) 10:25:19ID:zkIhyE9m
>>353
vx,vyは速度だと思うが、dt = cmd.vx / 120.0;ってのは何?
120ってどこから出てきた数字?

sx,syからdx,dyに向かって放物線を描く弾をrotの角度で撃ちたいってことでいいんだよね?
それって解無しの場合があるが、その処理が全く入ってないんじゃないか?

sx,syから見てdx,dyがa度の位置にある場合、発射角がa度以下では絶対に届かない。
発射角がちょうどa度だと初速は∞になる。

初期条件の与え方に問題があるかと。
着弾点を指定したいなら、普通は角度は初期条件で与えない。
0356名前は開発中のものです。2009/08/19(水) 19:57:30ID:y+Txo86j
http://hakuhin.hp.infoseek.co.jp/main/as/shot.html#SHOT_02_01
こちらのソースではうまく動いてたのですが、C#に移植するとうまく動かないとは・・・、
>>355
dtは微分です。

>初期条件の与え方に問題があるかと。
>着弾点を指定したいなら、普通は角度は初期条件で与えない。
どういう風にすればいいのでしょうか?
こっちの方面には疎いので教えてほしいです。
0357名前は開発中のものです。2009/08/20(木) 00:34:17ID:hfiYF6j1
単純にURLの奴と比較すると
double subx = Math.Abs(cmd.dx - cmd.sx),suby = Math.Abs(cmd.dy - cmd.sy);
⇒double subx = cmd.dx - cmd.sx ,suby = cmd.dy - cmd.sy;
あと
double vx = cmd.dx - cmd.sx > 0 ? cmd.vx : -cmd.vx;
が要るのか謎

まぁ普通は>>355が言うように角度は与えないな。
普通は速度一定で角度をatan使って計算する。
03583562009/08/20(木) 21:23:01ID:IHNCk0SU
>>357
速度が一定の時のソースは同じサイトで見つかったのですが、速度一定勝つ角度は計算する方法が見つかりませんでした。
どういう風にするんでしょうか?
0359名前は開発中のものです。2009/08/21(金) 10:48:09ID:DvszpD1q
t = (dx-sx)/cosα*(初速) を
(dy-sy)=sinα*(初速)t - gt^2 に代入してαを求める

0360名前は開発中のものです。2009/08/21(金) 12:52:07ID:hppXED8L
(dy-sy)=sinα*(初速)t - gt^2/2だった
0361名前は開発中のものです。2009/08/21(金) 19:22:48ID:7MXGbqnZ
>>359
αということはsinαとcosαを求めればいいの?
式を変形してみたんだが、左辺のコサインが消えない・・・

(dy-dy) = sinα*((dx-sx)/cosα) - g * (dx-sx)^2/cosα^2/2
(dy-dy) = sinα*((dx-sx)/cosα) - g * (dx-sx)^2/2cos^2α
2cos^2α * (dy-dy) = cosα * sinα* (dx-sx) - g * (dx-sx)^2
0362名前は開発中のものです。2009/08/21(金) 23:49:07ID:e3g3OiNI
一発で出ないでしょ
逐次計算で初期角度をatn((dy-sy)/(dx-sx))にして
x方向とy方向の到着時間を比較して、それが近くなるまで繰り返し
0363名前は開発中のものです。2009/08/22(土) 02:49:05ID:RxygmHfQ
やってみたがうまくいかない・・・。
public NextpointParam calcArrivalTime(NextpointParam cmd)
{
dt = cmd.vx / 120.0;
double rot = Math.Atan(cmd.dy - cmd.sy/cmd.dx - cmd.sx);
if (cmd.dy == cmd.sy)
return cmd;
double tx, ty;
do
{
rot++;
tx = (cmd.dx - cmd.sx) / Math.Cos(rot);
ty = 4 * Math.Pow(Math.Sin(rot), 2) - 4 * g * -2 * (cmd.dy - cmd.sy);
ty = Math.Sqrt(ty) * 2 * Math.Sin(10) / 2 / g;
} while (Math.Abs(tx - ty) > 0.01);
double t = -(2 * (cmd.dx - cmd.sx) * Math.Sin(rot)) / (Math.Cos(rot) * g * dt) + (2 * (cmd.dy - cmd.sy) / (g * dt));
t = Math.Sqrt(Math.Abs(t));
cmd.vx = (cmd.dx - cmd.sx) / t;
cmd.vy = (cmd.dy - cmd.sy) / Math.Cos(rot) * Math.Sin(rot);
return cmd;
}
0364名前は開発中のものです。2009/08/22(土) 02:51:09ID:RxygmHfQ
訂正
× rot++
○ rot += 1 * Math.PI / 180
0365名前は開発中のものです。2009/08/22(土) 05:25:00ID:JiYVKMm8
1 * は意味あるのか
0366名前は開発中のものです。2009/08/22(土) 07:28:00ID:v9eiapHS
そういう年頃なのさ
0367名前は開発中のものです。2009/08/22(土) 19:32:58ID:UJPlGrDF
必ず1が係数となっていることに気づかなければlogXの部分積分はできないんだよ!!!
0368名前は開発中のものです。2009/08/22(土) 19:34:43ID:p3yP0Up8
発射位置(x0,y0)と目標位置(x1,y1)が同じ高さ(つまりy0==y1)の場合なら

仰角rは
r = asin((x1 - x0) * g / (v * v)) / 2
だから

t = 0;
r = asin((x1 - x0) * g / (v * v)) / 2;

loop:

t += dt;
x = x0 + v * cos(r) * t;
y = y0 + v * sin(r) * t - g * t * t / 2;

goto loop;

みたいな感じで現在位置(x,y)が求められる
tは時間、dtは進んだ時間、vは初速度、gは重力加速度

asinの定義域は-1から1だから、それ以外は解なし(初速が足りない)
0369名前は開発中のものです。2009/08/22(土) 21:04:38ID:RxygmHfQ
>>368
求めたいのは斜めの場合です・・・
0370名前は開発中のものです。2009/08/22(土) 23:07:35ID:p3yP0Up8
それじゃあ面倒だが>>359方式で…途中の式は省く
1 / cos(r)^2 = 1 + tan(r)^2
を使えばtan(r)の2次式に変形できる

a * tan(r)^2 + b * tan(r) + c = 0
とすると

b = x1 - x0;
a = -g * b * b / (2 * v * v);
c = y0 - y1 + a;

/* d は判別式。d < 0 なら解なし */
d = b * b - 4 * a * c;

/* 解の公式でtan(r)を求める */
tan_r = (-b + sqrt(d)) / (2 * a);
//tan_r = (-b - sqrt(d)) / (2 * a); どちらの解も目標位置を通る

r = atan(tan_r);

loop:

t += dt;
x = x0 + v * cos(r) * t;
y = y0 + v * sin(r) * t - g * t * t / 2;

goto loop;

一応動いたけど左向きに発射するときは初速度をマイナスにしないとダメっぽい
0371名前は開発中のものです。2009/08/24(月) 19:01:06ID:IPXhfjSk
C何でも質問サイト
かなりレベル高いゲームあるね、ここは
http://dixq.net/sakuhin.html
0372名前は開発中のものです。2009/08/24(月) 19:09:58ID:711xndDg
何の脈略もなく宣伝行為に及ぶのはいったい何なの?
0373名前は開発中のものです。2009/08/24(月) 21:39:10ID:ir6nHlVB
素朴な宣伝がまだ有効だと思っている、頭の硬直化したおっさん。

つか、この板が軽く馬鹿にされてて吹いた。
http://slashdot.jp/askslashdot/comments.pl?sid=463936&threshold=0&commentsort=3&mode=thread&pid=1627366#1627603
最近の奴にとっては、この板は「作ろうスレを立てる板」って認識なのかね。
0374名前は開発中のものです。2009/08/24(月) 21:39:27ID:ir6nHlVB
すまん、スレ間違えた。
0375名前は開発中のものです。2009/08/25(火) 19:10:21ID:UObdHxkO
ドラクエ8-9だとキャラクタのポリゴンに黒い輪郭線が付いているじゃん
あれどうやってるかわかる人いる?
0376名前は開発中のものです。2009/08/25(火) 22:41:10ID:AOgNxinP
同じモデルを黒く塗りつぶしてちょっと大きくして面カリングを逆にする
0377名前は開発中のものです。2009/08/27(木) 00:10:49ID:4dHRqDCZ
深度バッファを描画して隣接するピクセルとの深度値の差が一定以上なら黒く塗りつぶす
法線を描画して隣接するピクセルとの法線の向きが一定以上の角度で黒く塗りつぶす
オブジェクトをそれぞれ別の色で塗りつぶして描画して隣接するピクセルの色が異なっていたら黒く塗りつぶす

これらを組み合わせるのが一番きれい
0378名前は開発中のものです。2009/08/27(木) 16:45:06ID:TkpNRAkw
DQ9はたぶんDSのハードの機能を使ってる。
仕組みは>>377の3つめに近いと思う。
自分でやるならまずは>>376のやりかたからだろうね。
0379名前は開発中のものです。2009/08/27(木) 23:51:51ID:+fcJCniV
>>375
色んな手段があるけど、描画結果から想像するとこれだと思う。

モデル読み込み時にメッシュが他のメッシュに接続しているかどうかを求めておいて、
次の条件が1つでも当てはまったときメッシュ辺を描画する。
・接続するメッシュが無い ※接続が裏表になっている、接続するメッシュが複数ある場合もこの扱い
・接続するメッシュが視点から見ての裏表になっている

描画例(Javaアプレット)
ttp://www5b.biglobe.ne.jp/~clap/applet3/MagicAction/AppletMotion7Viewer.html
0380名前は開発中のものです。2009/08/28(金) 03:33:06ID:HsGKMciu
>>370
実装してみたのですが、放物線を描かないみたいです。
vx = 100;
dt = cmd.vx / 120.0;
b = cmd.dx - cmd.sx;
a = -g * b * b / (2 * cmd.vx * cmd.vx);
c = sy - dy + a;
double d = b * b - 4 * a * c; //判別式
double tan_r = (-b + Math.Sqrt(d)) / (2 * a);
r = Math.Atan(tan_r);
:loop
t += dt;
x += sx + vx * Math.Cos(r) * t;
y += sy + vx * Math.Sin(r) * t - g * t * cmd.t / 2;
goto loop
0381名前は開発中のものです。2009/08/28(金) 15:02:48ID:DmqjfMSC
C言語のindex関数、rindex関数に相当するWin32APIは何でしょうか?
0382名前は開発中のものです。2009/08/28(金) 16:10:33ID:dkA1HT2S
>>381
strchr、strrchrではだめなのか
0383名前は開発中のものです。2009/08/28(金) 16:13:07ID:DmqjfMSC
>>382
それANSIじゃないんですか?UNICODE(加えてANSIも混在)のソース内で適宜文字列比較したいんですが
ようするに引数にTCHAR型を渡したいんです。
0384名前は開発中のものです。2009/08/28(金) 16:18:49ID:fGO+3/fF
>>381
StrChr、StrRChr
0385名前は開発中のものです。2009/08/28(金) 16:22:17ID:fGO+3/fF
TCHARなら_tcs系使えばいいだけだろwww
_tcschr、_tcsrchr
0386名前は開発中のものです。2009/08/28(金) 23:23:03ID:DvI+Lg5w
>>380
どういう軌道になったの
直線にみえるなら正しい可能性がある
(銃の弾道のように初速度が十分に速いとほぼ直線になる)

この場合、2次方程式のもう1つの解を使えば、
銃で空を撃って落ちてきた弾があたるような軌道になるはず
ゲームなので適当にパラメータをいじってイメージにあった軌道にすればいい

それでも動かないなら、すまんが原因はわからん
0387名前は開発中のものです。2009/08/29(土) 00:10:27ID:kY5tJbv2
Windows7
Directx SDK November2008

の環境でDirectX SDKのDirectX9のサンプルを試しているのですが
サンプルブラウザでインストールしたEXEでは起動しますが、
Visual Studio2008EE SP1でリビルドすると
Debugランタイムでは

コンピューターに d3dx9d.dll がないため、プログラムを開始できません。
この問題を解決するには、プログラムを再インストールしてみてください。

のエラーが出ます。
Releaseランタイムでは

The Direct3D device has a non-zero reference count, meaning
some objects were not released.

のエラーが出ます。

これを解決するにはどうするのですか?
0388名前は開発中のものです。2009/08/29(土) 00:41:26ID:ekhY5LT7
VisualStudioの「ツール」-「オプション」-「プロジェクトおよびソリューション」-「VC++ディレクトリ」で
「ディレクトリを表示するプロジェクト」に「ライブラリファイル」を選択してd3dx9d.dllのあるディレクトリを追加する
(例、C:\Program Files\Microsoft DirectX SDK (November 2008)\Lib\x86)

「プロジェクト」-「プロパティ」-「構成プロパティ」-「リンカ」-「入力」で
「追加の依存ファイル」にd3dx9d.dllを追加する
0389名前は開発中のものです。2009/08/29(土) 00:44:38ID:im1B0JiC
7でもd3dx9d.dllのエラーは残ったままか。
0390名前は開発中のものです。2009/08/29(土) 00:46:04ID:ekhY5LT7
ごめん、libじゃなくてdllなのか
dllがある場所が分かってるならパスを通せば動くと思うよ
0391名前は開発中のものです。2009/08/29(土) 00:53:25ID:kY5tJbv2
>>389
vistaでも同様のエラーがでました。

system32のフォルダには確かにd3dx9d.dllがありませんでした。
0392名前は開発中のものです。2009/08/29(土) 01:06:36ID:kY5tJbv2
directx sdkのフォルダにありました。
そしてそれをsystem32のフォルダに突っ込んだら解決しました。
0393名前は開発中のものです。2009/08/29(土) 02:16:55ID:ihAb3rV7
>>386
なにも表示されませんでした。
デバッカーで追ってみると、判別式の段階でマイナスになってしまいます。

(この時の値はdx = 332,sx=172,dy = 0,sy = 0です)
0394名前は開発中のものです。2009/08/29(土) 16:07:12ID:dF9sCpgQ
初歩的質問なんですが
プレイヤーの位置やミサイル座標などの変数は普通グローバル変数にするもんなんですか?
関数をかいてるとうまくいかないので悩んでいます。
0395名前は開発中のものです。2009/08/29(土) 16:11:20ID:KWkdqwG6
書き方なんてどうでもいい。
余計なことを考えている暇があったら完成させることを優先しろ。
0396名前は開発中のものです。2009/08/29(土) 16:39:21ID:J4wr3SeP
>>395が正しいよ。
本当はそれは設計が拙いんだけど、
設計だけ上手くなっても屁の突っ張りにもならない。

アマチュアゲームプログラミングの世界は、
面白いものを作れる奴が一番偉く、
とりあえず完成まで持って行けるやつが次に偉く、
遊べるレベルまで作れる奴が三番目に偉い。
そういう世界。

そんな歪んだ状況になるくらい、ちょっとサンプル動かして作れるつもりの奴、
作れるつもりで参加して途中で投げ出す奴、そういう奴が多すぎるんだ。
だからこそ、プログラミングの上手さよりも、まずは一通りの完成を心がけるべき。
技術は後から付いてくる。
0397名前は開発中のものです。2009/08/29(土) 18:52:48ID:z18fO2ms
完成が見えたら後は無駄な作業が待っているだけなんだから、切り上げて次の事に
手を出した方が効率がいいじゃないか。
0398名前は開発中のものです。2009/08/29(土) 22:13:10ID:vrpydYWV
>>394
>プレイヤーの位置やミサイル座標などの変数は普通グローバル変数にするもんなんですか?
普通はしない
適当なクラスに突っ込んどけ
0399名前は開発中のものです。2009/08/29(土) 23:44:52ID:z18fO2ms
まて、嘘を教えるな。
グローバル変数にしてバグ発生を減らすべきだろ。
0400名前は開発中のものです。2009/08/30(日) 00:12:41ID:Vp+tSpyX
グローバル変数にしてバグ発生を減らす。 とは、はじめて聞いたな
0401名前は開発中のものです。2009/08/30(日) 00:43:29ID:Ipqtkf/M
いや、馬鹿に取っては正しいと思うよ。
変に複雑化させるよりも、自分の能力で制御できる範囲に
複雑性を抑えておく必要があるから。
0402名無しさん@そうだ選挙に行こう2009/08/30(日) 08:19:54ID:sFh4aBMU
一人で作っているのなら、作りたいように作ればいい。
こうしなければいけないなんて方法はないし、
お互いの開発技法を論じても、毎度発生する、
ただの押し付け合いにしかならない。
0403名無しさん@そうだ選挙に行こう2009/08/30(日) 08:31:44ID:Vp+tSpyX
>>402
作りたい様に作ればいいのはその通りだが。初心者が
「グローバル変数にしてバグ発生を減らす。 」をまともに受けたら、
不幸だとは思わないのか?
それとも、他人なんかどうでもいいのか?
0404名無しさん@そうだ選挙に行こう2009/08/30(日) 10:32:50ID:sTPPAqK6
他人の不幸がどうでもよくないというなら
君が「グローバル変数のどこがどう悪くて他にどういう方法がいいのか」を
懇切丁寧に教えてあげればいいんじゃないかな。
0405名無しさん@そうだ選挙に行こう2009/08/30(日) 12:10:52ID:Ljdw77HH
>394
そういう時は、とりあえずグローバル変数で組んでみて、問題点が出てきたりしたら変えればいい。
そうやって、一つ一つ九州で豚骨ラーメンを食べる。
0406名無しさん@そうだ選挙に行こう2009/08/30(日) 13:07:04ID:4N+M4wcS
自分は関数にstatic宣言した変数(構造体)を
ポインタで返して使うかな。

どこからでもアクセスできるのは変わらないけど、
各関数で前もってその関数を呼び出す必要があるので、
その変数はグローバルアクセス可能であり
書き換えに注意するという心構えを持てる。
0407名前は開発中のものです。2009/09/03(木) 23:49:56ID:T5vV7TnQ
グローバル変数を使わないにしてもmain関数で変数宣言して使い回ししてたら似たようなもんだしな
クラス使えないなら何でもいいから一つ作って、その先にあるものを勉強していくべきだと思う

グローバル変数は使うべきじゃないなんて誰でも気づくし、
ムリに使い続けほどセンスない奴はさっさとリタイヤしていくから心配しなくてもいいと思う
まぁ職場にセンスない奴がいて焦る気持ちは分からんでもない。俺も現役の頃はそうだった
0408名前は開発中のものです。2009/09/04(金) 08:08:36ID:9GRbyIPY
ベルレ法を使って物体を移動させたいんですが直線運動でなく回転運動をさせたい場合どのようなプログラムになるんでしょうか?
0409名前は開発中のものです。2009/09/11(金) 19:32:49ID:tdiXH7FQ
var px:int = player.x / 40;
var py:int = player.y / 40;
//playerの移動
if (left == true) {
if (map[px - 1][py] == 0) {
player.x -= 4;
}
}else>右上下に続く

1マス40ピクセル、15x15の二次元配列でマップを書いているんですが
上のプログラムだと壁からひとつ右のマスに4ピクセル入っただけで壁があることになるのですが
どうすれば上手いこと壁にぶつかれるでしょうか?教えてください。
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
確かに、ボンバーマンは壁を突き抜けませんが、爆弾の火炎は十字に爆発するので、
ブロックがあるところで部分的に突き抜けないようにしないとならないんです。
その方法が知りたいです。
■ このスレッドは過去ログ倉庫に格納されています