検索結果 67 件

by 参照魚
3週間前
フォーラム: C言語何でも質問掲示板
トピック: enumとクラスを対応させる?
返信数: 2
閲覧数: 423

Re: enumとクラスを対応させる?

残念ながら本質的に解決方法はありません。関数にまとめたり、コード上で見易くするなどはありますが、工夫の範疇でしかないです。必ずkindの増加に応じて列挙する部分は残ります。その部分の視認性と記述性をよくするのがベターだと思います。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: dinputを使用した時MessageBoxのボタンが押せなくなる
返信数: 1
閲覧数: 562

Re: dinputを使用した時MessageBoxのボタンが押せなくなる

問題がある場所は提示されているコードの周りではなく、DirectInputの初期化と毎ループの入力読み取り周りだと思われます。もしDirectInput周りが何かしらのライブラリィでラッピングされているのであれば、そのライブラリィとmCurrKeyboardの接続部分にあるとおもいます。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ファイル名からクラス名を自動でつけたい
返信数: 9
閲覧数: 1102

Re: ファイル名からクラス名を自動でつけたい

gccでmakfileを使用するなら、makefile中でコンパイラオプションに下記を与えるといけるかもしれません。 -DFILE_NAME=$(*F) ただ、まったくもってお勧めしません。 ファイル名変更時の修正を最小化したいのなら、下記の方法もできなくはないです。 ①クラスをすべてインラインで書く クラス名の変更だけでいけるが、実装が丸見え。 ②decltypeを使う クラス名の変更とextern 宣言の変更でいける。 FILE_NAME.hpp class FILE_NAME { void funcA(); }; extern FILE_NAME dummy; FILE_NAME.hpp...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

ここまでで当初の質問の内容は達成できたと思います。ただこのままだと繰り返し切り替えをしていると挙動がおかしくなる可能性が残っています。最後にそれを解消するコードを提示します。 main.c #include "DxLib.h" #include "menu.h" #define WIN_W 800 //ウインドウの横幅 #define WIN_H 600 //ウインドウの縦幅 static int SceneMode = SCENE_GAMESTART; static int SceneNext = SCENE_TITLE; extern void InitSceneTitle(void); ...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

DxLib_EndがWhileループの中に入っていました。 #include "DxLib.h" #include "menu.h" #define WIN_W 800 //ウインドウの横幅 #define WIN_H 600 //ウインドウの縦幅 extern int gpUpdateKey(); static int SceneMode = SCENE_TITLE; static int SceneNext; extern int SceneTitle(void); extern int SceneGame(void); extern int SceneScore(void); exter...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

これでまだエラーになるようなら、menu.hのコードをお知らせください。 #include "DxLib.h" #include "menu.h" #define WIN_W 800 //ウインドウの横幅 #define WIN_H 600 //ウインドウの縦幅 extern int gpUpdateKey(); static int SceneMode = SCENE_TITLE; static int SceneNext; extern int SceneTitle(void); extern int SceneGame(void); extern int SceneScore(void)...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

①②のところがコードの意味として間違っています

コード:

	DxLib_End();						// DxLib終了処理

	return 0;
	}
}  //①

int Key[256]; // キーが押されているフレーム数を格納する

// キーの入力状態を更新する
int gpUpdateKey(){ // ②
	char tmpKey[256];	
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

main.cからint Key[256]とint gpUpdateKey(void)をコメントアウトかなにかしましたか?
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

タイトルとスコアのMenuElement_tの宣言は、menu.hをインクルードしているので必要ありません。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

main.cではSceneNextを受け取ってSceneModeを切り替えます。 while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && gpUpdateKey() == 0) { switch (SceneMode) { case SCENE_TITLE: SceneNext = SceneTitle(); break; case SCENE_GAME: SceneNext = SceneGame(); break; case SCENE_SCORE: SceneNext = SceneSc...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

SceneTitle/SceneGame/SceneScoreの各関数は返り値にシーン番号を返すように修正してください。main.cの下記のswitch文は実行された各画面の返り値で次に実行する画面を受け取ります。 switch (SceneMode) { case SCENE_TITLE: SceneNext = SceneTitle(); break; case SCENE_GAME: SceneNext = SceneGame(); break; case SCENE_SCORE: SceneNext = SceneScore(); break; } 例えばSceneTitleであれば、...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: bgmについて
返信数: 5
閲覧数: 799

Re: bgmについて

サウンドのプレイ開始の合図は1回だけやれば後は自動再生されるようですので、 GOOD/MISSを判定するところでPlaySoundMemを呼び出せばよいかと思います。 //bar座標更新 for (int i = 0; i < LANE_SIZE; i++) { for (int j = 0; j < BAR_SIZE; j++) { if (bar_f[i][j]) { bar_y[i][j] += 4.f; //DrawFormatString(100, 120, GetColor(255, 255, 0), "bar_y[i][j]---%f", bar_y[i][j]); if (ba...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

9行目の方のSceneMode = 0 は削除してください。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

>main.c/SceneTitle.c/SceneGame.c/SceneScore.cのそれぞれでインクルードしてください。
main.cに#include "menu.h"するのを忘れていませんか?
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: bgmについて
返信数: 5
閲覧数: 799

Re: bgmについて

LoadSoundMemはサウンドファイルを読み込みにいきますので、whileループで毎回呼び出すと、そこで処理が重くて止まったようになってしまっているのだと思います。

コード:

while (ScreenFlip() == 0 && ... ){
	:
	SHandle = LoadSoundMem("ゆかいな日常.mp3");
	:
}
初期化で1回だけ呼ぶようにすれば大丈夫だと思います。

コード:

SHandle = LoadSoundMem("ゆかいな日常.mp3");
	
while (ScreenFlip() == 0 && ... ){
	:
}
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

ここまでの流れに直接関係ないですが、SceneTitle.c/SceneScore.cでMenuElement_tという同じ構造体をそれぞれのファイル内で宣言されています。複数のファイルで共通に使用される#defineや構造体はヘッダファイルに集約すると後々の管理/修正が容易になります。 <menu.h> #pragma once enum { SCENE_GAMEOVER = -1, SCENE_TITLE, SCENE_GAME, SCENE_SCORE, }; // メニュー項目の表示に必要な構造体を用意する typedef struct { int x, y; // 座標格納用変数 c...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

SCENE_GAMEOVER= -1, =が全角になってました。半角に修正してください。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

実際に画面選択する前にもう少し準備が必要です。menu.hを作成して、main.c/SceneTitle.c/SceneGame.c/SceneScore.cのそれぞれでインクルードしてください。 <menu.h> #pragma once enum { SCENE_GAMEOVER= -1, SCENE_TITLE, SCENE_GAME, SCENE_SCORE, }; 画面切り替え用の変数SceneNextを追加する。 static int SceneMode = SCENE_TITLE; static int SceneNext; これまで数値で直接書いていた画面の番号をenumで置き...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

Keyは43行目に定義されています。使用する場所より前の適切な位置でextern 宣言をしてKeyを参照できるようにしてください。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

キー入力でSceneModeを変更できるようにして各画面が出るか確認してください。 while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && gpUpdateKey() == 0) { if (Key[KEY_INPUT_Z] == 1) { SceneMode = 0; } if (Key[KEY_INPUT_X] == 1) { SceneMode = 1; } if (Key[KEY_INPUT_C] == 1) { SceneMode = 2; } switch ( SceneMode ...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

戻り値の型が抜けていました。

extern SceneTitle( void );
extern SceneGame( void );
extern SceneScore( void );

extern int SceneTitle( void );
extern int SceneGame( void );
extern int SceneScore( void );
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

WinMainはmain.cに作成してください。これまで各画面で行っていたDxLibの設定やWhileループはここで行います。while ループの中でここまでに作成したSceneTitle/SceneGame/SceneScoreを呼び出すことになります。どれを呼び出すかは変数(int SceneMode)を用意して切り替えます。タイトル画面が表示されるか確認してください。これでとりあえず画面切り替えの骨格は完成です。 #include "DxLib.h" #define WIN_W 800 //ウインドウの横幅 #define WIN_H 600 //ウインドウの縦幅 extern int ...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

各画面のSceneXXXX関数内で定義している変数を関数の外に出してstaticを付けてください。 SceneTitle と SceneScore の int Key[256]だけはexternにします。また、int gpUpdateKey()関数はでは使用されていないので削除します。 <タイトルのコード> #include "DxLib.h" extern int Key[256]; // キーが押されているフレーム数を格納する // メニュー項目の表示に必要な構造体を用意する typedef struct { int x, y; // 座標格納用変数 char name[128]; // ...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

・いずれも最後の return の位置がおかしいです
・int SceneGameの書式がおかしいです
・while ループを外したことに伴い、while から抜け出す break; は return 0; に変更する必要があります。

編集するごとにビルドが通るかこまめに確認しないとあとが大変になるので注意が必要です。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

SceneGameについてもSceneTitle,SceneScoreと同様にDxLibのシステムの初期化と後始末に関連する部分を削除して、whileループを外します。各画面のコードはファイルを分けた方が管理しやすいので、それぞれSceneGame.c SceneTitle.c SceneScore.cに記述してください。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

SceneTitle,SceneScoreの中にあるwhile (ScreenFlip() == 0...){ コード }の部分は、whileループを外して、中のコードを剥き出しにします。あと、ゲーム画面のコードもSceneGameにします。WinMain部分はその次に考えます。
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 簡易的な戦闘プログラム
返信数: 2
閲覧数: 845

Re: 簡易的な戦闘プログラム

コマンドウインドウ上の逐次実行での作りになります。DXLib上のゲームループに置き換えるにはかなり工夫が必要になります。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int hitpoint_monster; int hitpoint_player; int damage_monster; int damage_player; int command; srand( time( NULL ) ); while ( 1 ) { printf( "モンスターが現れた\n" ); hitpoint_mons...
by 参照魚
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 2637

Re: ゲームの画面切り替えについて

まずは各画面をサブルーチン化するところから始めてください。例えばタイトル画面なら、int WINAPI WinMain を int SceneTitle(void) に変更します。そして、そのサブルーチンからDxLibのシステムの初期化と後始末に関連する部分を削除します。タイトル画面なら、ChangeWindowMode, DxLib_Init,SetDrawScreen,DxLinEnd です。次に While ループを外します。これでビルドが通るところまで行ってみてください。最後のリンクでWinMainが無いというエラーがでますが、それは次の段階になります。
by 参照魚
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxlib 円運動の仕方がわからないです
返信数: 4
閲覧数: 901

Re: Dxlib 円運動の仕方がわからないです

例えば敵キャラの挙動とした場合だと、敵キャラの構造体に半径(radius)と回転角(rotate)をメンバーに持たせます。 struct ENEMY { float centerx,centery; float radius; float rotate; }; 敵キャラを表示する位置はざっくり下記のような式になります。 x = radius * cos( rotate ) + centerx; y = radius * sin( rotate ) + centery; 時間経過でrotateを増やしていけばcenterx,yを中心に回転します。注意点はrotateは角度ではなくラジアンで管理す...
by 参照魚
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 線形補完での画像処理
返信数: 4
閲覧数: 1279

Re: 線形補完での画像処理

私自身は線形補完や画像処理に詳しくないので、
処理の計算式そのものについては、何も申し上げられないのですが、
気になるところとしては下記の計算式で、aとbは常に0になるのではないでしょうか?

コード:

  I=i/M;
  a=i/M-I;
  
  J=j/N;
  b=j/N-J;
  
by 参照魚
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語の課題演習において、strstrを用いた文字列の比較についてのご質問です。
返信数: 10
閲覧数: 1615

Re: C言語の課題演習において、strstrを用いた文字列の比較についてのご質問です。

strstr の使い方そのものはあっていると思います。

①sscanf の意図がわからないです。
sscanf(str,"%s",buf);
sscanf(abc,"%s",buf);
この2行(とbuff[1000])は不要かなと思います。

②char xyz;
ここは char* xyz が正しいです。
strstr の戻り値は char*です。

③実行結果が2行目のみ表示...
printf("%s",abc);なので2行目だけ(abc)が表示されるのは、プログラムの挙動しては間違っていないです。
何を表示したいのかを記載すると回答が得られやすいかと思います。
by 参照魚
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 線形補完での画像処理
返信数: 4
閲覧数: 1279

Re: 線形補完での画像処理

scale_up_IPでIやJが未初期化状態のi,jを使用して計算されています。for 文の中に入れて、ループの都度再計算する意図なのかなと思います。
by 参照魚
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 【C++】ソースファイルを作らずに静的メンバ変数の実態の生成
返信数: 27
閲覧数: 2419

Re: 【C++】ソースファイルを作らずに静的メンバ変数の実態の生成

実行中に値が変更されないのであれば、constexprで宣言する方があっているかと思います。

static constexpr int windowWidth = 480;
static constexpr int windowHeight = 360;
by 参照魚
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 教えてください(グラフの作り方)
返信数: 5
閲覧数: 1626

Re: 教えてください(グラフの作り方)

コードそのものはビルド・実行できました。ただ結果がx=の時にinf、x=1の時にnanになりました。
実行結果はともかくとして、C言語のコードとしてはうまくいっています。

数学に疎いのでfuncの数式の意味するところがわからないのですが、この数式自体が間違っているかも知れず、正しい数式を知りたいという意味でしょうか?そうであればその数式で解決したい目的を書かれた方がよいかと思います。
by 参照魚
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Resourceからテクスチャを読み込めない
返信数: 2
閲覧数: 1598

Re: Resourceからテクスチャを読み込めない

テクスチャの設定を下記のようにすると(テクスチャが貼られていない)白いポリゴンが表示されますか?

m_pD3DDevice->SetTexture(0,g_pTexture01);

m_pD3DDevice->SetTexture(0,nullptr);

もしそれが表示されなければ、リソースの読み込みの前にポリゴンの設定の段階で問題があります。
by 参照魚
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: DxLibでの開発について
返信数: 6
閲覧数: 2048

Re: DxLibでの開発について

>右側はちゃんと認識するのですが、左上から...
まずはprintfDX()でMousePositionX と MousePositionXの値を表示してみて、値がifの条件式に合致するか確認してみてはいかがでしょうか?

>また終了するのではなくもう一度タイトル画面が...
DxLib_End()を呼んでもゲームの流れが変わるわけではないので、次のループでまたGAME_TITLEのところが実行されます。switch(Root)のRootの値を適切に変更(例えばGAME_ENDのようなcaseを新たに追加する)する必要があります。
by 参照魚
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++での迷路表示プログラムについて
返信数: 1
閲覧数: 2302

Re: C++での迷路表示プログラムについて

①Display構造体をMazePrinter構造体の前で定義しないとエラーになります。

②下記のメンバ関数が定義されていませんでした。
Display::
std::ostream& stream();

DisplayFile::
DisplayFile();
~DisplayFile();
std::ostream& stream();

DisplayScreen::
void start();
void end();
void put(char c);
void newLine();
std::ostream& stream();
by 参照魚
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: directx で 2dゲーム
返信数: 6
閲覧数: 7772

Re: directx で 2dゲーム

本ではありませんが、"ゲームつくろー"というサイトがdirectx 9の解説がとても良いです。また directx 10以降やゲームプログラムに必要な低~中レイヤーの技術の解説も非常に充実しています。ゲームジャンルごとのプログラムの構造については、公開されているコードを読んで体得するしかないかなと思います。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: switch文を使った整理
返信数: 3
閲覧数: 3200

Re: switch文を使った整理

switch文でゲーム(シナリオやバトルシーン)の流れそのものを記述したいのであればc言語の機能だけではちょっと厳しいです。c言語は複数フレームにまたがる処理や平行して複数のオブジェクトを同時に処理する機能がないので、プログラマーがその部分を実装する必要があります。ゲームライブラリやスクリプトエンジンを利用する事で解決できますが、勉強や挑戦の意味で自分自身で作成したいのであればそれはそれでアリだと思います。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 3022

Re: ラムダ式はいらない子?

ラムダ式は周囲の変数を式の内部に閉じ込めた関数オブジェクトを簡易に生成する事ができるのが最大の利点と思っています。 void sample( void ){ int x = 10; const auto f = [=](){ printf( "%d\n", x ); }; // この時点の値がコピー x = 20; // その後に変更しても func(); // 10が表示される } 生成した関数オブジェクトを保持しておいて、後で別の場所で遅延実行させることもできます。構造体と関数ポインタでも同様の事ができますが、より簡潔に直感的に記述する事ができます。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: constについて教えて下さい [入門]
返信数: 2
閲覧数: 1002

Re: constについて教えて下さい [入門]

言語はC/C++かと思いますが、(その前提で)記述は下記になるかと思います。 const char* const array[] = ["a","i","u"]; ①const char* は指しているchar配列の内容を変更できないという意味です。 "a"等は固定文字列でそもそも変更できませんのでこのconstは必須です。 char* const array[] = ["a","i","u"]; // エラーになる ②const array[] は 配列の要素を変更できないという意味です。 const char* const array[] = ["a","i","u"]; array[0]...
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: C++  継承?についての質問
返信数: 10
閲覧数: 1945

Re: C++  継承?についての質問

Parameter_IsAbleGoはGo可能かどうか判定する関数とその結果を保持する変数だけのクラスにした方がよいかと思います。
Parameter_IsAbleGoにメンバ変数にX,Y,Speedは持たせず。必要なパラメーターはUpdateの引数で受け取るのではどうでしょうか?

コード:

void Roll_Char_Parameter::Update()
{
	Roll_Char_Parameter_IsAbleGo::Update( this, Stage_GetParameter );
}
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: C++  継承?についての質問
返信数: 10
閲覧数: 1945

Re: C++  継承?についての質問

Parameterクラスが基底クラスで、Parameter_ShouldGoクラスが派生クラスであってますでしょうか?
それなら呼び出せますが逆だったら呼び出せません(すいません)
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: C++  継承?についての質問
返信数: 10
閲覧数: 1945

Re: C++  継承?についての質問

Parameterクラスをpublicで継承すれば派生クラスからでもParameterクラスのメンバ関数を呼び出せます。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: C++  継承?についての質問
返信数: 10
閲覧数: 1945

Re: C++  継承?についての質問

2つのクラスが互いの基底クラス(class A : Bと class B : A)になって、 構造が循環してしまっているせいだと思います。 // Roll_Char_Parameter_IsAbleGo.h class Roll_Char_Parameter_IsAbleGo : virtual private Roll_Char_Parameter // Roll_Char_Parameter.h class Roll_Char_Parameter : virtual private Roll_Char_Parameter_IsAbleGo virtual 継承は共通の基底クラスを持つクラス...
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: C言語:ポインタとメモリ空間
返信数: 5
閲覧数: 2550

Re: C言語:ポインタとメモリ空間

c言語は宣言はブロックの最初にまとめないとエラーになります。

コード:

int a;
int *pa;

a = 10;
pa = &a;
もしくは変数宣言と同時に初期化します。

コード:

int a = 10;
int *pa = &a;
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 【DirectX】行列を使用した2Dポリゴンの拡大縮小・回転について
返信数: 4
閲覧数: 1494

Re: 【DirectX】行列を使用した2Dポリゴンの拡大縮小・回転について

プレイヤーの位置は移動行列により実現されます。 D3DXMatrixScaling( &ZoomMatrix, x, y, 1.0f); // 2DならZ軸方向の拡縮は影響しないので1 D3DXMatrixRotationZ( &RotationMatrix, D3DXToRadian(angle) ); D3DXMatrixTranslation( &MoveMatrix, PLAYER_INIT_POS_X, PLAYER_INIT_POS_Y, 0.0f ); // 2DならZ軸方向の拡縮は影響しないので0 // 拡縮×回転×移動の掛け算で変換行列が生成されます const D3DXMA...
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 【DirectX】行列を使用した2Dポリゴンの拡大縮小・回転について
返信数: 4
閲覧数: 1494

Re: 【DirectX】行列を使用した2Dポリゴンの拡大縮小・回転について

頂点座標にプレイヤーの位置(PLAYER_INIT_POS)を入れているため原点(画面左上)を中心に拡縮・回転がされてしまっていると思われます。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: directxでステージ2dアクションをつくりたい
返信数: 1
閲覧数: 2640

Re: directxでステージ2dアクションをつくりたい

マリオのようなステージなら適当な大きさにブロック(例えば32×32)を決めて、そのブロックを配列で表記するところから始めるとよいかと思います。 #define STAGE_SIZE_H 16 // ステージの高さ(ブロック数) #define STAGE_SIZE_W 32 // ステージの長さ(ブロック数) #define STAGE_NUM 8 // ステージ数 enum BLOCK { ブロックの種類 NOBLOCK, //ブロックが無し NORMAL, // ノーマルブロック BREAKABLE, // 壊せるブロック : : }; static UINT stage_data01[S...
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: 可変長引数についての質問です
返信数: 3
閲覧数: 1695

Re: 可変長引数についての質問です

templateを用いずに関数で完結させるとしたらこんな感じでした。 int foo( const char* format, ... ){ va_list list; va_start( list, format ); const auto num = std::vsnprintf( nullptr, 0, format, list ); const auto buf = new char[num]; ::vsprintf( buf, format, list ); const auto val = printf( "%s", buf ); delete [] buf; va_end( li...
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: カードゲームを作っています。
返信数: 6
閲覧数: 2439

Re: カードゲームを作っています。

Addの引数から型を推測させたいのであれば、test1がcCrad*になっているのでできないです。 Add( (cTEST1*)nullptr )とするかAdd<cTEST1>( nullptr )と明示的に型を指定しないとだめだと思います。 Add関数内で引数で受け取った基底型のポインターから派生型の情報を取得するのは難しいと思います。 cCradに純粋仮想関数 virtual cCard* Generate( void ) = 0; を定義して、派生型にそれぞれのインスタンスを生成させるGenerateを用意させる方法もあります。deck.push_back(_card->Generate...
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: 複数ウィンドウ表示の仕方
返信数: 7
閲覧数: 11775

Re: 複数ウィンドウ表示の仕方

printfなら下記の方法でできます。

コード:

AllocConsole();
freopen(   "CONOUT$", "w", stdout );

printf( "hello world" );

FreeConsole();
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: 複数ウィンドウ表示の仕方
返信数: 7
閲覧数: 11775

Re: 複数ウィンドウ表示の仕方

CreateWindowをクラス名を変えて呼べばウインドウ自体は複数作成できると思います。ちょっと詳細が思い出せないのですが、DirectXと共存させる場合はスレッドを分けた方がよいらしいです。自分はメインのゲームのスレッドのデバッグ情報の文字列をバッファのワークに貯めておいて、サブのデバッグ表示用のスレッドで一括で表示しています。バッファのワークに同時にアクセスしないように単純なフラグで切り替えています。
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: シューティングゲームの作り方改
返信数: 16
閲覧数: 6864

Re: シューティングゲームの作り方改

void tamaupdate(void) { if (inport(PK_N)) { gtama.fPosX = g_player.fPosX; gtama.fPosY = g_player.fPosY; gtama.flg = 1; } if (++gtama.fPosX > 79) { gtama.flg = 0; } if (gtama.fPosX == ou.fPosX&>ama.fPosY == ou.fPosY) { gtama.fPosX = ou.fPosX - 1; // ここでgtama.fPosXの値を変更しているので } } void tamadrow(void...
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: シューティングゲームの作り方改
返信数: 16
閲覧数: 6864

Re: シューティングゲームの作り方改

fPosYの値を-1しています。+1する++と同類の演算子です。この++や--は変数の後につけるやり方(i++)と前につけるやり方(--i)があります。
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: シューティングゲームの作り方改
返信数: 16
閲覧数: 6864

Re: シューティングゲームの作り方改

11行目間違いです。すいません。

コード:

if ( gtama.flg == 1 && --gtama.fPosY < 1 ) {
}
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: シューティングゲームの作り方改
返信数: 16
閲覧数: 6864

Re: シューティングゲームの作り方改

アップデートと表示を分離してみました。弾が1発だけならtimeの条件は不要で、とりあえずY座標の条件だけでよいと思います。当たり判定で消える条件もあるかと思いますが、それはこれが解決してから考えればよいと思います。 せっかくtamadraw()があるならprintfはそちらで実行したほうがよいです。 void tamaupdate(void) { if ( inport(PK_N) ) { gtama.fPosX = g_player.fPosX; gtama.fPosY = g_player.fPosY; gtama.flg = 1; } if ( --gtama.fPosY < 1 ) {...
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ワールド変換、ビュー変換、射影変換の結果について
返信数: 2
閲覧数: 882

Re: ワールド変換、ビュー変換、射影変換の結果について

>ですが結果をグラフィックデバックの方で見てみるとよく分からない数字が入っています。
それはSV_POSITIONのzの値のことでしょうか?おそらくwの値で割って、最終的に0~1に正規化されるのだと思います。
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: シューティングゲームの作り方改
返信数: 16
閲覧数: 6864

Re: シューティングゲームの作り方改

弾が表示されないのは下記の部分が間違っているためです。弾にプレイヤーの位置を教えないと正しい位置に表示されないです。 g_player.fPosX = gtama.fPosX; g_player.fPosY = gtama.fPosY; ↓ gtama.fPosX = g_player.fPosX; gtama.fPosY = g_player.fPosY; gtamaはグローバル変数で1個だけ定義されているのですが、画面上に同時に表示される弾は1個だけという事であっていますでしょうか?ただ、gtama.timeはおそらく連射のインターバル調整のためだと思われますが、それだと変数を用意するとこ...
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: シューティングゲームの作り方改
返信数: 16
閲覧数: 6864

Re: シューティングゲームの作り方改

コンソールにprintfで表示を行っているものかと思います。このコンソールへの表示の仕様がどういうものかわからないのですが、仮にFPS60毎に表示がクリアされるのだとすると、gtama.flagが1の時に一瞬だけ”|”が表示されて以降は表示されないと思います。
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクト管理システムについて
返信数: 11
閲覧数: 1932

Re: オブジェクト管理システムについて

ObjectManagerもオブジェクトの種類ごとに派生、FindObjectを仮想関数にすれば、オブジェクトによって検索方法をカスタマイズできます。もしそうするならObjectManagerはその派生オブジェクトの静的メンバー変数にもできます。

コード:

class EnemyObject : public IObect {
public:
 static EnemyObjectManager mgr;
};
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクト管理システムについて
返信数: 11
閲覧数: 1932

Re: オブジェクト管理システムについて

元のQiitaの記事では、ObjectManager mgr;で定義されています。これはゲームの設計次第のところがあって、ただ一つの正解というものはないです。ゲームオブジェクトを全部管理する一つだけのObjectManagerでも良いですし、オブジェクトの種類ごとに用意してもよいです(plaeyer_mgr,enemy_mgr)。個人的には後者です。
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクト管理システムについて
返信数: 11
閲覧数: 1932

Re: オブジェクト管理システムについて

派生クラスにObjectManagerと検索キーを引数にするメンバー関数を作ればよいかと思います。
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクト管理システムについて
返信数: 11
閲覧数: 1932

Re: オブジェクト管理システムについて

ObjectManagerに引数を検索キーにしてIObjectのポインターを返すメンバー関数を用意すれば良いかと思います。
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: テクスチャをポリゴン化
返信数: 2
閲覧数: 878

Re: テクスチャをポリゴン化

リンク先で行われていることはおそらく画像で特徴的なところ(凹凸)をピックアップして、そこを繋いで元の画像に近い形状のポリゴン頂点を生成しているのだと思います。その画像解析はSiv3Dに直接的には依存しないアルゴリズムで、その解析の結果をポリゴン化するところがライブラリに依存する部分になります。コードが公開されていて転用が許可されているライセンスであれば、画像解析部分だけを持ってきてDxLibで使用できるようにする事は一応可能だとは思いますが、相当な労力かなと思います。それよりは簡単な当たり判定を多段階(エリア判定→球判定→パーツ判定)に行い、当たり精度を絞り込んでいく方法がよいかなと思います。...
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: C言語でシューティングゲームを作りたいのですが
返信数: 2
閲覧数: 998

Re: C言語でシューティングゲームを作りたいのですが

C言語(C++も)は言語の仕様として関数の途中からプログラムを実行することができません。Figter_Scriptは60fps(16.6m秒)毎に最初から実行されるという前提でプログラムする必要があります。DXライブラリなら下記のようにwhileループの中に記述されると思います。 while ( !ProcessMessage() ) { Fighter_Script(); } 記載のプログラムは変数の管理が混乱しているように見受けられます。このまま進めると破綻する可能性が大きいので、まずは構造体を使って、変数を整理することからお奨めします。 // 敵全体で共通の変数 UINT totalti...

詳細検索ページへ移動する