検索結果 109 件

by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: Reverseフラグ
返信数: 6
閲覧数: 3869

Re: Reverseフラグ

ひとつのサンプルとして参考までに。できるだけ元のコードに沿った修正をしています。 struct { static int GetTargetWidth() { return 768; } static int GetTargetHeight(){ return 512; } } *g_pGraphics; struct { static int GetWidth() { return 16; } static int GetHeight(){ return 16; } } gTexture; struct CHARA { bool reverse; float px; float py; fl...
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: DirectX11でピクセルシェーダの定数バッファが設定できない
返信数: 5
閲覧数: 2588

Re: DirectX11でピクセルシェーダの定数バッファが設定できない

ComPtrに詳しくないので未確認ですが、&mpCBだとComPtrインスタンス自身のアドレスを取ってしまうような気がします。ComPtrが保持しているID3DX11Bufferのポインターのポインターを取得するには専用のメソッドがあるようです。

m_devicecontext->PSSetConstantBuffers(0, 1, &mpCB);

m_devicecontext->PSSetConstantBuffers(0, 1, mpCB.GetAddressOf() );
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: DirectX11でピクセルシェーダの定数バッファが設定できない
返信数: 5
閲覧数: 2588

Re: DirectX11でピクセルシェーダの定数バッファが設定できない

cbufferのアライアメントで何かあるかもです。

コード:

cbuffer AlphaAtai:register(b0) {
    float cAlphaAtai;
};
float4にして試してみるとかありかもしれません。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: DirectX11でテクスチャを任意の透明度で描画したい。(DxライブラリのSetDrawBlendModeのような処理がしたい)
返信数: 2
閲覧数: 2097

Re: DirectX11でテクスチャを任意の透明度で描画したい。(DxライブラリのSetDrawBlendModeのような処理がしたい)

実際にやっていないのでうまくいくかわかりません、参考まで。

①自前でテクスチャに半透明情報を書き込む
下記では"//テクスチャ書き替え"とある箇所で、α値を書き込んでいます。
http://dioltista.blogspot.com/2019/06/c ... 11_16.html

書き込みは1回だけ行い、あとはOMSetBlendStateで透明度を係数で調節するイメージです。

②半透明用ピクセルシェーダーを使う
PSSetConstantBuffersでα値をシェーダーに渡してカラーの計算をするイメージです。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: PAD/キーボード入力によるボタンの実装
返信数: 27
閲覧数: 8000

Re: PAD/キーボード入力によるボタンの実装

>提示されたコードの場合、FOCUS_MAP の std::string 部分は "up", "left" 等になるのでしょうか?
はい、そういうつもりです。でしたが、別に文字列ではなくてもenumとかの整数値でもいいですね。

>自分が座標計算で実装した際は...
座標を計算する方法だとバグで意図せぬ結果(移動先)になることがありますが、目的の場所を直接設定する方法は、データの準備をちゃんとやれば間違いが少ないかなと思ってます。1の方法なら計算式では表現しにくいような移動もベタで構築できるので、仕様さえしっかり固まっていればコーディングの難易度も低くてよいかなと思います。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: PAD/キーボード入力によるボタンの実装
返信数: 27
閲覧数: 8000

Re: PAD/キーボード入力によるボタンの実装

自分だったら1にすると思います(個人の感想です)。「実装が直感的」が大きな理由です。悪い点に「ボタンの数が増えたときに管理が大変」を挙げられていますが、保守性もそんなに悪くないかと思います。座標計算の場合だと、カーソルがループする場合にちょっと面倒になりそうな気がしています。 自分のイメージでは実装はこんな感じです。 using FORCUS_MAP = std::unordered_map<std::string,std::shared_ptr<BUTTON>>; class BUTON { std::string name; // ボタンの名前 FORCUS_MAP forcus; // ...
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: 連結リストに住所を格納し、それを検索するプログラムを作ってます
返信数: 5
閲覧数: 7005

Re: 連結リストに住所を格納し、それを検索するプログラムを作ってます

lib_scanf関数を独自に定義されているので何とも回答のしようがありませんが、 scanfと同等だと仮定した場合、第2引数に&がついているためかと思います。 void read_address(struct address *p){ // &p->xxx ではなく p->xxx lib_scanf("%s",&p->zip); lib_scanf("%s",&p->addr); lib_scanf("%s",&p->yomi1); lib_scanf("%s",&p->yomi2); lib_scanf("%s",&p->yomi3); struct address *next; }
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: 敵の弾発射に関するコード
返信数: 21
閲覧数: 6507

Re: 敵の弾発射に関するコード

>しかしこのやり方では、弾の管理クラスと敵の管理クラスを分けたのに、 >敵管理クラスや敵クラスが弾管理クラスをインクルードして使っていて気持ち悪いです…悩まれている 悩まれているところの直接的な回答にはりませんが、オブジェクト指向のゲームプログラミングを解説されている方の動画を紹介します。ご参考まで。 https://www.youtube.com/watch?v=cKsogmzmAvk こちらの動画の作り方でもクラス間の結合は強いです(むしろべったり)。個人的には各インスタンスが外部への接続点(rxxxxに相当するもの)を保持する方式が以下の点でしっくりきていません。 ・引数付きコンストラク...
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 再帰関数 総和問題
返信数: 7
閲覧数: 3930

Re: C言語 再帰関数 総和問題

>1つの値から0までならできました。
であれば、nの総和からmの総和を引くという方法もあります。
無駄も多いし、求められている解ではないですが、まあそんなのもあるということで。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: 課題のヒントを教えていただきたいです
返信数: 7
閲覧数: 2849

Re: 課題のヒントを教えていただきたいです

2行ある数字をどう処理すれば良いかが特に分かりません。
書式付き入力関数scanfで取得することができます。

コード:

#include <stdio.h>

int main(){

	int	n;

	scanf( "%d", &n );
	printf( "%d\n", n );

	return 0;
}
書式に合わない入力(%dに対して文字や少数)した場合の挙動など考えるべきことはありますが、いったんは骨格を正しく作成して、エラー処理はあとで入れていくでよいと思います。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: 課題のヒントを教えていただきたいです
返信数: 7
閲覧数: 2849

Re: 課題のヒントを教えていただきたいです

入力ファイル数を標準入力から受け取り、その数を描画出力で表示するところまでできますか?
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 静的変数 [漸化式問題]
返信数: 6
閲覧数: 5200

Re: C言語 静的変数 [漸化式問題]

題名に静的変数とあるので、この課題は静的変数の性質を用いて問題を解くということかと思います。静的変数はプログラムの開始から終了まで値を保持し続けることができます。漸化式は前回の項の値を参照して計算するので、項の値を静的変数(static 定義)にすればよいと思われます。エラーは頑張って読んで解消してください。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: スーパーマリオのようなゲームの作成
返信数: 8
閲覧数: 3543

Re: スーパーマリオのようなゲームの作成

提示されているコードはサブルーチンだけで、全体のフローがわかりません。実際に動かす為には下記のような骨格にサブルーチンを配置したものがあると思います。

コード:

#include "system.h"
int main(){

	InitSystem();
	while ( ***){
		***
	}
	DestroySystem();
	
	return 0;
}
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: for文を使用した2次関数のグラフ表示
返信数: 8
閲覧数: 10420

Re: for文を使用した2次関数のグラフ表示

>何か結果おかしくないですか?
あれ、何か間違えたかな...
yからxを求めるのと、xからyを求めるのだと微妙に違う?

>intっていう関数がある処理系をお使いなんですか?
C++でコンパイルしてました。Cだと関数形式のキャストできないですね。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: for文を使用した2次関数のグラフ表示
返信数: 8
閲覧数: 10420

Re: for文を使用した2次関数のグラフ表示

表示と計算を別々に考えて、それぞれがそれぞれの役割に集中すると簡単かもしれません。 #define MAX_Y (49+1) #define MAX_X (28*2+1) /* 28 <- sqrt( 49 * 16 ) */ int main(){ int i,j; int x,y; char plot[MAX_Y][MAX_X]; /* (x,y)が取り得る範囲の配列を用意してしまう */ /* スペースで初期化*/ for ( i = 0; i < MAX_Y; i++ ) { for ( j = 0; j < MAX_X; j++ ) { plot[i][j] = ' '; } } /...
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: visual Studio Code のC言語の問題
返信数: 2
閲覧数: 2132

Re: visual Studio Code のC言語の問題

赤字のエラーメッセージの後にヒントとしてSuggestionが表示されています。そんなに難しい内容ではないので、まずはそれを読んでみてください。
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: if文の条件式が複数の場合の簡潔な実装
返信数: 3
閲覧数: 2229

Re: if文の条件式が複数の場合の簡潔な実装

なお、下記の方が少しベターです。

コード:

for (int j = 0; j<6; j++) {
	if(i == arr[j]) {
		check = 0;
		break; // 一つでも条件を満たさなければ、残りは確認する必要がないので for から抜ける
	}
}
by 参照魚
1年前
フォーラム: C言語何でも質問掲示板
トピック: if文の条件式が複数の場合の簡潔な実装
返信数: 3
閲覧数: 2229

Re: if文の条件式が複数の場合の簡潔な実装

ご提示のコードが最も簡潔だと思います。トリッキーな記述を駆使すれば見かけ上は簡潔にすることもできるとは思いますが、可読性や安全性などとのトレードオフになってしまいます。C++であればテンプレートという機能で可能なんですが。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: スネークゲーム、伸ばすところがうまくいかない
返信数: 14
閲覧数: 6110

Re: スネークゲーム、伸ばすところがうまくいかない

Init()でmPLength=1;してください。書き忘れてました。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: スネークゲーム、伸ばすところがうまくいかない
返信数: 14
閲覧数: 6110

Re: スネークゲーム、伸ばすところがうまくいかない

前提として気になるところとして下記を見直した方がよいかと思います。 #define FIELD_SIZE (20+2) // 壁も含めてフィールドサイズとみなす byte mField[ FIELD_SIZE ][ FIELD_SIZE] = {...}; // ↑ここにあわせて+2は取る // フィールドの種類を数値で直接記載しないで抽象化する enum { FILED_NONE, FILED_WALL, FILED_FOOD, FILED_SNAKE, }; 状態の更新と描画のため処理がUpdateの中に混在しています。UpdateではmFiledの変更は行わず、蛇とフードの座標の更新のみ...
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: スネークゲームでの当たり判定
返信数: 3
閲覧数: 2743

Re: スネークゲームでの当たり判定

①Foodがある場所をクリアするタイミングがおかしいため(0,0)の壁が消えます ②あまり難しくせず、まずはswitch-caseで動くようにするとよいです void Update() { mField[ mPY ][ mPX ] = 0; if ( mFoodFlag != 1 ) { //もし食べ物がないのなら //mField[ mFY ][ mFX ] = 0; // ①ここでクリアすると1回目はmFYとmFXは0なので、(0,0)の壁が消える mFX = getMinToMaxRand( 1, 19 ); mFY = getMinToMaxRand( 1, 19 ); mField[...
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 画面を徐々に暗くする(DxLib)
返信数: 4
閲覧数: 2965

Re: 画面を徐々に暗くする(DxLib)

最初のソースではcount /= 5 がすぐ暗くなる原因です。 if (scene == INTRODUCTION) { DrawBox(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, Write, true); if (CheckHitKey(KEY_INPUT_Z) == 1) { count--; #if 0 count /= 5; // 毎ループで5で割るので、countはものすごい速さで0に収束する SetDrawBright(count, count, count); #else int bright = count / 5; // count から別途明るさ...
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 複数の重ねて描画予定のデータを1枚として扱いたいです
返信数: 1
閲覧数: 2638

Re: 複数の重ねて描画予定のデータを1枚として扱いたいです

処理としては、レンダリングテクスチャを作成、そこに描画したものをあらためて描画する感じになるかと思います。DxLibは詳しくないのですが、リファレンスを見るとおそらく、MakeScreenで描画できるグラフィックハンドル(≒レンダリングテクスチャ)を作成、そこに背景の最終形を描画、そのグラフィックハンドルを使って、DrawRectGraphで左右半分×2回の描画を行えばよいかと思います。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 可変調引数を持つ関数のラッピングの方法
返信数: 7
閲覧数: 3799

Re: 可変調引数を持つ関数のラッピングの方法

filter_typeごとに具体な引数を取得して、それを明示的にGraphFilteに渡すことになるかと思います。 va_list va; va_start(va, filter_type); switch ( filter_type ) { case DX_GRAPH_FILTER_MONO: //モノトーンフィルタ { int Cb = va_args( va, int ); int Cr = va_args( va, int ); GraphFilter( graph_handle, filter_type,Cb,Cr ); } break; } va_end( va );
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: デバッグエラー
返信数: 2
閲覧数: 2024

Re: デバッグエラー

エラーが発生するのは提示のコードのどこになりますでしょうか?
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: OpenGLで3Dモデルに剣などの武器を持たせる方法
返信数: 4
閲覧数: 3972

Re: OpenGLで3Dモデルに剣などの武器を持たせる方法

操作する3Dモデルを読み込んで表示するのはできたということですが、それは自身でファイルを読み込んでモデルデータの構造をパースして取り出・加工し、OpenGLのAPIに流し込んだということでしょうか?それともそれらを行ってくれるなにか別のライブラリを使用されているのでしょうか?前者であればパースの過程でモデルの手のボーンの座標を取得するのは容易かと思います。後者であればおそらくそのライブラリに特定のボーンの座標を取り出すAPIが用意されていると思いますので、そのライブラリの出自にもよりますが、まずはライブラリのドキュメントを読み直すのがよいかと思います。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の外にあるブロック文の扱い?について
返信数: 6
閲覧数: 5381

Re: 関数の外にあるブロック文の扱い?について

関数tryブロックというのですね...すでにかかれていましたね。
https://www.ibm.com/docs/ja/xl-c-and-cp ... dlers.html

コンストラクタでも使えるようです。
https://docs.oracle.com/cd/E19957-01/80 ... index.html
経験したことのないすごく奇妙な感覚です。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の外にあるブロック文の扱い?について
返信数: 6
閲覧数: 5381

Re: 関数の外にあるブロック文の扱い?について

自身はそこそこC++を知っているつもりでしたが、この書き方でコンパイルが通ることに驚きました。配列a[10] が10[a] と互換であるのを知った時以上の衝撃です。配列の方はまだ解説を見てなるほどと思いましたが、これの関数の{}が省略(?)できる理由がまったくわかりません。わたしもこれが文法的に正である理由を知りたいです。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: includeの利用について
返信数: 4
閲覧数: 5032

Re: includeの利用について

制作環境全体で合理性があり、制作者全員でコンセンサスが取れていれば、プログラマー以外がデータを作成できる事、エクセルというメジャーなツールの恩恵に与れる事、など決して悪い事だけでは無いと思います。コンパイラのプリプロセッサはうまく組み合わせて使えば、他の言語やスクリプトの下拵えにも使えます。例えばシナリオスクリプトデータに#includeや#defineを使うことも可能です。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 敵がうまく表示できません、、、
返信数: 7
閲覧数: 6016

Re: 敵がうまく表示できません、、、

コード:

int Teki1X[TAMA_MAX], Teki1Y[TAMA_MAX], ...
敵関連の変数が配列になっていないです。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 2次元配列の作り方を教えてください。
返信数: 5
閲覧数: 5422

Re: 2次元配列の作り方を教えてください。

①DrawRectGraph関数で画像の表示する範囲を指定できるかと思います。

②2次元配列は下記のような感じで作ります。

コード:

int a[10][10]; // int 型の10×10の2次元配列 a
2次元配列を用いて何をされたいのかがいまひとつ伝わってきませんが、アニメーションデータを作成したいということでしょうか?アニメーションデータであれば、まずは1次元配列でのテストをしっかり行ってから進めるのがよいかと思います。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: else文が機能しない
返信数: 3
閲覧数: 4379

Re: else文が機能しない

最初のif分の条件を間違えています。”20以上80未満”なら、( 20 <= a && a < 80 )です。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: bitシフトの戻り値?
返信数: 2
閲覧数: 3427

Re: bitシフトの戻り値?

int型の変数 a,b,c,d を定義して、"dだけ"初期化した状態です。
dは初期値の8(1<<3) となりますが、a,b,cは未初期化状態です。
未初期化状態の変数の値には何が入っているかわかりません。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: メンバ関数の分割
返信数: 3
閲覧数: 3743

Re: メンバ関数の分割

ありがとうございます。分割した関数群でもTESTのメンバ変数を参照するため、メンバ関数である必要がありますため、提示いただいたコードではできないのです。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: メンバ関数の分割
返信数: 3
閲覧数: 3743

メンバ関数の分割

長いメンバ関数を分割したい場合、分割した関数をクラスのヘッダに記述しなければなりません。 // test.hpp class TEST { public: void func(); }; // test.cpp void TEST::func(){ // 長い関数 } ↓funcを内部的に分割する // test.hpp class TEST { public: void func(); private: void funcA(); void funcB(); void funcC(); }; // test.cpp void TEST::funcA(){} void TEST::funcB(...
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 配列の足し算
返信数: 4
閲覧数: 4904

Re: 配列の足し算

配列とポインターの操作で間違いがあります。

コード:

void getsumarray(int* data1, int* data2, int* data3)
{
	int i;
	for (i=0;i<3;i++){
		data3[i] = data1[i]+data2[i]; // *(data3+i) = *(data1+i) + *(data2+i) でも同じですが配列形式の方が見た目がシンプルかと思います
	}
}
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 宣言とは
返信数: 2
閲覧数: 3450

Re: 宣言とは

アルディーノが何か全く知りませんが、C言語の流儀から回答しますと、
アルディーノをインストールしたフォルダのどこかにWire.hというファイルがあると思われます。
そのWire.hの中にいろいろな宣言が記述されていると思いますので、自分のプログラムにその宣言を取り込みます。
取り込む方法はプログラムの.cファイルの先頭のあたりに下記の記述をします。

コード:

#include <Wire.h>
この.cファイルをコンパイルしたさいに"Wire.hが見つかりません"のようなエラーがでる場合があります。
その場合は別途対処が必要ですが、まずが上記を試してみてください。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列から数字を抽出する方法
返信数: 2
閲覧数: 3782

Re: 文字列から数字を抽出する方法

まずは固定の文字列から連続する数字を抜き出す事を考えてみてください。

コード:

char test[]=“abc34de56jh67”;
その過程で抜き出した数字をどうやって保存しておくか(しないで済む方法はないか)?など疑問が出てくると思いますので、そうしたらまた少しづつ解決していきます。

経験を積んで慣れてくればそれが頭の中で描けるようになりますが、最初は問題を小さく局所的にしてトライ&エラーで良いかなと思います。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: このエフェクトの大きさと出現する座標を変更したい
返信数: 4
閲覧数: 3906

Re: このエフェクトの大きさと出現する座標を変更したい

ちょと記憶が確かではないのですが、DirextX9 であれば固定機能でできたような気がします。
下記の記事がそれかも知れません。
https://docs.microsoft.com/ja-jp/window ... al-effects
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: 多分、演算子の優先度の問題です…
返信数: 5
閲覧数: 4506

Re: 多分、演算子の優先度の問題です…

コード:

a = ( b = ( c = 3 ) - 1 ) - 1;
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: このエフェクトの大きさと出現する座標を変更したい
返信数: 4
閲覧数: 3906

Re: このエフェクトの大きさと出現する座標を変更したい

自分も答えを知りたいという前提での返信となりますが、自分で試すとしたら、1)viewportやscissorの設定をいじってみる、2)テクスチャにレンダリングして、ポリゴンに貼ってそのポリゴンの表示を調整、3)シェーダーに渡す変数でシェーダー内で調整する、などになるのかなと思います。
by 参照魚
2年前
フォーラム: C言語何でも質問掲示板
トピック: サイコロのプログラミングについて
返信数: 4
閲覧数: 4387

Re: サイコロのプログラミングについて

合計値を配列の添字にしてカウントすれば良いかと思います。

コード:

a[j] = sum;
↓
a[sum]++;

コード:

printf("合計 回数\n");
for (j = 0; j < 100; j++)
      printf("%d %d\n", j,a[j]);
by 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: enumとクラスを対応させる?
返信数: 2
閲覧数: 3270

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

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

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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

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

コード:

	DxLib_End();						// DxLib終了処理

	return 0;
	}
}  //①

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

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

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

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

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: bgmについて
返信数: 5
閲覧数: 3500

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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

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

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

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

Re: bgmについて

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

コード:

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

コード:

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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

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

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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

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

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

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

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

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの画面切り替えについて
返信数: 48
閲覧数: 18342

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: 線形補完での画像処理
返信数: 4
閲覧数: 3886

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

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

コード:

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: 線形補完での画像処理
返信数: 4
閲覧数: 3886

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

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

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

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

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

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

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

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

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

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

m_pD3DDevice->SetTexture(0,g_pTexture01);

m_pD3DDevice->SetTexture(0,nullptr);

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

Re: DxLibでの開発について

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

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

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 参照魚
3年前
フォーラム: C言語何でも質問掲示板
トピック: directx で 2dゲーム
返信数: 6
閲覧数: 13480

Re: directx で 2dゲーム

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

Re: switch文を使った整理

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

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

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

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 参照魚
5年前
フォーラム: C言語何でも質問掲示板
トピック: C++  継承?についての質問
返信数: 10
閲覧数: 4643

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 参照魚
5年前
フォーラム: C言語何でも質問掲示板
トピック: C++  継承?についての質問
返信数: 10
閲覧数: 4643

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

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

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

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

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 参照魚
5年前
フォーラム: C言語何でも質問掲示板
トピック: C言語:ポインタとメモリ空間
返信数: 5
閲覧数: 4731

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

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

コード:

int a;
int *pa;

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

コード:

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

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 参照魚
5年前
フォーラム: C言語何でも質問掲示板
トピック: 【DirectX】行列を使用した2Dポリゴンの拡大縮小・回転について
返信数: 4
閲覧数: 3250

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

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

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 参照魚
5年前
フォーラム: C言語何でも質問掲示板
トピック: 可変長引数についての質問です
返信数: 3
閲覧数: 3195

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 参照魚
5年前
フォーラム: C言語何でも質問掲示板
トピック: カードゲームを作っています。
返信数: 6
閲覧数: 4789

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

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

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

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

コード:

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

printf( "hello world" );

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

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

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

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 参照魚
6年前
フォーラム: C言語何でも質問掲示板
トピック: シューティングゲームの作り方改
返信数: 16
閲覧数: 13560

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

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

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

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

コード:

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

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 ) {...

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