- 1 名前:名前は開発中のものです。 mailto:sage [2009/12/04(金) 16:49:13 ID:7SKA4I5z]
- Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【過去スレ】 DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ DXライブラリ 総合スレッド その3 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ DXライブラリ 総合スレッド その4 pc11.2ch.net/test/read.cgi/gamedev/1249822550/
- 471 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 11:52:19 ID:v00n4e/G]
-
何でもそうだが、 条件判定は少なければ少ないほどよい。 っていうか現場でifififififififififififififififif重ねる奴は怒られる。 switch-caseで済む場合もあれば ビットシフトで済む場合もある 俺はswitch-case大嫌い 下に来るまでクロックを食いながら来るからだ だから個人的にはビット演算以外認めない ビット演算なら、立てておけば何が来ても一瞬だからだ
- 472 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 12:06:18 ID:v00n4e/G]
- ビット演算が嫌いだったり何らかの理由でどうしてもswitch-caseにしなければならないのなら
ステータスに数字を割り振って、その値が指すものに直に飛ばしてもよい 擬似テーブル方式だな 内心嫌だった とにかく、ifififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififif重ねるのは見た目にもよくないし 実行速度的にも良くないので絶対に改めるべきだ。 単純なswitch-caseも絶対に避けるべきだ。10項目あったら10項目めに来るまで最低11クロックかかる。 11クロックもあったらシェーダを3回も回せる。 じつにもったいない話だ。
- 473 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 12:07:15 ID:aWVerO1p]
- まず
x=x1/32; y=y1/32; ↓ x=x1/20; y=y1/15; じゃないか? その上でマップに当たった場合、 ギリギリまでキャラクタを移動させる処理が足りない。 それをやらないと、キャラクタがブルブル震える。 あと変数の名前をもうちょっと考えてやろうな。 配列の引数に渡すセル番号の値がキャラ座標と同じx,yはひどい。 規格が違う。
- 474 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 12:10:36 ID:CHMCqqiY]
- とりあえずマップが格子状ならキャラクターのx,yも同じ値で管理すべき
実際の位置は表示部分で考えるか、滑らかな動きがいいなら別途キャラクター表示x,yを用意して補正してやる
- 475 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 12:15:25 ID:mNxKxxAQ]
- >ちょっと相談なのですが
という言い回しだったので「アルゴリズムを提案してほしい」ということかと思ったのに、実は「バグを見つけて下さい」ということだったとは・・・ >>473で解決だな。
- 476 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 13:43:46 ID:+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 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 13:47:15 ID:+Y7mHkgr]
- 間違えたw
>map[y1][x1], map[y1][x2], map[y2][x1], map[y2][x2] をチェックしてやらんといかん はなかったことね 取りあえず4隅をチェックするということ
- 478 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 14:02:44 ID:+Y7mHkgr]
- あとね、ID:WXd0Gz3I のことやろうとするとね、結構大変だから、俺もやったけど
引き返すなら今のうちかも、特に初心者は ある程度慣れた人ならできるだろうけど 俺の場合は下行くか上行くか左行くか右行くかによって場合わけで上の人が嫌いって言ってたswitch-caseでやったけど まあ上手いことやればswitch-case使わなくてもできるんだろうけど 俺の場合は上行った場合は左上と右上の2隅チェック、 右行った場合は右上と右下の2隅チェック、以下略 ってやってったと思ったんだけど
- 479 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 14:31:11 ID:CHMCqqiY]
- 初心者が誤解するとアレだから一応言っておくけどswitch-caseは基本JMPだから。
- 480 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 15:24:02 ID:WXd0Gz3I]
- あたり判定みたいに右下と左上のみの判定じゃ難しいみたいですね。
なんとなくそれっぽい動きができればそれでいいのですが…。 switch-caseも一度考えてみます。
- 481 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 16:42:55 ID: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割で処理していっても問題無い。) めんどくさいんで、人の書いたモノの紹介で濁すけど、 今回は、基本ただの四角形と四角形の判定辺りで行ける。 marupeke296.com/COL_main.html の その4 のはじめの所を読めば問題解決するだろう。
- 482 名前:名前は開発中のものです。 [2010/01/03(日) 18:04:43 ID:smx+9BoV]
- 宇宙船を舞台にしたFPSゲームを作ろうと思っています。
次のような要素を実現したいのですが・・・ @エイリアンを倒した数によって、ヒロインのおっぱいが大きくなる。 Aステージをクリアしたあと、ヒロインのおっぱいを揉める。 @に関しては、おっぱいの大きさごとのモデルを作るのではなく、DXライブラリの プログラムで、おっぱいだけを大きくしたいです。 Aに関しては、プレイヤーの動きに応じてちゃんとおっぱいがもにもにするようにしたいです。 DXライブラリで可能でしょうか?
- 483 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 18:10:25 ID:Cn7qbODV]
- 3D?
おっぱい以前に,さすがにFPSならDXライブラリじゃなくてもっとちゃんとした3Dゲームエンジン使った方が結果的にずっと楽だよ
- 484 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 18:12:54 ID:FbdCmvgh]
- ,,, ,,,,,, : .と お 大 お エ
_ = ~~ ``ヽ_,=''~´ ´~ヽ : は こ き .っ イ _= ~ ヽ : 思 が く ぱ リ ~=、 ミゞ、 , -彡 ヽ. : わ ま .し. い ア ~=、、、Cl~evj <e~}6)_ 、、、ミ : ん し よ を .ン ミ.~~ /', ゚ ;'7 ミ7ヾ~- 、 : か い う の ≡ (','゚, '.人 ゝ | ヽ : ね な 命 `= `ー' iノ' | / | ん で ~ーノノノノノ'′ て _ ∩ピタ (; ゚д゚) し | | | し ⌒J ( ;´゚д゚) ・・・・・・・・・ c(,_U_U ガク ( ;´゚Д゚) おっぱいは何のためにあるんだー c(,_U_U _,,..-―'"⌒"~⌒"~ ゙゙̄"'''ョ ゙~,,,....-=-‐√"゙゙T"~ ̄Y"゙=ミ T | l,_,,/\ ,,/\
- 485 名前:名前は開発中のものです。 [2010/01/03(日) 20:05:43 ID:wq7ATXDp]
- >>482
3Dメッシュの1部分の頂点座標を変更することが出来れば可能ではないだろうか DXLibではメッシュの中の1点の頂点情報を変更する関数が見当たりませんでした 直DirectXではLockVertexBufferで頂点情報を抜き出し、一部変更してからUnlockすれば書き換えできる その他知る限りだとDarkBasicのSET VERTEXDATAがそれらしき機能かもしれない 自分はボーンの使い方わかないので、頂点書き換え方式でキャラのモーション作ってます
- 486 名前:名前は開発中のものです。 mailto:sage [2010/01/03(日) 21:49:29 ID:v00n4e/G]
- シェーダでやったほうが1000倍ラクだと言っておく
- 487 名前:名前は開発中のものです。 mailto:sage [2010/01/04(月) 00:50:49 ID:96m9JQJM]
- おっぱいシェーダw
- 488 名前:名前は開発中のものです。 mailto:sage [2010/01/04(月) 08:25:51 ID:TtKqpyJC]
- 究極のおっぱいシェーダーをダウンロードできるところを教えてください
おっぱいはTonnyかべっかんこみたいなのが好みです
- 489 名前:名前は開発中のものです。 mailto:sage [2010/01/04(月) 11:15:32 ID:fBgUH+Pe]
- makeしたら負けやと思う
で
- 490 名前:名前は開発中のものです。 [2010/01/04(月) 15:41:04 ID:7VFKyHz5]
- >>486
HLSLで頂点シェーダやったけど、メッシュ全体の平行移動しかわからない 一部分の頂点座標を動かすってoffset引数使うとまでは調べられたが情報全然ありません どうやってやるのでしょうか
- 491 名前:名前は開発中のものです。 mailto:sage [2010/01/04(月) 16:44:21 ID:R2vcIv7j]
- スキニング
- 492 名前:名前は開発中のものです。 mailto:sage [2010/01/05(火) 23:31:28 ID:V0sHGwwt]
- 3Dゲーム作ってるんだけど、キャラクターモデルの大きさとかって影響あるの?
ビットマップと違って3Dはラスターデータだから、データの重さにはあまり影響ないように思うんだけど。 テクスチャの大きさが影響するとか? もしそうなら、大体どれくらいの大きさのモデルが基準になるんだろう。
- 493 名前:名前は開発中のものです。 mailto:sage [2010/01/05(火) 23:58:55 ID:7uq6yiIC]
- サンプルを参考にゲームを作り、1面、2面…とバラバラにcppを作ったのですが、
これを一つにまとめて、クリアしたら次の面にいくようにしたいのですが、どのような方法がありますか?
- 494 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 00:27:54 ID:lKDLfFv0]
- >>492
ポリゴン数とテクスチャサイズはパフォーマンスに影響するよ。 市販のゲームを参考にすると良いと思う。 ttp://www.geocities.jp/gamerabbits/programing_08.htm >>493 「#include」「extern」を使う。 ttp://www.geocities.jp/ky_webid/c/032.html
- 495 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 02:00:14 ID:odLPnjyO]
- ポリゴン数の話でなく、オブジェクトのサイズの話の方なら
3DCGソフトによって座標系や単位もバラバラなので関係ないよ。 ただ作業上の手間はあるので、サイズは統一しておいた方が 良いとは思う。 Dxライブラリの場合は、メタセコに合わせているので市販の3DCG ソフトから直接xで書き出した場合は、極小で表示されると思う。 3DCGソフト側で適正なサイズでモデリングするか、メタセコ経由 してサイズを調整するのが無難かも。 >>493 switchとかでもできるけど、シーン(面)ごとにクラスに分けてるなら 基底のクラス作ってそっから各面を派生させたほうが楽かも。 シーン遷移(シーケンス遷移)やstateパターンとかでググるといいかも。
- 496 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 02:15:00 ID:ngavL09N]
- 質問者のレベルを考えると
if ( scene == SCENE_TITLE ) Title(); else if ( scene == SCENE_PLAY ) Play(); でも良い気がした。
- 497 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 02:17:06 ID:BbbKJDe6]
- 関数ポインタなんてどですたい
- 498 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 02:41:18 ID:T+FI4egH]
- モデルの大きさは1以下にしたほうがいいとか
どっかに書いてあった気がする 浮動少数点の精度がどうたらこうたらで
- 499 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 16:02:24 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 16:15:50 ID:Yz0j5Uar]
- それはね、ほら、あれだよ
- 501 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 19:54:12 ID:+MjWEeUN]
- ファイルを置く場所が間違ってないなら、そのファイルが問題なんじゃないだろうか。
試しにDxLibのサンプルのファイルに置き換えてみるとかどうだろう。 あと念のため、>>301-302も見てみてね。
- 502 名前:名前は開発中のものです。 mailto:sage [2010/01/06(水) 21:30:52 ID:AxwVnUF1]
- ・・・回答ありがとう。解決したよ・・・
たった今、もの凄い恥ずかしいミスをしている事に気づいた。ぅゎー
- 503 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 00:27:42 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 01:03:02 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 01:04:01 ID:TMdG719d]
- あ、キーを押した瞬間だけ検知するロジックが必要だな
- 506 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 01:10:32 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 01:11:44 ID:TMdG719d]
- こうか。。超適当
chk_key(){ before_key_state = now_key_state; if(GetJoypadInputState() & PAD_INPUT){ now_key_state = true; } else{ now_key_state = false; } }
- 508 名前:名前は開発中のものです。 [2010/01/07(木) 15:40:47 ID: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 名前:名前は開発中のものです。 [2010/01/07(木) 15:43:45 ID: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 名前:名前は開発中のものです。 [2010/01/07(木) 15:52:30 ID:4ItCtcBu]
- キーを離すと「cstate = START」の状態に戻っていると思います。
if(key & PAD_INPUT_B){ }内の cstate++;の前後に if(cstate == START){ を入れるというのも試してみたのですが、 やはりうまくいきません
- 511 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 16:22:43 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 16:39:31 ID:4ItCtcBu]
- ありがとうございます。
確かにintでは値の保持ができませんね…。気が付きませんでした。 静的変数にしなくてはいけなかったんですね。 あとキー入力の部分もありがとうございました。 考えていた通りに動かすことができました。
- 513 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 16:45:13 ID:tQIgGLUE]
- DxlibをC#で使ってる解説サイトとかないかな?
- 514 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 17:40:30 ID:eYJAziPK]
- >>513
C#版は一部の関数が使えないこと以外はC版と同じ。 readme.txtに書かれていること以上に解説することがないから解説サイトもないよ。
- 515 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 22:19:47 ID:TMdG719d]
- static変数使うと初期化がうまくできなくなりがちなんだよなあ
- 516 名前:名前は開発中のものです。 mailto:sage [2010/01/07(木) 23:25:56 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 02:41:50 ID:8yWASrLd]
- 態々クラス化する程のことか
少なくとも手間は普通にコーディングした方が全然掛からないが
- 518 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 09:30:18 ID:TquDKlBD]
- ならその方法で良いんじゃない?
クラス化はあくまで一例でしょ 君のいう普通がどんななのかは知らないけど
- 519 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 21:55:23 ID:G0v30nLn]
- スクリーンのある位置のpixelが、
何色を表示しているかわかる方法ってありますか?
- 520 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 21:59:21 ID:UpbwAmjx]
- ある
- 521 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 22:04:52 ID:3zMDBTld]
- ある。
- 522 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 22:08:20 ID:G0v30nLn]
- GetPixelですか?
- 523 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 22:11:52 ID:3zMDBTld]
- なんでそれを聞く必要があるの?リファレンスにも書いてあるし自分で試すことも出来るのに
- 524 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 22:16:19 ID:5mIUw3Vj]
- >>523
言いたいことは分かるけど、おまいさんに突っ込む資格は無いだろうw
- 525 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 22:23:08 ID:G0v30nLn]
- >>520,521,523,524
なんとか出来そうになりました ありがとうございます
- 526 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 23:05:49 ID:qPTthljo]
- ワロタ
- 527 名前:名前は開発中のものです。 mailto:sage [2010/01/08(金) 23:08:41 ID:hMOVMPlC]
- できそうってまだできてないのw
- 528 名前:名前は開発中のものです。 mailto:sage [2010/01/09(土) 10:14:37 ID:D2rGgWHr]
- ストライクウィ○チーズ保管庫画像取得
maniax.dlsite.com/work/=/product_id/RJ057302.html 結構使える
- 529 名前:名前は開発中のものです。 mailto:sage [2010/01/09(土) 10:31:31 ID:KNCSUVMR]
- >>528
wgetでおk
- 530 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 04:28:31 ID:PNNRGsjZ]
- ゲームプログラマになる前に覚えておきたい技術を買ったんだけど
難しすぎるだろこれ DXライブラリのサイトのほうがどれだけわかりやすいか これは勉強する本じゃなくて、もう理解してる人が確認する ためのもんか?
- 531 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 04:43:49 ID:ePiCCxYA]
- 少なくとも入門書レベルなら、他人に教えてあげられるくらいの実力は要ると思う。
それでもプロとしてみるなら初心者だろうね。
- 532 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 04:58:47 ID:PNNRGsjZ]
- 何をやってるかはわかるんだけど、自分の力だけではコード書けない
結局サンプル見ながらそれを打ち込むだけ こんなんじゃ意味ないでしょ? 買うのまだはやかったなー
- 533 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 05:01:50 ID:ePiCCxYA]
- とりあえず一番最初の倉庫番チャレンジしてみたらどう?
自分は昼から始めて夕方までかかった orz
- 534 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 07:32:15 ID:JParRIfb]
- >>532
最初は意味わかんなくて、できる人のソースをコピペ。 次に少しずつソースを読解できるようになり改造していく。 そしてやっと自力ですべて書けるようになる…のが 普通の流れだと思うよ。 ひらしょー本は、初心者に構造的に説明しようと誠実に書いて くれている結果、冗長で読みにくくなった部分はあるとは思うけど 必要なことは抑えてある本だと思うので、まずは本に書いて ある事が分かるように勉強していけばいいんじゃないかな。 何が分からないかにもよるし、教え方の手腕の問題もある だろうけど、すぐに理解できちゃうような内容しか書いて いない本だとお金出して買う価値もないと思うし、 ゲーム関連技術がもし簡単に書けちゃう内容だと、こんなに 解説本も出ないと思う。
- 535 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 11:04:17 ID:Rc1hlYFq]
- 将来使うはずだと無理矢理クラスを使って書いてるけど
今のところ決定的にcに比べて便利だと思うところはないなぁ 確かに変数と関数を一塊にできるのは気持ちがいいのだが・・・
- 536 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 11:07:58 ID:2OywdL5M]
- listとか両方で実装してみると大分ちがわね?
- 537 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 11:20:33 ID:dmK/QlFI]
- >>532
Chapter13(I部 2次元のゲーム)までは頑張れ。 >>535 継承、カプセル化、ポリモーフィズム、演算子のオーバーロード、STLあたりを理解できるとメリットを感じられるようになるよ。
- 538 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 11:44:54 ID:QNWx2gsU]
- 最初はコピペ、それを改造、ってのはごく普通の流れだろうな。
俺も昔は雑誌に載ってたプログラムをぽちぽち打ち込んでたもんよ。
- 539 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 11:46:10 ID:wtJzH8/F]
- 俺も昔はラジオを録音してたもんよ
- 540 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 13:31:00 ID:pKLMp+mv]
- 今は3Dゲーならudkとかunityとか、2D紙芝居なら吉里吉里とかnスクとかがあるから、
趣味でゲーム作る程度ならプログラムまで手を出す必要はないよ。
- 541 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 15:45:18 ID:sQQs0/m1]
- 俺の場合は最初はソース呼んで理解するところから入ったがな
コピペがあまり意味あるとは思えん そっから自己流のアレンジで打っていったがな まあある程度コピペっちゃあコピペだけどな まあコピペは動作確認には必要かも知れんがな あとポリリズムとかは使ってったけどカプセル化は結局面倒になって公開しちゃえーて戻ったけどな 結局グローバル変数使いまくりに戻ったし、まあ使いまくりって程でもないが カプセル化やろうと思えばできるけどだってアクセサ通すと速度落ちそうな気すんだもん、それが気になってな 小規模の個人レベルであまりカプセル化のメリット感じられんのだが ポリポリなんちゃらは俺もlistで重宝してるな まあポリポリ使うより天麩羅使う方がすっきり書ける場合もあるしなあ
- 542 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 17:31:32 ID:/Tzv4S+1]
- そりゃあ、ポリリズムなんて使ってたらな。
- 543 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 17:36:55 ID:ohvCsHNW]
- Javaなんかと違ってC++はクラス作るのが面倒なんだよな
場合によってはかえってミスしやすくなったり保守性が下がったりする
- 544 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 17:45:33 ID:RHOGN5ub]
- 質問なんですが、画像でいうLoadGraphのように文字列を先にhoge[数字]読み込んでおいて、
DrawString(x,y,hoge[数字],Cr) ;のように呼び出して使う…ような感じになる方法ってありませんか? あと、文中に改行も含めたいのですが・・・。 できれば1行ずつ表示されると嬉しいです。
- 545 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 18:00:03 ID:wtJzH8/F]
- 外部ファイルを読み込みたいのか?
それなら龍神録にサンプルが載ってる。csv用だけどtxtにも転用できるはず
- 546 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 18:38:42 ID:VQ1HZqsF]
- やりたい事がはっきりしてるんだから、自分で作ればいいだけでは。
- 547 名前:名前は開発中のものです。 [2010/01/10(日) 18:52:06 ID:RHOGN5ub]
- 内部の別のクラスでTEXTの内容を変数に格納しておいて、
それをDrawString(x,y,hoge[数字],Cr) ;で呼び出したいんです… char hoge[1]="AAA"; DrawString(x,y,hoge[1],Cr) ; みたいな形です。
- 548 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 18:58:51 ID:2OywdL5M]
- 普通に読み込んで、文字列の位置を計算をして出力
- 549 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 19:01:30 ID:TNXhxGf1]
- 何を言っているのかわからないし
何をしたいのかもわからない
- 550 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 19:16:21 ID:RHOGN5ub]
- 画面に複数行の文字を表示したいんです。
通常はDrawString( 250 , 240 - 32 , "Hello C World!" , Cr );って書くと Hello C World! と表示されると思うんですけど、このHello C World!の部分を、 改行を含む、変数を入れたいんです。
- 551 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 19:20:29 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 19:42:52 ID:TNXhxGf1]
- 何言ってるのこいつ?
- 553 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 19:43:31 ID:z71TR0/5]
- sprintf(str, "Hello C world!\n");
DrawString(x, y, str, Cr);
- 554 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 19:59:40 ID:2OywdL5M]
- for(i = 0; i < numof_lines; ++i) DrawString(x, y + i * font_size, str[i], color);
- 555 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 21:11:56 ID:dmK/QlFI]
- >>544
そういう関数は用意されてないので自作するしかないよ。 改行文字を検索して文字列を一行ずつに分割、forループでY座標をずらして描画すればいいんじゃない?
- 556 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 21:40:30 ID:MFEe7NV6]
- DrawFormatStringの関数の
デフォルトのフォントの大きさってどれくらいなの? 書いてないから分かんないよ
- 557 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 21:57:23 ID:/Tzv4S+1]
- 作者が悪いみたいな言い方で気に入らねえなあ。
コードみりゃ書いてあんだろ、16だ。
- 558 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 23:42:22 ID:ePiCCxYA]
- 話の流れとは全然関係ないんだが、画面サイズを2パターン用意したら、なんかすげぇ面倒なことに(笑)
「なんとなく」ってだけで実装するもんじゃねーなあ。 単純に拡縮するだけなら簡単なんだろうけども。
- 559 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 23:46:51 ID:2OywdL5M]
- ルートレイヤ(固定サイズ)に描画→スクリーンに拡大描画でいいじゃん
- 560 名前:名前は開発中のものです。 mailto:sage [2010/01/10(日) 23:52:21 ID:PVCd/Cxa]
- 16 : 9 って今後は用意すべき?
- 561 名前:558 mailto:sage [2010/01/11(月) 01:11:32 ID:HJnYHrsQ]
- >>559
それは>>558の3行目で否定してる「単なる拡縮」だw もともと800x600でゲームを作ってたんだけどさ、 とある理由により、小さいウィンドウのバージョンを作らなきゃならなくなったんだ。 でもそのまま縮小すると、特にドット絵なんかは見てられなくなるし、 元が800x600用(あくまで縮小版はオマケ)なので、縮小版を基準にして800x600用に拡大するのも納得いかず。 そんなわけで、それぞれの画像の大きさを変えずに、ゲームの中身を変えようと思ったのが色々と失敗だった(笑) >>560 主流が16:9になるか16:10になるかは別として、今後は4:3のモニタは減っていくだろうからなあ。 とはいえ現状ではモニタ側で4:3に対応(レターボックスや引き延ばし)してくれたりするし、作りやすい方でいいんじゃない?
- 562 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 01:27:26 ID:1pzIf3AP]
- 今すぐ用意すべき
- 563 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 01:44:29 ID:Rz8RXzhw]
- ドット絵が汚くなるってのは補完してるからじゃなくて?ニアレストネイバーでやれば綺麗に縮小されないかな
- 564 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 02:18:06 ID:HJnYHrsQ]
- >>563
ドット絵は無理じゃない? あとクリティカルな部分はともかく、1つの画像ファイルでなんとかしたいよね。
- 565 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 02:25:08 ID:b9O3GovE]
- ペイントでキャラの画像を作る。保存をするとふちの部分の色が変わるのは何でだろう(´・ω・`)
- 566 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 03:05:07 ID:Rz8RXzhw]
- ペイントの拡大縮小は補完処理が働くから確実にドット絵が汚くなるよね
- 567 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 03:06:28 ID:/BVVeYOc]
- 565は拡大縮小してるとは言ってないけどね。
- 568 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 08:45:34 ID:50WrHthA]
- >>565
色が劣化する形式で保存してるんじゃないの?
- 569 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 09:45:29 ID:MF6sCU3I]
- 文字の回転ってどうやってやるんですか?
△の記号を90度回転させたものがほしいんだけど・・・・
- 570 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 09:52:18 ID:bJEynoIQ]
- >>565
画像をRGBにすれば解決する サイズは大きくなるがな
- 571 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 10:18:00 ID:32xuNCiI]
- 文字入れられるだろ
それ回転すればいいだけ
|

|