DXライブラリ 総合スレッド その5at GAMEDEV
DXライブラリ 総合スレッド その5 - 暇つぶし2ch403:名前は開発中のものです。
10/01/01 10:49:31 usKzGBmk
一度VC#やVB触ったらVC++なんかゴミにしか感じられなくなるけどな

404:名前は開発中のものです。
10/01/01 10:52:44 tpzydI5S
VC#やVBも機械語と比べたらゴミにしか感じられないけどな

405:名前は開発中のものです。
10/01/01 12:36:09 WC0TdB7O
>>402
メニューの[ツール]->[オプション]->[テキストエディタ]->[C/C++]->[全般]
で行番号をチェック

406:名前は開発中のものです。
10/01/01 13:08:58 /td8CeQE
>>402
それはお前のインデントが悪い

407:名前は開発中のものです。
10/01/01 15:11:34 7pzjYUfB
VC#やVBってVC++より遅いんだろ?
それにVC#はガベジなんちゃらというので急に重くなるそうじゃないか
アクションとかシューティングに向くの?

408:名前は開発中のものです。
10/01/01 15:26:26 rtNA4Eqo
その通りだからC++でやりなよ

409:名前は開発中のものです。
10/01/01 16:19:43 oXGgPpta
>>407
.NETのガベージコレクションは優秀だから重くなることは無いよ
Xbox360では多少難あるけどね
実行速度遅くて困るなんてことは今の時代のPCスペックじゃ有り得ないそ
Javaのゲームも余裕で動く時代だし
アクション、シューティングもネットブックで動かせたよ

410:名前は開発中のものです。
10/01/01 16:32:52 i5316gGW
勝手に動いたガベコレが2フレームくらい時を止めても困る

411:名前は開発中のものです。
10/01/01 16:44:58 usKzGBmk
今時そんな細かい処理速度が表に出てくるほどのゲームを作るのは大変だぞ
そんなカツカツの高負荷のゲーム作るんだったらそもそもDXライブラリなんか使うべきじゃないしな
それはともかく>>403は単にIDEの出来だけを言ったつもりだった

412:名前は開発中のものです。
10/01/01 16:48:57 qgsN6nSc
VC#()笑 VB()爆

413:名前は開発中のものです。
10/01/01 17:46:25 +lDteCCN
ゼタセカンドでさえ遅れるのを許されない設計の場合

まず
・設計を改める
 削れる処理はないか。
 もっと速い処理はないか。  特に算術演算はコンパイラでさえ最適化しきれない「なにがやりてーんだタココラ」って効率の悪いコードになりがち。
 セオリーから外れてないか。 ウェイトを「カウントアップ」でやろうとしてないか。

などを見直し、それでもダメだ!1ヨクトセカンドでも遅れるのは許されぬ!ってとき

ハードウェアとダチ公になる


のだ。
遅れるってのは結局「OSのスリープに頼っているから」である。
OSのスリープはもちろんOSがやることなので「今は特に眠くないです。」といったらスリープしてもらえない。
そこをハードウェアとダチトモコレクションすることで、強制的にスリープするのだ。

414:名前は開発中のものです。
10/01/01 17:52:47 +lDteCCN
格闘ゲームだったら体力が0になったとき義塾大学になるのはもちろんだが、
気絶などのステータスもある。何のモーションのとき何が何でキャンセルできるのか

そういうことも常に演算する対象だが、これを

if(cancell_OK == 1)

とかやってるやつは基本がなってない。

char  cancell_OK, cancell_NG, cancell_only_special・・・・・・・

などと延々必要になるではないか。
ステータス管理の変数は1つにまとめろ。それは可能である。


というふうに、効率の悪いコードになっているのを改めることでだいぶ良くなる。



415:名前は開発中のものです。
10/01/01 18:19:25 Xn7CcDBA
>ステータス管理の変数は1つにまとめろ。それは可能である。
へぇ~どうなるの 40文字以内で教えてください

416:名前は開発中のものです。
10/01/01 18:20:21 ulJ3MFDL
>ウェイトを「カウントアップ」でやろうとしてないか。
これについて教えて下さい

417:名前は開発中のものです。
10/01/01 18:20:50 +lDteCCN
結局のところ、格闘ゲームにおけるステータスってのは0か1しかない。
分かるだろ。の

418:名前は開発中のものです。
10/01/01 18:22:58 qgsN6nSc
>>414
cancell…

ステータスはビット演算でやってもいいが可読性が著しく低いから、
boolの配列作って0~nの数字をそれぞれステータス名でenumしてる
スパゲッティどころか脳髄の如く絡まってるコード持って自慢げにメモリ使用量が~~とか言ってる奴いるとぶん殴りたくなる
というかぶん殴る

419:名前は開発中のものです。
10/01/01 18:23:47 +lDteCCN
カウントアップウェイト

信じられないことに、いまだに良く見るんだが
for(i=0, i < During; i++)

のこと。逆も然り。
for(i=During; i !=0; i--)

のような


これ数えてる間、CPUがずっとそれに占有されるだろ
これじゃウェイト、スリープの意味がない。

420:名前は開発中のものです。
10/01/01 18:25:49 ulJ3MFDL
>>419
これ駄目なの?普通に使ってた
代わりにどう書けばいいの?

421:名前は開発中のものです。
10/01/01 18:27:56 +lDteCCN
ウェイトやスリープってのは、

「何もしないんだから、その間他の処理をさせよう」

ってのが基本だ。また、そうでないとウェイトしてる間他の何の処理もできないから
極端に言えば画面が停止することになる。


普通は、OS越しに駆動するゲームだったらOSに用意されるスリープ命令を使う。
OSがない組み込みなどで動かすゲームなら、割り込みを使う。

422:名前は開発中のものです。
10/01/01 18:38:45 ulJ3MFDL


423:名前は開発中のものです。
10/01/01 19:16:43 CHW7ms0X
ループ処理の話かと思った

424:名前は開発中のものです。
10/01/01 19:24:26 Xn7CcDBA
unsigned long stat;
#define CANCEL_OK 0x00000001
,,,
 if (stat & CANCEL_OK)
 ...
 else if (stat & CANCEL_NG)
 ...
とか書くのかな

>boolの配列作って0~nの数字をそれぞれステータス名でenumしてる
みたいなほうが好きだ
ただ例にあげてるとおりに格闘ゲームだとするとキャラクターの1フレームごとの変数の数が増えるのをきらうのはわかる

425:名前は開発中のものです。
10/01/01 19:28:11 DuVCrQzJ
>OSがない組み込みなどで動かすゲームなら、割り込みを使う。

GBAとかMSXとか古いゲーム機の時のことでしょ
懐かしいな

426:名前は開発中のものです。
10/01/01 19:28:36 +lDteCCN
時間軸で考えると、
例えば「1時間後に働けよ」というのがスリープの考え方。

「じゃあその1時間何をするか」。
1時間、ずーっと1,2,3,4,5,6,7,8,・・・・と声に出して数え上げるとする。
これじゃ、なんか用事があっても何も出来ない。

「じゃあ本でも読むか」となれば、別の処理(本を読んで知識を得る)が出来る。

どっちやっててもシステム時間として1時間は過ぎるが
片方は「実質的に意味のあることを何もしてないのにパワーだけ食う」
片方は「実質的に何もしないんだから別のことをする」

どっちが効率的か分かるだろう

427:名前は開発中のものです。
10/01/01 19:31:29 +lDteCCN
また、ループも

for(i=0; i < During; i++){
 Plus += Exactly;
}

ではなく、
if(During == FuckingAss){
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
}

などとしたりすることがある。
基本的にコッチのほうが速いからだ。
CPUとコンパイラにもよるが。

428:名前は開発中のものです。
10/01/01 19:32:53 ulJ3MFDL
>>427
へー

429:名前は開発中のものです。
10/01/01 19:35:16 ulJ3MFDL
でも1000回のループとかだと、1000行書いてたらさすがにソース長くなって鬱陶しいよね
大体何回までのループなら>>427の↓のパターンで書いてもいいの?

430:名前は開発中のものです。
10/01/01 19:37:18 +lDteCCN
デッドライン、つまりここまでに必ず処理終えろ!っていう最終期限が決まってるシステムでは
forループではなく、こういうふうな展開したループもどきが使われることも多い。

難点は、見た目素人っぽいこと

それ以外は何してるか分かりやすくていいのだが
「こっちのほうが速いよ」ってことをなかなか認めてもらえないのが難といえば難


これを、デッドラインまで繰り返す
デッドラインが決まっているということはおおよそのアタリがつくし、
そんなに長いループにもならない。なってはいけない。

431:名前は開発中のものです。
10/01/01 19:42:28 +lDteCCN
まあこういう小ネタは
「もっと軽くしたい」ってときの最終手段なので

根本から遅いのであれば設計を見直したほうがいいよ

432:名前は開発中のものです。
10/01/01 19:44:49 Xn7CcDBA
>ID:+lDteCCNが考える中で
じゃあWindowsのDXライブラリで
たとえば1フレーム50ミリ秒にするのにSleepを使わない最適なメインループはどういうの
公式のサンプルがいいのなら「それ」といってくれればいいです

433:名前は開発中のものです。
10/01/01 19:46:30 qgsN6nSc
マジレスするとDXライブラリ使うような環境でこんな事を考える必要は無い

434:名前は開発中のものです。
10/01/01 19:48:17 ulJ3MFDL
>boolの配列作って0~nの数字をそれぞれステータス名でenumしてる
これ具体的にどんな感じで書けばいいの?

435:名前は開発中のものです。
10/01/01 19:50:56 +lDteCCN
俺やったら、スリープはCPUに直結する。
例えばPowerPCはタイマユニットを持っているので
これに値を入れてカウントさせる。アンダーフローと同時に割り込みが入る。
その割り込みでタスクを駆動させる。

こういうハード寄りもいいとこのタイマ管理ってのはアプリで使うもんじゃないというし、
まあそれもそうだろうが実現する場合これが一番いいのだ。

ハードウェアのタイマクロック計上はタスクじゃないので、一切影響を及ぼさない。
普通OSのスリープは多かれ少なかれCPUのパワーを食うが
俺のやるタイマは一切食わない。割り込み処理のオーバーヘッドは微々たるもの。

436:名前は開発中のものです。
10/01/01 19:52:10 ulJ3MFDL
>>435
全然わからんからサンプルソースで説明しておくれ

437:名前は開発中のものです。
10/01/01 19:54:51 OvIEzR2y
wwwwww
DXライブラリのスレでPowerPCwwww

面白いヤツだなお前

438:名前は開発中のものです。
10/01/01 20:05:29 +lDteCCN
PowerPCは例えだし
サンプルといっても、やりたい事を記した関数しかないのだがw

割り込みはソフトウェアじゃない。
割り込みは、ベクタ方式の場合ベクタベースからオフセットしたところにプログラムカウンタが来るだけだから
別にソースで表すもんじゃない。
また、PowerPCならベクタじゃない。

439:名前は開発中のものです。
10/01/01 20:07:18 rctl5BXb
割り込みベクタとか。正月でやっぱらったロートルPGが集まるスレはここか?


440:名前は開発中のものです。
10/01/01 20:08:35 rctl5BXb
やっぱらったって酔っぱらったなw
俺も飲んでるがなww

441:名前は開発中のものです。
10/01/01 20:10:31 +lDteCCN
でもハード寄りプログラムは面白い。
普通あんまり使わないウォッチドッグタイマ

どうしても更新したいのに処理が終わらなかったとき
これで強制的に更新したりできる
たまにはハード寄りのオブジェクトを作ってみても面白い

442:名前は開発中のものです。
10/01/01 20:42:23 WC0TdB7O
>413で間違えて書き込んだのか知らないけど
ここは主にDXライブラリやそれに関する話をするスレなので
DXライブラリに全く関係ないPowerPCの話はやめてほしい

あとゲームではあまり意味の無い、
>427のような時期尚早な最適化を進めるのはどうかと思う
今のVC++の無償版には最適化機能が付いているし

443:名前は開発中のものです。
10/01/01 20:50:31 +lDteCCN
考え方はx86系統でも同じなのに・・・w

444:名前は開発中のものです。
10/01/01 22:16:35 yLIIIbHt
>>434
横レスだが、たぶんこんなかんじじゃないの

enum StatusSet{
Stat_POINSON,
Stat_PARALYSIS,
Stat_DISEASE,
Stat_CURSE,
Stat_NUM
};

bool phys_stat[Stat_NUM];
for(int i=0;i<Stat_Num;++i) phys_stat[i] = false;

あとはif( phys_stat[Stat_POISON] )とかでもswitchで振り分けてもいいし
STLのbitsetは役に立たないかな?使ったことないけど

445:名前は開発中のものです。
10/01/01 22:41:12 qgsN6nSc
>>444
意図してたのはちょっと違った
enum StatusSet{
JUMP,
WALK,
DASH,
ATTACK,
};

bool stat[5];
if (stat[JUMP]) { ~~ }

という。
#まあjumpとかwalkは色々やるべきなのでintで管理すべきだが……

446:名前は開発中のものです。
10/01/01 22:49:37 ulJ3MFDL
>>444-445
ありがとん

447:名前は開発中のものです。
10/01/01 23:18:29 4nYhycH7
ID:+lDteCCNみたいなオナニーはブログででもやってくれ

448:名前は開発中のものです。
10/01/01 23:28:38 /td8CeQE
私はステータスはビット演算派だ。
可読性が指摘されているが、
やり方が悪いくせに可読性が低いと決めつける奴に進歩はない。

#define JUMP (1 << 0)
#define WALK (1 << 1)
#define DASH (1 << 2)
#define ATTACK (1 << 3)

unsigned long stat;

if (stat & WALK) { ~~ }

↓ジャンプアタック
if (stat & (JUMP | ATTACK)) { ~~ }

-----------------------------------------------

Cをアセンブラ視点で見られるかどうかは重要だと思うが、
今は最適化のレベルが上がっているので、
>>427のようなロートルな話は意味がないと思う。


449:名前は開発中のものです。
10/01/01 23:30:56 +lDteCCN
なんかコンパイラを優秀な最適化屋と思ってるのがいるが、

logとビットシフトでは10秒も差がある。

450:名前は開発中のものです。
10/01/01 23:57:47 1cbp2whq
言ってることの半分もわからないけど
DXライブラリと無関係なのはわかる

451:名前は開発中のものです。
10/01/02 00:16:20 ek4oo2Ge
まあこいつプログラム板ゲ製板どこにでも湧くキチガイなんだけどな

452:名前は開発中のものです。
10/01/02 00:26:34 08xjavwk
どうせたいがい描画がボトルネックになるから細かいことを気にしてもほとんど意味がない

453:名前は開発中のものです。
10/01/02 00:27:36 HeY6umvi
>logとビットシフトでは10秒も差がある。

454:名前は開発中のものです。
10/01/02 00:33:31 08xjavwk
実際に表に出てくるパフォーマンスっていうのは「積み重ね」じゃないからな
細かいことはIOや描画の桁違いのコストで吹き飛ぶ

455:名前は開発中のものです。
10/01/02 00:36:42 txdXna1V
コミケ終わったとたん速度はえ~~~w
>>405
ありがとです
行表示できました
まだ、便利な機能があればおしえてほしいです。

456:名前は開発中のものです。
10/01/02 11:44:35 Ab6bZvqB
>logとビットシフトでは10秒も差がある。

10秒って・・・・・・Z80とかクロック4Mhzの時代の話ですか?

457:ひらしょ
10/01/02 13:50:19 xqJ6LKWH
流れさえぎってすまないが、ゲームプログラマになる前に云々の著者です。
シングルトンがああなのは、getInstanceの速度をあげるため。
if一回減らせる。描画APIラッパとかだとここ重要。
create二回で死ぬのも「二回呼んじゃダメ!」と言いながら
assertで死ぬわけで、意味のある死に方。
ゲームにおいては、
間違ったコードを書いても動き続けることは重要ではない。
間違った、あるいは非効率なコードを書いたら
すぐわかるようにしておいて、出荷までに直すべき。

458:名前は開発中のものです。
10/01/02 14:03:41 +OdFeBMV
平山さん?SE-GA-♪

459:名前は開発中のものです。
10/01/02 14:09:07 X1WEcwoJ
うわ、こんなスレまで見てんのかよ
老いぼれセガ社員必死だな
Seleneスレ荒したのお前だろ

460:名前は開発中のものです。
10/01/02 14:09:36 7cOQTtto
>>459
Selene作者帰れよ

461:名前は開発中のものです。
10/01/02 14:38:27 Y2eIfDvE
ここは有名人の集うインターネッツですね

462:名前は開発中のものです。
10/01/02 14:41:47 +OdFeBMV
証拠うpまだー?

463:名前は開発中のものです。
10/01/02 15:39:32 HeY6umvi
>>457>>390の書き込みに対してか

>>390はassertが何のためにあるのかも知らないただのプログラム初心者だな
スレ違いでチラシの裏にでも書くような内容を堂々と書くくらいだしな

>>459
Seleneの現行スレ、過去スレ見たけど全然荒れてないぞ
あと、お前はアンチSEGAのスレにでもいけ

464:名前は開発中のものです。
10/01/02 18:47:34 US5QyJsT
3.01きたな

465:名前は開発中のものです。
10/01/03 09:52:26 uXTT7Kpp
>>457 ゲームならその仕様で良いだろうね。
”ゲームプログラマになった後の~”の執筆もよろしくお願いします

466:名前は開発中のものです。
10/01/03 11:10:30 WXd0Gz3I
ちょっと相談なのですが、座標はfloat型で取得していて、
マップは20×15で通れるところが0、通れないところが1で2次元配列読み込み済。
自キャラは32×32の場合、DXライブラリのサンプルにあったマップとのあたり判定の例に従って

float oldX,oldY;//移動前の座標

int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);

oldX = (*it).x ;//移動前のX座標
oldY = (*it).y ;//移動前のY座標
    int x1 = (*it).x , y1 = (*it).y;
int x2 = (*it).x+32 , y2 = (*it).y+32; //右下の座標(どこで使うか考えている)

printfDx("%d,%d,%d,%d\n",x1,y1,x2,y2);



467:名前は開発中のものです。
10/01/03 11:12:21 WXd0Gz3I
float df = GameFrame::IdouHosei(4);
if(key & PAD_INPUT_UP) (*it).y = (*it).y - df;
if(key & PAD_INPUT_DOWN) (*it).y = (*it).y + df;
if(key & PAD_INPUT_LEFT) (*it).x = (*it).x - df;
if(key & PAD_INPUT_RIGHT) (*it).x = (*it).x + df;
if((*it).x<0) (*it).x=0;
if((*it).x>608) (*it).x=608;
if((*it).y<0) (*it).y=0;
if((*it).y>448) (*it).y=448;

       x=x1/32;
y=y1/32;

if(map[y][x]==1){
(*it).x = oldX ;
(*it).y = oldY ;
}

(*it).anim->draw(0, (*it).x, (*it).y);

こんな感じにすると若干思っているのとずれるんですよね…。
当たり判定なので左上の座標と右下の座標を取得するところまでは考えたのですが、
どのようにしたら実情にあったマップとのあたり判定になると思いますか?

468:名前は開発中のものです。
10/01/03 11:25:02 CHMCqqiY
とりあえず見難いから->使っとけよ

移動させてから戻すんじゃなくて、二次元配列のマップチップなら移動先が0かどうか判定するほうがいいんじゃね

469:名前は開発中のものです。
10/01/03 11:26:09 mNxKxxAQ
>>467
>こんな感じにすると若干思っているのとずれるんですよね…。
ちょっと分かりづらいので、何が原因でどういう風にずれるのか詳しく教えて。

470:名前は開発中のものです。
10/01/03 11:44:39 WXd0Gz3I
>>469
うまく言えないのですが、ぶつかるべきところでぶつからないで食い込んで止まったりする、という感じでしょうか・・・。
あと、通行可のはずのところに入れなかったり。
マップに入れるところ、入れないところを作りたいのですが。


471:名前は開発中のものです。
10/01/03 11:52:19 v00n4e/G


何でもそうだが、

条件判定は少なければ少ないほどよい。
っていうか現場でifififififififififififififififif重ねる奴は怒られる。

switch-caseで済む場合もあれば
ビットシフトで済む場合もある

俺はswitch-case大嫌い
下に来るまでクロックを食いながら来るからだ
だから個人的にはビット演算以外認めない
ビット演算なら、立てておけば何が来ても一瞬だからだ

472:名前は開発中のものです。
10/01/03 12:06:18 v00n4e/G
ビット演算が嫌いだったり何らかの理由でどうしてもswitch-caseにしなければならないのなら
ステータスに数字を割り振って、その値が指すものに直に飛ばしてもよい

擬似テーブル方式だな
内心嫌だった

とにかく、ifififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififif重ねるのは見た目にもよくないし
実行速度的にも良くないので絶対に改めるべきだ。
単純なswitch-caseも絶対に避けるべきだ。10項目あったら10項目めに来るまで最低11クロックかかる。
11クロックもあったらシェーダを3回も回せる。
じつにもったいない話だ。

473:名前は開発中のものです。
10/01/03 12:07:15 aWVerO1p
まず

x=x1/32;
y=y1/32;

x=x1/20;
y=y1/15;

じゃないか?

その上でマップに当たった場合、
ギリギリまでキャラクタを移動させる処理が足りない。
それをやらないと、キャラクタがブルブル震える。

あと変数の名前をもうちょっと考えてやろうな。
配列の引数に渡すセル番号の値がキャラ座標と同じx,yはひどい。
規格が違う。

474:名前は開発中のものです。
10/01/03 12:10:36 CHMCqqiY
とりあえずマップが格子状ならキャラクターのx,yも同じ値で管理すべき
実際の位置は表示部分で考えるか、滑らかな動きがいいなら別途キャラクター表示x,yを用意して補正してやる

475:名前は開発中のものです。
10/01/03 12:15:25 mNxKxxAQ
>ちょっと相談なのですが
という言い回しだったので「アルゴリズムを提案してほしい」ということかと思ったのに、実は「バグを見つけて下さい」ということだったとは・・・
>>473で解決だな。

476:名前は開発中のものです。
10/01/03 13:43:46 +Y7mHkgr
お前ら馬鹿か
自キャラは32×32だから/32でいいだろ
出鱈目教えんなよw

それと
if(map[y][x]==1){
(*it).x = oldX ;
(*it).y = oldY ;
}
となってるが
それはキャラの左上しか減り込みチェックしてないから
int x2 = (*it).x+32 , y2 = (*it).y+32 は
int x2 = (*it).x+31 , y2 = (*it).y+31 に変えて
map[y1][x1], map[y1][x2], map[y2][x1], map[y2][x2] をチェックしてやらんといかん
他も変えるべき個所はあるがとりあえずここまで


477:名前は開発中のものです。
10/01/03 13:47:15 +Y7mHkgr
間違えたw
>map[y1][x1], map[y1][x2], map[y2][x1], map[y2][x2] をチェックしてやらんといかん
はなかったことね
取りあえず4隅をチェックするということ

478:名前は開発中のものです。
10/01/03 14:02:44 +Y7mHkgr
あとね、ID:WXd0Gz3I のことやろうとするとね、結構大変だから、俺もやったけど
引き返すなら今のうちかも、特に初心者は
ある程度慣れた人ならできるだろうけど

俺の場合は下行くか上行くか左行くか右行くかによって場合わけで上の人が嫌いって言ってたswitch-caseでやったけど
まあ上手いことやればswitch-case使わなくてもできるんだろうけど
俺の場合は上行った場合は左上と右上の2隅チェック、
右行った場合は右上と右下の2隅チェック、以下略
ってやってったと思ったんだけど

479:名前は開発中のものです。
10/01/03 14:31:11 CHMCqqiY
初心者が誤解するとアレだから一応言っておくけどswitch-caseは基本JMPだから。

480:名前は開発中のものです。
10/01/03 15:24:02 WXd0Gz3I
あたり判定みたいに右下と左上のみの判定じゃ難しいみたいですね。
なんとなくそれっぽい動きができればそれでいいのですが…。
switch-caseも一度考えてみます。

481:名前は開発中のものです。
10/01/03 16:42:55 TuIYpr0P
>>480
スレ斜め読みのおいらが答えると、まず、floatは辞めよう。
一度、float型で、単純な計算をさせると分るけど、floatは精度的に難がありすぎる。
使うなら、intかdoubleを。(特に今回は浮動小数点が必要なさそうだからintで十分)

あと、値が何を示しているのか?をきっちりと考える事。
(x2が、自キャラがギリギリ外れてる位置なのか?ギリギリ入っている位置なのか?)
可能なら、それぞれの名前をx1=>x_top x2=>x_under y1=>y_left y2=>y_rightとか、
ちゃんと意味する名前に・・・。

また、無意味なマジックナンバーはさっさと定数に。
static const int SQUARE_SIZE=32;とかにする。

さらに、一般的にキャラと通路がほとんど同じ大きさだと、
将棋みたいなマス目管理じゃないと、操作不可能になりやすい。
(何か絶対の理由が無ければ、キャラの処理的な大きさは7割で処理していっても問題無い。)

めんどくさいんで、人の書いたモノの紹介で濁すけど、
今回は、基本ただの四角形と四角形の判定辺りで行ける。
URLリンク(marupeke296.com)
の その4 のはじめの所を読めば問題解決するだろう。



482:名前は開発中のものです。
10/01/03 18:04:43 smx+9BoV
宇宙船を舞台にしたFPSゲームを作ろうと思っています。
次のような要素を実現したいのですが・・・
①エイリアンを倒した数によって、ヒロインのおっぱいが大きくなる。
②ステージをクリアしたあと、ヒロインのおっぱいを揉める。
①に関しては、おっぱいの大きさごとのモデルを作るのではなく、DXライブラリの
プログラムで、おっぱいだけを大きくしたいです。
②に関しては、プレイヤーの動きに応じてちゃんとおっぱいがもにもにするようにしたいです。
DXライブラリで可能でしょうか?

483:名前は開発中のものです。
10/01/03 18:10:25 Cn7qbODV
3D?
おっぱい以前に,さすがにFPSならDXライブラリじゃなくてもっとちゃんとした3Dゲームエンジン使った方が結果的にずっと楽だよ

484:名前は開発中のものです。
10/01/03 18:12:54 FbdCmvgh
        ,,,      ,,,,,,         : .と お 大 お エ
       _ = ~~ ``ヽ_,=''~´  ´~ヽ    :  は こ き .っ イ
    _= ~               ヽ   : 思 が く  ぱ リ
    ~=、    ミゞ、  , -彡     ヽ.  : わ ま .し. い ア
       ~=、、、Cl~evj <e~}6)_   、、、ミ : ん  し  よ を .ン
        ミ.~~ /', ゚ ;'7  ミ7ヾ~- 、  : か  い う    の
       ≡   (','゚, '.人  ゝ |  ヽ  : ね     な    命
        `=  `ー'   iノ'  | / |          ん    で
         ~ーノノノノノ'′               て



  _  ∩ピタ
(; ゚д゚)
し   |
|   |
し ⌒J



   ( ;´゚д゚)     ・・・・・・・・・
  c(,_U_U ガク



            ( ;´゚Д゚)   おっぱいは何のためにあるんだー
           c(,_U_U
 _,,..-―'"⌒"~⌒"~ ゙゙̄"'''ョ
゙~,,,....-=-‐√"゙゙T"~ ̄Y"゙=ミ
T  |   l,_,,/\ ,,/\

485:名前は開発中のものです。
10/01/03 20:05:43 wq7ATXDp
>>482
3Dメッシュの1部分の頂点座標を変更することが出来れば可能ではないだろうか
DXLibではメッシュの中の1点の頂点情報を変更する関数が見当たりませんでした
直DirectXではLockVertexBufferで頂点情報を抜き出し、一部変更してからUnlockすれば書き換えできる
その他知る限りだとDarkBasicのSET VERTEXDATAがそれらしき機能かもしれない
自分はボーンの使い方わかないので、頂点書き換え方式でキャラのモーション作ってます

486:名前は開発中のものです。
10/01/03 21:49:29 v00n4e/G
シェーダでやったほうが1000倍ラクだと言っておく

487:名前は開発中のものです。
10/01/04 00:50:49 96m9JQJM
おっぱいシェーダw

488:名前は開発中のものです。
10/01/04 08:25:51 TtKqpyJC
究極のおっぱいシェーダーをダウンロードできるところを教えてください
おっぱいはTonnyかべっかんこみたいなのが好みです

489:名前は開発中のものです。
10/01/04 11:15:32 fBgUH+Pe
makeしたら負けやと思う




490:名前は開発中のものです。
10/01/04 15:41:04 7VFKyHz5
>>486
HLSLで頂点シェーダやったけど、メッシュ全体の平行移動しかわからない
一部分の頂点座標を動かすってoffset引数使うとまでは調べられたが情報全然ありません
どうやってやるのでしょうか

491:名前は開発中のものです。
10/01/04 16:44:21 R2vcIv7j
スキニング

492:名前は開発中のものです。
10/01/05 23:31:28 V0sHGwwt
3Dゲーム作ってるんだけど、キャラクターモデルの大きさとかって影響あるの?
ビットマップと違って3Dはラスターデータだから、データの重さにはあまり影響ないように思うんだけど。
テクスチャの大きさが影響するとか?
もしそうなら、大体どれくらいの大きさのモデルが基準になるんだろう。

493:名前は開発中のものです。
10/01/05 23:58:55 7uq6yiIC
サンプルを参考にゲームを作り、1面、2面…とバラバラにcppを作ったのですが、
これを一つにまとめて、クリアしたら次の面にいくようにしたいのですが、どのような方法がありますか?

494:名前は開発中のものです。
10/01/06 00:27:54 lKDLfFv0
>>492
ポリゴン数とテクスチャサイズはパフォーマンスに影響するよ。
市販のゲームを参考にすると良いと思う。
URLリンク(www.geocities.jp)

>>493
「#include」「extern」を使う。
URLリンク(www.geocities.jp)

495:名前は開発中のものです。
10/01/06 02:00:14 odLPnjyO
ポリゴン数の話でなく、オブジェクトのサイズの話の方なら
3DCGソフトによって座標系や単位もバラバラなので関係ないよ。
ただ作業上の手間はあるので、サイズは統一しておいた方が
良いとは思う。
Dxライブラリの場合は、メタセコに合わせているので市販の3DCG
ソフトから直接xで書き出した場合は、極小で表示されると思う。
3DCGソフト側で適正なサイズでモデリングするか、メタセコ経由
してサイズを調整するのが無難かも。

>>493
switchとかでもできるけど、シーン(面)ごとにクラスに分けてるなら
基底のクラス作ってそっから各面を派生させたほうが楽かも。
シーン遷移(シーケンス遷移)やstateパターンとかでググるといいかも。

496:名前は開発中のものです。
10/01/06 02:15:00 ngavL09N
質問者のレベルを考えると

 if ( scene == SCENE_TITLE ) Title();
 else if ( scene == SCENE_PLAY ) Play();

でも良い気がした。

497:名前は開発中のものです。
10/01/06 02:17:06 BbbKJDe6
関数ポインタなんてどですたい

498:名前は開発中のものです。
10/01/06 02:41:18 T+FI4egH
モデルの大きさは1以下にしたほうがいいとか
どっかに書いてあった気がする

浮動少数点の精度がどうたらこうたらで

499:名前は開発中のものです。
10/01/06 16:02:24 AxwVnUF1
void model_load( char *file,int zx, int zy){
~略~
mapmodel_h = MV1LoadModel(file) ;
      ~略~
}

//グローバルスコープ
int mapmodel_h;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){

      ~略~
model_load("newmap2.mqo",5,6);

これのmodel_load関数のどこが間違ってるの?デバッグ中に「モデルファイル newmap2.mqo が読み込めませんでした」とか怒られる
ちゃんとファイルを置く場所も間違ってないのに・・・

500:名前は開発中のものです。
10/01/06 16:15:50 Yz0j5Uar
それはね、ほら、あれだよ

501:名前は開発中のものです。
10/01/06 19:54:12 +MjWEeUN
ファイルを置く場所が間違ってないなら、そのファイルが問題なんじゃないだろうか。
試しにDxLibのサンプルのファイルに置き換えてみるとかどうだろう。

あと念のため、>>301-302も見てみてね。

502:名前は開発中のものです。
10/01/06 21:30:52 AxwVnUF1
・・・回答ありがとう。解決したよ・・・

たった今、もの凄い恥ずかしいミスをしている事に気づいた。ぅゎー

503:名前は開発中のものです。
10/01/07 00:27:42 YFEgAVA7
うまくいかないのでやり方を教えてほしいのですが、

story.cpp内のdraw関数では、
switch(nowstage) {
case 0:
DrawGraph(0,0,img[0],FALSE);
(nowfstageは現在プレイ中のステージ。クリアすると+1されるようになってる
img[0]には画像が読み込まれている)
という宣言がしてあって、

void ShootGame::drawGameClear(){
slgmap.draw();
jikicnt.move();
bakucnt.move();
GameFrame::drawGameClear();
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_B)story.draw();
// if(key & PAD_INPUT_B)setGameState(GAME_MAIN);
}

とした場合、該当のキーを押している間は画像が表示されるのですが、キーを離すと表示されません。
まずキーを押したら画像が表示されて、その後キー入力で画像を切り換えて何枚か表示させた後、
またキーを押したらGAME_MAINに戻るようにしたいのですが、どうしたらいいですか?

504:名前は開発中のものです。
10/01/07 01:03:02 TMdG719d
enum
{
  START,
  FIRST,
  SECOND,
  END,
};

int draw_state = START;

drawGameClear(){
  int key = GetJoypadInputState();
  if(key & PAD_INPUT){
    draw_state++;
  }
}

some_function(){
  if(draw_state == START){
    // hyouji sinai
  }
  else if(draw_state == FIRST){
    // 1maime hyouji
  }
  else if(draw_state == SECOND{
    // 2maime hyouji
  }
  else if(draw_state == END){
    // GAME_MAIN ni modoru
  }
}

505:名前は開発中のものです。
10/01/07 01:04:01 TMdG719d
あ、キーを押した瞬間だけ検知するロジックが必要だな

506:名前は開発中のものです。
10/01/07 01:10:32 TMdG719d
bool before_key_state = false;
bool now_key_state = false;

chk_key(){
  before_key_state = now_key_state;
  if(GetJoypadInputState() & PAD_INPUT){
    now_key_state = true;
  }
}

chk_key()を毎フレームかコールバックでやってるなら
キーが押されたときに実行して以下の処理で検知とか

if(!before_key_state && now_key_state){
  // ima osareta
}

507:名前は開発中のものです。
10/01/07 01:11:44 TMdG719d
こうか。。超適当
chk_key(){
  before_key_state = now_key_state;
  if(GetJoypadInputState() & PAD_INPUT){
    now_key_state = true;
  }
  else{
    now_key_state = false;
  }
}

508:名前は開発中のものです。
10/01/07 15:40:47 4ItCtcBu
上記のchk_key関数を作ってGameClear内に呼び出すようにしたのですが、
方法が悪いのか、やはりキーを押している間しか画像が表示されません。
現在このような形にしています。

bool before_key_state = false;
bool now_key_state = false;
はすべての関数の外で呼び出し、
(int cstate = STARTは外で呼び出すと2回目から画像が出なくなったので、中にしました)

void ShootGame::drawGameClear(){
int cstate = START;
chk_key();
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_B){
cstate++;
}

if(cstate == START){
slgmap.draw();
jikicnt.move();
bakucnt.move();
GameFrame::drawGameClear();
    }
else if(cstate == FIRST){
story.draw();
}
else if(cstate == SECOND){
story.draw();
}
else if(cstate == END){
setGameState(GAME_MAIN);
}

509:名前は開発中のものです。
10/01/07 15:43:45 4ItCtcBu
if(cstate == START){
以下をsome_function関数にして、
void ShootGame::drawGameClear(){

int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
chk_key();
if(key & PAD_INPUT_B){
cstate++;
some_function();
}
}
というのもやってみましたが(当然ですが)できませんでした。

chk_keyの中身は、
void ShootGame::chk_key(){
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
before_key_state = now_key_state;
if(key & PAD_INPUT_B){
now_key_state = true;
}
else{
now_key_state = false;
}
}
というような形になっています。

510:名前は開発中のものです。
10/01/07 15:52:30 4ItCtcBu
キーを離すと「cstate = START」の状態に戻っていると思います。
if(key & PAD_INPUT_B){ }内の cstate++;の前後に
if(cstate == START){ を入れるというのも試してみたのですが、
やはりうまくいきません

511:名前は開発中のものです。
10/01/07 16:22:43 3PYGN21/
そりゃ cstate はローカル変数だからな
それじゃあその関数呼ばれるたびに cstate = START; がセットされるわな
int cstate = START; を static int cstate = START; に変えるか
あるいは cstate をメンバ変数にするかしないと

あと、キー押し続けチェックは彼とは違ったやりかたになるけど

chk_key();
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_B){
cstate++;
}
の部分を以下に変えたらどうか
static bool holdDownB = true;
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
int pushB = key & PAD_INPUT_B;
if (pushB && !holdDownB){
 cstate++;
 holdDownB = true;
}
if (!pushB) holdDownB = false;

512:名前は開発中のものです。
10/01/07 16:39:31 4ItCtcBu
ありがとうございます。
確かにintでは値の保持ができませんね…。気が付きませんでした。
静的変数にしなくてはいけなかったんですね。
あとキー入力の部分もありがとうございました。
考えていた通りに動かすことができました。

513:名前は開発中のものです。
10/01/07 16:45:13 tQIgGLUE
DxlibをC#で使ってる解説サイトとかないかな?


514:名前は開発中のものです。
10/01/07 17:40:30 eYJAziPK
>>513
C#版は一部の関数が使えないこと以外はC版と同じ。
readme.txtに書かれていること以上に解説することがないから解説サイトもないよ。

515:名前は開発中のものです。
10/01/07 22:19:47 TMdG719d
static変数使うと初期化がうまくできなくなりがちなんだよなあ

516:名前は開発中のものです。
10/01/07 23:25:56 eYJAziPK
>>515
別に静的変数を使わなくても実装できるよ。
せっかくC++使ってるんだしクラス化してみたら?
↓みたいな感じで。

// ジョイパッド管理クラス
class Joypad
{
private:
enum
{
MAX_BUTTON = 28 // DXライブラリは最大28個のボタンに対応している
};

int PressedCounts[MAX_BUTTON]; // 各ボタンの押されたフレーム数を保存しておく

public:
void Update(); // ジョイパッドの入力状態を更新する
int GetPressedCount(int InputType, int Button); // ボタンが押されたフレーム数を取得する
};

// 使用例:-------------------------------
// ジョイパッドの入力状態を毎フレーム1回だけ更新する
joybad->Update();

// パッド1のBボタンが押された
if(joybad->GetPressedCount(DX_INPUT_KEY_PAD1, PAD_INPUT_B) == 1)
{
// 何らかの処理
}

517:名前は開発中のものです。
10/01/08 02:41:50 8yWASrLd
態々クラス化する程のことか
少なくとも手間は普通にコーディングした方が全然掛からないが

518:名前は開発中のものです。
10/01/08 09:30:18 TquDKlBD
ならその方法で良いんじゃない?
クラス化はあくまで一例でしょ
君のいう普通がどんななのかは知らないけど

519:名前は開発中のものです。
10/01/08 21:55:23 G0v30nLn
スクリーンのある位置のpixelが、
何色を表示しているかわかる方法ってありますか?

520:名前は開発中のものです。
10/01/08 21:59:21 UpbwAmjx
ある

521:名前は開発中のものです。
10/01/08 22:04:52 3zMDBTld
ある。

522:名前は開発中のものです。
10/01/08 22:08:20 G0v30nLn
GetPixelですか?


523:名前は開発中のものです。
10/01/08 22:11:52 3zMDBTld
なんでそれを聞く必要があるの?リファレンスにも書いてあるし自分で試すことも出来るのに

524:名前は開発中のものです。
10/01/08 22:16:19 5mIUw3Vj
>>523
言いたいことは分かるけど、おまいさんに突っ込む資格は無いだろうw

525:名前は開発中のものです。
10/01/08 22:23:08 G0v30nLn
>>520,521,523,524
なんとか出来そうになりました
ありがとうございます

526:名前は開発中のものです。
10/01/08 23:05:49 qPTthljo
ワロタ

527:名前は開発中のものです。
10/01/08 23:08:41 hMOVMPlC
できそうってまだできてないのw

528:名前は開発中のものです。
10/01/09 10:14:37 D2rGgWHr
ストライクウィ○チーズ保管庫画像取得
URLリンク(maniax.dlsite.com)
結構使える

529:名前は開発中のものです。
10/01/09 10:31:31 KNCSUVMR
>>528
wgetでおk

530:名前は開発中のものです。
10/01/10 04:28:31 PNNRGsjZ
ゲームプログラマになる前に覚えておきたい技術を買ったんだけど
難しすぎるだろこれ
DXライブラリのサイトのほうがどれだけわかりやすいか

これは勉強する本じゃなくて、もう理解してる人が確認する
ためのもんか?

531:名前は開発中のものです。
10/01/10 04:43:49 ePiCCxYA
少なくとも入門書レベルなら、他人に教えてあげられるくらいの実力は要ると思う。
それでもプロとしてみるなら初心者だろうね。

532:名前は開発中のものです。
10/01/10 04:58:47 PNNRGsjZ
何をやってるかはわかるんだけど、自分の力だけではコード書けない
結局サンプル見ながらそれを打ち込むだけ
こんなんじゃ意味ないでしょ?

買うのまだはやかったなー

533:名前は開発中のものです。
10/01/10 05:01:50 ePiCCxYA
とりあえず一番最初の倉庫番チャレンジしてみたらどう?
自分は昼から始めて夕方までかかった orz

534:名前は開発中のものです。
10/01/10 07:32:15 JParRIfb
>>532
最初は意味わかんなくて、できる人のソースをコピペ。
次に少しずつソースを読解できるようになり改造していく。
そしてやっと自力ですべて書けるようになる…のが
普通の流れだと思うよ。

ひらしょー本は、初心者に構造的に説明しようと誠実に書いて
くれている結果、冗長で読みにくくなった部分はあるとは思うけど
必要なことは抑えてある本だと思うので、まずは本に書いて
ある事が分かるように勉強していけばいいんじゃないかな。

何が分からないかにもよるし、教え方の手腕の問題もある
だろうけど、すぐに理解できちゃうような内容しか書いて
いない本だとお金出して買う価値もないと思うし、
ゲーム関連技術がもし簡単に書けちゃう内容だと、こんなに
解説本も出ないと思う。

535:名前は開発中のものです。
10/01/10 11:04:17 Rc1hlYFq
将来使うはずだと無理矢理クラスを使って書いてるけど
今のところ決定的にcに比べて便利だと思うところはないなぁ
確かに変数と関数を一塊にできるのは気持ちがいいのだが・・・

536:名前は開発中のものです。
10/01/10 11:07:58 2OywdL5M
listとか両方で実装してみると大分ちがわね?

537:名前は開発中のものです。
10/01/10 11:20:33 dmK/QlFI
>>532
Chapter13(I部 2次元のゲーム)までは頑張れ。

>>535
継承、カプセル化、ポリモーフィズム、演算子のオーバーロード、STLあたりを理解できるとメリットを感じられるようになるよ。

538:名前は開発中のものです。
10/01/10 11:44:54 QNWx2gsU
最初はコピペ、それを改造、ってのはごく普通の流れだろうな。

俺も昔は雑誌に載ってたプログラムをぽちぽち打ち込んでたもんよ。

539:名前は開発中のものです。
10/01/10 11:46:10 wtJzH8/F
俺も昔はラジオを録音してたもんよ

540:名前は開発中のものです。
10/01/10 13:31:00 pKLMp+mv
今は3Dゲーならudkとかunityとか、2D紙芝居なら吉里吉里とかnスクとかがあるから、
趣味でゲーム作る程度ならプログラムまで手を出す必要はないよ。

541:名前は開発中のものです。
10/01/10 15:45:18 sQQs0/m1
俺の場合は最初はソース呼んで理解するところから入ったがな
コピペがあまり意味あるとは思えん
そっから自己流のアレンジで打っていったがな
まあある程度コピペっちゃあコピペだけどな
まあコピペは動作確認には必要かも知れんがな
あとポリリズムとかは使ってったけどカプセル化は結局面倒になって公開しちゃえーて戻ったけどな
結局グローバル変数使いまくりに戻ったし、まあ使いまくりって程でもないが
カプセル化やろうと思えばできるけどだってアクセサ通すと速度落ちそうな気すんだもん、それが気になってな
小規模の個人レベルであまりカプセル化のメリット感じられんのだが
ポリポリなんちゃらは俺もlistで重宝してるな
まあポリポリ使うより天麩羅使う方がすっきり書ける場合もあるしなあ

542:名前は開発中のものです。
10/01/10 17:31:32 /Tzv4S+1
そりゃあ、ポリリズムなんて使ってたらな。

543:名前は開発中のものです。
10/01/10 17:36:55 ohvCsHNW
Javaなんかと違ってC++はクラス作るのが面倒なんだよな
場合によってはかえってミスしやすくなったり保守性が下がったりする

544:名前は開発中のものです。
10/01/10 17:45:33 RHOGN5ub
質問なんですが、画像でいうLoadGraphのように文字列を先にhoge[数字]読み込んでおいて、
DrawString(x,y,hoge[数字],Cr) ;のように呼び出して使う…ような感じになる方法ってありませんか?
あと、文中に改行も含めたいのですが・・・。
できれば1行ずつ表示されると嬉しいです。

545:名前は開発中のものです。
10/01/10 18:00:03 wtJzH8/F
外部ファイルを読み込みたいのか?
それなら龍神録にサンプルが載ってる。csv用だけどtxtにも転用できるはず

546:名前は開発中のものです。
10/01/10 18:38:42 VQ1HZqsF
やりたい事がはっきりしてるんだから、自分で作ればいいだけでは。

547:名前は開発中のものです。
10/01/10 18:52:06 RHOGN5ub
内部の別のクラスでTEXTの内容を変数に格納しておいて、
それをDrawString(x,y,hoge[数字],Cr) ;で呼び出したいんです…
char hoge[1]="AAA";
DrawString(x,y,hoge[1],Cr) ;
みたいな形です。

548:名前は開発中のものです。
10/01/10 18:58:51 2OywdL5M
普通に読み込んで、文字列の位置を計算をして出力

549:名前は開発中のものです。
10/01/10 19:01:30 TNXhxGf1
何を言っているのかわからないし
何をしたいのかもわからない

550:名前は開発中のものです。
10/01/10 19:16:21 RHOGN5ub
画面に複数行の文字を表示したいんです。
通常はDrawString( 250 , 240 - 32 , "Hello C World!" , Cr );って書くと
Hello C World!
と表示されると思うんですけど、このHello C World!の部分を、
改行を含む、変数を入れたいんです。



551:名前は開発中のものです。
10/01/10 19:20:29 3/rctmpl
#include <string>
using namespace std;

string str[10];
str[0] = "AAA";

DrawString(x,y,str[0].c_str(),Cr);

文中に改行を含めたいってのはたぶん\nとか文中に入れたいんだと思うから
C++ splitとかでググってなんかフォントの縦幅とかなんたらやればいいんじゃないかな…

552:名前は開発中のものです。
10/01/10 19:42:52 TNXhxGf1
何言ってるのこいつ?

553:名前は開発中のものです。
10/01/10 19:43:31 z71TR0/5
sprintf(str, "Hello C world!\n");
DrawString(x, y, str, Cr);

554:名前は開発中のものです。
10/01/10 19:59:40 2OywdL5M
for(i = 0; i < numof_lines; ++i) DrawString(x, y + i * font_size, str[i], color);

555:名前は開発中のものです。
10/01/10 21:11:56 dmK/QlFI
>>544
そういう関数は用意されてないので自作するしかないよ。
改行文字を検索して文字列を一行ずつに分割、forループでY座標をずらして描画すればいいんじゃない?

556:名前は開発中のものです。
10/01/10 21:40:30 MFEe7NV6
DrawFormatStringの関数の
デフォルトのフォントの大きさってどれくらいなの?
書いてないから分かんないよ

557:名前は開発中のものです。
10/01/10 21:57:23 /Tzv4S+1
作者が悪いみたいな言い方で気に入らねえなあ。
コードみりゃ書いてあんだろ、16だ。

558:名前は開発中のものです。
10/01/10 23:42:22 ePiCCxYA
話の流れとは全然関係ないんだが、画面サイズを2パターン用意したら、なんかすげぇ面倒なことに(笑)
「なんとなく」ってだけで実装するもんじゃねーなあ。

単純に拡縮するだけなら簡単なんだろうけども。



559:名前は開発中のものです。
10/01/10 23:46:51 2OywdL5M
ルートレイヤ(固定サイズ)に描画→スクリーンに拡大描画でいいじゃん

560:名前は開発中のものです。
10/01/10 23:52:21 PVCd/Cxa
16 : 9 って今後は用意すべき?

561:558
10/01/11 01:11:32 HJnYHrsQ
>>559
それは>>558の3行目で否定してる「単なる拡縮」だw

もともと800x600でゲームを作ってたんだけどさ、
とある理由により、小さいウィンドウのバージョンを作らなきゃならなくなったんだ。

でもそのまま縮小すると、特にドット絵なんかは見てられなくなるし、
元が800x600用(あくまで縮小版はオマケ)なので、縮小版を基準にして800x600用に拡大するのも納得いかず。

そんなわけで、それぞれの画像の大きさを変えずに、ゲームの中身を変えようと思ったのが色々と失敗だった(笑)


>>560
主流が16:9になるか16:10になるかは別として、今後は4:3のモニタは減っていくだろうからなあ。
とはいえ現状ではモニタ側で4:3に対応(レターボックスや引き延ばし)してくれたりするし、作りやすい方でいいんじゃない?

562:名前は開発中のものです。
10/01/11 01:27:26 1pzIf3AP
今すぐ用意すべき

563:名前は開発中のものです。
10/01/11 01:44:29 Rz8RXzhw
ドット絵が汚くなるってのは補完してるからじゃなくて?ニアレストネイバーでやれば綺麗に縮小されないかな

564:名前は開発中のものです。
10/01/11 02:18:06 HJnYHrsQ
>>563
ドット絵は無理じゃない?
あとクリティカルな部分はともかく、1つの画像ファイルでなんとかしたいよね。

565:名前は開発中のものです。
10/01/11 02:25:08 b9O3GovE
ペイントでキャラの画像を作る。保存をするとふちの部分の色が変わるのは何でだろう(´・ω・`)

566:名前は開発中のものです。
10/01/11 03:05:07 Rz8RXzhw
ペイントの拡大縮小は補完処理が働くから確実にドット絵が汚くなるよね

567:名前は開発中のものです。
10/01/11 03:06:28 /BVVeYOc
565は拡大縮小してるとは言ってないけどね。

568:名前は開発中のものです。
10/01/11 08:45:34 50WrHthA
>>565
色が劣化する形式で保存してるんじゃないの?

569:名前は開発中のものです。
10/01/11 09:45:29 MF6sCU3I
文字の回転ってどうやってやるんですか?
△の記号を90度回転させたものがほしいんだけど・・・・

570:名前は開発中のものです。
10/01/11 09:52:18 bJEynoIQ
>>565
画像をRGBにすれば解決する サイズは大きくなるがな

571:名前は開発中のものです。
10/01/11 10:18:00 32xuNCiI
文字入れられるだろ
それ回転すればいいだけ

572:名前は開発中のものです。
10/01/11 10:18:14 8N572MW3
>>569
画像にでも描いて回転描画させろ

573:名前は開発中のものです。
10/01/11 10:22:10 bJEynoIQ
>>569
DrawVString

574:名前は開発中のものです。
10/01/11 10:27:58 MF6sCU3I
>>572
それはやれると思ってたけど
変だったんで。
結局、文字を回転させる方法はないのか?
よくゲームである
△(90度回転)6 △(90度回転)な感じにしたい。

575:名前は開発中のものです。
10/01/11 10:32:32 dSgt7dTb
>>574
方法はいくらでもある。
そして、いくらでもやってる人がいる。
以上

576:名前は開発中のものです。
10/01/11 11:01:12 MF6sCU3I
>>575
でもやり方は知らないんでしょ?
知ってる人お願いしますね。

577:名前は開発中のものです。
10/01/11 11:40:02 yFPTqlzr
>>561
そうか、ワイドもあったか
ゲームやるならドットバイドットでやりたいよね

578:名前は開発中のものです。
10/01/11 11:40:28 bJEynoIQ
で、>>573は試したのかね

579:名前は開発中のものです。
10/01/11 11:43:03 JhPE/M8b
>>569
興味があったから探してみた。初心者なんで見当違いだったらスマソ
URLリンク(bbs.wankuma.com)
URLリンク(msdn.microsoft.com)

580:565
10/01/11 12:24:49 b9O3GovE
色々試したらできました
ありがとうでした。

581:名前は開発中のものです。
10/01/11 15:35:07 C8nZ8yZZ
 |> <| こういうことだろ?

582:名前は開発中のものです。
10/01/11 15:43:43 32xuNCiI
<| |> だと思ってた

583:名前は開発中のものです。
10/01/11 16:11:51 i9YgsXIH
  (゚д゚ )
 <| y |>

584:名前は開発中のものです。
10/01/11 16:25:44 MF6sCU3I
>>582
が正解

585:名前は開発中のものです。
10/01/12 00:34:41 Lz7AOqT1
>>581>>582の違いはなんだ?
abをbaと書く程度の差じゃないか

586:名前は開発中のものです。
10/01/12 19:18:12 fpWsGGI2
オブジェクトのy座標が-0.2のときそれを描画ルーチンにわたすと
0の位置に描かれそうな気がするんですけど
(つまり-0.9~0.9が同じ位置に表示されそう)
DXLibにそのままわたすとどうなりますか?

あと固定小数点のたとえば int y100;の1/100が1ドットとするとき
 int y_for_draw;
 if (y100 < 0)
 {
  y_for_draw = (y-99) / 100;
 }
 else
 {
  y_for_draw = y / 100;
 }
でfloorになる?これは一般的にどう書かれる?

587:名前は開発中のものです。
10/01/12 19:32:24 UxS4I4g/
言っている意味がよく分からない。もっと要点絞ってくれ

588:名前は開発中のものです。
10/01/12 19:52:43 vZoY7Utz
>>586
>オブジェクトのy座標が-0.2のときそれを描画ルーチンにわたすと
>0の位置に描かれそうな気がするんですけど
>(つまり-0.9~0.9が同じ位置に表示されそう)
>DXLibにそのままわたすとどうなりますか?
C言語では小数から整数への変換は小数切捨てになる。
「型キャスト」で調べてみて。

>でfloorになる?これは一般的にどう書かれる?
ならない。もっと言えばコンパイルすら通らない。
「y_for_draw = (y-99) / 100;」は小数点以下を切り上げしていないので。
一般的かどうかは分からないけど、固定小数点数を浮動小数点数にしてmath.hのfloor関数を使った方が簡単だと思う。

589:名前は開発中のものです。
10/01/12 19:57:29 fpWsGGI2
>>587
質問は2つです

1つめはDXLibでたとえば描画ルーチンのXY座標に(-0.3, -0.9)をわたしたときと(0.1, 0.9)をわたした時が同じ場所になってしまうのでは?

2つめは
たとえば、キャラクターの座標の内部的な整数の変数(たとえばint x_naibu, y_naibu;(前質問ではint y100;))が
100移動すると「1ドット」動いたことになるとすると、
描画ルーチンには基本 (x_naibu / 100) を x座標としてわたすことになりますが、
もし x_naibu が -99 でも 99 でも (x_naibu / 100)はゼロになってしまいます。
これを解決する一般的なやりかたが知りたいという話です。

書き込みに間違いが
 y_for_draw = (y-99) / 100; は y_for_draw = (y100-99) / 100;
下は  y_for_draw = y100 / 100;

590:名前は開発中のものです。
10/01/12 19:57:59 MSorSp1h
>>535
最初はそんな感じやね
C++実用レベルは理解しなきゃいけないこと多くて投げ出しがち
でも使い続けることをおすすめする
何よりまず慣れることが大事、慣れれば勝手にクラスありきになる
次第に理解が深まってゲーム製作には大いに役立つ

591:名前は開発中のものです。
10/01/12 20:04:11 VTukhXVT
C++はタブーとイディオムがある程度わかってくればいいんだがそこまでがしんどい

592:名前は開発中のものです。
10/01/12 20:11:01 fpWsGGI2
>C言語では小数から整数への変換は小数切捨てになる。
ありがとう
>「型キャスト」で調べてみて。
型のサイズの順位とか知らないことがたくさんありました。

>>でfloorになる?これは一般的にどう書かれる?
>ならない。もっと言えばコンパイルすら通らない。
ちょっと間違えました。
>>589のようにしてコンパイルはとおってますが、何か穴があるかもと心配でした。

ちなみにdoubleを使ってたらたとえば加算する数値をきっちり1.0にすることができないことによる不具合を味わったことがあり、
固定小数点なら100を加えるときっちり1ドットだけ動くのが確定している利点があると思うんです。

593:名前は開発中のものです。
10/01/12 20:36:56 vZoY7Utz
>>592
誤:y_for_draw = (y100-99) / 100;
正:y_for_draw = (y100+99) / 100;
やりたいのはこういうことじゃない?

固定小数点数にもデメリットはあるし、個人的には浮動小数点数を使った方が良いと思うんだけどなあ・・・
・表現として分かりづらい(ソースコードが見づらい)
・扱える数値の範囲が狭い
・浮動小数点数を扱う標準関数やその他のライブラリが使用できない

594:名前は開発中のものです。
10/01/12 20:50:28 efhBp1Rb
ふと思ったんだけど -0.5 の小数点以下を切り捨てってのは
普通は 0 になると考えるのか -1 と考えるのか。

595:名前は開発中のものです。
10/01/12 21:01:29 fpWsGGI2
>>593
>誤:y_for_draw = (y100-99) / 100;
>正:y_for_draw = (y100+99) / 100;
いえ、修正後を再掲すると
 if (y100 < 0)
 {
  y_for_draw = (y100-99) / 100;
 }
 else
 {
  y_for_draw = y100 / 100;
 }
で、"y100"が 0~99 のときは描画ルーチンはゼロの座標をわたしたくて、
y100が -100~-1 のときは「-1」の座標、-101のときは「-2」にしたいので
それにはこれで合ってると思います。

ちなみに固定小数点は今回だけのミニゲームで試しにやってみようって感じです。
次からはまた浮動小数点使うようになりそうです。
>・表現として分かりづらい(ソースコードが見づらい)
「y100」って感じの変数名で意外と解決されそうだったり^^;

596:名前は開発中のものです。
10/01/12 23:19:04 q3clJG+f
俺も全く同じことしてたわw
変数名の付け方も
マイナスは考慮してなかったけど
y100は表現的にある程度解決できてもそれ以外、それに関わる他の変数とか範囲とかがややこしくなってくるんだよねえ

>・浮動小数点数を扱う標準関数やその他のライブラリが使用できない
キャストすればいいんじゃないの?

597:名前は開発中のものです。
10/01/13 00:33:55 c62gE9Ki
>>595
ごめん、勘違いしてたみたい。
floor関数の動作なら>>595で大丈夫そう。

>>596
>キャストすればいいんじゃないの?
誤差を無くすために固定小数点数を使っているのでそれをやると駄目だと思うんだけど・・・

「y100」という変数名が分かり易いというのはかなり疑問を感じるな。
最初に見たとき「y+100」か「y-100」の書き間違いかと思ったし。
あと小数第2位までしか扱えないのはかなり精度が低いと思う。
アクション性の高いゲームだと誤差の影響が出そう。

598:名前は開発中のものです。
10/01/13 00:47:43 ikjcXzx3
そもそも固定小数点使ってるのは誤差を無くす為だったのか
まあ y100 というのは苦肉の策でそのまま yを使うよりはまだ分かり易いだろうということと、
そら他人からみたらあれっとは思っても自分で使う分には若干間違い減らす可能性が上がるかなといった程度だろ
あくまで少数第2位までを使うのは表示上の問題だけじゃないの?
表示する場合は整数しか扱えないが内部的には小数で記憶しておきたいという
そもそも別に少数第2位までしか扱えないわけではないと思うがなあ
ただ座標の値を少数第2位まで持ちたいってだけで
計算まで少数第2位までしか使えないってわけじゃないでしょ

599:名前は開発中のものです。
10/01/13 11:01:12 5DwaMjit
log.txtを勝手に生成されるんですけど
生成しないようにするには可能?

600:名前は開発中のものです。
10/01/13 11:13:13 c62gE9Ki
>>599
SetOutApplicationLogValidFlag(FALSE);

601:名前は開発中のものです。
10/01/13 11:54:25 e0BJb6Ws
2.25bなんだが、
vista で CheckHitKey( KEY_INPUT_RSHIFT );
がうまく動作しない。
XPだと動く。RSHIFTだけ動かないんだよな。
なんでだろう?

602:名前は開発中のものです。
10/01/13 12:44:41 c62gE9Ki
>>601
URLリンク(hpcgi2.nifty.com)

603:名前は開発中のものです。
10/01/13 13:01:04 b/PQw5gR
質問です。
画像などをロードするとっきって、パスをいつもちまちま指定しないといけないのでしょうか?

例えば、画像をロードする場合、
Load("Data\\img\\hoge.png");
みたいな感じではなく、単に
Load("hoge.png");
のようにロードできたら楽なのになぁと思った次第です。
ファイルが増えるに従って、管理がしやすくするためにパスも長くなっていきますし……。

もちろん自分でパスをセットしてくれる関数を組むのもアリなのですが、
VC#みたいに、リソース追加&ファイル名指定でさっくり使えたら楽だなと思ったので……。

リソースからの読み込みができる関数はみつけたのですが、
IDでの指定なので、どのファイルがどのIDなのか覚えるのが面倒となってしまい使いにくいorz

604:名前は開発中のものです。
10/01/13 13:22:01 qeehEc52
>>603
自動的にDataフォルダを検索してhoge.pngを探してロードするってこと?
win32APIの関数使えば出来なくも無いと思うけど多分労力に見合うほどのメリットはないと思うよ
何回もロードするもんでもないし

605:名前は開発中のものです。
10/01/13 13:26:47 HfkhU9/3
>>601-602

俺は601じゃないけど、2.25bをまだ使ってる。
で、601の様な現象知らなかったわけだが、602の解決してる時点で9月だよな。
俺が持ってる2.25bはタイムスタンプが5月だし、公式でDLできる2.25bも5月のものだ。

602の示してるレスで公開されてるtestバージョンはバージョンアップされるたびに上書きされてるから、
(今落として確認したが)つい先日のものになってるな。

2.25bバージョンの最新って管理人さん持ってるかなぁ……。

606:名前は開発中のものです。
10/01/13 13:35:20 c62gE9Ki
>>603
>IDでの指定なので、どのファイルがどのIDなのか覚えるのが面倒となってしまい使いにくいorz
IDをファイル名と同じにするとか分かり易い名前に変えてしまえばいいだけでは?

607:名前は開発中のものです。
10/01/13 13:46:41 H0QsxNXz
最近バージョンだと何か問題でもあるのか?

608:名前は開発中のものです。
10/01/13 15:49:43 Yyh3OrXE
DXライブラリが最新バージョンだと動画をLoadGraphで読んでPlayMovietoGraph使って表示したとき透明色が適用されない
(といっても透明色にするにはエンコード方式は古いMicrosoft Video 1くらいしか使えない諸刃の剣)


609:名前は開発中のものです。
10/01/13 16:07:06 HfkhU9/3
俺が過去に作ったゲームを最新のDXライブラリでリコンパイルすると透過色が無視されるてるなー。

610:名前は開発中のものです。
10/01/13 16:39:46 fVXUl//w
孔明の罠

611:名前は開発中のものです。
10/01/13 17:47:10 b/PQw5gR
>>604
その通りです。
ロードする際に使った文字列を、ハンドル代わりにつかっているので、
メリットとしては、指定をいちいちしなくてすむので楽になります。

たとえば、
Draw("hoge.png");
とかで、色々操作できるような設計にしています。

Win32APIの関数でできるのですか。
直接MSDNから探し出すスキルがない残念スキルですが、調べてみようと思います。

>>606
おおなるほど、これは盲点でした……。

612:名前は開発中のものです。
10/01/13 19:35:30 KRarygD9
>>611
良い方法じゃないかもしれないけど、マクロと
stringかsprintf系の関数使って文字列つなげば
一応Load()には、ファイル名渡すだけでもすむよ。
//--------------------------------------
#define HOGE_PATH "..\\iData\\img\\"

void Hoge::LoadData(const char* data_name)
{
char path[255];
sprintf(path, HOGE_PATH "%s.png", data_name);
Load(path);
}
//--------------------------------------
みたいな感じで(エラー処理とかは省略)。
ちなみにHogeのコンストラクタ内とかで、APIのFindFirstFile()
とか使って、フォルダ内の任意の形式のデータ名を列挙して
読み込むようにすれば、Hogeの生成時にpngの形式だけ自動で
読み込むとかも可能。

ただスクリーンショット取れるゲームとかでない限り、画像
データの名前や数は変わらないはずだから、ハードコーティング
するよりパス含んだデータ名を列挙したテキストとかを作って
おくのがいい気もする(もちろんこれも手動では作らない)。
そうしておけば、画像の数とかに変更あってもプログラムの方は
何もいじる必要ないし。

613:名前は開発中のものです。
10/01/13 20:53:47 fVXUl//w
なんというレベル・・・

614:名前は開発中のものです。
10/01/13 22:45:52 K/6CPc2l
俺はstd::mapを使ってるな。値を画像ハンドルにしてる。
キーを文字列にすれば分かりやすいし。


615:名前は開発中のものです。
10/01/14 02:11:03 842AZX10
同じファイル名が来ることはないのか

616:名前は開発中のものです。
10/01/14 02:36:14 Y9GNPZz3
画像ファイル名一覧(分割するなら分割数なども)を
外部のテキストファイルに置いて、それを読み込む手法は便利ちゃ便利だし美しいな。

ツクール系や画像ビューワなどのアプリを作りたいというなら別にしても、
結局、その画像を使うにはプログラムの修正が必要だったりするわけで、
そこまで外部化するメリットが無い気がする。

それならファイル名をプログラム側で固定してしまうというのも十分アリじゃないかな。
「趣味で!」「勉強のため」というなら好きにやるべきだし、そういうこだわりは重要だと思うけれど。


>>615
拡張子無しとか、拡張子を固定するとか、
あとは最初はbmpで次はjpg…みたいに読み込む優先度を決めておくとか。



617:616
10/01/14 02:42:40 Y9GNPZz3
送信してから思った。

最近は個人レベルのゲームプログラミングでも、
ゲームの内容を外部のスクリプトファイルで定義するスタイルが増えてきてるみたい。

全部をスクリプト化しろとは言わないけど、
例えばメニュー画面の挙動とか、何らかのキャラクターのアニメーションの仕方とか、
そういう部分的にでも外部に出しちゃう作りにすれば活かせるかもね。

まあ、非常に手間ですが。

618:名前は開発中のものです。
10/01/14 10:10:33 DPt8d+Sq
外部ファイルにパスや必要な情報書いて読み込み、
それをクラスに格納して処理、コンテナに追加して保持、分割も自動でやってる
ハンドルはアドレスをクラスに用意したポインタのメンバ変数に格納して
再ロードしても画像ハンドルへのアクセス先は変わらないようにしてる
SetRestoreGraphCallbackに↑で書いたコンテナから再ロードする関数登録

ハンドルの情報が消えてしまうときって、それまでに画像読み込んで取得したハンドル全て消えるよね?
何が消えるかよくわからなかったから
描画関係全て再設定させてるんだけど、皆さんは再ロード処理どのようにしてますか?


619:名前は開発中のものです。
10/01/14 11:35:51 f9B4N6q6
>>618
何を言っているのかわからない

620:名前は開発中のものです。
10/01/14 11:42:32 Wuk1wnH6
>>618
>ハンドルの情報が消えてしまうときって、それまでに画像読み込んで取得したハンドル全て消えるよね?
まずこれがよく分からない・・・
リファレンスに全部書いてあると思うけど。

621:名前は開発中のものです。
10/01/14 12:57:05 GEhjs3wb
ドラクエとかマップとかキャラ動かすプログラムは1個つくったら
流用が基本だよな あとはちょくちょく改造

現にSFCのドラクエ3ってSFCドラクエ6の流(ry


622:618
10/01/14 12:59:53 DPt8d+Sq
ごめん、書き方悪かった
何が消えるってか何が初期化されるのか、
ハンドル以外にもあったようなのでそれもききたかった
(DXライブラリのスレだったかな?カメラがどうとか)
ってハンドルは全て消えるよね・・・

で、リファレンスに全部書いてあるのか
見落としてたっぽい、すまねえ見てくる

623:名前は開発中のものです。
10/01/14 13:11:27 GEhjs3wb
ffshowの取り込み機能使うと紙芝居のような連番のjpgが作れる
(例:0.jpg~1000.jpg (画像の形式:jpgにフレーム番号の桁数は0に設定))
(画像の形式はpngやbmpとかできるけどファイル容量が馬鹿でかくなる)
プログラムテストで使う大量の連番JPG1個ずつくるのめんどせーって人はおすすめ


624:名前は開発中のものです。
10/01/14 13:53:55 842AZX10
俺も各クラスの画像にはハンドルのポインタ渡して
ウィンドウ⇔フルスクリーンにするときとか再ロードする場合は一括でやれるようにしてる

625:名前は開発中のものです。
10/01/14 14:22:58 f9B4N6q6
めんどくせーのでエスパーすると
ハンドル情報が無効になった場合の対処でよろしいアルか?

626:618
10/01/14 21:00:02 DPt8d+Sq
いやもう、まじでわかりづらくてすまん
>>624と同じやり方だし、これはこれでいいかな
カメラもライトもモーション状態も全部復元できた
つーわけでスルーしてくだされ

627:名前は開発中のものです。
10/01/15 12:18:57 MEm+h6H+
更新通知はオブザーバーパターンかな

628:名前は開発中のものです。
10/01/15 23:03:18 GfBht2fI
WinSockを使ってオンラインのゲームを作りたいと思っています。
非同期通信にした後、
ウィンドウメッセージをどうやって受け取ればいいのでしょうか

629:名前は開発中のものです。
10/01/15 23:16:16 mIIIz4fa
通信とウィンドウズメッセージ処理は別スレッドで

630:名前は開発中のものです。
10/01/15 23:20:44 MEm+h6H+
bccとvc++以外のコンパイラで使いたい場合はDLL化するしかないかな?

631:名前は開発中のものです。
10/01/16 14:25:40 q2B4ABrd
C#用のDLLが使える
普通のCインターフェイスだから

632:628
10/01/16 16:27:15 rUwaGg5H
開発環境はVisual Studio 2008 Express Editionです。
>通信とウィンドウズメッセージ処理は別スレッドで
これは、マルチスレッドにする、ということでしょうか?
あと、ウィンドウメッセージを受け取るにはPeekMessage関数を使うのでしょうか?

633:名前は開発中のものです。
10/01/16 16:40:06 jHRnZJbI
まだ、はやい

634:名前は開発中のものです。
10/01/18 15:10:04 NiKHIjeB
どうにかgifアニメを表示できないでしょうか?

635:名前は開発中のものです。
10/01/18 15:50:40 ocST5QSJ
ばらして一つ一つ表示すれば

636:名前は開発中のものです。
10/01/18 16:17:33 1VuUUtA0
コマごとに読み込んでハンドルを配列に入れて回しながら表示してみろ

637:名前は開発中のものです。
10/01/18 16:19:59 Y1kYbBl9
みんなアニメーションの抽象化ってどうやってんの?

638:名前は開発中のものです。
10/01/18 16:36:31 ZRf7R4pO
>>637
デザ・・・と言いたいところだが、キチガイ扱いされるので言わない^^b

639:名前は開発中のものです。
10/01/18 16:36:50 AJVbiEYR
アニメーションの抽象化ってなに。

640:名前は開発中のものです。
10/01/18 16:37:28 ocST5QSJ
14歳に乗ってたな

641:名前は開発中のものです。
10/01/18 17:21:08 NiKHIjeB
ありがとうございます!
gif自体がDXライブラリで表示できないみたいなので
ばらしてbmpに変換して表示させます。

642:名前は開発中のものです。
10/01/18 18:17:21 /YEQVsc4
ソフトによってはgifアニメを書き出す要領でアニメーション用にずらっと並べた形で排出してくれるものもあるから要チェック

643:名前は開発中のものです。
10/01/18 18:40:53 NiKHIjeB
Giamっていうツールで分解してみます。
gifが表示できたらなあ・・・

644:名前は開発中のものです。
10/01/18 19:23:22 p6A/ppr3
gifの表示だけは諦めた方がいい
と思ったけど何年か前にライセンス切れたとかだったっけ?

645:名前は開発中のものです。
10/01/18 19:34:01 YzUndEty
gifアニメ、
PlayMovie()で出来たはず。

646:名前は開発中のものです。
10/01/18 19:40:04 NiKHIjeB
>>645
うおおおおおおおおおおおおおおおおおおおおおお
できたあああああああああああああああああああああああああ
ありがとおおおおおおおおおおおおおおおおおおおお

647:名前は開発中のものです。
10/01/18 19:44:19 /YEQVsc4
playmovieが使えるのか、初めて知った

648:名前は開発中のものです。
10/01/18 19:44:24 aB6jW3dA
でもgifアニメ表示する利点というか利用価値が思いつかない

649:名前は開発中のものです。
10/01/18 19:46:09 YzUndEty
これは作者も知らないと思う、osの機能だから。

650:名前は開発中のものです。
10/01/18 19:57:40 NiKHIjeB
本当にありがとうございました。
ただのビューワを作ろうかと・・・
できないと諦めかけてたので>>645さんありがとう!

651:名前は開発中のものです。
10/01/18 21:14:28 ZRf7R4pO
>>645
APIの旅からの帰還
お待ちしておりました
全員敬礼!

652:名前は開発中のものです。
10/01/20 21:26:19 ZmWqqE9G
#define MAX_MOVIE_NUM (100) // 同時に持てるムービーハンドルの最大数
と、DxLib.hの中に書いてあったのですが、
この(100)の値を変えても100以上読むことができません
変更を適応する方法とかありますでしょうか・・・

653:名前は開発中のものです。
10/01/20 21:37:33 ZmWqqE9G
ライブラリの改造で事足りました
スレ汚しすまそ
以下スルーお願いします

654:名前は開発中のものです。
10/01/20 21:42:45 SKKsOccv
俺は言われるとスルーできねえ太刀なんだよ
どうしてくれんんだてめえ

655:名前は開発中のものです。
10/01/20 22:09:33 q0DDgX3G
キレやすそうだな。

656:名前は開発中のものです。
10/01/20 23:52:50 cMpODo4B
真面目なかたなのね

657:名前は開発中のものです。
10/01/20 23:59:20 zuhGGFh3
太刀だけにキレやすいってか
うまいこと言うじゃねーか

658:名前は開発中のものです。
10/01/21 06:53:57 zKTatolx
だれうま

659:名前は開発中のものです。
10/01/21 17:26:19 VSiukrvi
おれうま

660:名前は開発中のものです。
10/01/21 17:42:38 ASaFDbPd
きみのためならうま

661:名前は開発中のものです。
10/01/21 18:34:21 f/5KsMY8
かゆ・・・うま・・・

662:名前は開発中のものです。
10/01/21 21:15:18 3z0s89gO
昨日、この屋しきから逃げ出そうとした研究いんが一人、射さつされた、て はなしだ。
夜、からだ中 あついかゆい。
胸のはれ物 かきむしたら 肉がくさり落ちやがた。
いったいおれ どうな て
May 19, 1998

やと ねつ ひいた も とてもかゆい
今日 はらへったの、いぬ のエサ くう
May 21, 1998

かゆい かゆい スコットーきた
ひどいかおなんで ころし
うまかっ です。
4

かゆい
うま


663:名前は開発中のものです。
10/01/24 17:17:54 t3rqV2es
MV1GetFramePositionでフレームの座標取れた人いる?

664:名前は開発中のものです。
10/01/24 17:45:49 eNyArIdy
>>663
何かそれと関連するような書き込みみた
MV1Frame系の根本辺りにバグでてるのかもよ
試してないから憶測な

665:名前は開発中のものです。
10/01/24 18:30:40 t3rqV2es
>>664
そうなのか・・・

666:名前は開発中のものです。
10/01/24 18:53:34 mtzPnJPW
SetWindowStyleModeのあと
ドラッグ&ドロップが効かなくなるのは仕様ですか

667:名前は開発中のものです。
10/01/24 19:30:56 mtzPnJPW
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
char Key[MAX_PATH];
char File[MAX_PATH];
int open;
bool flag=false;
SetAlwaysRunFlag(TRUE);//アクテイブでも動作
if(ChangeWindowMode(TRUE)!=DX_CHANGESCREEN_OK || DxLib_Init()==-1) return-1;
SetDrawScreen(DX_SCREEN_BACK);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key)){
open=GetDragFilePath(File);
if(open!=-1){
clsDx();
printfDx("%s",File);
}
DragFileInfoClear();
if(Key[KEY_INPUT_Z]==1){//zキーでスタイル変更
if(flag==false){
flag=true;
SetWindowStyleMode(2);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可
}
else{
flag=false;
SetWindowStyleMode(0);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可
}
}
if(Key[KEY_INPUT_ESCAPE]==1)break;
ScreenFlip();
}

668:名前は開発中のものです。
10/01/24 19:33:03 mtzPnJPW
DxLib_End();
return 0;
}
//ソースここまで
スタイル変更のあとはどんなことやっても無駄でした。
なにか解決方とかありますでしょうか・・・

669:名前は開発中のものです。
10/01/25 13:30:00 KA8nsg8v
SetWindowStyleMode(2);
SetDragFileValidFlag(FALSE);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可

SetWindowStyleMode(0);
SetDragFileValidFlag(FALSE);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可

ほい

670:名前は開発中のものです。
10/01/25 14:54:28 RTDsX0xD
同じプログラムでもBCCとVCでコンパイルすると微妙に絵画スピード違う?
BCCの方が重いんだが

671:名前は開発中のものです。
10/01/25 17:04:41 okvPpsG4
絵画? 描画?

まあ、別のアルゴリズムでビルドされている以上、違いがあってもおかしくはないな。
もしかすると最適化の設定とかもあるかもしれない。

672:名前は開発中のものです。
10/01/25 17:30:21 0o6Nm1jn
描画の速度は同じだと思われるが最適化の性能はコンパイラによって大分違う
っつっても今は両方同じくらいだと思うが
古いのは効率悪い

673:名前は開発中のものです。
10/01/25 17:32:24 LL1ffQYA
CPU メモリ グラフィックカード MMX 他のソフトが動作してないか
などなど
条件を一致させるのは至難の技

674:名前は開発中のものです。
10/01/25 19:00:44 6DMAN8Oi
>>669
ありがとうございます!
無事ドラッグ&ドロップがスタイル変更後も効くようになりました
なんだかくやしいです

675:名前は開発中のものです。
10/01/26 01:58:18 tj2S0wJn
隠し関数一覧とかないの?
リファレンスに機能の半分くらい乗ってなくね?

676:名前は開発中のものです。
10/01/26 02:34:26 PVZ337CH
そんなあなたにおすすめ、DxLib.h

677:名前は開発中のものです。
10/01/26 02:43:45 tj2S0wJn
既に見ながら発掘してるけど、使い方分からんのが沢山あるし。

678:名前は開発中のものです。
10/01/26 03:09:22 p39VC7Ub
LoadSoundMem("ファイル名");
SetSoundCurrentTime(時間,サウンドハンドル);
PlaySoundMem(サウンドハンドル,DX_PLAYTYPE_LOOP,*2 BGMを最初から再生するかというフラグ);

*2 TRUEで最初から再生(デフォルト) FALSEで途中から再生できる

int bgm;

bgm=LoadSoundMem("a.wav");
SetSoundCurrentTime(5000,bgm);
PlaySoundMem(bgm,DX_PLAYTYPE_LOOP,FALSE);

a.wavの5秒後から再生する(BGMファイルの曲の長さ仮に5秒以内のファイルなら最初からになる ・・・と思う)


679:名前は開発中のものです。
10/01/26 13:26:42 PVZ337CH
>>677
内部用の関数だったり、試験的に実装した関数なんかが多いから、
公式リファレンスが無いのは仕方ない。

仮に第三者がリファレンスを作ったとしても、
内部用関数である以上、いつ仕様が変更されてもおかしくないわけだし。
…以前、DXライブラリのWikiを作ろうとした人がいたけれど、あれどうなったのかなあ。


DxLib.hにはしっかり丁寧にコメントが書かれてるし、実用レベルでそんなに困ることはないと思うけどな。
コメントを読んでも意味がわからない関数は、たぶん今の自分には関係ない関数だと思っていい。

680:名前は開発中のものです。
10/01/27 02:10:49 +9fTCg9n
まあ PlayBeep()なんて
誰得な関数もあるしな

681:名前は開発中のものです。
10/01/27 02:46:02 wVIH00tk
それってBeep音鳴らすの?
だとしたらエラーの警告音とかに使えそうじゃない?

682:名前は開発中のものです。
10/01/27 12:43:56 bk5n/QgN
エラーが発生したなら、素直にOSへ投げた方が良さそうだしなあ。
Beep音に限らずね。

逆に、ゲーム内で「エラー」の演出をしたいというなら、
それ専用のサウンドファイルを用意するべきだろう。


683:名前は開発中のものです。
10/01/27 13:28:51 VlaGcRFB
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 128);
LoadGraphScreen( 30, 10, "a.bmp", TRUE);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0);
をやると一気にfpsが小さくなるんだけど、それを避ける方法ある?
丁寧に教えてください。断片じゃ分からないんで。


684:名前は開発中のものです。
10/01/27 13:34:10 eUrMXCBM
ハハッ
公式見てこいよ 根本から間違ってる

685:名前は開発中のものです。
10/01/27 13:43:01 D7qew4lJ
ハハッワロス

686:名前は開発中のものです。
10/01/27 14:40:35 eQLJYwgf
宣言 int LoadGraphScreen( int x , int y , char *GraphName , int TransFlag ) ;
概略 画像ファイルを読みこんで画面に表示する

要するに、ハードディスクから画像を”読み込んで”表示するわけだ。
毎フレーム、データ読み込んでたら重くなるの当たり前。

687:名前は開発中のものです。
10/01/27 15:40:40 VlaGcRFB
>>686
URLリンク(dixq.net)
ここの人の見てαブレンド処理したんだけどそんな変なの?
できれば、αブレンド処理の速いやり方教えてほしい。

688:名前は開発中のものです。
10/01/27 15:44:59 eQLJYwgf
違う!
αブレンドのやり方はそれでいい!

一つ訊きたいが、fpsがどうとか言ってるって事は、ある程度形は出来てるんだよな?
アクションかシューティングか、何作ってるのか知らないけど。

てことは、キャラなりなんなりを毎フレームに表示させてるんだよな?

そのキャラを表示する時に LoadGraphScreen を使って表示してるのか!?


689:名前は開発中のものです。
10/01/27 15:50:10 eQLJYwgf
君はさ、学校に通う時、

朝、本屋へ行って教科書買って、学校行って勉強して、終わったら教科書捨てて、
次の朝、また本屋で教科書買って、学校行って勉強して、終わったら教科書捨てて、
また次の朝、本屋で教科書買って、学校行って勉強して、終わったら教科書捨てて……

ってやるか? やらないだろ?

毎フレーム LoadGraphScreen を使うってのは毎日教科書買ってるようなもんなんだよ。

690:名前は開発中のものです。
10/01/27 15:52:15 VlaGcRFB
>>688
キャラはDrawGraphで表示してる。
オプション画面に切り替えた時、点数などを表すボードみたいものに
LoadGraphScreenを使ってる。だから、ゲームには影響ないんだけど。
オプション画面に切り替えた時fpsが一気に下がって気になって今回
聞きました。

691:名前は開発中のものです。
10/01/27 15:59:36 eUrMXCBM
>>690
オプション画面に切り替えたら画面停止でもすんの?
プログラムのフロー分かってる?

692:名前は開発中のものです。
10/01/27 16:00:00 gFzXyqzf
最初に表示するとき一回ロードしておいて、それを毎フレーム描画するようにすればいいだろう

693:名前は開発中のものです。
10/01/27 16:07:18 D7qew4lJ
私のために争うのはやめて!

694:名前は開発中のものです。
10/01/27 16:08:24 VlaGcRFB
>>691
それはしない。一気にfpsが落ちる。ブレンド処理で。
単にⅠフレームごとに作画してScreenFlip()で表示してます。

>>692
詳しくおねがいします。

695:名前は開発中のものです。
10/01/27 16:09:48 D7qew4lJ
全部DrawGraphですればいいんじゃないかなぁ? アハハハハハハハ!

696:名前は開発中のものです。
10/01/27 16:11:58 VlaGcRFB
>>695
ブレンド処理したいんですけDrawGraphでも可能なんですか?

697:名前は開発中のものです。
10/01/27 16:14:13 D7qew4lJ
>>696
てめーなに中だよコラ
リファレンスに目を通してから質問しろカス

698:名前は開発中のものです。
10/01/27 16:16:13 eQLJYwgf
あのさ↓の意味ちゃんと解って使ってる?

SetDrawBlendMode( DX_BLENDMODE_ALPHA, 128);
LoadGraphScreen( 30, 10, "a.bmp", TRUE);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0);

1行目で「これから描画するものはアルファブレンドモードにしますよ」
2行目で「a.bmpを読み込んで描画しますよ」
3行目で「これから描画するものはブレンドなしにしますよ」

ってだけだよ?

699:名前は開発中のものです。
10/01/27 16:16:22 VlaGcRFB
DrawGraphでもブレンド処理可能みたいですね・・・。
ありがとうございます。


700:名前は開発中のものです。
10/01/27 16:18:42 VlaGcRFB
>>697
ヤンデレの人ありがとうございました。

701:名前は開発中のものです。
10/01/27 16:23:54 eUrMXCBM
まあ常識的に考えてブレンド処理なんて頻繁に使われるものがDrawGraphで使えないわけないわな

702:名前は開発中のものです。
10/01/27 17:37:50 SU7TxAxC
int zeikin[1000000];
int amakudari;

for(amakudari=0;amakudari<1000000;amakudari++){
zeikin[amakudari]=LoadGraph("官僚.bmp");
}



703:名前は開発中のものです。
10/01/27 18:42:02 4CYQjQL/
だいたい4MBくらいか。たいしたことないな。

704:名前は開発中のものです。
10/01/29 14:26:55 DRAuGFCj
小手先のテクとかはそれなりに分かってきたと思うんだけどゲームの作り方が分からん
うーんバイトでも探して勉強させてもらおうかな。でも使えないバイトとか来たら迷惑かな

705:名前は開発中のものです。
10/01/29 15:45:51 yml/58A3
>>704
そもそも採用してもらえないと思うけど・・・
どこまで作れるのか知らないけど解説サイトも本もいっぱいあるし、いくらでも勉強できると思うんだけどなあ。

706:名前は開発中のものです。
10/01/29 16:04:31 X4/enaKn
むしろ小手先にテクニックの方が理解は難しいと思うが。

いったいどんなゲームを目指してるんだ。

707:名前は開発中のものです。
10/01/29 17:52:34 DRAuGFCj
シューティングで勉強してるけど思うようにいかない
とりあえず自機も敵機も○で表現して
直進する玉を打ったり衝突判定したりとかなら一応できたんだけど
なんか死ぬほど処理が重いし(処理落ちしまくり)、拡張しにくそうだし
機体のパラメータデータとかステージデータの扱い方とかもわからないし
今はちょっとハードルを下げてインベーダーに変えようかなと思ってる

708:名前は開発中のものです。
10/01/29 17:55:43 jCVSqiZx
龍神録は見たか?

709:名前は開発中のものです。
10/01/29 18:24:47 kJL+rTdA
>>707

どこの部分で処理食ってるか調べるんだ。

「衝突判定」が怪しいから、衝突判定を飛ばしてみて
処理落ちするかどうか確認するとか。

710:名前は開発中のものです。
10/01/29 18:38:06 DRAuGFCj
>>708
まだなので、ちょっと読んできますね

>>709
というかボトルネックは衝突判定と玉の生成破棄ぐらいしか思いつかない
モートン順序とかネットで読んだりしたけどなかなか理解と実装までいけないですわ・・・

711:名前は開発中のものです。
10/01/29 18:38:15 jCVSqiZx
dxlib使ってる環境で衝突判定による処理落ちはあまり考えられないんじゃないかなあ
俺はloadgraphとか自発的なSleepを疑う

712:名前は開発中のものです。
10/01/29 19:21:22 bXBGYPJV
重いのは上司と女のケツ

713:名前は開発中のものです。
10/01/29 19:23:42 Pa0ASUM2
足りないのは知識じゃなくて情熱

714:名前は開発中のものです。
10/01/29 20:40:58 /bsOILuR
PCのスペックも分からんし、
「死ぬほど重い」がどれくらいなのかも分からない(FPS60で重いと言う人だっている)、
ゲームの内容もさっぱりだしなあ。

それでもプレイ出来ないほど重くなるとは考えにくいんだが。

715:名前は開発中のものです。
10/01/29 20:57:24 QBlyvB6i
LoadGraphScreenをしてる、とか?
知り合いがなんか思いって言ってたからソース見たら、毎フレームスクリーンショットを取るという謎な動作してたりした。
ぶっちゃけ、重いってのはなんか変な事してるんだと思うよ。

716:名前は開発中のものです。
10/01/29 21:35:34 VeYpTI6t
何が変なことかわかる経験をお持ちでないから仕方が無いことよ

717:名前は開発中のものです。
10/01/29 21:37:02 Pa0ASUM2
俺も低スペックPCだと重くなる。
それもFPSがなぜか半分になる。
ウィンドウがノンアクティブでも動作する設定にしてノンアクティブにしたときの動作と似ている。
DXlib特有の何かがあるんだと思う。

718:名前は開発中のものです。
10/01/29 21:38:36 QBlyvB6i
ソースっていうかプロジェクトうpったらアドバイス貰えるかもね
ソース晒すの抵抗あるだろうし、個人的にVC++かVSじゃないと困るけど

719:名前は開発中のものです。
10/01/30 00:36:37 zzrUYLD6
画像Aの(x, y)に画像Bの(x1, y1, x2, y2)を転送ってできます?

720:名前は開発中のものです。
10/01/30 00:38:24 cifYwtzO
うん

721:名前は開発中のものです。
10/01/30 06:43:38 P5qgz5J8
>>710
思いつく思いつかないじゃなくて
各セクションごとの消費時間調べて
どこがボトルネックなのか調べるぐらいはすべき

722:名前は開発中のものです。
10/01/30 09:38:05 BdSu0ysP
PCのスペックも分からんし、
「死ぬほど重い」がどれくらいなのかも分からない
ゲームの内容もさっぱりだしなあ。

723:名前は開発中のものです。
10/01/30 09:48:06 EF522hf9
昔、STGの敵を一体だけ出してテストしてたときに
妙に動きが重いなーと思ったら
300体の敵がピタリ重なって表示されていた

724:名前は開発中のものです。
10/01/30 11:23:55 BdSu0ysP
俺もあったなw

725:名前は開発中のものです。
10/01/30 11:50:08 mWel1DHT
あるあるw

726:名前は開発中のものです。
10/01/30 12:31:38 zzrUYLD6
>>720
すいませんそれは一体どうやればいいんでしょう?
SetDrawScreen(handle);
Draw~~
とやってもバグってウィンドウの外に描画されてしまいます

727:名前は開発中のものです。
10/01/30 12:46:37 cifYwtzO
>>726
BltSoftImage

728:名前は開発中のものです。
10/01/30 12:49:56 zzrUYLD6
SoftImageって遅くないですか?

729:名前は開発中のものです。
10/01/30 12:51:56 cifYwtzO
使い方による

730:名前は開発中のものです。
10/01/30 15:02:29 zvCh6Jzw
そもそも早さを気にするような関数なのか?

731:名前は開発中のものです。
10/01/30 16:16:41 zzrUYLD6
ソフトイメージ使ってみました
これは便利なものですね
しかしCreateGraphFromSoftImageで変換しないとアルファブレンドができないのが難点ですね

732:名前は開発中のものです。
10/01/30 16:23:02 cifYwtzO
そもそも変換して使うもん
しないと君の言うとおり非常に表示が遅くなるよ

733:名前は開発中のものです。
10/01/30 17:03:39 zzrUYLD6
おや、FillSoftImageがバグってますねこれ

734:名前は開発中のものです。
10/01/30 17:04:55 TNYZudKh
ID:zzrUYLD6
(#^ω^)ビキビキ

735:名前は開発中のものです。
10/01/30 17:07:37 zzrUYLD6
>>734
なにか?

736:名前は開発中のものです。
10/01/30 17:21:39 GX4pyXso
愚痴ならチラシの裏にでも書いとけよ

737:名前は開発中のものです。
10/01/30 18:18:02 QgRnLSPg
馬鹿な発言からして*SoftImageの解説を読んで無いな

738:名前は開発中のものです。
10/01/30 19:10:19 BdSu0ysP
>>735
関係者なんだろ


739:名前は開発中のものです。
10/01/30 20:21:19 UcIFEpC1
ID:zzrUYLD6
(#^ω^)ビキビキ

740:名前は開発中のものです。
10/01/30 20:29:33 zzrUYLD6
>>739
言いたいことが有るならハッキリ言ったらどうです
コピーアンドペーストしかできないというわけではないんでしょう?

741:名前は開発中のものです。
10/01/30 21:04:41 wCFnb5ju
>>733バグがあるって言うなら、ちゃんと症状を書いて欲しい
ちゃんと検証をしないでバグがあるって言うのは荒らしと同じだよ

742:名前は開発中のものです。
10/01/30 21:10:38 cifYwtzO
どう考えてもこいつの仕様把握ミスか使い方間違ってるかだけどな

743:名前は開発中のものです。
10/01/30 21:47:57 zzrUYLD6
URLリンク(codepad.org)
URLリンク(www1.axfc.net)

バグだろ

744:名前は開発中のものです。
10/01/30 22:05:12 BIjXD56Q
会話で否定から入るタイプ
礼を言わない自分のことばかり

745:名前は開発中のものです。
10/01/30 22:16:56 nicWHVwK
こういう奴はなぜか自分が嫌われてることに気づかないんだよなw

746:名前は開発中のものです。
10/01/30 22:22:34 dQt5iAcR
もうそのへんにしとこうぜ。

747:名前は開発中のものです。
10/01/30 22:46:17 zzrUYLD6
>>743に問題が有るとして、それを指摘できるレベルの人間はここにはいないと言うことでよろしいでしょうか?
もし問題がないのなら、私に対していわれのない批判を向けた人たちは謝罪するべきです
私はそれが社会人としての最低限のマナーだと考えます

748:名前は開発中のものです。
10/01/30 22:55:31 cifYwtzO
何かモノを教えてもらった際にはお礼を言いましょう
私はそれが社会人としての最低限のマナーだと考えます

749:名前は開発中のものです。
10/01/30 22:58:58 ZFqeJ0u6
そもそも何がしたいのかわからん

750:名前は開発中のものです。
10/01/30 23:02:09 dQt5iAcR
>>747
>もし問題がないのなら、私に対していわれのない批判を向けた人たちは謝罪するべきです

俺は静観してただけだから無関係だが、
説明しなければ批判受けてもしょうがなかろう。

751:名前は開発中のものです。
10/01/30 23:11:56 m0apTEno
DXライブラリをビルドできる環境が無いのでなんとも言えないが
Ver 3.01 での NS_FillBaseImage関数 (DxBaseImage.cpp の5124行目あたり) で
DWORD の Color が WORD にキャストされているので、ARGBのうち、ARが捨てられている気がする
このキャストをなくせばいいんじゃないかなー


752:名前は開発中のものです。
10/01/30 23:28:01 zzrUYLD6
>>751
DWORDに修正してビルドし先のコードで試したところ正常に動くようになりました
丁寧に修正箇所も教えていただいて、どうもありがとうございました!

753:名前は開発中のものです。
10/01/31 06:29:35 7H/reV3I
馬鹿ばっかり・・・

754:名前は開発中のものです。
10/01/31 13:54:18 HHPX/Q69
>>753
もっと蔑んだ目で言って下さい

755:名前は開発中のものです。
10/01/31 14:32:44 CuC3sxxQ
>>754
      | |/ノ二__‐─ァ   ヽニニ二二二ヾ } ,'⌒ヽ
     /⌒!|  =彳o。ト ̄ヽ     '´ !o_シ`ヾ | i/ ヽ ! 
     ! ハ!|  ー─ '  i  !    `'   '' "   ||ヽ l |

756:名前は開発中のものです。
10/01/31 15:25:26 JBJvvpkE
>>754
        ',::r、:|  <●>  <●>  !> イ
        |:、`{  `> .::  、      __ノ
       |::∧ヘ  /、__r)\   |:::::|

757:名前は開発中のものです。
10/01/31 17:18:12 2P10BkIV
アニメーション作りたかったから
double owari;
do{
DrawGraph(0,0,player[3],TRUE);
DrawGraph(0,0,player[4],TRUE);
DrawGraph(0,0,player[5],TRUE);
DrawGraph(0,0,player[6],TRUE);
owari = FALSE
}while(owari = TRUE);
やったらパソコンが動かなくなったよ!
誰か助けて

758:名前は開発中のものです。
10/01/31 17:22:47 JBJvvpkE
owari==true

759:名前は開発中のものです。
10/01/31 17:25:48 2P10BkIV
出来ました!!
ありがとうございます
しかし画像が動いてない・・・

760:名前は開発中のものです。
10/01/31 17:43:27 PA+3lzr7
そりゃScreenFlip挟んでないからな…

761:名前は開発中のものです。
10/01/31 17:45:11 2P10BkIV
画像も動いたし一件落着かと思ったんですが
double owari;
do{
SetDrawScreen( DX_SCREEN_BACK ) ;
ClsDrawScreen() ;
DrawGraph(0,0,player[3],TRUE);
ScreenFlip() ;
WaitTimer(500);
ClsDrawScreen() ;
DrawGraph(0,0,player[4],TRUE);
ScreenFlip() ;
WaitTimer(500);
ClsDrawScreen() ;
DrawGraph(0,0,player[5],TRUE);
ScreenFlip() ;
WaitTimer(500);
ClsDrawScreen() ;
DrawGraph(0,0,player[6],TRUE);
ScreenFlip() ;
WaitTimer(500);
owari = FALSE;
}while(owari == FALSE);
これじゃあゲームが終わりません
誰かアニメーションの書き方を教えてください


762:名前は開発中のものです。
10/01/31 17:52:12 PA+3lzr7
ClsDrawScreen();

static int a = 0;
DrawGraph(0,0,player[3+a],TRUE);
if(a<3)a++;

WaitTimer(500);
ScreenFlip() ;

763:名前は開発中のものです。
10/01/31 18:01:12 2P10BkIV
ありがとうございます
試してみたんですが、画像が動いてくれません
これはwhileの中に入れて使用するんでしょうか?


764:名前は開発中のものです。
10/01/31 18:13:29 c9TXpFDF
コピペするだけじゃなくて、その命令の意味をよく考えてみよう。

765:名前は開発中のものです。
10/01/31 18:16:33 JBJvvpkE
とりあえず龍神録読んで来い

766:名前は開発中のものです。
10/01/31 18:29:11 W0mdJ7eW
それ以前にリファレンスを嫁
あんだけわかりやすいのがあるんだから・・・

767:名前は開発中のものです。
10/01/31 18:31:18 HHPX/Q69
基本的な考えを理解してないな。
例えば絵が1ドットずつ動くプログラムだとすると

  座標0に表示
    ↓
  座標1に表示
    ↓
  座標2に表示
    ↓
  座標3に表示
    ↓
     :

って書くんじゃなくて(これは>761の書き方)、

  座標xに表示 ←―┐
    ↓        |
  xを+1する      | 繰り返す
    ↓        |
    └―――┘

って書くのを意識するといいよ

768:名前は開発中のものです。
10/01/31 18:35:18 1VFB3DYv
かわいいなw

769:名前は開発中のものです。
10/01/31 19:00:00 2P10BkIV
double owari;
do{
ClsDrawScreen();
static int a = 0;
DrawGraph(0,0,player[3+a],TRUE);
if(a<3)a++;

WaitTimer(500);
ScreenFlip() ;
owari = FALSE;
}while(owari == FALSE);
こうやってみました
aが0に戻らなくて[6]がずっと表示されてしまいます
あと、できればdo{}while();は使いたくないです



770:名前は開発中のものです。
10/01/31 19:07:41 dC7YcGqj
static intがまずいんじゃなか?

771:名前は開発中のものです。
10/01/31 19:10:47 PA+3lzr7
>>769
>aが0に戻らなくて[6]がずっと表示されてしまいます
わかってんならaを0に戻せよ…
whileでもforでも好きなもんを使えよ…
>>764-767無視すんなよ…

772:名前は開発中のものです。
10/01/31 19:13:09 CfyGLtto
まずはC言語勉強してこい

773:名前は開発中のものです。
10/01/31 19:23:57 2P10BkIV
>>771
すいませんでした
if(a>3)a=0;を追加したんですが止まってしまいます
>>764
考えて>>769をつくってみました!
>>765
そのサイト、アニメーションについて載ってなくて…
>>766
URLリンク(homepage2.nifty.com)
このページでしょうか?
何回か読んだのですがアニメーションについて載ってなかったです…
>>767
座標を動かさないようにするんですか?
>>768
ありがとうございます
>>770
消してみたんですが、動きすらしなくなりました



774:名前は開発中のものです。
10/01/31 19:32:13 JBJvvpkE
アニメーションでなく根本的な所から理解出来てない
龍神録一通りやってゲームプログラミングの基礎を学べ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch