>>へにっくすさん
なるほど。SDKが別途必要なんですね・・・d3dx9.hがないとはややこしい・・
わざわざ調べていただいてありがとうございます。
早速SDKをダウンロードしますね。
回答していただいた皆様ありがとうございました。助かりました。
検索結果 108 件
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: visual studio 2013 で sdkddkver.hが開けない
- 返信数: 8
- 閲覧数: 15579
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: visual studio 2013 で sdkddkver.hが開けない
- 返信数: 8
- 閲覧数: 15579
Re: visual studio 2013 で sdkddkver.hが開けない
>>へにっくすさん visual studio 2013 Professionalの修復インストールを行いましたがだめでした。 一度Professionalを消してからの再度インストーラーダウンロード後インストールしてみましたが、それでもだめでした。 一度Window Kitも削除してからの再インストールを試してみます。] 追記 Windows Kitを削除し、修復したところいけました。 そこでもう一つの質問なのですが、DirectXSDKはWindows SDKに統合されたとのことなのですが、マクロであるDXSDK_DIRがみつかりません。 この場合はMicorsoft DirectX Sd...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: visual studio 2013 で sdkddkver.hが開けない
- 返信数: 8
- 閲覧数: 15579
Re: visual studio 2013 で sdkddkver.hが開けない
>>せんちゃさん 回答ありがとうございます。 わざわざ調べていただいてありがとうございます。 おっしゃっていた通り C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Includeにありました。それと C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Includeにもありました。 C:\Program Files (x86)\Windows Kits\8.1\Include\sharedこちらのほうですが、フォルダはありましたが、sdkddver.hは見つからなかったです。 C:\Pr...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: visual studio 2013 で sdkddkver.hが開けない
- 返信数: 8
- 閲覧数: 15579
Re: visual studio 2013 で sdkddkver.hが開けない
>>へにっくすさん 回答ありがとうございます。 一度win32アプリケーションを一からできるかどうかためしてみたのですが、やはり、インクルードできないようです。 プロパティからVCディレクトリをみたところ、インクルードの欄にWindowsSDK_IncludePathというマクロがありましたが、その下のマクロを検索する窓で入力してもなにもヒットしませんでした。 その代わり、$(WindowsSdkDir)というマクロがあったのでみると、C:\ProgramFiles(x86)\Windows Kits\8.1\というパスだったので追加してみましたが、結果はかわりませんでした。 一応その場所を確...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: visual studio 2013 で sdkddkver.hが開けない
- 返信数: 8
- 閲覧数: 15579
visual studio 2013 で sdkddkver.hが開けない
件名通りvisual studio 2013 でsdkddkver.hが開けず困っています。 もともと2010で作っていたものを2013で開き、2013で作ろうと思っていたのですが、このファイルが開けないせいですすめません。 調べたところ windows sdk に含まれるということでインストールまですませましたが、このファイルが見当たらず、新しく2013でプロジェクトを作っても開けないため、ビルドエラーがでるようです。 それと、directx sdk がwindows sdk に含まれるということなのですが、こちらも見当たりません。 windows sdk はこちらからダウンロード、インスト...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: Debug実行時は問題なくRelease実行時にエラー
- 返信数: 8
- 閲覧数: 6188
Re: Debug実行時は問題なくRelease実行時にエラー
>>ISLeさん
そうでした、指摘ありがとうございます。
単純なことでしたね。Debugではたまたまf[-1]でもメモリが取れていたんですね。
そうでした、指摘ありがとうございます。
単純なことでしたね。Debugではたまたまf[-1]でもメモリが取れていたんですね。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: Debug実行時は問題なくRelease実行時にエラー
- 返信数: 8
- 閲覧数: 6188
Re: Debug実行時は問題なくRelease実行時にエラー
>>softyaさん 原因判明しました! 原因は以下コードでした //----------------------------------------------------------------------------- //! 分割距離の更新 //----------------------------------------------------------------------------- void CascadedShadow::updateSplitDist(f32 nd, f32 fd) { f32 lambda = _split_weight; f32 ratio = ...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: Debug実行時は問題なくRelease実行時にエラー
- 返信数: 8
- 閲覧数: 6188
Re: Debug実行時は問題なくRelease実行時にエラー
>>softyaさん
回答ありがとうございます。
デバッグ方法を教えていただいてありがとうございます。
根気よく見ていきます。
回答ありがとうございます。
デバッグ方法を教えていただいてありがとうございます。
根気よく見ていきます。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: Debug実行時は問題なくRelease実行時にエラー
- 返信数: 8
- 閲覧数: 6188
Re: Debug実行時は問題なくRelease実行時にエラー
>>softyaさん 回答ありがとうございます。 データブレイクというのは始めて聞きました。勉強になります。 追加質問で申し訳ないのですが、3つ質問があります。 ① データブレイクというのはこのサイト(http://www.platinumgames.co.jp/programmer_blog/?p=165)の「データブレークポイント」ですか? ② データブレイクというのはデータが変更された瞬間にブレークするという認識で大丈夫ですかね。 ③printfデバッグ法のprintfの代わりにこのサイト(http://marupeke296.com/DBG_No3_OutputDebugWindow....
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: Debug実行時は問題なくRelease実行時にエラー
- 返信数: 8
- 閲覧数: 6188
Debug実行時は問題なくRelease実行時にエラー
件名どおりなのですが、Debug実行時は問題はなく、Release実行時にエラーが出る場合考えられる原因を教えてください。 エラーの詳細はRelease実行時にnullptrを代入した変数がどこかでnullptrじゃなくなりアクセス違反になるというものです。 プロジェクトは大きいので書ききれないのですが、アクセス違反になったコード部分を記載します。 //----------------------------------------------------------------------------- //! 更新 //-----------------------------------...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: タイトルバーが表示されないです
- 返信数: 1
- 閲覧数: 1632
Re: タイトルバーが表示されないです
自己解決しました。 //----------------------------------------------------------------------------- //! ウィンドウプロシージャ //! @param [in] hwnd ウィンドウハンドル //! @param [in] message ウィンドウメッセージ //! @param [in] wparam パラメーター1 //! @param [in] lparam パラメーター2 //! @return ウィンドウメッセージ実行後の処理コード //--------------------------------...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: タイトルバーが表示されないです
- 返信数: 1
- 閲覧数: 1632
タイトルバーが表示されないです
タイトル通りタイトルバーが表示されず、ウィンドウが設定した背景色で塗りつぶされてしまいます。 DirectX9でやっています。 //----------------------------------------------------------------------------- //! //! @file main.cpp //! @brief メインループ //! //----------------------------------------------------------------------------- #include <windows.h> // Windows...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
お久しぶりです。 すこしコントローラーの長かった部分を短縮してみました。 配列でのやり方が思い浮かばなかったので、違ったやり方ですが、これでできました。 Controller.h class Controller { public: //! コマンド列挙体 //@{ enum PAD_STATE{ // デジタル PAD_UP, // 十字キーの上 PAD_DOWN, // 十字キーの下 PAD_LEFT, // 十字キーの左 PAD_RIGHT, // 十字キーの右 PAD_START, // Start PAD_BACK, // Back PAD_LEFT_THUMB, // 左スティック...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
返信おくれてすみません。
坂のプログラムを作る時間がなく、当分このスレッドに返信できませんでした。
これからも、少しの間返信できないことが続くと思うので、勝手ながら一旦解決とさせていただきます。
あたり判定のアルゴリズムの考え方教えていただきありがとうございました。
ISLeさんのブログを見ながら、ほかのことについても勉強させていただきます。
また坂のプログラムに触れることがありましたら、お願いします。
本当に勝手で申し訳ございません。
坂のプログラムを作る時間がなく、当分このスレッドに返信できませんでした。
これからも、少しの間返信できないことが続くと思うので、勝手ながら一旦解決とさせていただきます。
あたり判定のアルゴリズムの考え方教えていただきありがとうございました。
ISLeさんのブログを見ながら、ほかのことについても勉強させていただきます。
また坂のプログラムに触れることがありましたら、お願いします。
本当に勝手で申し訳ございません。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
あれは、以前から書いている、移動量(座標差分)を元にY補正をスキップするという処理そのものですが。 当たり判定自体はすべてのブロックに対して行なってますよ。 Y補正をスキップするのはY補正が結果的に不要になる場合です。 X補正を行うことでY方向のめり込みが無くならないといけません。 X補正をしてもY方向にめり込んだまま、というのがそもそもおかしいです。 その場合はY補正が行われなければいけないのです。 どこか間違っています。 ちなみにわたしのサンプルプログラムでもキャラのサイズはブロックより縦長です。 (重なっているではなく)接触している状態を維持する方法は、ゲームプログラムで特に難しい問題...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
hit_groundは想定外にクリアはされてはいないと思います。 hit_groundをfalseにしているのはジャンプしたときと、あたり判定で当たっていないと判定が出た時にしています。 ISLeさんのブログのサイドビューの実験のところを参考にしてやっているのですが、 あたり判定のfor文の中の「引っ張り上げられないための除外」は足元より上のブロックとのあたり判定は行わないということですか? だとすると、for文での検索範囲を少なくしたのと変わらないのではないのでしょうか? それと、左右のあたり判定は床の補正を行った後でないと、めり込んだ状態で左右のあたり判定を行おうとするので、ひっかっかって...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
移動前との座標の差分というのは移動量でも可能でしょうか?
移動量でやってみたところ、Y方向の補正をスキップすると、X方向に進めなくなるようです。
おそらく、Y方向のをスキップすることによってめり込んだ状態でX方向のあたり判定があるためだと思うのですが、移動量ではなく、差分でないとだめでしょうか?
理由を教えていただけるとありがたいです。
移動量でやってみたところ、Y方向の補正をスキップすると、X方向に進めなくなるようです。
おそらく、Y方向のをスキップすることによってめり込んだ状態でX方向のあたり判定があるためだと思うのですが、移動量ではなく、差分でないとだめでしょうか?
理由を教えていただけるとありがたいです。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
四角同士の当たり判定をやってみてはいるのですが、なぜか、ブロックに横からあたると、そのブロックで止まるときと、そのブロックの上に移動してしまうときがあります。 今のやり方は、移動後に、Y方向のあたり判定と補正をしてからX方向のあたり判定と補正という形にしています。 あたり判定と補正の流れは以下の通りです。 まず、プレイヤーをマップチップ番号に直して、そのマップチップ番号から-2から+2の範囲のマップチップすべてをしらべ、 壁番号だったらあたり判定を行い、めり込んでいたらプレイヤーのポジションにめり込み量を足すという方法でやっています。 Y方向のあたり判定です。 // マップとのあたり判定(Y方...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
複雑なコードなので詳しくは見ていませんが、前の回答にも書いたとおり移動先を見るようにすると予想外の不具合にぶつかる可能性が高くなるのでお勧めしません。 足りないどころかもっとシンプルにできると思います。 なるほど、もっとシンプルにですね。やってみます。 進行不可ブロックの角が飛び出ているのなら引っ掛かるのが正解ですので、実際にピクセル単位で坂の増分をチェックしてみてください。 そうでなければ移動前と現在の座標の関係を見てX方向かY方向に適切に補正すれば引っ掛かることはなくなるはずです。 あと、坂を登っているとき、床との接点がキャラクターの中心とか内側にある場合は、横方向には地面にめり込みます...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
返信遅くなってすみません。 坂以外のことをしていました。 今、坂ブロックは進行可能ブロックとしてみて、プレイヤーの足元の点からプレイヤーの移動量の点が坂ブロックに属していれば、坂判定を行うという形です。 どうやらこの方法だと、坂(上り)ブロックの上の方の次の坂ブロックとの隙間でプレイヤーが止まっちゃいます。 おそらく、プレイヤーの足元の点からプレイヤーの移動量分だけ伸ばした点が、 ⊿ ⊿ ここの坂ブロックを調べずに→⊿□ ⊿□←ここの進行不可ブロックを調べてしまうためだと思います。 この問題で、色々悩んでいるのですが、移動後に現在の高さ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
Re: 斜め坂のアルゴリズムについて
やはり移動後に調べるのが当たり前なんですね・・・
今普通のブロック(四角)の方も同じように進む前に次進むところ調べてそこの配列番号がブロックだったら移動をしないとしてたので、
移動前に次のフレームで進むところを調べる方法で坂もできるかと思ってたのですが、移動後ですね、ブロックも一緒に少しやってみます。
回答有難うございます
【追記】
すこし考えてたのですが、移動後に高さを調べるということはY方向のあたり判定ということですかね?X方向は斜め移動を追加するという解釈で正しいですか?
今普通のブロック(四角)の方も同じように進む前に次進むところ調べてそこの配列番号がブロックだったら移動をしないとしてたので、
移動前に次のフレームで進むところを調べる方法で坂もできるかと思ってたのですが、移動後ですね、ブロックも一緒に少しやってみます。
回答有難うございます
【追記】
すこし考えてたのですが、移動後に高さを調べるということはY方向のあたり判定ということですかね?X方向は斜め移動を追加するという解釈で正しいですか?
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 斜め坂のアルゴリズムについて
- 返信数: 15
- 閲覧数: 12115
斜め坂のアルゴリズムについて
今2Dの横スクロールのゲームで斜め坂(45度のみ)の上りの当たり判定をやっているのですが、 皆さんの坂の当たり判定のアルゴリズムを教えて欲しいです。 マップエディタで制御できるものが知りたいです。 今やっている方法としては、 プレイヤーの足元の点から移動量分だけ進んだところの配列の値を調べ、その値が上り坂番号であれば、 その配列のブロックの左上の点を求め、その点から左下の坂の開始地点と右上の終了地点を求めています。 その開始地点と終了地点を使い以下のような当たり判定をしています。 //-------------------------------------------------------...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
返信遅くなりました。
今回はコントローラーの入力もとれ、どこに持って行ってもすぐにコントローラーが使えるようなソースファイルが作れました。
なので、解決とさせて頂きます。
コードの長さを短縮させる方法は今やっている他のことが落ち着いてから、考えてみます。
回答ありがとうございました。
今回はコントローラーの入力もとれ、どこに持って行ってもすぐにコントローラーが使えるようなソースファイルが作れました。
なので、解決とさせて頂きます。
コードの長さを短縮させる方法は今やっている他のことが落ち着いてから、考えてみます。
回答ありがとうございました。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
質問には作るクラスの用途が書いていないので確認したいんです。 3DのFPSなどを作るならアナログ入力は必須で2Dでもシューティングやアクションで照準用として使っているゲームなんかもありますよね。 それこそ、どうコントローラのクラスをmainなど呼び出し側から使うのかって事です。 今の時点で使わないし汎用的に後でも使えるようなクラスを目指さないなら必要無いわけです。 このプログラムを何に使うかと言いますと、学校の制作展に使います。 最近企画変更があり、コントローラーを使うということは決まっているのですが、 操作方法も詳しく決まっていないので、サンプルプログラムでも組んでみようと思って質問させて...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
GetPadStateのなかを関数で分け、アナログとデジタルをそれぞれ関数を持つようにしてみました。 Controller.h #pragma once #pragma comment(lib,"XInput.lib") #include <windows.h> #include <Xinput.h> class Controller { public: enum PAD_STATE{ PAD_A = XINPUT_GAMEPAD_A, // Aボタン PAD_B = XINPUT_GAMEPAD_B, // Bボタン PAD_X = XINPUT_GAMEPAD_X, // Xボタン PAD...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
アナログとデジタルを分けるというイメージでやってみましたが、もう少し簡単にわけれそうですね・・・考え中です。 Controller.h #pragma once #pragma comment(lib,"XInput.lib") #include <windows.h> #include <Xinput.h> class Controller { public: enum PAD_STATE{ PAD_A = XINPUT_GAMEPAD_A, // Aボタン PAD_B = XINPUT_GAMEPAD_B, // Bボタン PAD_X = XINPUT_GAMEPAD_X, // Xボタン...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
実はいまパッドをゲームにいきなり導入するのは、自分が混乱するかと思い、とりあえず、押されたキーがcoutで表示されるプログラムを作ろうと思っています。 それをメイン側から書くということはこういうことでしょうか?今は左スティックの状態の表示だけを書いています。 main.cpp #include "Controller.h" #include <iostream> using namespace std; Controller* control; int main() { control = new Controller(1); while(true) { if(GetPadState(PAD_...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
main側にどう書くのかわからなかったので、すごい物量作戦になってしまったのですが、以下の通りになりました。まだまとめれそうな気がしますが・・・ 以下長くなります。 Controll.h #pragma once #pragma comment(lib,"XInput.lib") #include <windows.h> #include <Xinput.h> class Controller { public: enum PAD_STATE{ PAD_A, // Aボタン PAD_B, // Bボタン PAD_X, // Xボタン PAD_Y, // Yボタン PAD_L_SHOULDER,...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
http://www.codeproject.com/Articles/26949/Xbox-360-Controller-Input-in-C-with-XInput このサイトを見ながら一応できたのですが、これでいいんでしょうか? Controller.h #pragma once #pragma comment(lib,"XInput.lib") #include <windows.h> #include <Xinput.h> class Controller { public: int _controllerNum; public: Controller(int playerNum);...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
まだイメージがつかめず今はとりあえず、思いつくようにプログラムを組んでいるのですが、以下のプログラムで書き方としてまずいところを教えていただけないでしょうか? XInputを使ってます。 Controll.h #pragma once #pragma comment(lib,"XInput.lib") #include <windows.h> #include <Xinput.h> #include "KeyFunc.h" class Controller { public: enum PAD_STATE{ PAD_A = XINPUT_GAMEPAD_A, PAD_B = XINPUT_GA...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
丁寧にありがとうございます。そうですね、バグの原因になりそうなことは、避けるべきですね。
あとdwUposについてですが、Xbox360コントローラーはdwZposをトリガーで使うため5つ目のdwUposを使わないといけないんですね。
あとdwUposについてですが、Xbox360コントローラーはdwZposをトリガーで使うため5つ目のdwUposを使わないといけないんですね。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
MSDNの説明によると「dwSize メンバおよび dwFlags メンバの値は必ず設定してください。設定しない場合、この関数は失敗します。」とあるのでController::init()のjoyGetPosEx()は違反していることになります。たまたま、うまく動いているようですが良くないです。 int Controller::init() { // 取得する情報をセット joyinfo.dwSize = sizeof(JOYINFOEX); joyinfo.dwFlags = JOY_RETURNALL; if(joyGetNumDevs()==0) return -1; // デバイスな...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
厳しいことを書きましたが、未知のものにチャンジする以上は良く分からないのは当たり前なんです。 ここで回答している人も分からないものを理解するために色々考えながら突破してきたわけですが、今回はアプローチの仕方を変えれば分かってくることも見えていないようなので書かせていただきました。このアプローチの方法を色々考えるのはアルゴリズムを考えたりプログラムをデバッグ出来るかどうかの能力とも関わってきます。 鍛えることで伸びるので考えるの止めるのが一番上達を妨げると思いますよ。なのでヒントを頼りできるだけ考えてみて下さい。 探している途中で目にするものも無駄にならないですし別のことのヒントにもなります。...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
JoyGetPosExのエラーは、initの方で設定していたので、なぜエラーが出るのか悩んでいましたが・・・int main の方で読んでいないだけでした。 上のわからなかった条件式も、dwPOVについて調べればわかることでした。すみません。 そのものズバリのサンプルコードを探してばかりで、説明が書いてあるサイトなどから理解しようとしていない感じがします。 これはツマヅキますし、未知のものにチャンレジできません。 MSDNしか情報がないものもたくさんあるんですよ。 そうですね、すみません。聞いてばかりでした。 [補足] ローカル変数で構わないものを無闇にprivate変数にするのもグローバル変...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
1>Controller.obj : error LNK2019: 未解決の外部シンボル __imp__joyGetPosEx@8 が関数 "public: void __thiscall Controller::update(void)" (?update@Controller@@QAEXXZ) で参照されました。 未解決のシンボルと出たら、大抵はライブラリがないか、関数を定義していないかのどちらかです。 今回の場合はwinmm.libを追加ライブラリに指定していないからでしょう。 ジョイスティックで入力しよう ありがとうございます。一応joyGetPosの方での入力はできました。 しかし...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
ありがとうございます。 先ほどのエラーはなくなりました。 とりあえず、今入力されているボタンをcoutで表示しようと思って、プログラムを組んでみたのですが、エラーが出てしまいます。 あと、このような感じであってるのでしょうか? Controller.h #pragma once #include <windows.h> #include <mmsystem.h> class Controller { public: Controller(); ~Controller(); void update(); private: UINT uJoyID; LPJOYINFOEX pji; }; Cont...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
今書いた分はこれだけです。 Controller.h #pragma once #include <MMSystem.h> class Controller { public: LPJOYINFOEX pji; }; エラーは以下のものです。少し長いです。 1>------ ビルド開始: プロジェクト: Controller_sample, 構成: Debug Win32 ------ 1> main.cpp 1> Controller.cpp 1>c:\program files\microsoft sdks\windows\v7.0a\include\mmsystem.h(105): er...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
とりあえず、普通のコントローラーも持っているので、
普通のコントローラーの入力を取得したいと思います。
なのでWin32APIのサイトを見たのですが、どういうふうに状態を取得して、使えばいいのかがわかりません。
一応プログラムを組んでは見たのですが、MMSystem.hのほうでエラーが出ます。
多分、こういう感じではないと思うので、サンプルプログラムが乗っているサイトがあれば教えて欲しいです。
上記のサイトだけでは理解できませんでした。すみません。
普通のコントローラーの入力を取得したいと思います。
なのでWin32APIのサイトを見たのですが、どういうふうに状態を取得して、使えばいいのかがわかりません。
一応プログラムを組んでは見たのですが、MMSystem.hのほうでエラーが出ます。
多分、こういう感じではないと思うので、サンプルプログラムが乗っているサイトがあれば教えて欲しいです。
上記のサイトだけでは理解できませんでした。すみません。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
Re: ジョイパッドの入力状態を取得するプログラム
C++単体ではパッドにアクセスすることはできません。 そこはDirectXAPIなり、Win32APIなどを使う必要性があります。 「joyGetPosEx 関数」 Win32APIの場合。 http://msdn.microsoft.com/ja-jp/library/cc410475.aspx XInputは名前の通りDirectXの機能の一部です。ここが参考になるでしょう。 「XInput」 http://msdn.microsoft.com/ja-jp/library ... 44(v=vs.85).aspx Xbox360コントローラがどの様なドライバで動いているかわかりませんので...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ジョイパッドの入力状態を取得するプログラム
- 返信数: 40
- 閲覧数: 31809
ジョイパッドの入力状態を取得するプログラム
ジョイパッドの入力を取得するプログラムをC++のみで出来ますか?
調べてるとDXライブラリを使ったものは出てくるのですが、C++のみで取得することはできないのでしょうか?
それとXbox360コントローラーの入力の取得や、振動、などもしたいので、XInputも勉強したいのですが、C++で参考になるサイトがあれば教えて欲しいです。
回答お願いします。
調べてるとDXライブラリを使ったものは出てくるのですが、C++のみで取得することはできないのでしょうか?
それとXbox360コントローラーの入力の取得や、振動、などもしたいので、XInputも勉強したいのですが、C++で参考になるサイトがあれば教えて欲しいです。
回答お願いします。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 継承元のクラスのインスタンス化について
- 返信数: 13
- 閲覧数: 5953
Re: 継承元のクラスのインスタンス化について
色々プログラムを読んだり、いろんな人に質問したりして、結局タイトルと、ゲームは分けるけれども、 ゲームクリア、ゲームオーバーの処理は関数化して、ゲームから呼び出すという結論に至りました。 色々と答えて頂いたのに、すみません。 色々学校の先生にもこのことについて質問していると、 ゲームクリア画面ではまだ後ろでゲーム画面が動いているので、ゲームと独立させるのはまずいんじゃないかという答えがあり、 違う方法(ポインタを使ってゲーム遷移など)を試してみたりしたのですが、あまり、どれも整理されていないような気がするので、 タイトルと、ゲームは分けて、ゲームクリアと、ゲームオーバーは関数化して呼び出すとい...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 継承元のクラスのインスタンス化について
- 返信数: 13
- 閲覧数: 5953
Re: 継承元のクラスのインスタンス化について
URLを見たのですが、まだイメージがわきません。 Stageでやりたいのはゲームの流れをそれぞれのクラスで持って、それを呼び出してゲームの流れを見やすくしようとしているのですが、 どのゲーム状態にも必要なマウス座標の取得などはStage内でやっています。 そのマウスのクラスの中の情報はStageTitle,StageGame,StageClear,StageGameOverのそれぞれのクラスで変更したりします。 なので、StageBaseでインスタンス化をすべて行い継承していればインスタンス化しているクラスの情報を変更できるようにしたいと思ってます。 でも、それぞれのクラスでコピーが取られるよ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 継承元のクラスのインスタンス化について
- 返信数: 13
- 閲覧数: 5953
Re: 継承元のクラスのインスタンス化について
void Stage::init() { StageBaseでインスタンス化したクラスのinit } void Stage::update() { switch(ステージの状態){ case Title: // タイトル画面 StageTitleのupdate(); break; case Game: // ゲーム状態 StageGameのupdate(); break; case Clear: // ゲームクリア状態 StageClearのupdate(); break; case GameOver: // ゲームオーバー状態 StageGameOverのupdate(); break; ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 継承元のクラスのインスタンス化について
- 返信数: 13
- 閲覧数: 5953
Re: 継承元のクラスのインスタンス化について
単位がよくわかないのですが、class Stageのインスタンス化したもの全てで共有なんですよね? なのでprivateでstaticはどうでしょう?って事なのですが。 共有したいのはclass StageBaseの class StageBase { public: Map map; //!< マップインスタンス化 Bouei bouei; //!< 防衛インスタンス化 Back back; //!< 背景インスタンス化 Player player; //!< プレイヤーインスタンス化 Special special; //!< 必殺技インスタンス化 HitManager hit; //!...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 継承元のクラスのインスタンス化について
- 返信数: 13
- 閲覧数: 5953
Re: 継承元のクラスのインスタンス化について
回答ありがとうございます。softya(ソフト屋) さんが書きました:C++であればソースファイル(cpp)内にstaticな変数を用意すればファイルスコープでしか見えません。
つまり、そのcpp内のメンバ関数からしか見えない共通の変数が実現できます。
あるいは、クラスにprivateでstaticな変数を用意しても同じ様に共通化出来ます。
なるほど、staticがありましたね。
もしかして、staticは共有したい変数全てに用意するということですか?
インスタンス化したクラスごと共有という形はできないですか?(externみたいに)
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 継承元のクラスのインスタンス化について
- 返信数: 13
- 閲覧数: 5953
Re: 継承元のクラスのインスタンス化について
回答有り難うございます。softya(ソフト屋) さんが書きました: コードを見てませんが、「継承元(親)のクラスでインスタンス化した物を子クラス同士でも同じものを共有」はグローバル変数と変わらないと思います。
グローバル変数にしてはダメなのですか?
その方法は考えていませんでした。
グローバルだと、他のところで変にいじってしまうと怖いので、
継承したクラスのみ共通で使えるというふうにしたいのですが、可能でしょうか?
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 継承元のクラスのインスタンス化について
- 返信数: 13
- 閲覧数: 5953
継承元のクラスのインスタンス化について
継承元(親)のクラスでインスタンス化した物を子クラス同士でも同じものを共有できませんか? StageBase.h (ステージ基底) class StageBase { public: Map map; //!< マップインスタンス化 Bouei bouei; //!< 防衛インスタンス化 Back back; //!< 背景インスタンス化 Player player; //!< プレイヤーインスタンス化 Special special; //!< 必殺技インスタンス化 HitManager hit; //!< ヒット管理インスタンス化 Recode recode; //!< タイム、スコアイン...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 可変フレームレートについて
- 返信数: 2
- 閲覧数: 6004
Re: 可変フレームレートについて
返信遅くなってすみません。
他のことでつまずいているので、可変フレームレートの方はあとに回そうと思います。
答えて下さったのに申し訳ありません。
サイトは見させていただきました。今の問題が解決次第、参考にさせて頂きます。
もし、よろしければ、今つまずいている問題を質問させていただくのですが、それに答えていただければありがたいです。
本当にすみません。
他のことでつまずいているので、可変フレームレートの方はあとに回そうと思います。
答えて下さったのに申し訳ありません。
サイトは見させていただきました。今の問題が解決次第、参考にさせて頂きます。
もし、よろしければ、今つまずいている問題を質問させていただくのですが、それに答えていただければありがたいです。
本当にすみません。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 可変フレームレートについて
- 返信数: 2
- 閲覧数: 6004
可変フレームレートについて
可変フレームレートの基本的な考え方について教えてください。 学校のPCで同じプログラムが60FPSで動いたり30FPSで動いたりします。 この原因はわかっていてopenframeworksのofSetFrameRateで、これを設定していると学校のPCでは60FPSでは動かないです。 逆に、家のPCでは200FPSで動くのでこれをセットしないと動作が速すぎます。 なので、どの環境でも一定のスピードで動くものが作りたかったので可変フレームレートについて勉強しようと思いました。 学校で聞くと、1秒で60ドット動くキャラがいるとして、1秒60フレームだった場合1フレームに1ドット動けばいい。 30フ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
2行飛ばしたときには正常に動いたのは初期化が配列があふれるまで行われなかったということでしょうか・・・? 2行読み飛ばす処理の for( i=0; i<2; i++) // 最初の2行を読み飛ばす(csvのコメント部分を読み込まないため) while(fgetc(fp)!='\n'); // 1文字づつ読み取り\nが出てくるまで読み飛ばす これが行われたとき 読み込み処理である while(1){ for( i=0; i<MAP_SIZE; i++ ){ inputc[i] = input[i] = fgetc(fp); // 1文字取得 if(inputc[i]=='/'){ // スラッシ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
while(1){ for( i=0; i<MAP_SIZE; i++ ){ inputc[i] = input[i] = fgetc(fp); // 1文字取得 if(inputc[i]=='/'){ // スラッシュがあったら while(fgetc(fp)!='\n'); //改行までループ i=-1; // カウンタを最初に戻して continue; } if(input[i]=='\n'|| input[i]==','){// 改行かカンマなら inputc[i]='\0';// そこまでを文字列とし break; } if(input[i]==EOF){// ファイルの終わりなら...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
他にも間違いがありますね。 上のだとカンマが混じると思うのですが。 atoiは数字以外は全部0を返しますよ。 全く持ってEXFILE:は関係無いです。 有難うございます。おかげで読み込むことができました。 最初二重ループを使っていたとき、読み込みの流れを完全に理解していなかったため、 カンマの条件のところのせいで正しく読み込まれていないものと勘違いして消してしまってたのがダメだったんですね。 赤鬼さんのおかげでやっと理解できたと思います。有難うございます。 csvファイルからは正しく読み込まれ、描画の方もうまくできていました。読み込みは下のようになりました。 #include "../../...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
2列目のx番目が見たいときは1次元配列だとx番目に2列分の配列数を足すということですよねsoftya(ソフト屋) さんが書きました: それなら要するに配列から指定されたx,y座標(マップ座標系)のマップデータを得られば良いことは分かりますよね?
それが涼雅 さんなどが書いている配列のアクセス方法なんですが。
pArray[y][x]をpArray[ y*width + x ]と置き換えるだけです。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
ということは int x = 0; int y = 0; while(1){ for( i=0; i<MAP_SIZE; i++ ){ inputc[i] = input[i] = fgetc(fp); // 1文字取得 if(inputc[i]=='/'){ // スラッシュがあったら while(fgetc(fp)!='\n'); //改行までループ i=-1; // カウンタを最初に戻して continue; } if(input[i]=='\n'){// 改行なら inputc[i]='\0';// そこまでを文字列とし break; } if(input[i]==EOF){// フ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
マップの座標の描画位置をプレイヤーの速度と反対方向にずらしていくということだと思ってます。
今作っているゲームの背景はプレイヤーの速度で背景の座標を引いてスクロールさせています。
ですが、配列の座標はどの位置を基準にずらすのかがわかっていないです。
おそらく配列数分だけ計算するんじゃないかと思います。
今作っているゲームの背景はプレイヤーの速度で背景の座標を引いてスクロールさせています。
ですが、配列の座標はどの位置を基準にずらすのかがわかっていないです。
おそらく配列数分だけ計算するんじゃないかと思います。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
型ですよ。structで作るのが型であるように。 インスタンスは変数ですけどね。この差がわかりますか? 【補足】 型はメモリ上に実体を持ちません。型には変数名を付けて実体を宣言しなければいけません。 クラスの場合は、これがインスタンスです。 構造体などの場合は単に変数と呼びます。 Class class;これがインスタンス化であり、classは変数だから寿命が普通の変数と同じということですよね。 汎用性を求めないのならば、 width*heightの要素数を持った配列は int* pArray = new int[ width*height ]; y列目x番目の要素の取り出しは pArray...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
クラスは手続きをもった変数(構造体変数)の様なものです。vectorもクラスですから変数と同じ寿命があります。 クラスのインスタンスの寿命は変数と同じで、関数内で定義したものはローカル変数と同じく関数を抜けると消滅します。 これで分かりますでしょうか? なるほど、今まで自分はクラスは型だと思っていたのですが、変数のようなものなのですね。 でも、コードがうまくイメージができないです。 あとget_Matrixという関数名をお使いになっていますが、 オブジェクト指向において、プログラマ->クラスの情報の設定はset,クラス->プログラマの情報の受け渡しはgetを使うのが一般的です。 なので、ge...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
vector自体まだよくわかっておらず、それを使ってクラスを作るのがあまりイメージできていません。クラスも書き馴れてないのかもしれないです。softya(ソフト屋) さんが書きました:class Matrixがロードを内包しないとカプセル化としてマズイでしょうね。
あとこのclass Matrixにはvector配列を保持する仕組み、マップの指定座標の値を取り出す仕組みもありません。
class自体を書きなれていませんか?無理してクラス化するぐらいならC言語でモジュール化したほうが良いでしょう。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
回答有難うございます。 Matirxクラスを作るとして配列自体は動的に管理できるvectorで管理すれば楽ですよね。 縦横サイズはprivateで管理して引数x,yで配列要素を得るメソッドを作れば良いと思います。 色々とごちゃごちゃしていたので別プロジェクトで作り直しました。 load.h #pragma once enum MATRIX { ONE_MATRIX = 1, //!< 1次元配列 TWO_MATRIX = 2 //!< 2次元配列 }; class Load { public: void Load_csv(char* name, Matrix data, MATRIX mode...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
回答有難うございます。 うお、二重で動的か・・・・C++ならstd::vector使った方が良いと思うのですが。 それと直したなら直したコードを乗せないと分からないと思います。 すみません。 今の状態です load.cpp //============================================================== //! @file load.cpp //! @brief csvファイルのロード //! @author YukiIshigaki //======================================================...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
回答有難うございます。 MapDataは次のような形で作っています。 // ポインタのポインタに配列を入れる MapData = new int* [MAP_HEIGHT]; // それに列の分だけ配列を入れて2次元配列をつくる for(int i=0; i<MAP_HEIGHT; i++){ MapData[i] = new int[MAP_WIDTH]; } これだとエラーはでないのですが、2次元配列を引数としては渡せないのでしょうか? 先ほど書いてくださったように直してみました。 でも、まだ0で全部値が直されているということは読み込みに問題があるんですね。 goto EXFILEのと...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
# 前回の質問の「スタート、結果画面、ボタンを作りたいです。」の最後の質問、見逃していましたね。申し訳ないです。 追記 おっと、読み込みの解決できてたんですね。 いえいえ解説有難うございます。 読み込みですが、できたと思ったのですが、どうも関数の中では値が正しく入っているようなのですが、関数から帰ってくると0が入っています。 読み込み関数 void Load::Load_csv( char* name, int** (&Matrix), MATRIX mode ) // 値がちゃんと反映されるように参照で渡してますが、これが問題かもしれません。 { const int MAP_SIZE = ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
調べたところ$(ProjectDir)/binでした。赤鬼 さんが書きました:違うのであれば
プロジェクトのプロパティ
↓
デバッグ
その項目の中の作業ディレクトリの項目がどうなってるか確認して下さい
$(ProjectDir)になっていなければ別のフォルダが指定されています。
ここからのパスにしたところ無事ファイルは開けたようです。では読み込みの方の作業を進めたいと思います。
一つ一つ丁寧に答えていただきありがとうございました。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
まず、fpの所で止めてしまっては関数が動作する直前で止まっています。 0xccccccccということは初期化すらされていません。 つまりまだファイルが開いていません。 それと、ptr_とかは性質上読み取るまでは値は入りませんよ。(fgetcなどをしないと) それに付いて詳しく説明する必要があるならします(理解できる自身が有るなら)。 それと、ファイルが開けていない場合はNULLが返ります。 まず、何が駄目なのか説明して下さい。どんなエラーで、何がおかしいのか。 今の情報だけでは自分には判断出来ません。 説明不足ですみません。 ファイルの正しいパスを渡しているはずなのにファイルが開けないときの...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
11章のを見ながらいろいろ変えていったのですが、どうもcsvのパスがおかしいのかうまくファイルが開けないようです。 load.cpp void Load::Load_csv( char* name, int** Matrix, MATRIX mode ) { int n = 0; int num = 0; int i; // for文で使う変数宣言 FILE* fp; // ファイルを格納 int input[64]; char inputc[64];// ファイルの中の値を格納 fp = fopen( name, "r" );// ファイルを開く if(fp == NULL) // もしファ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
回答有難うございます。 32なのは単純に余裕を持ってだと思います。 inputとinputc二つ用意してる理由はdixqさんでは無いのでわかりません。 個人的に2バイト文字使ってない(FileRead_getcが読み込めない)からinputcだけで良いと思いますけどね それで、inputcはcsvからのデータを受け取っています。 また、テキストデータで受け取っているので実際の整数とは異なります、なのでatoiという関数を使って文字列の数字を整数に変換しています。 例 cahr[4]=’100’; charの中には char[0]=49=0x31='1'; char[1]=48=0x30='0'...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
http://dixq.net/rp/11.html 今11章の読み込みプログラムを読んでいて質問があるのですが、 char fname[32]={"../dat/csv/11章/storyH0.csv"}; int input[64]; char inputc[64]; これのそれぞれの役割はなんなのでしょうか?fnameはファイルデータの参照先をcharに入れているようなのですが、要素が32なのはなぜですか? input と inputcについてはわからないです。 for(i=0;i<2;i++)//最初の2行読み飛ばす while(FileRead_getc(fp)!='\n'); ここ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
すみませんバイナリについてはわからないです。
あと、龍神録のプログラムはhttp://dixq.net/rp/index.htmlにのっているものですか?
エクセルのデータ管理のところでしょうか?
解説があまりないようなので、よくわからないですが、csvについてはここを参考にしてやればできますか?
あと、龍神録のプログラムはhttp://dixq.net/rp/index.htmlにのっているものですか?
エクセルのデータ管理のところでしょうか?
解説があまりないようなので、よくわからないですが、csvについてはここを参考にしてやればできますか?
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
Platinumでcsvファイルを作ったのですが、読み込み方がわからず調べたところfscanfを使うという方法がありました。 http://simd.jugem.jp/?eid=49/ ここのサイトを参考にして作ろうと読んでいたのですが、 fscanfだと文字列の1行文のデータを読むのに%dなどを横の列分すべて書かなければならないようなのですが、もう少し簡単な方法はありますか? 他の質問(http://dixq.net/forum/viewtopic.php?f=3&t=11219#p90377)を見たりしたのですが、fopenでファイルを開いてfgetsでファイルを読み込みwhile文で中の...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
回答有難うございます。 Plutinumにはありません。 プログラムで組むか他の外部ファイルを読み込んで処理する、もしくはそのような機能のついたマップエディタを自作する必要があります。 AIならばプログラムで組むのが良いでしょう。 プログラムで組むということは・・・すみませんどういうことでしょう。当たり判定の関数(配列と関係のない)を組むということでしょうか? 配列ではあるのですが、それにもやはり動的確保が絡んできます。 すみません。涼雅さんが貼ってくれたURLを見て勉強させていただいたのですが、どういう風に動的確保が絡んでくるのかわからないです。 エディタで作ったものを配列にnewで当てはめ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
Re: 二次元配列でつくったMAPをスクロールさせたい
ちなみに外部ファイルを読み込むほうが配列で管理するよりもはるかに効率がいいです。 マップエディタを使う利点は 1.グラフィカルで編集がしやすい。 2.プログラム内から読み込むので編集のたびにコンパイルを行う必要がない。 主なところではこんなかんじです。 Platinumというものがお勧めです。 他のサイトでもPlatinumがいいという記述があったのでDLはしてありました。 色々いじってますが、まだ使い方は基本的なものしかまだわからないです。 配列を使ってあたり判定をしようと思ったですが、配列を作らないということはあたり判定は配列では行わないのでしょうか?また別の方法で行う感じでしょうか? ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 二次元配列でつくったMAPをスクロールさせたい
- 返信数: 50
- 閲覧数: 25059
二次元配列でつくったMAPをスクロールさせたい
2次元配列でつくったMAPをプレイヤーの動きに連動させてスクロールさせたいです。 Visual stadio 2010 Openframeworksを使用して作っています。 MAPのコードです。 Map.h #pragma once const int BLOCK_SIZE = 32; //!< ブロック一つ分の大きさ const int MAP_WIDTH = 3072 / BLOCK_SIZE; //!< マップの横幅(ブロックで割った) : 32 const int MAP_HEIGHT = 768 / BLOCK_SIZE; //!< マップの縦幅(ブロックで割った) : 24 //-...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlib_d.libについて
- 返信数: 10
- 閲覧数: 5181
Re: Dxlib_d.libについて
わかりました。有難うございます。
DXlibだけでなくほかのことについても答えていただき非常に勉強になりました。
DXlibだけでなくほかのことについても答えていただき非常に勉強になりました。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlib_d.libについて
- 返信数: 10
- 閲覧数: 5181
Re: Dxlib_d.libについて
こちらのサイトを読ませていただきました。softya(ソフト屋) さんが書きました:「_T("")マクロだのL""マクロだのLPCTSTRだのの世界一詳しい解説」
http://victreal.com/Junk/_T/index.html
UNICODEは文字のByteによって区別しない考え方で
マルチバイトはByteによって区別する考え方のことですね。
だからconst char で渡しているのでconst TCHARでは互換性がないのでマルチバイトにして渡されるほうもconst charにしたということであっているでしょうか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlib_d.libについて
- 返信数: 10
- 閲覧数: 5181
Re: Dxlib_d.libについて
いけました有難うございます。
文字セットをマルチにすると、文字が日本語でも対応ができるという認識であってるでしょうか?
文字セットをマルチにすると、文字が日本語でも対応ができるという認識であってるでしょうか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlib_d.libについて
- 返信数: 10
- 閲覧数: 5181
Re: Dxlib_d.libについて
できました。有難うございます。 原因は、学校でつかっているDxLibとプロパティで追加のインクルードファイル両方があったためだと思います。 学校で使っているほうを消して実行したらできました。しかし、学校では両方あるのに、多重定義にならないのはなぜでしょうかね。2008のだと大丈夫なのでしょうか それと、ほかのプロジェクトで作ったところ、(winプロジェクト) IntelliSense: 型 "const char *" の引数は型 "const TCHAR *" のパラメーターと互換性がありません というエラーがでます。元のほうではでないのですが、Winプロジェクトだとどこか変わるのでしょうか...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlib_d.libについて
- 返信数: 10
- 閲覧数: 5181
Re: Dxlib_d.libについて
Visual stadio 2010の設定の仕方を見てやってみたのですが、ダメ見たいです。
なぜなのでしょうか・・・
相変わらず多重定義されているとでます。DxLib内のエラーのようですが、アンインストールして何回か試すしかないですかね
なぜなのでしょうか・・・
相変わらず多重定義されているとでます。DxLib内のエラーのようですが、アンインストールして何回か試すしかないですかね
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlib_d.libについて
- 返信数: 10
- 閲覧数: 5181
Dxlib_d.libについて
ホーミングレーザーを作ろうと思い、http://ktstg.blog.shinobi.jp/Entry/677/ ここのプロジェクトファイルを参考にしようとダウンロードをし、slnで開いたところDxLib.hが開けないということだったので、 学校でDxLib.hの入っているフォルダをコピーしプロジェクトにそのフォルダの中のファイルすべてを入れて実行したらエラーが出ました。 このエラーはどうすれば解決するでしょうか?学校のプロジェクトは正しくうごきます。 入れたファイルは下のものです。 DxDirectX.h DxDrawFunc.lib DxLib.h DxLibW_d.lib DxLib_d...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: virtualに関して
- 返信数: 14
- 閲覧数: 5537
Re: virtualに関して
回答有難うございます。 最後に、聞いて頂いても良いですが、とにかく気になることがあったらドンドンテストプログラムを書いて行って下さい。 分からないことがあった時、自力で解決できるかできないかは今後の成長に大きく影響しますので。 例えば今回の「②」等は試しにテストプログラムを書いて実行して見れば分かるはずですよね。 プログラムは1~10まで紹介してある参考書があるわけではないので、今後試行錯誤で解を見つけていく機会が非常に多いと思います。 すみません。そうですね。聞くよりやらないとわからないこともありますよね。 ③ > インスタンス化はしないでいいのでしょうか? インスタンス化しなくてよいかとい...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: virtualに関して
- 返信数: 14
- 閲覧数: 5537
Re: virtualに関して
なんども聞いて申し訳ないのですが、 class BaseEnemy { public: virtual ~BaseEnemy(){} virtual bool isHit(対象物体のあたり判定情報) = 0; }; isHitを純粋仮想関数にした場合 BaseEnemy baseenemy;とインスタンス化はできないのは純粋仮想関数があるからですか? その場合、子クラスのisHitを親クラスを介して呼び出せないのでしょうか? BaseEnemy* p = new 子クラス; p->isHitと呼べば子クラスのisHitが呼ばれるのでしょうか? インスタンス化はしないでいいのでしょうか? それと...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: virtualに関して
- 返信数: 14
- 閲覧数: 5537
Re: virtualに関して
コンストラクタとinitialize関数は両方持っていて、両方同じ処理の場合コンストラクタのみでもいいのでしょうか?
それとも両方持っていたほうがいいのでしょうか?
それとも両方持っていたほうがいいのでしょうか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: virtualに関して
- 返信数: 14
- 閲覧数: 5537
Re: virtualに関して
なるほど。
回答有難うございます。
Dixqさんの答えを参考にサンプルとしていろいろとあたり判定のプログラムを組んでみようと思います。
デストラクタですが、URLの先のページを少しと呼んだのですが、デストラクタはメモリーリークを防ぐためで、
virtualをデストラクタにつけるのは子クラスのデストラクタが呼ばれないのを防ぐためということでしょうか?
回答有難うございます。
Dixqさんの答えを参考にサンプルとしていろいろとあたり判定のプログラムを組んでみようと思います。
デストラクタですが、URLの先のページを少しと呼んだのですが、デストラクタはメモリーリークを防ぐためで、
virtualをデストラクタにつけるのは子クラスのデストラクタが呼ばれないのを防ぐためということでしょうか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: virtualに関して
- 返信数: 14
- 閲覧数: 5537
Re: virtualに関して
返信遅くなってすみません。 ソースコードを見てもすこしまだ理解できないところ(純粋仮想関数やデストラクタなど)があったので、学校の先生にきき教えてもらいました。 #include <stdio.h> //あたり判定計算機の基底 class BaseHitCalculator { public: virtual ~BaseHitCalculator(){} virtual bool isHit(int val) = 0; }; //敵のあたり判定計算機 class EnemyHitCalculator : public BaseHitCalculator { public: bool isHit...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: virtualに関して
- 返信数: 14
- 閲覧数: 5537
Re: virtualに関して
すみません。僕の説明不足です。 聞きたいこととしましては、 ① virtualのように親クラスの変数を子クラスで上書きできるものはあるのか ② あたり判定は別のファイルで作っておきその呼び出しを一回で敵すべて(newした)のあたり判定処理を行えるのか です。 なので↓のような親クラスを作り enemy.h class EnemyBase { public: //---------------------------------------------------------------------- //! @name 初期化 //-------------------------------...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: virtualに関して
- 返信数: 14
- 閲覧数: 5537
virtualに関して
今作っているゲームで敵の処理(何種類か)をゲームメインのcppファイルで何回も呼び出したりしてごちゃごちゃしていたので、 それを一括してやりたいと思っていたとき学校でvirtualというものを学びました。 それを使って以下のようなプログラムをくみました GameMain.h class GameMain : public ofBaseApp{ EnemyBase enemybase[16]; public: void setup(); void update(); void draw(); }; ここでプログラムの全体の流れを書いています GameMain.cpp void* gpImage ...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: コンストラクタについて
- 返信数: 5
- 閲覧数: 2495
Re: コンストラクタについて
わかりました。
やってみます。回答有難うございました。
やってみます。回答有難うございました。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: コンストラクタについて
- 返信数: 5
- 閲覧数: 2495
Re: コンストラクタについて
コンストラクタはインスタンスが生成された時に呼び出されますので、testApp のクラスにあるCircleはtestApp のインスタンス生成時に呼び出されますね。 それよりもclass testAppにいろんな機能な詰め込んであるほうが気になります。 C言語ではないので汎用機能クラスは避けたほうが良いでしょう。 なるほどsetupでそういう処理は特に行わなくても大丈夫なんですね。 testAppの中の処理も分けていきたいと思っていますが、プロジェクトを作った時から作られているものだったので分けていいのかわからないです。 それと、書いている関数で使っていないものもあるので、消すといいかと思い...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: コンストラクタについて
- 返信数: 5
- 閲覧数: 2495
コンストラクタについて
以前作っていたプログラムはCppに全部まとめていたので処理ごとにCppとhに分けているのですが、 コンストラクタをメインプログラムで呼び出すにはどうしたらいいのでしょうか? あとコンストラクタは初期化という風に考えていますが、考えはあっているでしょうか? 今やろうとしてることとしては Basic.h class Basic{ public: //! コンストラクタ Basic(); //! 更新処理 virtual void update(); //! 描画処理 virtual void draw(); protected: //! 座標 Vector2 pos; //! 移動量 Vector...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: スタート、結果画面、ボタンを作りたいです。
- 返信数: 12
- 閲覧数: 6664
Re: スタート、結果画面、ボタンを作りたいです。
すみません。ありました。トントン さんが書きました:>ちなみにsave_data_01.txtというファイルはsrc、binフォルダと同じ階層にsave_dataというフォルダを作りそこに保存しています。
save_dataというフォルダではなく、他の階層(たとえばbinフォルダ)にsave_data_01.txt
というファイルはありませんか?
有難うございます。
この保存先はかえれないのでしょうか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: スタート、結果画面、ボタンを作りたいです。
- 返信数: 12
- 閲覧数: 6664
Re: スタート、結果画面、ボタンを作りたいです。
1 OS :windowsVista 32bit
Visual stadio 2010 C++
Openframeworksで作成
2 自分で作成したものです
3 読み取り専用ではないです。
4 使用しないで新しくコンソールアプリケーションを使用した場合正しくファイルにかきこまれており、階層をかえると、slnとかと同じ階層に作成されました。
5 現段階のソースとヘッダと画像です。8mb以上zipで送信できないのと、アップローダーでも正しくできなかったそうなので(前回の質問で)ここにあげます。
Visual stadio 2010 C++
Openframeworksで作成
2 自分で作成したものです
3 読み取り専用ではないです。
4 使用しないで新しくコンソールアプリケーションを使用した場合正しくファイルにかきこまれており、階層をかえると、slnとかと同じ階層に作成されました。
5 現段階のソースとヘッダと画像です。8mb以上zipで送信できないのと、アップローダーでも正しくできなかったそうなので(前回の質問で)ここにあげます。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++で倉庫番のようなものを作っています
- 返信数: 35
- 閲覧数: 17772
Re: C++で倉庫番のようなものを作っています
上下左右に対応したキーが押されたときプレイヤーを上下左右に動かすのではなく、 上下左右のキーが押されたのきっかけに、プレイヤーを各方向に動かすように(記憶)する というふうに考えると玉もプレイヤーも基本的なロジックはまったく同じにできると思いませんか? なるほど、ということはキーを押したときに番号か何かを保存する変数に値を与え、 移動だけする関数にswitch文で判断させるという風にすれば、玉でも同じ関数を使って移動がおこなえるということですね。 でも、その場合玉の吸い込まれる速度と、プレイヤーの移動速度が違う場合どのようにして速度を定めればいいのでしょうか? ゲームの中で起きるアクションは...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++で倉庫番のようなものを作っています
- 返信数: 35
- 閲覧数: 17772
Re: C++で倉庫番のようなものを作っています
testApp::actionでプレイヤーの情報を参照しているので独立性が低いですね。 testApp::reach内で直接動かさずに、どの方向へ動くのかを記録しておいて、玉を動かす処理を他の処理と並列に行うとプログラムの構造がシンプルになります。 吸い込み/吹き飛ばし→玉の移動のあいだにワンクッション入れて玉の移動処理の独立性を高めることで、例えば玉を吸い込むトラップなどを実装したときでも玉の移動処理を使い回せます。 なるほど、いまはreach,blow関数はなくして、actionで一括でやっているのですが、actionをワンクッションとしてフラグか何かを返す関数にして 玉の当たり判定処理...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: スタート、結果画面、ボタンを作りたいです。
- 返信数: 12
- 閲覧数: 6664
Re: スタート、結果画面、ボタンを作りたいです。
fcloseがないのはまずいです。 openしたら必ずcloseしなければなりません //---------------------------------------------------------- // セーブ保存先初期化 //---------------------------------------------------------- FILE *fp = fopen( "save_data_01.txt", "w" ); //----保存したいもの int money = 1000; fprintf(fp,"現在の所持金は = %d",money); fclose(fp)...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: スタート、結果画面、ボタンを作りたいです。
- 返信数: 12
- 閲覧数: 6664
Re: スタート、結果画面、ボタンを作りたいです。
参考にしたURLにcloseが書いてなかったのですが、使い方としてはどうつかうのでしょうか?トントン さんが書きました:実行時に、fpをcloseしないでファイルの中身を確認したり
書き込まれていない状態のファイルを開きっぱなしで実行したりしてませんよね?
参考にしたとこではfopenとfprintfだけで書き込めるというものだと思っていたのですが・・・・
ファイルは開きっぱなしにしてないですが、書き込みたいファイルの階層は関係ないのでしょうか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: スタート、結果画面、ボタンを作りたいです。
- 返信数: 12
- 閲覧数: 6664
Re: スタート、結果画面、ボタンを作りたいです。
セットしてやってみた結果です。
自動変数のウィンドウに下のように出てました
名前 値 型の順番です。
fp 0x53f1e4f8 {_ptr=0x00000000 <不適切な Ptr> _cnt=0 _base=0x00000000 <不適切な Ptr> ...} _iobuf *
money 1000 int
自動変数のウィンドウに下のように出てました
名前 値 型の順番です。
fp 0x53f1e4f8 {_ptr=0x00000000 <不適切な Ptr> _cnt=0 _base=0x00000000 <不適切な Ptr> ...} _iobuf *
money 1000 int
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: スタート、結果画面、ボタンを作りたいです。
- 返信数: 12
- 閲覧数: 6664
Re: スタート、結果画面、ボタンを作りたいです。
おすすめは後者です。 使うFrameworkが変わっても流用できますから。 僕もそう思います。 後者で行う場合、描画処理とマウス入力を受け取る処理がDXライブラリと違うだけで、 基本的な構造は同じです。 openframeworksにもともとあるマウスをクリックした座標をとる関数をつかい、ボタンの画像の座標をつかって あたり判定をとるという形でいいんですかね? http://dixq.net/g/03_11.html ここを参考にしてセーブデータのほうを作ろうと思って下のようなプログラムを組みました。 //-------------------------------------------...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: スタート、結果画面、ボタンを作りたいです。
- 返信数: 12
- 閲覧数: 6664
スタート、結果画面、ボタンを作りたいです。
今作っているゲームでスタート画面がなくすぐにゲームが始まるので、ゲームを開始したらゲーム開始画面がでて、 「はじめから」「つづきから」「オプション」などのボタンがあり、マウスでクリックしたら 「はじめから」:1ステージ目から 「つづきから」:前にやっていた状態から 「オプション」:操作を替えたりできるようにしたい といった具合にしたいのですが、 http://dixq.net/forum/viewtopic.php?f=3&t=10603 ↑を参考にして作ろうと思っているのですが、上記のURLではDXライブラリを使ったものです。 僕はopenframeworksを使用しているので、描画方法や、...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++で倉庫番のようなものを作っています
- 返信数: 35
- 閲覧数: 17772
Re: C++で倉庫番のようなものを作っています
描画してるだけでtestApp::reach関数は5つ呼び出してないですよね。 呼び出したら逆におかしなことになりますけど。 void testApp::draw_circle(){ int x = circle.pos._x; int y = circle.pos._y; int r = circle.radius; ofSetColor(255,0,0); ofCircle(x,y,r); // 元 ofCircle(x + 40*20,y,r); // 右 ofCircle(x - 40*20,y,r); // 左 ofCircle(x,y + 40*15,r); // 下 ofCir...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++で倉庫番のようなものを作っています
- 返信数: 35
- 閲覧数: 17772
Re: C++で倉庫番のようなものを作っています
「上下左右に仮想的」の意味が分からないですが、マップの外周を挟んですぐ近くである場合を判定できているならそれで良いのではないでしょうか。 描画のところでですね、下のように作っているので玉は全部で常に5つ描画しているので「上下左右に仮想的に玉をつくっている」という表現をしました。 説明不足ですみません。 //玉描画関数 void testApp::draw_circle(){ int x = circle.pos._x; int y = circle.pos._y; int r = circle.radius; ofSetColor(255,0,0); ofCircle(x,y,r); // ...