検索結果 25 件

by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

Re: ダンジョンの自動生成について

beatle さんが書きました: 「アクセスエラー」というのは、具体的にどの部分でどんなエラーが出ますか?for文と言っても、外側のfor文には初期化部、条件部、更新部、実行される文と、大きく4つありますね。文の中にはまた8行の文が含まれます。
おそらく、更新部のところだと思います。
デバッグでは最初の中括弧で停止しました。ですので、インクリメント直後にエラーが出たんだと思います。
外のfor文は何回か実行していたので要素数は0ではないのですが、なぜEnd()で止まってくれないのでしょうか・・・。

追記:
it != rect_list.End()には書き換えておきました。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

Re: ダンジョンの自動生成について

gcc 4.3.4でg++ -std=c++0xでコンパイルエラーですが環境は何でしょうか? 環境はVC++2010Express版です。 ぱっと見 for(auto it = rect_list.begin();it == rect_list.end();++it) この行でit == rect_list.end()としているのが気になります。このfor文は一回も実行されませんよ。 なんと・・・、見落としてました、申し訳ないです。 それから、 rect->lx = it->get()->lx; はせっかくスマートポインタを使っていますから、生ポインタを取り出してlxにアクセスするのではなく...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

Re: ダンジョンの自動生成について

そういう間違いが起きるのは、 (1)int map_i[MAP_HEIGHT][MAP_WIDTH]; と定義しているからです。 (2)int map_i[MAP_WIDTH][MAP_HEIGHT]; とすれば間違うことはないはずです。 (1) の形で定義して便利なのは、直接マップデータを数値定義するときで自動生成の場合は無意味ですのでバグを減らすためにも(2)であるべきです。 あと、i,jと言う変数名もミスを誘発しやすいのでx,yを使うべきでしょう。 ありがとうございます。 宣言時から間違っていたので気づくのに遅れてしまったんでしょう・・・、以後気を付けます。 さて、何事もなく表示はされ...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

Re: ダンジョンの自動生成について

すいません・・・かなり危ないところを間違えていました・・・。
イテレーターから参照して代入の部分でエラーが出ていたのではなく、
下のfor文のところでした。

ここをコメントアウトしたとき実行したら右上に不正な#があったのでデバッグしてみたところ、
map_iのi分が40しかなかったのであれ?と思って宣言を見てみたらMAP_WIDTHとMAP_HEIGHTが
逆でした^^;
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

Re: ダンジョンの自動生成について

123行目を削除したら、アサートは消えてくれました。 ですが、やはりどこかで処理が止まってしまいます。 領域は確保済みです。 デバッガで止まった場所は特定できるはずです。 デバッガの使い方がわからないのでちょっと勉強がいるかな・・・と思いました。 返信より先に自分で解決できましたのでご報告いたします。 原因は、ダムポインタとスマートポインタの混在でした。 なので種類の違う値が入り混じってしまい動作が停止したんだと思います。 なので、戻り値・引数をすべてスマートポインタで返すようにしてみました。 #include <cstdio> #include <cstdlib> #include <ve...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

Re: ダンジョンの自動生成について

123行目を削除したら、アサートは消えてくれました。
ですが、やはりどこかで処理が止まってしまいます。

領域は確保済みです。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

Re: ダンジョンの自動生成について

h2so5 さんが書きました:84行目のスマートポインタはNULLポインタなのでアクセスできませんね。
あと、89行目の「イテレーターから代入できなかったため」とはどういうことでしょうか?
あぁ・・・領域作るの忘れていました・・・。

それぞれに代入するための4行を書く前に、
make_sharedで行っていたのですが、謎のコンパイルエラー・・・。
以前vectorやスマートポインタ関係で書き間違い起こすと場所がどこだかわからなくなるというのがあり、
まさにそのことが起きましたので、一つ一つでいいかなと・・・。

少し書き直してみます。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: ダンジョンの自動生成について
返信数: 17
閲覧数: 6625

ダンジョンの自動生成について

こちらのコード( Racanhackコード解説様 http://racanhack.sourceforge.jp/rhdoc/index.html を参考にしながらvectorなどに置き換えてコードを書いてみました。 それで実行してみたのですが、イレテーターが不正?のようなアサートウィンドウが出ました。 無理してスマートポインタなどを組み込んで実行しているのでそのせいかもしれません・・・。 どこかおかしい点は見受けられるでしょうか?ご教授お願いします。 長くなるのでスポイラーで。 Debug Assertion Failed! Program: ...10\Project\ConsoleApp...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: メインループ関数をpauseできるの方法?
返信数: 3
閲覧数: 2204

Re: メインループ関数をpauseできるの方法?

あくまで予想なのですが、文の単語的に機械翻訳を使用していますかね・・・?
それならむしろ英語でよろしいですかと日本語で断ってから英語等で質問してはどうでしょうか。

丸投げは確かにいけませんが。

一時停止ということはSleepとかの話ですかね。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリを使用した実行ができなくなりました
返信数: 6
閲覧数: 3876

Re: Dxライブラリを使用した実行ができなくなりました

あぁ、すいません。
起動初期のif(ChangeWindow~return -1;( 9~13行目 )の部分をコメントアウトしたらできるようになりました。
むやみに!=0にするのはよくないですね・・・。

調べなおしてきます。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリを使用した実行ができなくなりました
返信数: 6
閲覧数: 3876

Re: Dxライブラリを使用した実行ができなくなりました

遅くなりました、ソースはこれです。 他のファイルはまだリンクしていないので現在はこの2つだけなのですが・・。 Main.cpp #define GLOBAL_INSTANCE #include "../../include/General.h" int ProcessLoop( void ); int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int CmdShow) { if( ChangeWindowMode ( TRUE ) !=0 || SetDrawScreen ( DX_SCREEN_B...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリを使用した実行ができなくなりました
返信数: 6
閲覧数: 3876

Dxライブラリを使用した実行ができなくなりました

しばらくクラスの生成に専念しておりまして、実行をしてなかったのですが、 あるとき大丈夫かどうかコンパイルを通してテスト実行させてみました。 そしたらウィンドウが表示されないのです。デバッグ有り無し両方試してみましたができませんでした。 ビルド自体はできるようです。コンソールはできるのでおそらくWin32アプリケーションのほうだと思います。 唯一わかるのはデバッグ時にログに、 'Fairies.exe': 'C:\Users\****\Documents\Visual Studio 2010\Projects\Brendel\Debug\Fairies.exe' を読み込みました。シンボルが読み...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクトの寿命を維持させる方法について
返信数: 6
閲覧数: 3009

Re: オブジェクトの寿命を維持させる方法について

make_sharedですか・・・、使い方がよくわからないのですが
boost関連のリファレンスサイトを見てみて、

このような書き方でよろしいのでしょうか?

コード:

tObj01 = std::shared_ptr<TEST>(new TEST(/*引数*/));
// メモリ生成が二回

tObj02 = std::make_shared<TEST>(/*引数*/);
// メモリ生成一度のみ
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリで.....
返信数: 12
閲覧数: 5266

Re: DXライブラリで.....

こちらの方にWin32APIを使用した「開く・名前を付けて保存」ダイアログのサンプルがありましたので、
こちらを参考にしてみてはいかがでしょうか。

丸々とるのはいいとは思えませんが…。
http://homepage1.nifty.com/MADIA/vc/api/
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクトの寿命を維持させる方法について
返信数: 6
閲覧数: 3009

Re: オブジェクトの寿命を維持させる方法について

解決できました、ありがとうございます。 解決コード(乱暴書きで申し訳ない) // Main.cpp #include "TEST.h" int main(void) { test_func(); return 0; } // Test.cpp(ヘッダーでmainとリンク済み) #include <cstdio> #include <memory> class TEST { public: TEST(int aX) : test_var(aX){} ~TEST(); int test_var; }; static std::shared_ptr<TEST> tObj; TEST::~TEST( ...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクトの寿命を維持させる方法について
返信数: 6
閲覧数: 3009

Re: オブジェクトの寿命を維持させる方法について

わかりました、こんな感じで良いのですね。 // Test.h #ifndef __INCLUDE_TEST_H__ class TEST { public: TEST() {} ~TEST(){} int test_var; }; #define __INCLUDE_TEST_H__ #endif // Test.cpp #include "../../include/TEST.h" #include <memory> static int nowState = 0; static TEST* test; int dungeon( void ) { switch(nowState) { cas...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクトの寿命を維持させる方法について
返信数: 6
閲覧数: 3009

オブジェクトの寿命を維持させる方法について

// main.cpp int WINAPI WinMain(...) { // 略 while(...) { switch(func_state) { case STATE_DUNGEON: dungeon(); break; } ScreenFlip(); } // dungeonMain.cpp int nowState = 0; int dungeon( void ) { switch(nowState) { case 0: ClassDungeon dungObj; nowState = 1; break; case 1: //以後各処理 break; default: break...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一つの関数から複数のオブジェクトへのアクセス
返信数: 16
閲覧数: 5801

Re: 一つの関数から複数のオブジェクトへのアクセス

教えていただいたことについて、ある程度理解はできました。

vector配列を(もしくはポインタ?)を渡してfor文で連続させることで表示できるということがわかりました。
ですが、肝心のオブジェクトテーブルの宣言・実体化場所に戸惑い続けてしまったので、
STL関連の書籍で勉強しなおそうと思います。

回答してくださりありがとうございます。
解決時にソースコードの提示が必要?とのことですが、現在手一杯でございまして、
後日公開したいと思います。

それでは、失礼しました。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一つの関数から複数のオブジェクトへのアクセス
返信数: 16
閲覧数: 5801

Re: 一つの関数から複数のオブジェクトへのアクセス

不適切な発言、申し訳ありません。 いろいろとこちらの解釈で書いてしまいましたので説明足らずの部分もあったかと思います。 >とありますが、itに先頭アドレスを返してインクリメント後に、 >空のオブジェクトにぶつかった場合11に飛べるのでしょうか? 空のオブジェクトの定義が分かりません。 どういう状態のものを空のオブジェクトと呼ぶのですか? おそらく、push_backで要素を入れてないのを空、としていたと思います。 この文の意味が良くわかりません。先頭アドレスを返す?11に飛ぶ? for文の変数指定部分で 「it = apobject.begin()」をapobjectの先頭のイテレーターを取得...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一つの関数から複数のオブジェクトへのアクセス
返信数: 16
閲覧数: 5801

Re: 一つの関数から複数のオブジェクトへのアクセス

また初歩的な部分で引っかかってしまったので質問します>< クラスClassDungeonのメンバ変数として std::vector<std::shared_ptr<ActorParamObject>> ActObjを宣言し、 このオブジェクトテーブルにプッシュバックする時、例として関数ActorObjectAdd使うとします。 この場合、ActObjの宣言場所としては正しいのでしょうか? また、味方用にオブジェクトテーブル0~10を確保したいのですがこの場合の管理方法としてはどうすれば適切なのでしょうか? beatleさんが挙げてくれたコードでは /* ActObj = apobject に置...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の絶対値を求めるプログラムについて教えてください。
返信数: 7
閲覧数: 4741

Re: 関数の絶対値を求めるプログラムについて教えてください。

自分で組んだプログラムのコードが見当たらないのですが・・・、
現在どの部分までできているかコードを載せていただけないでしょうか。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一つの関数から複数のオブジェクトへのアクセス
返信数: 16
閲覧数: 5801

Re: 一つの関数から複数のオブジェクトへのアクセス

大体こんな感じになるでしょうか すいません、昨日操作を誤ってコード全部灰と化しました…ので絶賛書き直し中で遅れました。 なにやら初めて見る関数やらが・・・、 理解できた点を挙げると 関数barでvectorで作ったapobject(以下オブジェクトテーブル)を受け取って、 whileループ毎にHP0判定で消す作業を行う。 関数FooでActorParamObjectのスマートポインタでオブジェクトテーブルの作成。 その後テーブルを100まで伸ばす。 forでi<要素数まで変数apoにActorParamObject分のメモリ確保、及び オブジェクトテーブルにプッシュバック。 ここからできるこ...
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一つの関数から複数のオブジェクトへのアクセス
返信数: 16
閲覧数: 5801

Re: 一つの関数から複数のオブジェクトへのアクセス

なるほど、ありがとうございます。
スマートポインタですか・・・、確かExpressでは類似している機能があったと聞いたような気がします。
ですが、まだ初心者を脱していないものでして・・・。

Professional版を買えたらすぐにもそちらへ書き換えたいんですけどね・・・、
参考までに、肝に銘じておきます。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一つの関数から複数のオブジェクトへのアクセス
返信数: 16
閲覧数: 5801

Re: 一つの関数から複数のオブジェクトへのアクセス

softya(ソフト屋) さんが書きました:C++でやるならActorクラスのインスタンスとして生成してSTLのvectorで管理すれば良いのでは無いでしょうか?
と言いますと・・・、
構造体ActorParamObject(以下、APOと呼びます)を改めてクラスとして宣言し、
Vectorで可変できるクラスAPO配列を生成する。

という解釈で宜しいのでしょうか。
そのクラス配列ごとMapDrawに引数として渡し配列0からActorPosにアクセス…のような形になるわけですね。

コードの書き換え部分が多そうなので返信は昼ごろになると思います。
その時もよろしくお願いします。
by 華風えくれあ
13年前
フォーラム: C言語何でも質問掲示板
トピック: 一つの関数から複数のオブジェクトへのアクセス
返信数: 16
閲覧数: 5801

一つの関数から複数のオブジェクトへのアクセス

現在、ローグライク型のゲームを作成しております。 そこで、ある問題にぶつかりました。 あるオブジェクトをsoftyaさんのRPG作成講座を参考にしながら制作しました。 // アクターのパラメータ一式 struct tag_ActorParamObject { int hp,hp_max; // 体力 int mp,mp_max; // 魔力 int pow,def,mag,sec; // 攻撃力,防御力,魔法攻撃力,魔法防御力 int State; // 状態異常 int ItemStack; // アイテムスタック+1 int ActPos_x,ActPos_y; // アクターマップ座標 ...

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