beatleさん、h2so5さん、softya(ソフト屋)さん、ISLeさん、回答ありがとうございました。
クラスのポインタをコピーして使うのは問題ないのですね。
deleteすると思い通りの動作をしないことがわかりました。
ありがとうございました。解決しました。
検索結果 34 件
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++ クラスのコンストラクタで別クラスのポインタを渡して使う
- 返信数: 6
- 閲覧数: 5514
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++ クラスのコンストラクタで別クラスのポインタを渡して使う
- 返信数: 6
- 閲覧数: 5514
Re: C++ クラスのコンストラクタで別クラスのポインタを渡して使う
すみませんでした。deleteの問題は自己解決しました。
ポインタのコピーはアドレスをコピーしているだけなので、
deleteすると他の場所で使えなくなるのでdeleteしてはいけませんね。
ポインタのコピーはアドレスをコピーしているだけなので、
deleteすると他の場所で使えなくなるのでdeleteしてはいけませんね。
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++ クラスのコンストラクタで別クラスのポインタを渡して使う
- 返信数: 6
- 閲覧数: 5514
C++ クラスのコンストラクタで別クラスのポインタを渡して使う
「クラスのコンストラクタで別クラスのポインタを渡し、コピーして使う」という使い方は、オブジェクト指向プログラミングとして正しいのでしょうか。 また、これが正しい場合コピーしたクラスのポインタはdeleteする必要はあるのでしょうか。 class A { public: void funcA(void) { // 省略 } }; class B { private: A *a; public: B(A *a) { this->a = a; } ~B(void) { delete a; } void funcB(void) { a->funcA(); } };
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: アクションゲーム
- 返信数: 9
- 閲覧数: 3754
Re: アクションゲーム
2Dスクロールのどんなゲームですか? 2Dアクションゲームだと仮定して書きます。 例えばスーパーマリオなどのファミコンゲームでは、背景を一枚の画像にするのではなく、 小さく区切った画像(チップ)を用意し、並べて描画することで背景にするという方法が一般的です。 これは、画像サイズを小さくするためです。 この方法では、各チップに番号をつけていき、その並びを配列などで管理します。 例) チップ 0 □ チップ 1 ■ チップ 2 × チップ 3 ○ 背景データ 00000000000000000000 01111111111111111110 01000000000000000010 0100000...
- 10年前
- フォーラム: C言語何でも質問掲示板
- トピック: DOS窓を一時停止させるには
- 返信数: 6
- 閲覧数: 3429
Re: DOS窓を一時停止させるには
KORYUOHさんの補足です。
system("PAUSE") を使うには stdlib.h をインクルードする必要があります。
system("PAUSE") を使うには stdlib.h をインクルードする必要があります。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【C#/WPF】画像サイズの挙動について
- 返信数: 2
- 閲覧数: 6593
Re: 【C#/WPF】画像サイズの挙動について
WPFはあまり使ったことが無いのですが、試してみました。 自分の環境ではBMP画像を指定すると拡大されて表示されました。 これはBMPファイルの解像度の情報を元に描画していて、 その解像度とディスプレイの解像度に違いがあることによって生じる問題らしいです。 解決策としては、 1. PNGやJpg形式の画像を使う 2. bmpの解像度をディスプレイに合わせる だと思います。 参考URL: Bitmap(ビットマップ)ファイルをDrawImageで描画すると勝手に拡大・縮小されてしまう - DrawImageで描画される画像の大きさが変わる 参考URL2: [C#] ビットマップ画像の解像度をディ...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 初めてです。
- 返信数: 14
- 閲覧数: 9167
Re: 初めてです。
ポインタは、"変数へのショートカット"と考えていいかもしれません。
ポインタ変数はメモリのアドレスなどを格納するものです。
このアドレスをもとに変数の値を書き換えることができます。
構造体は、複数のデータを1つの変数のようにまとめることができます。
詳しくは、こちらのページを読んでみてはいかがでしょうか。わかりやすいと思いますよ。
苦しんで覚えるC言語 http://9cguide.appspot.com/
このサイトの16と17にポインタと構造体について書かれています。
ポインタ変数はメモリのアドレスなどを格納するものです。
このアドレスをもとに変数の値を書き換えることができます。
構造体は、複数のデータを1つの変数のようにまとめることができます。
詳しくは、こちらのページを読んでみてはいかがでしょうか。わかりやすいと思いますよ。
苦しんで覚えるC言語 http://9cguide.appspot.com/
このサイトの16と17にポインタと構造体について書かれています。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: LoadGraph~DrawGraphで画像が表示されません。
- 返信数: 8
- 閲覧数: 6842
Re: LoadGraph~DrawGraphで画像が表示されません。
グラフィックスの描画先がバックバッファに設定されているのではないでしょうか。 DrawGraphの後に ScreenFlip(); を書いてみてください。 ScreenFlipはバックバッファに描画された内容をフロントバッファにコピーします。 これで描画されなかったら、描画先をバックバッファに明示的に設定してみてください。 DxLib_Init(); のあとに SetDrawScreen( DX_SCREEN_BACK ) ; です。 (参考までに)フロントバッファに直接描かずに、バックバッファに描いてからコピーする。という方法をダブルバッファリングといいます。 参考URL http://ho...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: ボタン操作によるグラフィックの描画に関しまして
- 返信数: 37
- 閲覧数: 35025
Re: ボタン操作によるグラフィックの描画に関しまして
いったんLoadDivGraph関数でグラフィックをすべて読み込んで、 モーションごとに用意した配列に必要な部分だけコピーしてはどうでしょうか。 例: モーション1では4枚のグラフィックを使用、 モーション2では2枚のグラフィックを使用、 モーション3では8枚のグラフィックを使用するとします。 〇〇〇〇◇◇◇◇ 〇〇◇◇◇◇◇◇ 〇〇〇〇〇〇〇〇 〇:使うグラフィックス ◇:使わない部分 int motion1[4]; int motion2[2]; int motion3[8]; int graphics[24]; LoadDivGraph("test.bmp",24,8,3,16,16,g...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 「C#」 ハンドルされていない例外
- 返信数: 5
- 閲覧数: 5624
Re: 「C#」 ハンドルされていない例外
絶対パスを指定するときは、
@"C:\test\sample.bmp" と書くか、
"C:\\test\\sample.bmp" と書きます。
"C:/test/sample.bmp"でも良かったかもしれません。(覚え書きなので確認してみてください。)
それより、相対パスを使ってはどうでしょうか。
おそらく、初期状態では実行ファイルのあるフォルダにパスが通っていると思うので、
プロジェクトフォルダ/bin/debug/ここ
にファイルを置いて試してみてはどうですか。
@"C:\test\sample.bmp" と書くか、
"C:\\test\\sample.bmp" と書きます。
"C:/test/sample.bmp"でも良かったかもしれません。(覚え書きなので確認してみてください。)
それより、相対パスを使ってはどうでしょうか。
おそらく、初期状態では実行ファイルのあるフォルダにパスが通っていると思うので、
プロジェクトフォルダ/bin/debug/ここ
にファイルを置いて試してみてはどうですか。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: char配列をint型に代入する方法について
- 返信数: 14
- 閲覧数: 4300
Re: char配列をint型に代入する方法について
int型は数値を入れますよね。char型は文字を入れますよね。 ですが実際はchar型変数に入っているものも数値です。 各数値に対応する文字が決めてあって、その数値を文字として扱っているわけです。 num = data[i]-'0'; この時data に'3'という文字が入っていたとします。 このdata を数値で表すと、 0x33 です。 '0'という文字を数値で表すと、 0x30 です。 ではdata から'0'を引く、すなわち 0x33 から 0x30 を引いたらどうなるでしょうか。 希望どおり3が得られます。 この例はASCIIという文字コードの場合ですが、仕組みはこんなかんじです。 ...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: orについて
- 返信数: 7
- 閲覧数: 2970
Re: orについて
>>aは1から打ち込んだ値まで値が変化するので aは入力した値のまま変わりませんね。 変わるのはiです。iは1から入力した値(a)まで、1 2 3 4 ・・・と増えていきます。 jについても同じです。 (例としてa = 3, b = 4だったとしましょう。) for(i=1; i<=3; i++) { for(j=1; j<=4; j++) { if( i==1 || j==1 || i==a || j==b ) { printf("#"); } else { printf("."); } } printf("\n"); //次の列に移る } この二重のforループでは 〇→→→\n →→→→...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: orについて
- 返信数: 7
- 閲覧数: 2970
Re: orについて
コードはcodeタグで囲んでください。
printf("#");が実行されるのは
i が 1 の時
j が 1 の時
i が a の時
j が b の時
ですよね?
一番上の列ではiが常に1なので、すべて#が出力されます。
一番下の列ではiが常にaなので、すべて#が出力されます。
その他の列ではiは1でもaでもありませんが、jが1の時と、jがbの時は#が出力され、
そのほかは.が出力されます。
よって四角の枠のように#が並べられます。
printf("#");が実行されるのは
i が 1 の時
j が 1 の時
i が a の時
j が b の時
ですよね?
一番上の列ではiが常に1なので、すべて#が出力されます。
一番下の列ではiが常にaなので、すべて#が出力されます。
その他の列ではiは1でもaでもありませんが、jが1の時と、jがbの時は#が出力され、
そのほかは.が出力されます。
よって四角の枠のように#が並べられます。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: vector<int>を引数として、intの静的配列として私たい
- 返信数: 4
- 閲覧数: 5272
Re: vector<int>を引数として、intの静的配列として私たい
vectorで確保した領域は配列のようにメモリ上に連続して並んでいるので、
配列を要求する関数に渡すときは、下のようにデータの先頭のアドレスを渡します。
参考URL http://www.geocities.jp/ky_webid/cpp/library/002.html
配列を要求する関数に渡すときは、下のようにデータの先頭のアドレスを渡します。
#include <vector>
int func(int* cint) { return 0; }
int main(void)
{
vector<int> vint(10);
func(&vint[0]); //先頭データのアドレスを渡す
return 0;
}
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【雑談】プログラミングについて 皆さんに訊いてみたかったことなのですが・・・・
- 返信数: 18
- 閲覧数: 9348
Re: 【雑談】プログラミングについて 皆さんに訊いてみたかったことなのですが・・・・
1、プログラミングに興味を持ったのはいつであるか、また勉強し始めたのはいつか? 中学2年の時です。プログラミングの勉強を始めたのも中学2年ですね。 そのころ自由に使えるPC(家にPCはあったのですが、それまでは自由に使えませんでした。)を手に入れて、 ゲームの改造ツールで遊んでいました。そのソフトが結構本格的で、いじっているうちに 自分で1からゲームを作ってみたい。という気持ちが生まれました。 それと同時くらいにPCに詳しい友人がプログラミングの存在を教えてくれて、プログラミングでゲームが作れる! と思い、VisualStudio Expressをインストールして勉強を始めました。(無料のID...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: ウィンドウサイズの変更について
- 返信数: 3
- 閲覧数: 2178
Re: ウィンドウサイズの変更について
DXライブラリを使用しているなら、SetGraphMode関数でウィンドウの解像度を変更できます。
↓リファレンス SetGraphMode
http://homepage2.nifty.com/natupaji/DxL ... .html#R4N1
↓リファレンス SetGraphMode
http://homepage2.nifty.com/natupaji/DxL ... .html#R4N1
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: クラスからGameMainの関数にアクセスする方法
- 返信数: 6
- 閲覧数: 3323
Re: クラスからGameMainの関数にアクセスする方法
ホヅミさんのおっしゃった方法で子フォームから親フォームの関数を呼び出すことができます。 別の例を挙げます。 //親フォーム class Form1 : Form { public Form1() { InitializeComponent(); Form2 f2 = new Form2(); f2.Show(this); //f2の親をForm1にする } public void Func() { this.Text = "Func関数が呼ばれました。"; } } //子フォーム class Form2 : Form { public Form2() { InitializeComponent...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: クラスからGameMainの関数にアクセスする方法
- 返信数: 6
- 閲覧数: 3323
Re: クラスからGameMainの関数にアクセスする方法
C#のDXライブラリはよくわかりませんが、GameMainクラスのメンバ関数をほかのクラスから呼び出したいのなら class GameMain { public void Func() { //Sampleクラスから呼ばれる } } class Sample { GameMain game; public Sample() { game = new GameMain(); game.Func(); } } のようにGameMainクラスのメンバ関数にpublic修飾子をつければアクセスできるようになります。 ※期待外れの回答だったらすみません。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: DXライブラリ上でピスコラ利用したい
- 返信数: 19
- 閲覧数: 6738
Re: DXライブラリ上でピスコラ利用したい
DLLからLIB不ファイルを生成する方法です。 参考URLを貼っておきます。 http://s.ameblo.jp/nana-2007-july/entry-10101317623.html 参考URLを見た方が分かりやすいと思いますが、一応書きます。 ① 作業用フォルダを作り、 dumpbin.exeとlib.exe、link.exe、mspdb80.dllとpxtoneWin32.dllを探してコピー。 ② コマンドプロンプトを開き、①で作ったフォルダに移動。 (例: cドライブ直下にフォルダを作った場合 cd c:\フォルダ名 のコマンドで移動できます。) ③ コマンドプロンプトに du...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: DXライブラリ上でピスコラ利用したい
- 返信数: 19
- 閲覧数: 6738
Re: DXライブラリ上でピスコラ利用したい
ピストンコラージュの作者さんのホームページに Windowsアプリケーションでピストンコラージュ の曲を再生するサンプルプロジェクトが用意されています。 サンプルを参考にしつつDXライブラリように少し修正すれば 再生できます。 http://hp.vector.co.jp/authors/VA022293/pxtone/index.html [http://を追加 by softya(ソフト屋)] (下のほうに小さくサンプルのダウンロードリンクがあります。) なお、PXTONEの生成時にウィンドウハンドルを指定する必要があるので、 DXライブラリで使う場合は、GetMainWindowHand...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: ブロック崩し
- 返信数: 3
- 閲覧数: 1819
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: DXUTのSDKsoundで音を鳴らす
- 返信数: 8
- 閲覧数: 3313
Re: DXUTのSDKsoundで音を鳴らす
DXUTについて少し勉強してみました。 メッセージボックスで確認してみましたがどうでしょうか。 INT WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int ) { #if defined(DEBUG) | defined(_DEBUG) _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #endif DXUTCreateWindow( L"DXUT_TEST" ); DXUTCreateDevice( true, 640, 480 ); TCHAR Window...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: DXUTのSDKsoundで音を鳴らす
- 返信数: 8
- 閲覧数: 3313
Re: DXUTのSDKsoundで音を鳴らす
DXUTについてよく分かりませんが、
DXUTCreateWindow( L"タイトル", NULL, NULL, NULL, 0, 0 );
のように第二引数以上を指定してみてはどうですか?
DXUTCreateWindow( L"タイトル", NULL, NULL, NULL, 0, 0 );
のように第二引数以上を指定してみてはどうですか?
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# panelの自動スクロールバーを常に表示する
- 返信数: 4
- 閲覧数: 26076
Re: C# panelの自動スクロールバーを常に表示する
解決にチェック忘れていました。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# panelの自動スクロールバーを常に表示する
- 返信数: 4
- 閲覧数: 26076
Re: C# panelの自動スクロールバーを常に表示する
h2so5さん、沖 滉均さんありがとうございました。
panelのLayoutイベント発生時にVerticalScrollプロパティとHorizontalScrollプロパティのVisibleをtrueに設定することで実現できました。
ありがとうございました。
panelのLayoutイベント発生時にVerticalScrollプロパティとHorizontalScrollプロパティのVisibleをtrueに設定することで実現できました。
ありがとうございました。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# panelの自動スクロールバーを常に表示する
- 返信数: 4
- 閲覧数: 26076
C# panelの自動スクロールバーを常に表示する
panelコントロールのAutoScrollをtrueにすると内容に応じて自動的にスクロールバーがでますが、
このスクロールバーを常に表示しておく方法(panel内の内容がはみ出していなくてもスクロールバーを表示しておく方法)はありますか?
このスクロールバーを常に表示しておく方法(panel内の内容がはみ出していなくてもスクロールバーを表示しておく方法)はありますか?
- 11年前
- フォーラム: 作品お披露目掲示板
- トピック: C# レイヤーピクチャーボックスコントロールを作ってみました。
- 返信数: 0
- 閲覧数: 6155
C# レイヤーピクチャーボックスコントロールを作ってみました。
C#のフォームアプリケーションで画像表示にPictureBoxコントロールが便利ですが、
レイヤー機能を実装しようと思った時になかなかめんどくさかったので
LayerPictureBoxというコントロールを作ってみました。
今のところレイヤーは3枚までです。
使い方は付属のReadme.txtを読んでください。
ぜひ使ってみてください。
レイヤー機能を実装しようと思った時になかなかめんどくさかったので
LayerPictureBoxというコントロールを作ってみました。
今のところレイヤーは3枚までです。
使い方は付属のReadme.txtを読んでください。
ぜひ使ってみてください。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# ステージエディタのバケツツール
- 返信数: 3
- 閲覧数: 2268
Re: C# ステージエディタのバケツツール
softyaさん、参考URLありがとうございます。
とても参考になりました。
ステージデータにラベリング処理をして別の2次元配列に結果を書き込んで、
マウスでクリックした座標のラベルの部分を別のチップで置き換えれば
よさそうです。
がんばってみます。
とても参考になりました。
ステージデータにラベリング処理をして別の2次元配列に結果を書き込んで、
マウスでクリックした座標のラベルの部分を別のチップで置き換えれば
よさそうです。
がんばってみます。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# ステージエディタのバケツツール
- 返信数: 3
- 閲覧数: 2268
Re: C# ステージエディタのバケツツール
ちなみにチップの並びはbyte[,]Dataという2次元配列に入っています。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# ステージエディタのバケツツール
- 返信数: 3
- 閲覧数: 2268
C# ステージエディタのバケツツール
現在2Dアクションゲーム用のステージエディタを作っています。
大まかに完成して使える状態になったのですが、
ペイントソフトなどにある”バケツ”の機能をつけたいと考えています。
ステージエディタのバケツツールでは
「同じチップが並んでいる範囲に別のチップを敷き詰める」
ということをやりたいです。 (たとえばこの画像の状態でブロックが並んでいるところをクリックすると別のチップに置き換わる)
同じチップが並んでいる範囲を見つける方法が思い浮かばず困っています。
よろしくお願いします。
大まかに完成して使える状態になったのですが、
ペイントソフトなどにある”バケツ”の機能をつけたいと考えています。
ステージエディタのバケツツールでは
「同じチップが並んでいる範囲に別のチップを敷き詰める」
ということをやりたいです。 (たとえばこの画像の状態でブロックが並んでいるところをクリックすると別のチップに置き換わる)
同じチップが並んでいる範囲を見つける方法が思い浮かばず困っています。
よろしくお願いします。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# Bitmapクラス
- 返信数: 2
- 閲覧数: 1866
Re: C# Bitmapクラス
別の方法を探そうと思います。
すみませんでした。
すみませんでした。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: C# Bitmapクラス
- 返信数: 2
- 閲覧数: 1866
C# Bitmapクラス
Bitmapクラスをnew Bitmap(/*サイズ*/)で実体化したとき、
何も描かれていない透明なBitmapができると思うのですが、
そこに何か描画して、元の透明な状態に戻すにはどうしたらいいでしょうか。
透明な色で作成したBitmapを塗りつぶせばよさそうですが、やりかたがわかりません。
よろしくお願いします。
何も描かれていない透明なBitmapができると思うのですが、
そこに何か描画して、元の透明な状態に戻すにはどうしたらいいでしょうか。
透明な色で作成したBitmapを塗りつぶせばよさそうですが、やりかたがわかりません。
よろしくお願いします。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 【終了】 2000万アクセス感謝イベント開催 【告知/雑談】
- 返信数: 12
- 閲覧数: 20798
Re: 【終了】 2000万アクセス感謝イベント開催 【告知/雑談】
今回は都合が会わず、参加できませんでした。
すごく楽しみにしていたので残念です。
次回は絶対参加します!!
すごく楽しみにしていたので残念です。
次回は絶対参加します!!
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: 関数での素朴な疑問。
- 返信数: 6
- 閲覧数: 2358
Re: 関数での素朴な疑問。
戻り値について説明します。変数に型がありますが、関数にも型があります。 この”関数の型”は「関数の戻り値の型」です。 void型の関数は値を返しません。 したがってint rei(int a)という関数はint型の数を返します。 もしvoid rei(int a)にしてしまったら、値を返さないので、 int n = rei(100); はうまくいきません。 まとめると int型の関数はint型の数を返す。 void型の関数は値を返さない。 です。 うまく説明できていないかも知れませんが、関数の戻り値はこんなものです。 たとえば 引数に指定した二つの数を足す、int plus(int A,int...