検索結果 40 件

by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: インターバルを含むキー入力のリピート処理の最適化
返信数: 11
閲覧数: 7522

Re: インターバルを含むキー入力のリピート処理の最適化

> かずま
まさかchar文字群がキャストされると0x~~と解釈されるとは思いもよりませんでした...

ありがとうございます!
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: インターバルを含むキー入力のリピート処理の最適化
返信数: 11
閲覧数: 7522

Re: インターバルを含むキー入力のリピート処理の最適化

よく考えたらlong long型なので違いました。
「いづれかの箇所に1が入っている」 = 「0以外の値となる」 = 「trueとみなす」
となると思われるので、それを二つ行っているわけですね!

で、16bitのデータ型は無いのでlong longポインタで賄っているわけですね!
そういう手法があったとは初耳でした...

ありがとうございます!!
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: インターバルを含むキー入力のリピート処理の最適化
返信数: 11
閲覧数: 7522

Re: インターバルを含むキー入力のリピート処理の最適化

あっ!!
分かった気がします!

つまり、

1.unsigned char button[16] の中身が {'0', '1', '1', '0', ....} と16個の文字が連なっているのを、
2.long long p* にキャストすることで { {'0', '1', '1', '0', ....(8個)}, {'1', '0', '1', '1', ....(8個)} }に分割し、
3.「||」で二つをOR演算することで、「1」を取り出している。

というわけでしょうか!?
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: インターバルを含むキー入力のリピート処理の最適化
返信数: 11
閲覧数: 7522

Re: インターバルを含むキー入力のリピート処理の最適化

チガウ...16byteであって16bitじゃない...
結局どういう事なんだ...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: インターバルを含むキー入力のリピート処理の最適化
返信数: 11
閲覧数: 7522

Re: インターバルを含むキー入力のリピート処理の最適化

unsigned char配列[16] -> 16byteを、
long long *p -> 8byteにしている?

となると、
「0000000011111111」の文字群があったとして
「11111111」にしている?

とすると削った意味とは...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: インターバルを含むキー入力のリピート処理の最適化
返信数: 11
閲覧数: 7522

Re: インターバルを含むキー入力のリピート処理の最適化

正常に動作しました! ありがとうございます! しかし、なぜこれが正常に動作するのかちょっと理解が追い付いていないので、可能であれば処理の説明を頂ければと思います。 自分なりに順序だてて考えてみたところ、 //内容が長いのでcode囲いで 0.「m_xinput.Buttons」はunsigned char型配列。そしてこれは0,1を返す。   つまり、中にはビットフィールドのような「0110010101001101」のように、計16個の0と1の文字羅列が並んでいるものと推測する。   これは各ボタンが入力されているかどうかの情報である(ON:1, OFF:0)。 1.「m_xinput.But...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: インターバルを含むキー入力のリピート処理の最適化
返信数: 11
閲覧数: 7522

インターバルを含むキー入力のリピート処理の最適化

私は現在DXライブラリを使用してキー入力(Xbox360を用いるのでXInputを使用して)処理を実装しようとしています。 そこで、以下の様な処理を書いてみました。 void InputManager::Update() { GetJoypadXInputState(DX_INPUT_PAD1, &m_xinput); bool push = false; for (int i = 0; i < BUTTON_NUM; i++) { if (IsKeyDown(i)) { m_buttonPushTime++; push = true; break; } } if (!push) { m_bu...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: oparatorのデメリットとは
返信数: 3
閲覧数: 2920

Re: oparatorのデメリットとは

P.S.(.NET Frameworkのガイドラインより抜粋)
・演算子は、対称的な方法でオーバーロードします。等値演算子 (==) をオーバーロードする場合は、否定等値演算子 (!=) もオーバーロードする必要があります。
・ほとんどの言語は、演算子のオーバーロードをサポートしていません。このため、演算子をオーバーロードするすべての型に対し、ドメイン固有の適切な名前で、同等の機能を持つ 2 番目のメソッドを含めることが CLS では必須です。
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: oparatorのデメリットとは
返信数: 3
閲覧数: 2920

Re: oparatorのデメリットとは

ありがとうございます!
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: SetCameraViewMatrix()後ではGetCameraPosition()でカメラ座標は取得できない?
返信数: 0
閲覧数: 2579

SetCameraViewMatrix()後ではGetCameraPosition()でカメラ座標は取得できない?

タイトルの通りなのですが、 SetCameraViewMatrix()で直接ViewMatrixを設定した場合、GetCameraPosition()でカメラの座標をとってこようとしても、カメラの初期位置、つまり何も設定していない座標が取得されます。 これはバグなのでしょうか、仕様なのでしょうか。 以下に簡易コードを添付します(以下コードではカメラは移動し続けるわけではありません)。 //移動方向取得 MATRIX cameraWorldMat = MInverse(GetCameraViewMatrix()); VECTOR right = VScale(VTransformSR(VECTO...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの計算量の表記について
返信数: 4
閲覧数: 2600

Re: プログラムの計算量の表記について

返答ではなく申し訳ないですが、
ソースコードはcodeで囲みましょう

コード:

#include <stdio.h>

int main(void)
{
    int i,j,yaku;
    for(i=1;i<=100;i++)
    {
        yaku=0;
        for(j=1;j<=i;j++)
        {
            if(i%j==0) yaku++;
        }
        if(yaku==2) printf("%d ",i);
    }
    printf("\n");
    return 0;
}
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: oparatorのデメリットとは
返信数: 3
閲覧数: 2920

oparatorのデメリットとは

こんにちは。 私は今、ライブラリのVAddやVSub、VScaleといったVECTOR型変数の演算関数を複数用いた場合に、個人的に「可読性が若干下がるかなぁ」と思っています。 例えばこんな感じに。 //こんなことにはまずならないとは思うけど極端な例 sumVec = VAdd(VAdd(VAdd(vec1, VAdd(vec2, VAdd(vec3, vec4)))), vec5); そのため、oparatorで+=や*=等の演算子のオーバーロードを実装しています。 例えばこのような感じです。 //-VECTOR VECTOR operator-(const VECTOR& vec) { re...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: 行列を用いた注視カメラの円周回転行列の求め方
返信数: 3
閲覧数: 2840

Re: 行列を用いた注視カメラの円周回転行列の求め方

動きましたありがとうございます!
こんなに短くできるんですね...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: 行列を用いた注視カメラの円周回転行列の求め方
返信数: 3
閲覧数: 2840

行列を用いた注視カメラの円周回転行列の求め方

私は現在、DXライブラリ(C++)を用いて「対象とする座標を見つつ、その周りを"角度指定で"回る」という処理を行列を用いて実装しようとしています。 こちら(http://i-libro.net/wpmu/blog/archives/618)のページや、こちら(http://dixq.net/forum/viewtopic.php?f=3&t=10136)のトピックを参考にすることで、「回転x移動」「移動x回転」の行列の計算結果の違いについて理解したつもりで以下のコードを書いたのですが期待したとおりの動きにはならず、こちらで質問させていただきました。 以下、回転処理のコードになります。 //回転...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: DrawLine3DとMV1DrawModelで描画した物を交差させたい
返信数: 8
閲覧数: 4931

Re: DrawLine3DとMV1DrawModelで描画した物を交差させたい

解決しました
・SetUseZBuffer3D
・SetWriteZBuffer3D
を有効化すれば大丈夫でした。
質問内で「使用してもだめだった」というのは私の勘違いだったようです。
混乱させてしまい申し訳ありませんでした。
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: DrawLine3DとMV1DrawModelで描画した物を交差させたい
返信数: 8
閲覧数: 4931

Re: DrawLine3DとMV1DrawModelで描画した物を交差させたい

逆だとグリッドが必ず手前に表示されます
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: DrawLine3DとMV1DrawModelで描画した物を交差させたい
返信数: 8
閲覧数: 4931

Re: DrawLine3DとMV1DrawModelで描画した物を交差させたい

[1]についてはNo.1,3にて記述されているので割愛します。
[2.1]Windos7 Home Premium
[2.2]VisualStudio2015 C++
[3]C++使用は2,3ヶ月程度でクラスやポインタが分かってきたかな位のレベルです(あくまで自己評価の上ですが)。
ライブラリはDXライブラリのみです。

こちらの諸事情によりプロジェクトファイルやヘッダー、モデルをお送りすることができません。
申し訳ありません。
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: DrawLine3DとMV1DrawModelで描画した物を交差させたい
返信数: 8
閲覧数: 4931

Re: DrawLine3DとMV1DrawModelで描画した物を交差させたい

申し訳ありません。 コードを貼っているつもりになっていました。 [ModelView.cpp] #include "ModelView.h" #include "globalValues.h" //コンストラクタ,デストラクタ略 int ModelView::Initialize() { m_modelHandle = MV1LoadModel("test.mv1"); if (m_modelHandle == -1) { return DXLIB_FAILURE; } MV1SetUseZBuffer(m_modelHandle, true); MV1SetWriteZBuffer(m_mo...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: DrawLine3DとMV1DrawModelで描画した物を交差させたい
返信数: 8
閲覧数: 4931

DrawLine3DとMV1DrawModelで描画した物を交差させたい

DrawLine3Dでグリッドを、MV1DrawModelでmv1形式の3Dモデルを表示させているのですが、 グリッドとモデルを交差、つまり、線をモデルに埋まらせたくても描画順の関係か、 モデルが常に手前に表示され、グリッド線は常に奥側に表示されてしまいます。 (グリッド->モデルの順に描画しています) おそらくZバッファ関連だと思いモデルに対して「MV1SetUseZBuffer」「MV1SetWriteZBuffer」を適用しているのですが、 解決に至ってはいません。 どうせならと「SetUseZBuffer3D」「SetWriteZBuffer3D」も試しに使用してみても同様でした。 (...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: std::list<基底クラス> で継承先クラスの関数を呼びたい
返信数: 1
閲覧数: 2053

Re: std::list<基底クラス> で継承先クラスの関数を呼びたい

自己解決しました
こちらのサイトを基に書き直してみたところ無事解決できました
http://d.hatena.ne.jp/strkpy/20100401/1270133069
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: std::list<基底クラス> で継承先クラスの関数を呼びたい
返信数: 1
閲覧数: 2053

std::list<基底クラス> で継承先クラスの関数を呼びたい

例えば、 class HogeBase { //コンストラクタとか略 //virtual とかもとりあえず略 void Draw(); } という基底クラスがあり、 class Hoge1:HogeBase { //コンストラクタとか略 //virtual とかもとりあえず略 void Draw(); } class Hoge2:HogeBase { //コンストラクタとか略 //virtual とかもとりあえず略 void Draw(); } というHogeBaseを継承したHoge1,2というクラスがあるとして、 std::list<HogeBase> list; Hoge1 hoge1;...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: 直接ウィンドウサイズを変更したい
返信数: 3
閲覧数: 2915

Re: 直接ウィンドウサイズを変更したい

サポート外の可能性を忘れていました。
確かにその可能性はありますね。
御返信ありがとうございました!
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: 直接ウィンドウサイズを変更したい
返信数: 3
閲覧数: 2915

Re: 直接ウィンドウサイズを変更したい

DXライブラリではないですがWin32APIでSetWindowPosなるものがあるらしくそちらでサイズ変更できないかと試してみましたが、位置は変更されるのにサイズのみが変更されません。 void ResizeWindow() { // ウィンドウハンドル取得 HWND windowHandle = GetMainWindowHandle(); // ウィンドウサイズ取得 RECT windowRect; GetWindowRect(windowHandle, &windowRect); double windowWidth = windowRect.right - windowRect.le...
by KRNKRS
8年前
フォーラム: C言語何でも質問掲示板
トピック: 直接ウィンドウサイズを変更したい
返信数: 3
閲覧数: 2915

直接ウィンドウサイズを変更したい

現在、デスクトップ作業領域(タスクバーを除く領域)に合わせたウィンドウのリサイズを行おうとしているのですが、DXライブラリでウィンドウサイズ(ウィンドウの枠を含んだサイズ)の変更は出来ず、クライアント領域の変更のみできるようです。
クライアント領域設定でもできないことはないのですが、もし自分が知らなかっただけで実はウィンドウサイズの変更を行うことが可能な関数があるのではと思い、質問させて頂きました。
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: コードの簡略化
返信数: 6
閲覧数: 3676

Re: コードの簡略化

コードの簡略化よりも可読性を重視した方が良いというのは確かにその通りですね。
しかしコードゴルフなど勉強になりましたありがとうございました。
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: コードの簡略化
返信数: 6
閲覧数: 3676

コードの簡略化

こんにちは、KRNKRSと申します。 さっそくで申し訳ないのですが、C++(DXライブラリ含む)のソースコードを短く描くような構文が知りたいです。 なぜなのかというと、最近、if文を、 //仮適当コード if(a == 1){ x = 0; }else{ x = 1; } と今まで書いていたのが、 x = a==1 ? 0 : 1; と書けば一行で済むという方法を知ったからです。 それからというもの、このif文と同じように機能は同じ、もしくは似通っているが行数を短く書くことができるまたは処理が速い方法を色々と探してはいるのですが、思うように期待する検索結果は得られませんでしたので、こちらで質問...
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dホーミング弾の実装につまずいています。
返信数: 4
閲覧数: 4276

Re: 3Dホーミング弾の実装につまずいています。

返信有難うございます。

未だ理解ができていない状況ですが、返信内容を頼りにもう少し試行錯誤してみようと思います。
ありがとうございました。
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dホーミング弾の実装につまずいています。
返信数: 4
閲覧数: 4276

Re: 3Dホーミング弾の実装につまずいています。

すいません。
どのようにうまく行かないのか書いていませんでした。

本来期待する挙動は、もちろん少し遅れる感じに目標に向かって角度を変化させながら進行させるというものですが、上記のコードですと、全く見当違いの方向へ、しかもプルプル震えながら何処かに行ってしまうという状況です。

以上、追記でした。
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dホーミング弾の実装につまずいています。
返信数: 4
閲覧数: 4276

3Dホーミング弾の実装につまずいています。

こんにちは。 私は現在、3D空間における遅れて追従してくるタイプのホーミング弾の実装についてつまずいます。 いろいろと調べたり、自分なりに試行錯誤してみたのですが思うように行かず、こちらで質問させていただいた次第です。 以下ソースコードですが、注意すべきかもしれない点として、「Effekseer」をホーミング弾として用いています。 //生成された各弾の移動処理 for(int i=0; i<255; i++){ if(reimu.g_handleArray[i] != -1) { //ターゲットへのベクルを算出(仮目標:vec(0,25,0) - 今の座標) vecTarget[i] = VS...
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 自分の投稿したトピックだけ抽出して閲覧は可能?
返信数: 2
閲覧数: 2422

Re: 自分の投稿したトピックだけ抽出して閲覧は可能?

なるほど下の検索欄を活用するわけですね。
そこは気づきませんでした。

試しに検索をかけてみたところ、ばっちり結果が出ましたのでこれで解決とさせていただきます。
ありがとうございました!
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 自分の投稿したトピックだけ抽出して閲覧は可能?
返信数: 2
閲覧数: 2422

自分の投稿したトピックだけ抽出して閲覧は可能?

こんにちは、私の時間では深夜3時なのでおはようございますですが...。 何度もこちらの質問掲示板さんにはお世話になっており、活用させてもらっているのですが、一つこの掲示板について質問があります。 それは件名の通りなのですが、現在私は自分の質問したトピックの状況を見るためにページをさかのぼって探しています。 故に、時には全く見つからない時もあります。 なので自分の今まで投稿したトピックのみを閲覧できたらいいなと思うのですが、そのような機能と言いますか、ページは存在するのでしょうか? 私の見落としているだけなのかもしれず申し訳ないのですが、助言をいただけないでしょうか? よろしくお願いいたします。
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: マップ表示し、キャラクタ描画
返信数: 2
閲覧数: 2106

Re: マップ表示し、キャラクタ描画

codeタグ(?)を使って見やすくしましょうね。

コード:

//こんなかんじ
//[code]
// ソースコード
//
//でできるよ
[/code]

あと、エラーの内容を教えていただかないと、この後回答される方々に負担を与えることになるので基本的に載せるようにしましょう。
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dモデルを遠くから見ると黒くにじむ。
返信数: 3
閲覧数: 2866

Re: 3Dモデルを遠くから見ると黒くにじむ。

ちなみに、カメラの設定は、

SetCameraNearFar( 0.1f, 1500.0f ) ;

としています。
背景ドームを用いているので、少し大きめに範囲を設定しています。
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dモデルを遠くから見ると黒くにじむ。
返信数: 3
閲覧数: 2866

Re: 3Dモデルを遠くから見ると黒くにじむ。

早いご返信ありがとうございます!
無事解決いたしました!

滲んでいた大きな理由として、非同期ローディングを行っていたためでした。
非同期ローディングを設定した上で、ロード関数の直後にマテリアル輪郭線設定関数を呼び出しても、モデルがそもそも読み込みが終わっていないので、輪郭線設定が適用されなかったようです。

ローディングが終わったタイミングで関数を書いてやると無事解決出来ました!
ご返信ありがとうございました!
by KRNKRS
11年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dモデルを遠くから見ると黒くにじむ。
返信数: 3
閲覧数: 2866

3Dモデルを遠くから見ると黒くにじむ。

MMDのモデルを、「MV1LoadModel()」、「MV1DrawModel()」を用いて描画したのですが、遠くから描画されたそのモデルを見ると、黒く滲んでしまいます。かなり近くであれば問題ないのですが、遠くなればなるほど、モデル全体に黒いにじみが出てしまいます。 <近く> http://dixq.net/forum/gallery/image.php?album_id=132&image_id=818 <遠く> http://dixq.net/forum/gallery/image.php?album_id=132&image_id=819 「MV1SetMaterialOutLineDo...
by KRNKRS
12年前
フォーラム: C言語何でも質問掲示板
トピック: 「extern」の私の認識について
返信数: 9
閲覧数: 5571

Re: 「extern」の私の認識について

ようやくテスト期間が終わり返信させて頂きます。 >コピーと参照が訳分からん状態になっているように感じますね。 やはりまだ勉強不足のようです。出直してきますm(_ _)m カプセル化についてもまだ私の認識があいまいな状態なのでサイトを見つつ、プログラムを初めから作り直しながらカプセル化について理解を深めて行きたいと思います。 今回のトピックの『「extern」の私の認識について』はおおよそ理解出来た(はず)ので、今回のこのトピックを解決とさせて頂きます。 今回のやり取りで新たに出た疑問などは、ちゃんと別のトピックにて改めて質問させて頂きます。 ここまで長い間付き合っていただいてありがとうございま...
by KRNKRS
12年前
フォーラム: C言語何でも質問掲示板
トピック: 弾幕が正常に動作しない
返信数: 7
閲覧数: 4355

Re: 弾幕が正常に動作しない

打ち返し弾というとつまり反射弾みたいなものでしょうか? となると、弾の座標を確認して、反射させたい場所に来たら座標を加算する値(たとえばspeedという名前の変数)に「-1」をかけてあげればよろしいかと。 以下例(一部省略) //弾全部の座標を確認する for(i=0; i<BULLET_MAX; i++){ //弾のX座標が0以下になったら if(bullet[i].x < 0){ //speedに-1をかける bullet[i].speed *= -1; } } 間違っていたらすみません。 【追記】 あ、これではy座標も変わってしまいますね。 確か私のときはY座標用のspeed変数とX座標...
by KRNKRS
12年前
フォーラム: C言語何でも質問掲示板
トピック: 「extern」の私の認識について
返信数: 9
閲覧数: 5571

Re: 「extern」の私の認識について

返信が遅れて申し訳ありません。テスト期間の合間に返信させていただいています。 皆さんの返信を読む限り、そもそも別ファイルの値を得るということ自体がプログラムのカプセル化に反していてあまりよくないようですね。 >こちらとしては、externやポインタによる参照渡し、C++の参照渡し以前にカプセル化を考えて頂く必要がありそうだと思っています。 確かに、C#をやっていた(期間は1年ほど、大学に入って初めて触れたプログラム言語)頃でもカプセル化の意味がよく理解できておらず、 「んん? 値がprivateになっているだと(エラー表示)? じゃあpublicじゃあっ! っしゃあ! 使えるようになったぁ! ...
by KRNKRS
12年前
フォーラム: C言語何でも質問掲示板
トピック: 「extern」の私の認識について
返信数: 9
閲覧数: 5571

Re: 「extern」の私の認識について

あっ! だめじゃん!
「関連する」とかほざいておきながらこのトピック元々『「extern」の私の認識について』のトピックじゃん!

質問が変わってしまい申し訳ありません。
by KRNKRS
12年前
フォーラム: C言語何でも質問掲示板
トピック: 「extern」の私の認識について
返信数: 9
閲覧数: 5571

Re: 「extern」の私の認識について

返信有難う御座います。 まだC++そのものを勉強し始めて一年も経っていないので色々と理解出来ていない文法があり、参照もその内の一つでした。 調べた所によると参照は「値渡し」と「参照渡し」があり、 ●値渡し  ・「元変数→渡される変数」の一方通行の動作を行うもの。  ・「元変数の値」は「渡される変数の値」に干渉されない。  ・ただ、「変数をコピーして渡す」ので、その分メモリを食うし若干遅い。 ●参照渡し  ・元変数を別の名前で扱えるようにするもの。  ・値渡しのように「変数をコピーして渡す」ことがないので、大きなオブジェクト等を扱いやすい。  ・コピーしないため速度が値渡しより早い。 以上の解釈...

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