- 1 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 23:06:39 ID:Ns2HwhRB]
- Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリの詳細ついては homepage2.nifty.com/natupaji/DxLib/ を参照して頂きたい。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
- 536 名前:名前は開発中のものです。 mailto:sage [2008/07/26(土) 22:08:20 ID:czyUlfmN]
- 任天堂は、面白くないゲームでも面白そうに思わせる宣伝力とか。
企画を工夫して売るとか、 海外相手に日本じゃありえないような言いがかりのような法的トラブルを防ぐ能力とか 凄腕プログラマを育てるのではなく外からスカウトしてきて上手く使いこなす能力とか・・・ そういう感じの人たちが終結してるんじゃないかと想像。
- 537 名前:名前は開発中のものです。 mailto:sage [2008/07/26(土) 22:23:47 ID:yPJXRj/4]
- 学歴厨っていうか入り口での足きりをするときに
似たようなレベルの作品&印象だったら学歴高い方を選ぶだろJKってだけの話だよ。 高卒でも大卒のやつらを上回る技術を示せる作品を作って、 剛体力学、流体力学、行列・ベクトル演算、幾何代数を独学でマスターすれば全く問題無い。
- 538 名前:名前は開発中のものです。 mailto:sage [2008/07/26(土) 22:53:29 ID:iaDbs620]
- 流れを変える意味でも、ちょっと初歩的な質問をさせてくれ
DrawFormatStringなんだけど、これって実際には バックにグラフィックの枠のようなものを表示させて、座標はある程度めぼしをつけて、 ================== <-グラフィック ここに点数とか <-DrawFormatStringで書く ここに名前とか ================== <-グラフィック みたいにして使うものってことでおk? ゲームのステータス表示とかで使いたいと思ってるんだが・・・
- 539 名前:名前は開発中のものです。 mailto:sage [2008/07/26(土) 23:24:49 ID:tnwbSQld]
- まぁ、それで出来ないことはないだろうが。
DxLib.h見てないからなんともいえないが、もしかしたら描画した文字列の高さを返す関数があるかもしれんが。 不安だったら、文字を画像にしちゃうとか。
- 540 名前:名前は開発中のものです。 mailto:sage [2008/07/26(土) 23:29:39 ID:iaDbs620]
- 文字の中でも固定的なもの(ポイントとかHPとか言う呼称)までは画像にしようかと、、、
以前、画像の読み込みで練習用?の呼び出しがあるとか無いとかって話しになってたので、 もしかしたら見落としてる命令があるかと思って聞いた次第です
- 541 名前:名前は開発中のものです。 mailto:sage [2008/07/27(日) 00:03:36 ID:ofRKBqbI]
- すまないが、何を疑問に思ってるのか解らない。
俺はゲーム中のメッセージ表示や、あるいはデバッグ用の変数値表示に使うくらいだな。 点数とかは、自分で文字画像作ってそれを表示させてる。 フォントのサイズは自分で設定できるんだからそれに準ずればいい。 ただフォントいじる命令、やたら遅いので頻繁に変えるようだったら 最初から複数のフォントを用意しないといけないんだったかな。 文字を画像にしたらフォントのライセンスとかでまずい事になるんじゃないかな。
- 542 名前:名前は開発中のものです。 mailto:sage [2008/07/27(日) 00:10:58 ID:6pVtHho2]
- そうとは言い切れないけど、大抵指定したフォントサイズが
文字のドット幅になるよ。
- 543 名前:名前は開発中のものです。 mailto:sage [2008/07/27(日) 10:54:20 ID:tU8sxjgU]
- 幅はDxLib.hのGetDrawStringWidth系関数が使えそうですが、
高さの取得用関数は用意されてないみたいですね。 フォント用の内部構造体FONTMANAGEには高さが含まれているので、 DxLib.hでコメントアウトされているGetFontManageDataToHandle( int FontHandle ) あたりを使えば 文字の高さを取得できそうです。 あるいは文字高さ取得用関数をライブラリに追加するか。 いずれにせよ、要改造になってしまいますが。
- 544 名前:名前は開発中のものです。 mailto:sage [2008/07/28(月) 00:27:53 ID:6zw2nRJ7]
- テキスト表示の件、ありがとうございました、、、何故疑問に?と思う人もいたみたいだけど、
プログラミング始めたばかりなので、「自分がいいと思ってやってることが正解なのかわからん」状態なので 思わず利いてしまいました で、次のは微妙にスレ違いっぽい質問なのだけど、LaadDivGraphで読み込んだ複数のキャラ画像を メインキャラの動きに合わせて追従させるにはどうしたらいいと思いますか? 動きとしてはグラディウスのオプションとか、ソーサリアンのパーティキャラみたいな感じのものです 自分が組んだロジックは、 ・メインキャラの移動状態を保存用配列に古い記録を破棄しながら随時記録 ・配列の情報に基づいてサブキャラの座標を決定して表示 としてるのですが、サブキャラを増やすと記録すべき配列要素の数も増えて どうも動作が緩慢になってる感じがします・・・自分のマシンではそれほどストレスがないですが、 スペックの落ちるマシンだとストレス溜まりそう・・・なのですが、妙手が思いつきません
- 545 名前:名前は開発中のものです。 mailto:sage [2008/07/28(月) 00:35:13 ID:3fAUJGid]
- 横スクロールアクションのサンプルは、結構少ないのな
作ってたら、ごちゃごちゃと長くなったから、先人のを参考にしたかったのに
- 546 名前:545 mailto:sage [2008/07/28(月) 00:58:54 ID:3fAUJGid]
- すまんかった
ただ、俺の検索能力が低かっただけみたい
- 547 名前:名前は開発中のものです。 mailto:sage [2008/07/28(月) 01:05:00 ID:ESVO02ow]
- >>544
俺もそれ、考えた事はあるけどやった事ないから正解はわからんが、 俺なら同じように配列に「座標」を記録していくかなぁ。 にしても100や200追従させたところで そうそう動作が重くなるとは思えないんだけど どれくらいの数動かす事が前提なのかな?
- 548 名前:名前は開発中のものです。 mailto:sage [2008/07/28(月) 01:52:02 ID:dT1uTere]
- オプションの最大個数*n(オプションの間隔)
のサイズのリングバッファを作り 自機の座標を記録していくんだ。 で、現在のポインタから、n個ずつ古い座標を取り出してオプションの座標にしる
- 549 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 12:30:53 ID:I1TOnfGu]
- typedef struct{
int enx; //敵 x座標 int eny; //敵 y座標 int flag; //フラグ } ENEMY; ENEMY move01 = {100,1,0}; ENEMY move02 = {300,1,0}; void enemy_move_02(){ double test = atan2(move02.eny . move02.enx)→ここでエラー。 もしかして構造体とatan2関数って一緒に使えない? move02.eny . move02.enxを「move02」 「eny」 「move02」 「enx」 って認識してるっぽいんだけど
- 550 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 12:34:52 ID:jxOLhJk/]
- ","じゃなくて"."になってるのと";"忘れ
- 551 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 12:38:49 ID:I1TOnfGu]
- しまったw
こんな単純なミスをずっと気がつかなかったのか。 >>550 下らん質問に答えてくれてありがとう。
- 552 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 13:27:32 ID:I1TOnfGu]
- >>550
のミスを修正していざデバッグしたら 'atan2' : オーバーロード関数の呼び出しを解決することができません。 ってエラー出るんだけど、何が悪いの?ENEMY move02 = {300,1,0};で整数がatan2のy.xに代入されてるから?
- 553 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 13:50:42 ID:BwimhXf8]
- math.hはincludeしてる?
- 554 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 13:58:39 ID:I1TOnfGu]
- >>553
ちゃんとしているよ。
- 555 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 13:59:38 ID:BwimhXf8]
- float と double で、、てのもC#ならともかくC++じゃなあ。
とりあえずキャストしてみては?
- 556 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:19:59 ID:I1TOnfGu]
- static_cast(double)でやってみても普通のキャストでもダメだw
atan2関数って結構クセもんだな
- 557 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:21:08 ID:Lgzy7JPK]
- まだどこか、カンマとピリオドをうち間違えてるのかも。
フォントが小さいと分かりにくいから要注意。
- 558 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:31:10 ID:5y8IMZn/]
- atan2といえば、ゲーム実行中にドメインエラーがよく出たなー。
- 559 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:31:57 ID:4++6mc8t]
- atan2( (double)move02.eny , (double)move02.enx);
でどうですか?
- 560 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:35:07 ID:I1TOnfGu]
- >>>557
エラーがこれだけだから、多分何かが違うんだと思う enemy_move.cpp(63) : error C2668: 'atan2' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照) 1> d:\c++\vc\include\math.h(547): 'long double atan2(long double,long double)' の可能性があります。 1> d:\c++\vc\include\math.h(499): または 'float atan2(float,float)' 1> d:\c++\vc\include\math.h(110): または 'double atan2(double,double)' 1> 引数リスト '(int, int)' を一致させようとしているとき 多重定義もクソも一回しか使ってないんだけどw
- 561 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:37:25 ID:I1TOnfGu]
- >>559
あ、今度はうまくいった。 一つ一つにキャストしないといけないのかー。 不便だな結構。
- 562 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:39:13 ID:bDlTbbmG]
- ちょ、、、どうやろうとしてたんだ?w
- 563 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:42:13 ID:I1TOnfGu]
- double test = (double)atan2(move02.eny , move02.enx);
これで一気に出来ると信じてた
- 564 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:43:55 ID:Fn2JO3tM]
- 敵の座標や速度は小数にして必要なときに整数にキャストするのがよくね
位置が整数だと2フレームで1px動かすときとか苦労する >>563 関数のオーバーロードは引数で区別される
- 565 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 14:45:42 ID:Fn2JO3tM]
- ちなみにそれだと関数が返した値をdouble型にキャスト変換するだけで関数の評価には関係ない
- 566 名前:名前は開発中のものです。 mailto:sage [2008/07/30(水) 16:21:00 ID:I1TOnfGu]
- atan2を使ってて思ったんだけど。
敵にsin波の動きをさせるだけだったらatan2使わないでsin使ったほうが楽だよね?
- 567 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 05:31:29 ID:OJUOAbtf]
- >>556
え!? static_castとか知ってて普通のキャストの基礎知らなかったりするのはかなり意外なんだけど >>566 そもそもどうしてatan2を使おうと思ったんだい?
- 568 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 11:25:29 ID:6cZaCcAX]
- static_cast(double)じゃなくてstatic_cast<double>だけどな
- 569 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 18:11:14 ID:r/NTYYBz]
- 返り値をキャストしてもショウガナイですね・・。
math.hの関数はよくint型引数にしようとして失敗したことが昔ありましたねぇ で、atan2は敵と自機の角度求めたりするのによく使いますけど、 波の表現には使いませんねぇ math.hの関数はどれも遅いので、なるべく使わないようにしてはどうでしょう
- 570 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 21:35:59 ID:7gZA2bfW]
- >>569
math.hの関数を使わないでのsin波の場合だとどうなるんだろう・・・。 sinもmathだと思うし、何を使うべきなんですかね
- 571 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 21:38:43 ID:DHgf9I5V]
- fastmath.h
- 572 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 23:26:36 ID:iw2uu9Rv]
- neetmath.h
- 573 名前:名前は開発中のものです。 mailto:sage [2008/07/31(木) 23:38:05 ID:TL4sUMQR]
- >>570
まずはmath.hの三角関数を使うべきだと思う。 今どきのPCで三角関数のコストが無視できない状況なんてあまり無い。 もしVCを使っているなら、 #pragma intrinsic の使用を検討してみるといいよ。 コンパイラのビルトイン関数を使うことで速度向上が期待できる。 gccならデフォルトでビルトイン関数が適用されてる。
- 574 名前:名前は開発中のものです。 mailto:sage [2008/08/01(金) 11:40:12 ID:nuMWOD8l]
- 環境はc++とDXライブラリ
#pragma intrinsicってprintfとかのだよね? c++だとあんまり使ってないや
- 575 名前:名前は開発中のものです。 mailto:sage [2008/08/01(金) 16:30:58 ID:GtdXG6pu]
- 画像の拡大縮小、反転などを併用したい場合は、素材側で対応するのが無難でしょうか?
一度描画したものをGetDrawScreenGraph()で取り込んで、別の方法で描画…というのはできましたが、 良い方法とは思えません。
- 576 名前:名前は開発中のものです。 mailto:sage [2008/08/01(金) 21:20:18 ID:qPjnEgAD]
- 背景含めて全部まとめて動かすってこと?
- 577 名前:名前は開発中のものです。 mailto:sage [2008/08/01(金) 23:31:27 ID:GtdXG6pu]
- >576
int gHnd=LoadGraph("0002.jpeg"); //0002.jpegは50*50pixelの画像ファイル int gHnd2 = MakeGraph(100,100); DrawGraph(300,300,gHnd,true); DrawExtendGraph(0,0,100,100,gHnd,true);//縦横2倍に拡大して描画 GetDrawScreenGraph(0,0,100,100,gHnd2);//描画されたgHndを読み取る DrawTurnGraph(100,0,gHnd2,true);//左右反転して表示 めちゃくちゃなことをしているのは分かっています…
- 578 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 00:38:21 ID:AuP8vB/z]
- int gHnd = LoadGraph("0002.jpeg");
DrawRotaGraph(50, 50, 2, 0, gHnd, true, true); // 2倍拡大+透過+反転 こういうことかな
- 579 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 00:52:28 ID:LP1XDt9q]
- >578
ありがとうございます! リファレンスの読み込み不足だったようですね…お恥ずかしい限りです。
- 580 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 02:49:35 ID:yuB/nvf2]
- 自分も>>575の方と似たような事で詰まってるのでお力添えを…。
ttp://www1.axfc.net/uploader/He/so/125847.png&key=game と、縦横別倍率で拡大、と、画像の回転を両立させたいんです。 これが背景でしたら>>577と同様の方法で、 DrawExtendGraph→GetDrawScreenGraph→DrawRotaGraphといけそうですが、 エフェクトで使いたい処理なので、既に背景などが描画されているメイン画面は使えないという状況です。 こういった場合は何か作業領域などを作るしか方法は無いのでしょうか…?
- 581 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 09:44:54 ID:2jU8Dntq]
- DrawModiGraph
- 582 名前:名前は開発中のものです。 mailto:sage [2008/08/02(土) 09:52:10 ID:ejRXzIue]
- 最悪DrawPolygon3Dでどうとでもできるわな
- 583 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 02:27:17 ID:iWpnfRGq]
- >>581
あぁ、こんな使い方も出来たんですね…。知識不足ですみません。 これで何とか考えた通りに出来ました。本当にありがとうございます。
- 584 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 11:03:48 ID:KmvncGNt]
- DXライブラリ、サンプルプログラムのスクロール基本なんですが
ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4 手計算だとどうしても描画用マップチップの配列(座標)が0,0からスタートしてくれません プログラムは当然ちゃんと想定どおり動いてるのですが、 プレイヤーの初期位置Xが2、Yが2状態で計算すると DrawMapChipNumX は 11 DrawMapChipNumY は 8 MapDrawPointX は -3 MapDrawPointY は -2 となり、マップの描画を決めるループを手繰っていくと、i が3以上、j が4以上にならないと条件を満たさず、 その条件で計算すると、MapData[ i + MapDrawPointY ][ j + MapDrawPointX ] は[1][1]が代入されると思うのですが・・・ こちらの計算違いではあるのですが、どこがおかしいのか分からないので間違ってるところを教えてください
- 585 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 12:08:48 ID:S+BsW+Rs]
- if( j + MapDrawPointX < 0 || i + MapDrawPointY < 0 ) continue; // 描画しない
if( MapData[ i + MapDrawPointY ][ j + MapDrawPointX ] == 0 ) DrawBox(); ↓ if( a < 0 || b < 0 ) continue; // 描画しない if( MapData[ b ][ a ] == 0 ) DrawBox(); どうみても最初の描画は MapData[ 0 ][ 0 ] ですね
- 586 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 13:09:28 ID:KmvncGNt]
- 回答ありがとうございます、しかし、頭がこんがらがってきました
if( a < 0 || b < 0 ) continue; // 描画しない これって人間の言葉にすると「aがゼロより小さい、または、bがゼロより小さいときは描画しない」ですよね? ということは、ループの中で a=0 b=0 が与えられたとする条件を満たしてないと思うのですが・・・ 自分が間違ってそうな箇所はわかりました、、どうやら論理演算子と関係演算子をもう一度勉強しないとだめみたいですね
- 587 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 13:22:36 ID:s3YJPvG5]
- >ループの中で a=0 b=0 が与えられたとする条件
意味が良くわからないんだが、 どこで与えられた 何のための条件?
- 588 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 13:46:05 ID:rlVyTzUB]
- >>213
ありがとうございます 大体解りました
- 589 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 13:48:13 ID:KmvncGNt]
- >>587
× (a=0 b=0)が与えられたとする条件 ○ (a=0 b=0)が与えられたとしても、条件(を満たしていない) ですね、編集してるうちに変な文章になってしまってました、すみません どこで与えられた、というのは多重ループの中で i + MapDrawPointY //*1 j + MapDrawPointX //*2 を計算した結果だと思っていただければ・・・最終的に欲しい答えが MapData[ 0 ][ 0 ] ですから、一行前のエリア外を描画しないための制御文、 if( j + MapDrawPointX < 0 || i + MapDrawPointY < 0 ) continue; // 描画しない のところで、*1も*2もいずれも0の状態で条件分岐を通過してくれないといけないわけですが、 そこのところが自分の理解では「通過しないはず」なので困っていました
- 590 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 14:32:28 ID:S+BsW+Rs]
- if (a < 0 || b < 0) continue;
↓ if (0 < 0 || 0 < 0) continue; ↓ if (false || false) continue; ↓ if (false) continue; // continueは実行されますか?されませんか?
- 591 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 14:41:23 ID:KmvncGNt]
- >>590
解りやすい解説ありがとうございます、 自分の誤解が招いた疑問が氷解しました・・・
- 592 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 15:10:05 ID:Q1RwoYf2]
- 敵を少しでも多く表示しようとするとカクカクになるw
- 593 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 15:24:02 ID:0ZCECk8O]
- >>592
解像度(スクリーンの大きさ)を1/4(縦、横ともに半分)にするのです。 それだけで、貴方のアプリケーションの速度は劇的に改善するでしょう。 と言ってみるテスト。 毎回ファイル読み込みとかしてないか注意。
- 594 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 15:33:45 ID:s3YJPvG5]
- >>592
このスレの>>478あたりから読み直してみるといい。
- 595 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 22:37:42 ID:Q1RwoYf2]
- >>594
悪い、同人物だ。 今度こそはメモリから読み込んでいるのにカクカクだぜ
- 596 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 22:45:50 ID:+Yq3eKTl]
- メモリから読み込む、ってのがループ内だと意味ないんだぜ?
つーかソースどころか状況もわからんのに答えられるわけなかろう。 あてずっぽうのアドバイスが欲しいのか? あてずっぽう考えるのだって大変なんだぜ?
- 597 名前:名前は開発中のものです。 mailto:sage [2008/08/03(日) 22:47:35 ID:xylQeBNi]
- 処理ごとの速度を計測すれば、どこに時間食ってるかわかるし、
解決策も自ずと見えてくる
- 598 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 00:33:29 ID:0yRulxuI]
- >>596
あーもしかしたらそうなってるかも。 大まかなソース↓ (enemy_move) typedef struct{ int enx; //敵 x座標 int eny; //敵 y座標 int flag; //フラグ int counter; //カウンター } ENEMY; ENEMY move01 = {100,1,0}; (略) void enemy_move_02(){ //x100から左寄りのsin波移動 move02.enx+=sin(PI*move02.eny/80)*5; move02.eny+=1.5f; enemy_img = LoadGraph("date/img/enemy.bmp"); DrawGraph( move02.enx , move02.eny , enemy_img , TRUE ) ; DeleteGraph( enemy_img ) ; } ↑こんな感じのコードをexternでmain.cppの方で動かしてる、main.cppではwhileでこれらをループしてて、エスケープを押すとブレイクするようになってる。 竜神録のサイトを参考にして丸写しじゃツマランから自分で考えて作ってるんだけど、難しいな。
- 599 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 00:38:34 ID:7CBzeKTD]
- それだと動かすたびに読み込んで削除してを一々やってる
ゲームループの前に1回だけ読み込んで不要になったら削除
- 600 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 00:49:06 ID:0yRulxuI]
- >>599
となると、while文が入る前にexternなりなんなりで読み込みだけを済ませるほうが良いって事? というか全部の使う素材は全部ゲームループする前にメモリに読み込ませた方が良いって事だよね? それだと俺大幅な修正が必要になりそうw
- 601 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 01:02:17 ID:SorplbiK]
- >>600
やりたくないんならやらなければ良いよ。学校の授業じゃないんだから。 多分分かってるんだろうけど>>599の言ってる事(内容)は適宜だよ。 修正が必要なら修正するだけだろ 戦わなきゃ現実と
- 602 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 01:10:24 ID:Vp8LYTR0]
- >>600
外部ファイルの関数を使うときは、普通はexternを使わないで、プロトタイプ宣言を使うらしいよ。 あと、enemy_imgをNULLで初期化されてるなら、 if ( enemy_img == NULL ) { enemy_img = LoadGraph("date/img/enemy.bmp"; } という怪しげな応急処置で済ますことも可能。
- 603 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 03:17:57 ID:2eoeRGcN]
- >>598
龍神録プログラミングの館見て解らない事あるんなら、 そこの掲示板で聞けば ttp://l.huu.cc/board/ 館の質問に限らず何にでも答えてくれるし
- 604 名前:名前は開発中のものです。 mailto:sage [2008/08/05(火) 16:26:30 ID:oHDI2BWt]
- 320x240ドットのゲームの画面出力を640x480のサイズのウィンドウに表示したいのですが、
それをDXライブラリでやる一般的な方法ってありますか? って質問を書いてたらちょうどマニュアルで int SetWindowSizeExtendRate( double ExRate ) ; を見つけられました。 本当にありがとうございました。
- 605 名前:名前は開発中のものです。 mailto:sage [2008/08/05(火) 19:38:02 ID:EpXD5UKo]
- 縦横比をどうにかできる方法があれば凄いんだけどね・・・。
4:3モニタの時代は終わったのかな。 最近ワイドモニタ多すぎ。特にノート。 テストしてもらった知り合いのPCが殆どワイドだったのに驚愕した。
- 606 名前:名前は開発中のものです。 mailto:sage [2008/08/05(火) 20:28:53 ID:CKp+IHYO]
- 歩留まりがいいらしいからね
- 607 名前:名前は開発中のものです。 mailto:sage [2008/08/05(火) 20:57:36 ID:31D+/5a6]
- 横シューを作れという事じゃなかったのか。
- 608 名前:名前は開発中のものです。 mailto:sage [2008/08/05(火) 21:12:24 ID:YYddeISL]
- >>604の方法で拡大すると320*240非対応のディスプレイでフルスクリーン化出来ないし
うちの環境だとアンチエイリアスがかかって見難くなるんで @320*240のサイズで描画 A空のグラフィックハンドルに@を取得 B640*480に拡大して貼り付け ってやってるんだがCPU使用率が跳ね上がる おとなしくSetWindowSizeExtendRateで拡大したほうが良いんだろうか
- 609 名前:名前は開発中のものです。 mailto:sage [2008/08/05(火) 22:32:25 ID:vtCV6T3y]
- 横シューよりドラゴンバスターみたいなアクションがやりたい
- 610 名前:名前は開発中のものです。 mailto:sage [2008/08/06(水) 00:20:08 ID:+mP1DFYH]
- >>608
hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=583
- 611 名前:名前は開発中のものです。 mailto:sage [2008/08/06(水) 20:46:19 ID:e8apu092]
- >>610
かなり改善されたわ dクス
- 612 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:27:43 ID:BMBqvRRu]
- マップチップ画像を分割で読み込んだ後、それを複数枚横に並べた画像を“描画せず”に1枚の画像としてメモリに格納するにはどうすればいいのでしょうか?
具体的には、たとえばこんな5×3のマップがあるとします(0=山、1=川とする) 0,1,1,1,0 1,1,1,1,1 0,0,0,0,0 この1列目の0,1,1,1,0を描画した結果の絵、つまり「山川川川山」という画像をGHandle[1]に格納(描画せずに)させたいんです。 もしマップチップ1枚の画像サイズが縦横32*32だとすれば、160*32の画像を1枚作ることになります。
- 613 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:49:24 ID:qrl05lIa]
- >>612
MakeGraph使うんじゃないの?
- 614 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:51:26 ID:IbgkXEDA]
- 裏画面に描画して、ってやり方じゃダメかな。
何の意味があるのか知らないけど。
- 615 名前:名前は開発中のものです。 [2008/08/07(木) 21:52:01 ID:O800tzRD]
- 普通にLoadGraphでいいじゃん
- 616 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 22:09:30 ID:BMBqvRRu]
- やりたいことは・・・ロードランナーでいうと、完全なサイドビューではなく、レンガの上面(キャラクターが乗って触れてる面)も見えるようなビューにして奥行きを出したいんです。
上面を描くのに、まず完全サイドビュー視点のマップ画像を一列分つくって、それを台形のように変形させて(高さも潰して)対応させようかと思いました。
- 617 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 22:16:01 ID:BMBqvRRu]
- 普通はレンガの上面はみえないけど・・・
www7.ocn.ne.jp/~bacube/oldgame01/load2_3.gif レンガの上面も見えるようなビューにして奥行きを出したい www7.ocn.ne.jp/~bacube/oldgame01/load2_2.gif 斜め画像を用意しておくのも手ですが、それをせずに済ませたいんです。
- 618 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 22:16:51 ID:sPTbyZsz]
- 3D
- 619 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 22:24:23 ID:BMBqvRRu]
- あ、上面だけでなくサイドの面も描く必要があるか。
自分の方法だと面倒だな・・・ >>618 たしかに3Dのほうが楽かもしれないですね。 こっちにしようかな 無駄な質問をしてしまったようでみなさん申し訳ないです。
- 620 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 22:47:55 ID:qrl05lIa]
- >>612
MakeGraphで作ったグラフィックをSetDrawScreenで指定して書き込めば良いのではないかと思ったけれど、 「3D機能をOFFにしなければいけない」とか「ロックしないといけない」っていうのがあって、めんどくさいな。
- 621 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 00:18:40 ID:k2u31CRe]
- 普通にドット絵を描けばいい気がする。
- 622 名前:名前は開発中のものです。 mailto:sage [2008/08/09(土) 21:19:32 ID:5H+GkDR5]
- 画面に描画した内容をまっさらに直したいというだけなら、
ClearDrawScreen()の代わりにDrawBox()などを使用しても問題ありませんか? また、問題ないのでしたら、このふたつは処理速度上、どちらが有利でしょうか?
- 623 名前:名前は開発中のものです。 mailto:sage [2008/08/09(土) 21:38:06 ID:AID2npSx]
- 自分で試せば済む事でしょう。
- 624 名前:名前は開発中のものです。 mailto:sage [2008/08/09(土) 21:44:53 ID:5H+GkDR5]
- >623
動作は確認したのですが、ClearDrawScreen()には、何か目に見える動作意外にも、 役割があるのではと思いまして…
- 625 名前:名前は開発中のものです。 mailto:sage [2008/08/12(火) 00:53:34 ID:F3VDNdY9]
- SetDrawBlendModeの
DX_BLENDMODE_INVSRC が使えないんだけど 俺だけかな・・・ バージョンふるいのかなあ
- 626 名前:名前は開発中のものです。 mailto:sage [2008/08/12(火) 15:36:18 ID:mn/79eK/]
- >>625
使えないって定義がされて無いといわれるんでしょうか? もしそれならヘッダファイルのDX_BLENDMODE_....に あたる部分を探してみては?
- 627 名前:名前は開発中のものです。 mailto:sage [2008/08/12(火) 22:39:16 ID:yxG5mAbd]
- C#でDXライブラリを使っているのですが、画像や音楽の保存場所がわからなく困っています。
初歩的な質問と存じますが、アドバイスをお願いします。 開発環境 Visual C# 2008 Express Edition
- 628 名前:名前は開発中のものです。 mailto:sage [2008/08/12(火) 23:02:09 ID:kcKrfT4b]
- カレントディレクトリに置いたらいいよ。
- 629 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 08:48:19 ID:yFX3V9Dg]
- C#でも使えるのか
すごいなぁ 業務アプリや科学計算ばっかりでゲームとか作ったことないけど 俺もパズルゲーム作ってみようかな
- 630 名前:627 mailto:sage [2008/08/13(水) 11:08:10 ID:7NjPpTlV]
- 教えていただき、ありがとうございます。
カレントディレクトリって、作業中のフォルダですよね? C#の場合ですと、[WindowsFormsApplication1]フォルダでいいのでしょうか? 何度も申し訳ありませんが、よろしくお願いします。
- 631 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 11:22:56 ID:FyPLvjSN]
- C#がどんなのか知らないけどな。
カレントディレクトリってのが作業中のフォルダって認識は合ってる。 ただ「なんの作業中か」を誤解している可能性がある。 例えば、貴方がゲームを作って、そのプログラムが「game.exe」というファイル名で作成されたとしよう。 当然、そのゲームをするにはその「game.exe」を実行するわけだが、 その時、まさにその「game.exe」のあるフォルダが「作業中のフォルダ」になるわけだ。 要するに「カレントディレクトリに置いたらいいよ」ってのは 「実行ファイルと同じとこに置いとけ」という意味だ。
- 632 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 11:42:08 ID:ZEZwt305]
- いやー、その説明はどうかと。
- 633 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 11:42:13 ID:BbNVLc2o]
- ショートカット経由で起動した場合はショートカットの場所がカレントになるだろ
- 634 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 12:10:59 ID:ZEZwt305]
- まあとにかく、リソースの類はファイル埋め込むかEXEの場所に。
カレントをあてにせず、EXEの場所を調べてアクセスするのがいいかな。 書き込む場合はEXEの場所じゃないほうがいい。
- 635 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 12:21:47 ID:yFX3V9Dg]
- カレントディレクトリは、OpenFileDialogを使ったりすると
読み込み先のフォルダに変わったりするから注意した方がいいと思うぞ それが原因で詰まったこともあるから
- 636 名前:名前は開発中のものです。 mailto:sage [2008/08/13(水) 17:09:46 ID:RJ+2pmNA]
- 適当にカレントディレクトリに置けばいいとか言った。反省はしている。
相対パスでアクセスしたいってことだよね? それとも絶対パスでも画像とかが動かないの? 後者だとお手上げ。 前者なら、多分bin/Debugフォルダが作られてるから、そこに置けばいいよ。
|

|