リプレイの実装方法がさっぱりです…

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

リプレイの実装方法がさっぱりです…

#1

投稿記事 by Yuno » 15年前

リプレイを実装しようとを持ったのですが…
いったいどのようにすればいいのか見当もつきません

調べてみたところ、
キーやパッドの入力状態を毎フレームごとに記憶してそれを書き出す
という方法があったのですが
どのようにコードを書けば動くのかわかりません

知ってる人教えてください

一応

VC++で、
ゲームのコードはここのサイトのものがベースです

Dixq (管理人)

Re:リプレイの実装方法がさっぱりです…

#2

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

まず、どの辺まで自力で実装出来るのでしょうか?
理屈がわかれば実装出来ますか?

段階的に解決してみましょう。
とりあえず、

1、入力したキーの状態を保存しておく方法
2、上で保存したデータを読み込む方法
3、任意のキーを入力状態にする方法

この辺から考えて今何が解らないのか明確にしてみませんか?

Yuno

Re:リプレイの実装方法がさっぱりです…

#3

投稿記事 by Yuno » 15年前

1はできますが
配列の長さがわからないのでどのように宣言すればよいかわかりません

あとデータの保存方法は何とかわかります

読み込みも「セーブデータのロード」のスレを見ればなんとかいけそうです

ですが3はさっぱりわかりません

どうやれば再現できるようになるのか見当もつかないです

ROM

Re:リプレイの実装方法がさっぱりです…

#4

投稿記事 by ROM » 15年前

> どうやれば再現できるようになるのか見当もつかないです

そんなにまでさっぱりならば、リプレイデータの実装をするのはまだ早いんじゃないでしょうか?
それよりも基礎をしっかり学び、自分でも色々とゲームを作ったりして、ゲームプログラムを理解することが結局は早道でしょう。
今までゲームは作ったことあるのでしょうか?
サンプルプログラムのコピーでは物は出来たとしても力は付いていない場合が多いですよ。

Yuno(Mobile)

Re:リプレイの実装方法がさっぱりです…

#5

投稿記事 by Yuno(Mobile) » 15年前

すいません
よくみれば再現は簡単でした

しかしそれをどう保存して読み込みすればいいのかわかりません

Dixq (管理人)

Re:リプレイの実装方法がさっぱりです…

#6

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

> 配列の長さがわからないのでどのように宣言すればよいかわかりません

mallocは使えますか?
配列の長さは自由に変えられます。
また、読み込み前に大きさを事前に知る方法ももちろんあります。

こんな感じでファイルサイズが取得できます。

fpos_t GetFileSize( const char FileName[/url] ){
fpos_t fsize = 0;
FILE *fp = fopen( FileName, "rb" );
fseek(fp,0,SEEK_END);
fgetpos(fp,&fsize);
fclose(fp);
return fsize;
}

>あとデータの保存方法は何とかわかります
>読み込みも「セーブデータのロード」のスレを見ればなんとかいけそうです

と書いてある後に

>どう保存して読み込みすればいいのかわかりません

と書いてありますが、どっちでしょう?
上の説明でお解りいただけるでしょうか。

Yuno

Re:リプレイの実装方法がさっぱりです…

#7

投稿記事 by Yuno » 15年前

fopen( FileName, "rb" );
の部分のファイルの名前がうまく取得できないのですが
ファイルのルートはアプリケーションと同じフォルダ階層から始まっているのでしょうか?

またGetCurrentDirectoryをつかおうとしても変数の型が合いません

どうすればよいでしょうか…?

Yuno

Re:リプレイの実装方法がさっぱりです…

#8

投稿記事 by Yuno » 15年前

というより
FileNameに\\replay\\flag.logを渡して
fopen(FileName,"wb");
にするとエラーを喰らうんですが…

array

Re:リプレイの実装方法がさっぱりです…

#9

投稿記事 by array » 15年前

詳しく読んでいませんが、replayのフォルダを作成していないんだと思います。


# 追記
> ファイルのルートはアプリケーションと同じフォルダ階層から始まっているのでしょうか?

やっぱり読んでいませんでした。
プロジェクタを使って、デバッグなどで実行しているなら、プロジェクトデータがある階層からです。


拡張子が、.sln や .vcproj などがある階層です 画像

閉鎖

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