VC++2008 F5とCtrl+F5について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
R

VC++2008 F5とCtrl+F5について

#1

投稿記事 by R » 16年前

質問です。VC++2008にて次のようなコードをF5で実行した場合は最後まで動くのですが、CTRL+F5では問題が発生したため(以下略)のエラーがでます。なにが原因なのでしょうか?
#include<stdio.h>
#include<stdlib.h>

typedef struct node* list;
struct node{
	int data;
	list prev;
	list next;
};

list makenode(){
	list n;
	n=(list)malloc(sizeof(list*));
	n->data=0;
	n->next=n;
	n->prev=n;
	return n;
}
int main(){
	list x;
	list y;
	x=makenode();
	y=makenode();
}

DVDM

Re:VC++2008 F5とCtrl+F5について

#2

投稿記事 by DVDM » 16年前

>>Rさん
構造体のサイズ分確保したいのであれば
n=(list)malloc(sizeof(node)); ではないでしょうか・・・。

R

Re:VC++2008 F5とCtrl+F5について

#3

投稿記事 by R » 16年前

回答ありがとうございます。
ご指摘の部分をn=(list)malloc(sizeof(struct node));に修正したところ解決したようです。
typedef node* list; でlistはnodeへのポインタ型,list*はnodeへのポインタへのポインタ型ですね・・・。
F5とCtrl+F5で動作が異なった原因については不明なままなので引き続き回答募集させていただきます。

ねこ

Re:VC++2008 F5とCtrl+F5について

#4

投稿記事 by ねこ » 16年前

参考になりそうな記事見つけたのでどうぞ
ttp://okwave.jp/qa2047142.html

早川

リプレイデータの作り方について

#5

投稿記事 by 早川 » 16年前

いつも質問ばかりで済みません。
最近弾幕ゲームを作っている者です。
ゲームはもうほぼ完成しているんですが、
リプレイデータの作り方がよくわかりません。
昔のゲームのリプレイデータを観てみると、数字の羅列があるんですが・・・
弾幕ゲームではやっぱり、弾一つ一つを記録しなきゃいけない・・・わけはないですよね?
だって、重すぎですし。多分、自キャラの動きを記録する方法であってますか?

あともう一つ、乱数によって作られた弾のデータは格納できませんよね。
今作っているゲームはホーミング弾以外に乱数弾を使っちゃってるんですよ。

・・・やっぱり、完全な乱数を使わずに弾を作成する方法で作りなおすべきなのでしょうか??


質問が多くなって済みません。お聞きしたいことは、

・「リプレイデータ作成はキー操作を記録する方法でいいのですか?」
・「そうなると、弾幕に乱数弾を使わないほうがいいのですか?」

です。

ねこ

Re:リプレイデータの作り方について

#6

投稿記事 by ねこ » 16年前

・「リプレイデータ作成はキー操作を記録する方法でいいのですか?」
はい、そうです。シューティングならそれが普通です。

・「そうなると、弾幕に乱数弾を使わないほうがいいのですか?」
ランダムにrand関数を用いる場合、srand関数でランダム値の制御を行う事が出来ます。
time関数で取得した値をsrand関数で設定し、またリプレイデータの「時間情報」として保存します。

リプレイを再生する時はリプレイデータにある「時間情報」を再度srandに割り当てる事でリプレイ保存時と同じ乱数を発生させる事が出来ます。
よく分からない場合は記述した関数名で検索等すると色々とサンプルが出てくると思います。

Dixq (管理人)

Re:リプレイデータの作り方について

#7

投稿記事 by Dixq (管理人) » 16年前

キーの入力状態を記憶しておき、操作した時と同じ状況を作り出せばいいですよ。

あと、Justyさんからの受け売りですが、
全てのキーの入力状態を記憶する必要はなく、キーの入力に変化があったフレーム番号とその変化を記憶させれば、リプレイデータが軽量化出来そうです。

御津凪

Re:リプレイデータの作り方について

#8

投稿記事 by 御津凪 » 16年前

ねこさんの発言の追記です。

ゲーム中でキー入力などに左右されない部分(描画処理など)で乱数が使用されていた場合、
乱数の発生順序が狂うことがあり正しくリプレイを再生できなくなる可能性があるので、
その点だけは注意してください。

あと、ここの掲示板の過去ログにもリプレイデータの作り方で質問されているトピックがあるので、
そちらを見ておくのも良いかもしれません。

早川

Re:リプレイデータの作り方について

#9

投稿記事 by 早川 » 16年前

素早い返答ありがとうございます!!
現在、乱数を使わずに配列で「乱数表」を使用する方法を
とっています。

「キー入力に変化があったフレームのみ記録」はすごく参考になりました!!
さっそくやってみます!!

TRUTH

Re:リプレイデータの作り方について

#10

投稿記事 by TRUTH » 16年前

DXライブラリのサンプルプログラムのところに
乱数初期化値を保存して、乱数も制御するという方法があるようです。
自分はまだ試していませんが、参考になれば・・・

ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N25

閉鎖

“C言語何でも質問掲示板” へ戻る