検索結果 2631 件

by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: プログラミング初学者の基礎的疑問
返信数: 11
閲覧数: 3647

Re: プログラミング初学者の基礎的疑問

いまはインターネットを使って膨大な情報にリーチ可能です。 「知っている」ことと「できる」ことは乖離が進み、「知っているけどできない」ことはどんどん増えていくでしょう。 でも「知っている」ことは強みです。 それだけで、いまはできなくても将来の備えになります。 とは言え、やみくもに膨大な情報に触れるだけで良し悪しを判断できなければ選択できません。 >機能すればそれでいいって感じでも最初のころはいいのでしょうか? 学ぶ上では、むしろ効率の悪いコードに触れることは貴重な体験となるでしょう。 >こちらの1~定数jまでの数値をかぶらないように配列に格納して表示するプログラム…なんかどことなく効率が悪いよう...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: プログラミング初学者の基礎的疑問
返信数: 11
閲覧数: 3647

Re: プログラミング初学者の基礎的疑問

かなり昔の話だけれど、ガラケー用のゲームで、20体程度のエネミーの群れから3体を選んで隊列を作るという処理があった。 iアプリ版では、3体すべて全体からランダムに選出していたが特に問題はなかったものを、そのまま別のケータイに移植したところ、ウォッチドックに引っ掛かって端末に強制リセットが掛かるという致命的な不具合が発生した。 たまたま知っていたから、すぐに原因を見つけて修正できたけれど、知らなかったらその機種でのリリースは延期や中止にもなりかねなかった。 今回の質問の内容は頻出で、こういう質問掲示板を巡回していればたびたび目にして、使う機会がなくてもなんとなく覚えてしまう。 質問があるときだ...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: ポインタ変数
返信数: 14
閲覧数: 6396

Re: ポインタ変数

>かずまさん ご指摘ありがとうございます。 宣言に現れる*単体の名称は存在しないわけですね。 脊髄反射的に騒ぎ出す人は、「アドレスを格納してないポインタ変数を 使って、ポインタの指している先のオブジェクトを参照しちゃいかん」と 言っているつもりなんでしょう。 int i, *p, **pp; という宣言があった時、 p = &i; や pp = &p; は何も問題ないが、 *p = i; や i = *p; という使い方をしちゃいかん、 と言っているのでしょう。 代入演算子= の左オペランドや、単項演算子& のオペランドは、 未初期化の一時変数であっても何も問題ありません。 そうですね。 どう...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: ポインタ変数
返信数: 14
閲覧数: 6396

Re: ポインタ変数

前言時の*はポインタ宣言子。変数名(直接宣言子)には含まれない。 int i, *p, **pp; iは、『int』という型の値を保持できる変数。 pは、『int』+『へのポインタ』という型の値を保持できる変数。 ppは、『int』+『へのポインタへのポインタ』という型の値を保持できる変数。 iを使って、intという型の値を『直接』やりとりできる。 pを使って、intへのポインタという型の値を『直接』やりとりできる。 ppを使って、intへのポインタへのポインタという型の値を『直接』やりとりできる。 これらが一時変数であった場合… 初期化されていないiを読み出そうとすると、未定義の動作となる...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: ポインタ変数
返信数: 14
閲覧数: 6396

Re: ポインタ変数

ただちょっと疑問がありまして、int型変数のアドレスもintに内包されるので 64ビット実行環境だとintが32ビットでアドレスが64ビットだったりすることがあります。 C/C++言語において、アドレスの表現は、コンパイラ側で勝手に決めていいということ以外は規定がありません。 あと、アドレスをprintfの%dで表示するということにおいては、PCがぶっ飛んでも不思議ではないことだというふうに定義されています。 まあ、たいていは、コンパイラなりOSなりが、PCがぶっ飛んだりするような大事には至らないように対処してくれます。OSが起動しなくなるくらいはたまにあることですが。 %pで表示するにして...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]自分自身のインスタンスを定数で持つ
返信数: 3
閲覧数: 2520

Re: [c++]自分自身のインスタンスを定数で持つ

コンパイル時定数とするため以下のように記述できます。

コード:

struct ColorCode {
	int r, g, b;
	constexpr ColorCode(int r = 0, int g = 0, int b = 0) : r(r), g(g), b(b) { }
	constexpr ColorCode(const ColorCode& cc) : r(cc.r), g(cc.g), b(cc.b) { }
	static const ColorCode Red;
};
constexpr ColorCode ColorCode::Red = {255, 0, 0};
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: Vitual Studio 2017のUSBへのコピーについて
返信数: 2
閲覧数: 3539

Re: Vitual Studio 2017のUSBへのコピーについて

Visual Studio Installerを起動して、詳細→修復、と選択してみてください。

Visual Studioは、インストールの際、WindowsのOS機能を開発向けに書き換えたりしているので、外部メディアにコピーして持ち運びできるようにはなっていません。
OSの機能に関するファイルに勝手に触ると(下手するとWindowsごと)動かなくなります。

Visual Studioと比べたら機能的に劣りますが、USBメモリで持ち運ぶ用途にはVisual Studio Codeをお勧めします。
Visual Studio Codeはインストーラ版とポータブル版の両方が用意されています。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: Eclipseが起動しません
返信数: 2
閲覧数: 3355

Re: Eclipseが起動しません

「Eclipse 4.7 Oxygen 3a というall in one Eclipse」というのは、MergeDoc ProjectのPleiades All in One Eclipseのことでしょうか? その場合… 1. eclipse.exeのあるフォルダが、Pleiades All in One Eclipseでは、C:\pleiades\eclipseとなるはずであるが、C:\eclipseとなっている。 2. 4.7 Oxygen 3aをダウンロードしたとあるのに、メッセージの内容は4.3 Keplarである。 という不可解な情報が読み取れるのみです。 ダウンロードした「Ecli...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: Bluetoothとの通信について
返信数: 3
閲覧数: 2934

Re: Bluetoothとの通信について

CreateFileにCOM10以降(2桁以上)のポート番号を指定するときはファイル名の先頭に\\.\を付加する必要があります。
"COM25" を "\\\\.\\COM25" に変えてみてください。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 2D横スクロールアクションゲームの壁判定についての質問
返信数: 6
閲覧数: 3416

Re: 2D横スクロールアクションゲームの壁判定についての質問

現状のコードに対するアドバイスではないのですが、下のコードはこの掲示板に以前投稿したものです。 結果としてrcResultの各メンバに上下左右それぞれめり込んだ量が入ります。 左右あるいは上下ともに値が入っているとき、合計がキャラの幅以下なら壁に挟まれていて、キャラの幅を超えていれば壁の中にいる状態です。 良かったら参考にしてみてください。 RECT rcMover = { /* 当たり判定するキャラの座標で初期化 */ }; RECT rc, rcResult; CopyRect(&rcResult, &rcMover); { // 当たり判定の対象の数だけ繰り返し // 四角いブロックの場...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのバッファリングについて
返信数: 3
閲覧数: 3025

Re: Win32APIのバッファリングについて

ボタンのちらつき対策にはウィンドウスタイルにWS_CLIPCHILDRENを加えてください。
ウィンドウズが勝手にボタンを避けて描画してくれるので高速描画でもへっちゃらです。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: WICを使用した画像表示で、一定サイズ以上だとエラーとなる
返信数: 4
閲覧数: 3460

Re: WICを使用した画像表示で、一定サイズ以上だとエラーとなる

MSDNの方で回避策は教えてもらえなかったのでしょうか。 D2D1::RenderTargetProperties()が返すパラメータは、ハードウェアが使えるときはハードウェアを使い、ハードウェアが使えないときにソフトウェアを使う、という設定なので、これを、常にソフトウェアを使うように明示すれば、 サイズの制限に関しては 大幅に緩和できます。 こちらの環境(※)では、ソフトウェアを使うように明示することで、ID2D1RenderTarget::GetMaximumBitmapSize()の戻り値が、16384 → 8388608 に変化しました。 ※Windows 10 bit、6GBメモリ、...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 暗闇の中での光源が複数ある場合
返信数: 2
閲覧数: 2846

Re: 暗闇の中での光源が複数ある場合

これでいかがでしょう。 //背景画像(640×480) int test = LoadGraph("test.png"); //背景と同じサイズで、白から黒に円形でグラデーションしている画像 int mul = LoadGraph("mul.png"); // グラデーション画像の合成用スクリーン int handle = MakeScreen(640, 480, FALSE); // グラデーション画像をオフスクリーンで合成 SetDrawScreen(handle); // 合成用オフスクリーンを描画対象に ClearDrawScreen(); SetDrawBlendMode(DX_BL...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 複数ウィンドウ表示の仕方
返信数: 7
閲覧数: 4904

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

数値を並べて表示したい場合、こんなふうにメモ帳を利用することもできます。 矢印で囲った部分。DXライブラリと関係なく使えます。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { SetAlwaysRunFlag(TRUE); ChangeWindowMode(TRUE); if (DxLib_Init() != 0) return 0; SetDrawScreen(DX_SCREEN_BACK); while (...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 複数ウィンドウ表示の仕方
返信数: 7
閲覧数: 4904

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

わたしがお薦めするのは余分な書き換えをしなくて済むOutputDebugString関数。
printfのような書式を使いたいならこんなのを一回作っておくといい。
出力は、VisualStudioの出力ウィンドウや、DebugViewなどで確認できる。

とは言え、DirectXで背景やキャラと重なって見えない、とあるのでログ的なものではない予感。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 再掲・クライアント領域に残像が残ってしまいます
返信数: 6
閲覧数: 6915

Re: 再掲・クライアント領域に残像が残ってしまいます

こちらの環境でプログラムを動作させるのに最低限必要だった書き換えは 1.ウィンドウプロシージャのシグネチャの変更 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 2.コメントにある『DirectX Graphics の初期化』の処理を『ウインドウ表示』および『ウインドウサイズ等の調整』より後に移動 でした。 ウィンドウが非表示の状態でウィンドウサイズを確定し、ウィンドウを表示した後、デバイスを作成するという手順を踏むことで、ウィンドウサイズの変化する様子が映ることもなく、環境に依存した問題...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 再掲・クライアント領域に残像が残ってしまいます
返信数: 6
閲覧数: 6915

Re: 再掲・クライアント領域に残像が残ってしまいます

ビルドの際にコンパイルエラーが発生し、それを修正し、デバッグ実行した際には一瞬ウィンドウが表示されるだけで終了してしまった
ということを申し上げたつもりです。
環境が違うので、めんつゆさんの想像するものとは異なるかもしれませんが。

回答が欲しいのであれば、たくさんのひとに見てもらえるように対処したほうがよろしいのではないでしょうか。
そのための情報提供をしたつもりです。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 再掲・クライアント領域に残像が残ってしまいます
返信数: 6
閲覧数: 6915

Re: 再掲・クライアント領域に残像が残ってしまいます

351行目を WNDCLASSEX wc = { sizeof(WNDCLASSEX),CS_CLASSDC,WndProc,0,0,hInst,NULL,NULL,NULL,NULL,NAME,NULL }; から WNDCLASSEX wc = { sizeof(WNDCLASSEX),CS_CLASSDC,WndProc,0,0,hInst,NULL,NULL,(HBRUSH)GetStockObject(BLACK_BRUSH),NULL,NAME,NULL }; に変更すると余白が黒で塗り潰されるようになります。 ただし、ウィンドウサイズ変更時に、GDIの背景塗り潰しとDirect3...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 【Unity/C#】delegateが全然理解できません。
返信数: 43
閲覧数: 17892

Re: 【Unity/C#】delegateが全然理解できません。

オフトピック
オブジェクト指向において、委譲(delegation)は基本的な要素のひとつで、古くからある考え方です。
それでも『デリゲート』という単語がメジャーになったのはjavascriptの影響が大きいと思います。
javascriptの実装は関数の属するコンテキストが云々といったかなりややこしい話になるけれど、結論だけ見れば「ただの関数に状態を持たせられる」というところが新しい。
「状態を持たせた関数がただの関数と同じく扱える」という表現のほうが適切か?
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 【Unity/C#】delegateが全然理解できません。
返信数: 43
閲覧数: 17892

Re: 【Unity/C#】delegateが全然理解できません。

デリゲートより前は、間接的にメソッドを呼び出す方法として使えたのは 1. 静的なメソッド(クラスメソッド)の参照を経由する 2. 特定のメソッドを持つ特定のクラス(あるいはインターフェース)にアップキャスト可能なインスタンスを経由する という方法だけでした。 1. はメソッド単体で使うので、状態を持つことができません。 状態を扱うには引数でインスタンスを与えるといったオブジェクト指向らしからぬ手段を用いる必要があります。 2. は状態を持たせられますが、継承が必須となり、多重継承の問題を抱えることになります。 そこで、メソッドのシグネチャのみを対象とし、メソッドが何に属しているかを不問とする方...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: UIに特化したソフトの作成方法
返信数: 4
閲覧数: 3000

Re: UIに特化したソフトの作成方法

既にHTMLを会得されているなら、Electronとか。
HTML5&CSS3 + javascript(Node.js)でマルチプラットフォームのアプリケーションを開発できるフレームワークです。
ネイティブコードの外部ライブラリを呼び出すこともできます。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: DirectX 9 フルスクリーンモードについて
返信数: 4
閲覧数: 3213

Re: DirectX 9 フルスクリーンモードについて

オフトピック
ご存知の方には余計なお世話ですが、ウィンドウズアプリケーションは Alt+F4 (Altキーを押したままF4キーを押す)で終了できます。
フルスクリーンモードのアプリケーションでも有効なので終了方法が分からないとき試してみてください。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: マップ情報の管理について
返信数: 3
閲覧数: 2426

Re: マップ情報の管理について

わたしのやり方は、そのどちらかではなくハイブリッドです。 外部ストレージへのアクセスがネックになる場合に、あらかじめ読み込んでおく、という場合でも、使っていないステージのデータは圧縮されていて、必要になった時点で展開する、といった方法を取る場合があります。 #例えば、ファミコンの容量の少ないROMカセットにステージデータが入っていて、本体RAMに展開して使うといった形態。 それとは別に、次に移動するであろうステージのデータをバックグラウンドで少しずつ読み込む、といった方法を取る場合があります。 #例えば、容量は大きいがアクセスの遅いCD-ROMからステージデータを読み込むといった形態。 ステー...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]自作dllの読み込み方
返信数: 7
閲覧数: 2807

Re: [c++]自作dllの読み込み方

Solutionソリューションに、MainプロジェクトとMakeプロジェクトの両方が含まれているとします。

1. Mainプロジェクトの『プロジェクト』→『プロパティ』で『追加のインクルードディレクトリ』に DLL.h のパスを設定
2. Mainプロジェクトの『プロジェクト』→『参照の追加...』でMakeプロジェクトにチェック

以上でOKです。
この方法ではリンカの設定(#pragma comment(lib, "~")のソース記述含む)を手動で行う必要がありません。
Debug構成でもRelease構成でも自動で追従します。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: 時代はUnityと言われました。マジですか?
返信数: 19
閲覧数: 7571

Re: 時代はUnityと言われました。マジですか?

「解像度256×224の枠の中で16×16のキャラクタ」のような具体的な数値を挙げているので、ゲームを作ることと同時にファミコンの環境に対しての関心も高いのではないかと想像します。 LoadDivGraphが便利だとおっしゃっているので、まだ先の話、あるいは無用なことかもしれませんが、ラスタースクロールやパレットアニメーションを実装しようというレベルになれば、DXライブラリでも不便なものです。 別に高度な技術を習得したいからでもなく、ゲームプログラマになりたいからでもなく、ただゲーム機が好きでゲーム機に興味があるだけ。 楽しんでいつのまにか高度な技術を学べるならそれでいいんじゃないですかね。 ...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: win32apiでの更新処理中に固まる現象について
返信数: 2
閲覧数: 2292

Re: win32apiでの更新処理中に固まる現象について

時間が経つとフリーズする原因として一番に考えられるのはGDIリソースのリークでしょう。
GDIリソースの上限数はデスクトップ全体で固定なので不要になったハンドルの解放や破棄を忘れると枯渇し、ウィンドウズのシステムに影響します。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: [Win32API]ダブルバッファと描画が上手にできません…
返信数: 4
閲覧数: 2088

Re: [Win32API]ダブルバッファと描画が上手にできません…

恒久的なBitmapはDIBが良い。 DIBであればデスクトップの画面モードが変更されても作り直す必要がない。 (DDBだとデスクトップの状態が変化すると描画されなくなる可能性がある) CreateDIBSection関数を使ってDIBを作成しビットマップハンドルを得る。 BitBltは、転送先と転送元のDCが逆。 hDcSrc,hDcDstといった変数名を使って転送元と転送先を明確に区別すると間違いに気付きやすくなるはず。 CreateCompatibleDCは、描画の直前に呼び出し、そこで取得したDCはすぐに破棄する。 デスクトップはいつ変化するか分からないので、ライフサイクルは短く。 B...
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: Zバッファが狂って表示順序がおかしくなる
返信数: 6
閲覧数: 2284

Re: Zバッファが狂って表示順序がおかしくなる

コード見ただけですが、0.01f(Near)~1000.0f(Far)の有効桁数6桁がfloatの精度ギリギリなのは関係ないですかね。
by ISLe
1年前
フォーラム: C言語何でも質問掲示板
トピック: マイクのミュート状態
返信数: 9
閲覧数: 2928

Re: マイクのミュート状態

No.4のリンク先にあるサンプルコードの中の
eRender

eCapture
に変更すればマイク入力(既定の録音デバイス)のミュート状態を取得できました。

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