トップページ > 記事閲覧
ファイル分割
名前:おっさん 日時: 2023/12/30 11:02

Gazou.cpp #include "DxLib.h" void Gazou() { int GrHandle; int ItemHandle; // 画像の読み込み GrHandle = LoadGraph("C:/Shooting/Player.bmp"); ItemHandle = LoadGraph("C:/Shooting/item.jpg"); // 3D空間上に画像を描画 DrawBillboard3D(VGet(30.0f, 240.0f, 100.0f), 0.5f, 0.5f, 120.0f, 0.0f, GrHandle, TRUE); // 3D空間上に画像を描画 DrawBillboard3D(VGet(620.0f, 240.0f, 100.0f), 0.5f, 0.01f, 120.0f, 0.0f, ItemHandle, TRUE); } Gazou.h void Gazou(); main.cpp #include "DxLib.h" #include "Gazou.h" int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更と初期化と裏画面設定 while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) { void Gazou(); } DxLib_End(); // DXライブラリ終了処理 return 0; } 実行はできるのですが画像が表示されません。解決方法わかる方がいましたらご教授お願いします。
メンテ

Page: 1 | 2 |

Re: ファイル分割 ( No.1 )
名前:Ni 日時:2023/12/30 11:26

ざっと読んだだけなのですがGazou.cppにも #include "Gazou.h" を加えてみたら直るのではないでしょうか
メンテ
Re: ファイル分割 ( No.2 )
名前:おっさん 日時:2023/12/30 13:50

試してみたけど表示されないですね... 回答ありがとうございます。
メンテ
Re: ファイル分割 ( No.3 )
名前:Ni 日時:2023/12/30 14:20

似たコードを書いて実際に試してみました。 ループ内の関数呼び出しで void Gazou(); を Gazou(); にすれば描画自体はできると思います(void付きだと関数宣言と見なされる?)。ただ、関数内でLoadGraphしているためこのままでは毎ループ画像が読み込まれてしまいます。ループ内で使うなら読み込みは別の関数にして一回だけ呼び出した方がいいですね。
メンテ
Re: ファイル分割 ( No.4 )
名前:たろう 日時:2023/12/30 14:22

おっさんさんこんにちは、 LoadGraphを毎フレーム呼び出すような状態になっていませんか? たぶん近道はないので、使い方をわかりやすく紹介してくれている サイト(↓)などをまず目を通したほうが良いと思います。 ttps://dixq.net/g/ もしかすると私の早とちりで、 上級者だったらごめんなさいm(__)m
メンテ
Re: ファイル分割 ( No.5 )
名前:あっぷる 日時:2023/12/30 17:29

たろうさんのコメントと重複してしまいますが while ()の前にLoadGraphを行い、 while ()の後にDeleteGraphを行い、 while ()の中でDrawBillboard3Dを行う様に直せば 表示されると思います
メンテ
Re: ファイル分割 ( No.6 )
名前:おっさん 日時:2023/12/30 18:02

NIさん、アップルさん、たろうさん 回答ありがとうございます。解決しました。
メンテ
Re: ファイル分割 ( No.7 )
名前:通りすがり 日時:2024/05/08 00:32

こんばんは。全く同じ状態で悩んでいる者ですが この場合は、別の.hファイルにクラスでメンバ関数を定義して .cppファイルにLoadGraph命令を書いて、それを .mainファイルのメインループのwhileの中に while(){ game.GraphDraw(); game.StickMove(); }; とか、やっちゃ駄目なんですか? これでいつも開発が停滞してます。
メンテ
Re: ファイル分割 ( No.8 )
名前:管理人 日時:2024/05/08 22:27

すみません、記載内容が漠然としているのでなんとお答えすれば良いかわかりません もう少し詳しい状況を教えて頂けないでしょうか?
メンテ
Re: ファイル分割 ( No.9 )
名前:通りすがり 日時:2024/05/09 05:03

#include "DxLib.h" #include "Player.h" // // WIN MAIN関数 // int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd) { // DXライブラリ初期化。出来なかったら終了 if (DxLib_Init() == -1)return -1; // クラス定義 Player pl; // ウインドウモードに変更 ChangeWindowMode(TRUE); // 画面モードのセット SetGraphMode(640, 480, 16); // 勝手に終了しない様にする SetWindowUserCloseEnableFlag(FALSE); // キー入力初期設定 GetHitKeyStateAll(KeyBuf); // キャラロード pl.GraphLoad(); // ループ while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { // 画面を初期化する ClearDrawScreen(); pl.Stick(); pl.GraphDraw(); // 裏画面の内容を表画面に反映させる ScreenFlip(); }; DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 }; こう言った感じにするとpl.などでエラーが出ます。
メンテ
Re: ファイル分割 ( No.10 )
名前:通りすがり 日時:2024/05/09 17:51

それと、変数の初期設定値を無視して、XやYの値が−80949872198471みたいになります(数字はデタラメ)。 分割コンパイルしないと簡単に扱えない気がするのですが 皆さんは分割ソース初心者に分かり易い様に、どう処理しているのが聞いてみたいです。
メンテ
Re: ファイル分割 ( No.11 )
名前:あっぷる 日時:2024/05/10 11:12

playerクラスの内容とエラー情報がわからないとなんとも言えませんが おそらく宣言問題かと思われます #pragma once #include "DxLib.h" class CPleyar { private: int m_x = 0; int m_y = 0; int m_s = 100; public: CPlayer() { m_x = 200; m_y = 100; }; void SetX(int x) { m_x = x; }; void SetY(int y) { m_y = y; }; void SetS(int s) { m_s = s; }; int GetX() { return m_x; }; int GetY() { return m_y; }; int GetS() { return m_s; }; int Draw() { return DrawBox(m_x, m_y, m_x + m_s, m_y + m_s, GetColor(255, 255, 255), 1); }; }; とかhで書いておいて メインループ前に CPlayer pl; メインループ内に pl.Draw(); とかやれば表示はされました
メンテ
Re: ファイル分割 ( No.12 )
名前:管理人 日時:2024/05/10 13:18

私もcppの方には問題が無いと思いますので、Player.h がどのようになっているか 内容を貼り付けて頂けないでしょうか? m(_ _)m > それと、変数の初期設定値を無視して、XやYの値が−80949872198471みたいになります(数字はデタラメ)。 その現象が確認できるプログラムはありますでしょうか?
メンテ

Page: 1 | 2 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存