[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/25 20:51 / Filesize : 266 KB / Number-of Response : 992
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

DXライブラリ 総合スレッド その5



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/


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]
文字入れられるだろ
それ回転すればいいだけ



572 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 10:18:14 ID:8N572MW3]
>>569
画像にでも描いて回転描画させろ

573 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 10:22:10 ID:bJEynoIQ]
>>569
DrawVString

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

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

576 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 11:01:12 ID:MF6sCU3I]
>>575
でもやり方は知らないんでしょ?
知ってる人お願いしますね。

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

578 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 11:40:28 ID:bJEynoIQ]
で、>>573は試したのかね

579 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 11:43:03 ID:JhPE/M8b]
>>569
興味があったから探してみた。初心者なんで見当違いだったらスマソ
ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=42794&KLOG=73
ttp://msdn.microsoft.com/ja-jp/library/cc428368.aspx

580 名前:565 mailto:sage [2010/01/11(月) 12:24:49 ID:b9O3GovE]
色々試したらできました
ありがとうでした。

581 名前:名前は開発中のものです。 [2010/01/11(月) 15:35:07 ID:C8nZ8yZZ]
 |> <| こういうことだろ?



582 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 15:43:43 ID:32xuNCiI]
<| |> だと思ってた

583 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 16:11:51 ID:i9YgsXIH]
  (゚д゚ )
 <| y |>

584 名前:名前は開発中のものです。 mailto:sage [2010/01/11(月) 16:25:44 ID:MF6sCU3I]
>>582
が正解

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

586 名前:名前は開発中のものです。 mailto:sage [2010/01/12(火) 19:18:12 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/12(火) 19:32:24 ID:UxS4I4g/]
言っている意味がよく分からない。もっと要点絞ってくれ

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

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

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

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



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

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

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

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

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

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

595 名前:名前は開発中のものです。 mailto:sage [2010/01/12(火) 21:01:29 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/01/12(火) 23:19:04 ID:q3clJG+f]
俺も全く同じことしてたわw
変数名の付け方も
マイナスは考慮してなかったけど
y100は表現的にある程度解決できてもそれ以外、それに関わる他の変数とか範囲とかがややこしくなってくるんだよねえ

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

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

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

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

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

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

600 名前:名前は開発中のものです。 mailto:sage [2010/01/13(水) 11:13:13 ID:c62gE9Ki]
>>599
SetOutApplicationLogValidFlag(FALSE);

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



602 名前:名前は開発中のものです。 mailto:sage [2010/01/13(水) 12:44:41 ID:c62gE9Ki]
>>601
hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1352

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

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

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

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<266KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef