C言語を始めたばかりで右も左も分からない初心者です。
今ゲームを作っているのですが
確認用DrawString.cppとマウス.cppというファイルがあります。
マウス.cppの方に変数int MouseX,MouseYがあります。
GetMousePointでマウスの座標を取得して、MouseX,MouseYに座標を入力しまいた。
これを確認用DrawStringの方でDrawFormatStringを使って画面にMouseX,MouseYの値を表示したいのですが、
どのようにすればいいでしょうか?
別の.cppの変数を使う時は?
Re: 別の.cppの変数を使う時は?
マウス.cppに int GetMouseX(void) int GetMouseY(void) のような returnで変数の値を返す関数を作り、
マウス.h 作ってそっちに関数の宣言をして確認用DrawString.cppにインクルードするといいです。
このやり方だと 「別の.cppの変数を使う」 というより 「別の.cppの変数の値を取得する」 といった考え方ですが
あっちこっちから変数が変更できる設計はよろしくないので取得のみができる方が扱いやすいです。
マウス.h 作ってそっちに関数の宣言をして確認用DrawString.cppにインクルードするといいです。
このやり方だと 「別の.cppの変数を使う」 というより 「別の.cppの変数の値を取得する」 といった考え方ですが
あっちこっちから変数が変更できる設計はよろしくないので取得のみができる方が扱いやすいです。
Re: 別の.cppの変数を使う時は?
通常のグローバル変数として扱うのであれば、
extern宣言をすることで参照できるようになりますが、
通常はhideさんのおっしゃるとおり取得用の関数を作ります。
extern宣言をすることで参照できるようになりますが、
通常はhideさんのおっしゃるとおり取得用の関数を作ります。
Re: 別の.cppの変数を使う時は?
なるほど、変数を返す値を作ればいいのですね。
独学で勉強しながらなのでどういうのがあるのか全くわからなくて・・・(苦笑
色々サイトなどで調べてみます!
教えてくださったお二人様。
ご教授ありがとうございます!
独学で勉強しながらなのでどういうのがあるのか全くわからなくて・・・(苦笑
色々サイトなどで調べてみます!
教えてくださったお二人様。
ご教授ありがとうございます!
Re: 別の.cppの変数を使う時は?
色々調べてみましたが、なかなか分かりにくいですね・・・。
もし、お手数をお掛けですか、よろしければ変数を返す値を使ったソースコードを
書いていただいて教えていただいてもよろしいでしょうか?
もし、お手数をお掛けですか、よろしければ変数を返す値を使ったソースコードを
書いていただいて教えていただいてもよろしいでしょうか?
Re: 別の.cppの変数を使う時は?
イメージできれば幸いです。
ちなみにこれはhello,worldが表示されるだけのプログラムです。
このようなものでも大丈夫ですか?
main.c hello.h hello.c
ちなみにこれはhello,worldが表示されるだけのプログラムです。
このようなものでも大丈夫ですか?
main.c hello.h hello.c
C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。 C++を使えばそのような間違いを犯しにくくなる。しかし、やってしまったときには足全体が無くなる。
Re: 別の.cppの変数を使う時は?
既に出ている回答とは違う形ですが。
mouse.cpp
mouse.h
使用例
#必要なものはいつも目の前にある。
mouse.cpp
#include "DxLib.h"
static int MouseX, MouseY;
void Mouse_Update()
{
GetMousePoint(&MouseX, &MouseY);
}
void Mouse_GetPoint(int *XBuf, int *YBuf)
{
*XBuf = MouseX;
*YBuf = MouseY;
}
#include "DxLib.h"
#include "mouse.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() != 0) return 0;
SetDrawScreen(DX_SCREEN_BACK);
while (ProcessMessage() == 0 && ScreenFlip() == 0 && ClearDrawScreen() == 0) {
Mouse_Update();
int mx, my;
Mouse_GetPoint(&mx, &my);
DrawFormatString(0, 0, GetColor(255,255,255), "X:%d Y:%d", mx, my);
}
DxLib_End();
return 0;
}