検索結果 133 件

by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: std::listの優先順位
返信数: 5
閲覧数: 882

Re: std::listの優先順位

コード:

void Object_Manager::AddTask(CObject *obj){
	if(List.empty()){
		List.push_front(obj);
		return;
	}
	for(auto itr=List.begin();;){
		if((*itr++) < obj){
			List.insert(itr,obj);
			return;
		}
		if(itr==List.end()){
			List.push_back(obj);
			return;
		}
	}	
}
こうしたら上手くいったらしいので解決です
ありがとうございました
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: std::listの優先順位
返信数: 5
閲覧数: 882

Re: std::listの優先順位

みけCAT さんが書きました:
夢幻ノ月夜 さんが書きました:①は分かったのですが、
②の
①や②はここでは未定義でしょう。
夢幻ノ月夜 さんが書きました:それらが指しているオブジェクト同士を比較するにはどうしたらいいんでしょうか
オブジェクト同士を比較するコードに修正し、コンパイルし、実行すればいいです。
ポインタに対し単項*演算子を用いるとそのポインタが指しているオブジェクトが得られるので、それを比較しましょう。

コード:

if(*(*itr) < *obj){
	List.insert(itr,obj);
	return;
}
クソ重くなった挙句順位反映されない(´・ω・`)
やっぱり何かが間違っているのでしょうか
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: std::listの優先順位
返信数: 5
閲覧数: 882

Re: std::listの優先順位

Listが未定義ですが、タイトルとコードからstd::list<CObject*>と仮定します。 すると、 objがListの要素でない時、List.end()であるitrをデリファレンスし、無効な値を比較に使用してしまう。 オブジェクトではなくポインタを比較しているため、ここで提示されているoperator <は利用されない。 という所がやばいでしょう。 改善するには、おそらく itr == List.end()だった時、追加した後returnする ポインタ同士ではなく、それらが指しているオブジェクト同士を比較するようにする といいでしょう。 ①は分かったのですが、 ②のそれらが指している...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: std::listの優先順位
返信数: 5
閲覧数: 882

std::listの優先順位

今、抽象クラスのポインタのリストを作って簡易的にタスクシステムのようにしているのですが 優先順位が上手く反映されません(常に自機が一番上に来てしまう) void Object_Manager::AddTask(CObject *obj){ if(List.empty()){ List.push_front(obj); return; } for(auto itr=List.begin();;itr++){ if(itr == List.end()){ List.push_back(obj); } if( *itr < obj){ List.insert(itr,obj); return; } ...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: C++でのメニュー画面
返信数: 2
閲覧数: 798

Re: C++でのメニュー画面

>> 夢幻ノ月夜さん http://dixq.net/g/sp_06.html こちらのページのこと宜しいでしょうか。 上から流し読みしたので間違ってるところもあるかもしれませんが。 例えば class Secret : public BaseScene{ ... }; というような BaseScene クラスを派生した解放画面用のシーンクラスを用意。 各シーンの状態が enum 列挙された部分に eScene_Secret を追加。 Menu::Update() 内に、解放画面用の処理を追加 //更新 void Menu::Update(){ ・・・ if(解放条件フラグがON && 決定...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: C++でのメニュー画面
返信数: 2
閲覧数: 798

C++でのメニュー画面

ゲームプログラミングの館にあるC++でのメニューの作り方を読んでみたのですが
あそこに書いてあった方法で「項目の数を可変」にすることは出来るのでしょうか?
条件を満たすとステージが開放されるという形にしたいのですが、
どうしたら実現できるでしょうか?
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: ホーミング弾が敵をまっすぐ追いかけてくれない件
返信数: 9
閲覧数: 1160

Re: ホーミング弾が敵をまっすぐ追いかけてくれない件

aはショットの角度です。 初期化角度は自機からすぐ近くに有るショットの角度が初期化角度でいいと思います 少しいじってみたところもう少しそれっぽい動きはし始めましたが y座標の移動が0になってしまっているようです 初期化角度はたぶんあってると思います(直接コードを見てないでわかりませんが) あなたがどういう動きをさせたいかが良くわかりませんが。 this->a+=A/5; など、適当な数で割ってみたらどうですか? というか、「まっすぐ飛んでくれない件」と言っているので、わざわざそんなにめんどくさい飛ばし方をしなくても、 atan2で角度を求めてその方向に角度をセットして飛ばせばまっすぐ飛ぶので...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: ホーミング弾が敵をまっすぐ追いかけてくれない件
返信数: 9
閲覧数: 1160

Re: ホーミング弾が敵をまっすぐ追いかけてくれない件

少しいじってみたところもう少しそれっぽい動きはし始めましたが 敵を見失った弾のy座標の移動が0になってしまっているようです virtual void Move(){ this->cnt++; this->x+=cos(this->a)*this->sp; this->y+=sin(this->a)*this->sp; float A=0; if(bs!=NULL){ if(bs->GetUsed()==FALSE){ bs=NULL; }else{ pt_t pt0={this->x,this->y}; pt_t pt1={this->x+cos(this->a),this->y+sin(th...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: ホーミング弾が敵をまっすぐ追いかけてくれない件
返信数: 9
閲覧数: 1160

Re: ホーミング弾が敵をまっすぐ追いかけてくれない件

レーザーの当たり判定の時に使った三点間の角度を返してくれる関数を使って 弾がそのまま直進した時に進むルートと敵に向かって直進した時に進むルートの 間の角度を求めてホーミングさせようとしています [/code] 「レーザーのあたり判定の地気に使った三点間の角度を返してくれる関数」という単語は、僕とあなたしかわからないと思います。 きっと龍神録プログラミングの館に出てきたGet_Sita() のことを言っているのだと思いますが。第三者もわかりやすい書き方でお願いします。 それで本題ですが。 HomingShotといクラスの中身はどうなってます? 「a」という変数と「A」という変数が何を示している...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: ホーミング弾が敵をまっすぐ追いかけてくれない件
返信数: 9
閲覧数: 1160

Re: ホーミング弾が敵をまっすぐ追いかけてくれない件

参考に現時点での軌道はこんな感じです http://dixq.net/forum/gallery/image.php?album_id=138&image_id=985&view=no_count Get_Sitaの中はこんな感じになっています float Get_Sita(pt_t pt0,pt_t pt1,pt_t rpt){ Vector_t c, p, q; Vector_t cp; Vector_t cq; float s, t, theta; c.x=pt0.x; c.y=pt0.y; p.x=pt1.x; p.y=pt1.y; q.x=rpt.x; q.y=rpt.y; Vect...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: ホーミング弾が敵をまっすぐ追いかけてくれない件
返信数: 9
閲覧数: 1160

ホーミング弾が敵をまっすぐ追いかけてくれない件

レーザーの当たり判定の時に使った三点間の角度を返してくれる関数を使って 弾がそのまま直進した時に進むルートと敵に向かって直進した時に進むルートの 間の角度を求めてホーミングさせようとしています 現在のコードはこんな感じです bsにはボス・enには敵のポインタが入っていて、ここには異常が無いことをデバッグモードで確認しています どうして間の角度が正確に出ないのか教えてください void HomingShot::Move(){ this->cnt++; float A=0; if(en!=NULL){ if(en->GetUsed()==FALSE)en=NULL; } if(bs!=NULL){...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: 自作タスクリストについて
返信数: 7
閲覧数: 1445

Re: 自作タスクリストについて

どうやらこうやったら優先度が有効な順番になったようです ありがとうございました void* Task::operator new(size_t size,float priority) { if(g_buf==NULL) return NULL; // タスクリストが初期化されていない if(m_free+size >= g_buf+MEM_SIZE) return NULL; // 空き容量不足 g_size+=(DWORD)size; g_count++; Task *new_task=(Task*)m_free; m_free+=size; if(m_active==NULL) // 現...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: 自作タスクリストについて
返信数: 7
閲覧数: 1445

Re: 自作タスクリストについて

for(task=(Task*)m_active;task!=(Task*)m_active;task=next) 1.初期化式:task = (Task*)m_active; 2.継続条件式:task != (Task*)m_active; 3.再初期化式:task = next; 1.のあとの2.は偽になることは分かりますよね? forの中の処理には全く入らない気がするのですが。 1.→forの中の処理→2.→3.→forの中の処理→・・・ではなく、 1.→2.→forの中の処理→3.→2.→forの中の処理→3.・・・という流れですよ 最初の一回は必ず通したいなら、私だったらforでな...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: 自作タスクリストについて
返信数: 7
閲覧数: 1445

Re: 自作タスクリストについて

いわん さんが書きました:for文の継続条件式の判定は初期化式実行直後にも行われます。
最初から偽の判定となれば1回もループ処理を行なわないわけです。
初期化式と継続条件式をじっくり見比べてみれば気づくと思いますが・・・
Taskを最初にm_activeにしてその後もう一度Taskがm_activeになるまでループし続けるからまた帰ってくるのではないでしょうか?
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: 自作タスクリストについて
返信数: 7
閲覧数: 1445

Re: 自作タスクリストについて

いわん さんが書きました:29行目 for文の継続条件式が誤ってるような気がします。
具体的にどう間違っているのでしょうか?
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: クラス設計に関して
返信数: 9
閲覧数: 1547

Re: クラス設計に関して

もっと同じ変数を使ったクラスが増えるなら継承してはいかがですか?
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: 自作タスクリストについて
返信数: 7
閲覧数: 1445

自作タスクリストについて

ネットで色々調べて自分なりに使いやすいようにアレンジして作ったタスクシステムが 最近になって「優先順位が適用されてない」ことに気づきました… 優先順位は0.0~1.0までで0.0が一番最初に、1.0が一番最後に描画されるようにしたいです Taskのメンバは ・m_pre,m_next:前に実行されるタスク・次に実行されるタスクのポインタ ・m_size:タスクのサイズ ・m_priority:優先度 使用している変数は ・g_buf:メモリ領域の先頭のポインタ ・m_count:タスクの数 ・m_active:一番最初に実行されるタスクのポインタ ・m_free:タスクを追加できる未使用領域の...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: std::listでnew・deleteをオーバーロード
返信数: 5
閲覧数: 1116

Re: std::listでnew・deleteをオーバーロード

次のゲーム作るときにリスト管理のプログラムを先に作ります(´・ω・`)
今のゲームは今の管理機構で完成させたいと思います(´・ω・`)
ありがとうございました(´・ω・`)
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: std::listでnew・deleteをオーバーロード
返信数: 5
閲覧数: 1116

std::listでnew・deleteをオーバーロード

基底クラスとなるTaskクラスを定義し、そこから敵やら弾やらのクラスを派生する形で作っているのですが、 std::listに項目を追加・削除する作業をnew・deleteのオーバーロードで行いたいです。 (Taskの派生クラスの中ではnewとdeleteをタスクリストに追加削除すると定義したい) deleteの中では普通に削除するだけですが、newには描画優先度も引数として持たせたいです ソートは<をオーバーロードして実装するつもりですが、 newとdeleteでlistに追加・削除するにはどうしたらいいでしょうか どうやらnewはsize_tを受け取ってvoid*を返しているようなのですが…...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: STGにおけるホーミング弾の角度について
返信数: 13
閲覧数: 2846

Re: STGにおけるホーミング弾の角度について

>レーザーの当たり判定のときに使った >三点を与えるとその三点間の角度を返してくれる関数ありますよね? 個人間で通じる話なのかもしれませんが, 第三者にも話の内容がわかるようにして欲しいところ. すみません http://dixq.net/rp/34.html ここにある //3点から角度を返す double get_sita(pt_t pt0,pt_t pt1,pt_t rpt){ /* ベクトル C→P と C→Q のなす角θおよび回転方向を求める.*/ Vector2_t c, p, q; /* 入力データ */ Vector2_t cp; /* ベクトル C→P */ Vector2...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: STGにおけるホーミング弾の角度について
返信数: 13
閲覧数: 2846

Re: STGにおけるホーミング弾の角度について

画像
2分で作った画像置いときます
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: STGにおけるホーミング弾の角度について
返信数: 13
閲覧数: 2846

Re: STGにおけるホーミング弾の角度について

それを応用して分母を反比例関数+1によって決定することによって、
少しずつホーミング性能を100%に近づけることもできます
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: STGにおけるホーミング弾の角度について
返信数: 13
閲覧数: 2846

Re: STGにおけるホーミング弾の角度について

レーザーの当たり判定のときに使った
三点を与えるとその三点間の角度を返してくれる関数ありますよね?
それに「ショットの進行方向の延長上の1点(ショットがこのまままっすぐ飛ぶとたどり着く点)」と
「ショットの現在位置」と「標的の現在位置」を与えると
ショットが今向いている方角と敵のいる角度の差が出ます。
あとはそれを適当な数字で割って現在のショットの角度に足してあげるといい感じの動きになります。
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い
返信数: 7
閲覧数: 1035

Re: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い

とりあえず読み込み成功したので解決とさせていただきます
原因はDXアーカイブでした
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い
返信数: 7
閲覧数: 1035

Re: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い

derok さんが書きました:そもそもtioファイルの中に肝心の画像がないのですが・・
こちらの環境ではtioファイル消せばちゃんとロードされていました。
オフトピック
別に多倍長演算する必要ないような・・・
えっまさかあれってDXアーカイブのファイルを優先的に読み込んでるんですか?
で、無かったらそのまま諦めて帰っちゃうんですか?
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い
返信数: 7
閲覧数: 1035

Re: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い

ノウル さんが書きました:プロジェクトのフルパスがCドライブの直の場所にあるのと、ホモ要素満載なのと、ファイル・プロジェクト名が日本語なのががかなり気になりますが、それは置いといて、

Dxライブラリは確かオープンソースなので
DxLibのソースコードをダウンロードして、ロードの部分の関数を確認してみたらどうですか?
まぁやってみる価値はありそうだな・・・
でも俺の技術じゃ足りないかも(´・ω・`)
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い
返信数: 7
閲覧数: 1035

Re: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い

みけCAT さんが書きました:GCCでコンパイルしてみました。
Log.txtに記録される「~パワー*.png がありません」の種類(*に入る文字列)や順番が実行するたびに変わりますね…
これはかなりやばそうですね…
DXライブラリ側のバグなのか俺に致命的なミスがあったのか
なんとか調べられないものでしょうか・・・
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraphの読み込み失敗へのリベンジ支援のお願い
返信数: 7
閲覧数: 1035

LoadDivGraphの読み込み失敗へのリベンジ支援のお願い

前回全く同じ内容でトピックを立てましたが、今回は前回とは少し違います Dixqさん達の環境では読み込みが成功してしまうようなので、 コンパイルが通るように必要なファイルを全て詰め合わせてみました 自作ゲームのコード、プロジェクトとDXライブラリとBoostが入っています Boostはコード配布時にBoostであることを示せばおkだと書いてあったので含めて配布します VC++ディレクトリの指定にもマクロを使ってみたので、多分コンパイルは一回で通ってくれると思います パワー.pngは三つに分割し、それぞれ「パワー.png」「パワー10.png」「パワー100.png」としました http://ww...
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraphの読み込み失敗
返信数: 24
閲覧数: 2170

Re: LoadDivGraphの読み込み失敗

ソースコードもあっているし、環境も問題ありません。 私の環境でも正常に動作するとなると、もう私には分かりません。 最後に試しに ¥¥ ではなく / に置き換えてみてください。 後、 Load=LoadDivGraph("media\\アイテム\\パワー_.png",3,3,1,32,32,itG); で意図的にファイル名を変えて必ず失敗するようにしてもLoadには0が入っていました。 これはひょっとしたらDXライブラリのバグかもしれません。 これで分からなければ本家で聞いてください。 力になれずすみません。 とりあえず本家サイトで返信を待ちます(´・ω・`) ありがとうございました(´・ω・`)
by 夢幻ノ月夜
3年前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraphの読み込み失敗
返信数: 24
閲覧数: 2170

Re: LoadDivGraphの読み込み失敗

ログ貼っておきます 'EvoluTIO.exe': 'C:\アッー!\弾幕ホイホイ\Debug\EvoluTIO.exe' を読み込みました。シンボルが読み込まれました。 'EvoluTIO.exe': 'C:\Windows\SysWOW64\ntdll.dll' を読み込みました。Cannot find or open the PDB file 'EvoluTIO.exe': 'C:\Windows\SysWOW64\kernel32.dll' を読み込みました。Cannot find or open the PDB file 'EvoluTIO.exe': 'C:\Windows\Sys...

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