[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 01/20 11:55 / Filesize : 23 KB / Number-of Response : 86
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++ゲーム製作総合スレッド Part3



1 名前:名前は開発中のものです。 mailto:sage [2013/01/11(金) 19:10:40.87 ID:xdIUMDA+]
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その12
toro.2ch.net/test/read.cgi/gamedev/1330000532/

前スレ
C/C++ゲーム製作総合スレッド Part1
toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
toro.2ch.net/test/read.cgi/gamedev/1351015269/

67 名前:名前は開発中のものです。 mailto:sage [2013/01/16(水) 19:32:52.73 ID:Yd8Vz7lO]
#include <iostream>
#include <map>

class A{
public:
int val;
};

int main(){
std::map<int, A> Main_A;
std::map<int, A> Sub_A;

Sub_A.insert(std::make_pair(1, A()));
Sub_A.insert(std::make_pair(5, A()));
Sub_A[1].val = 100;
Sub_A[5].val = 50;

//Main_AにSub_Aの要素をinsertしたい

std::cout << Sub_A[1].val << std::endl;
std::cout << Sub_A[5].val << std::endl;

return 0;
}

mapから他のmapに要素をinsertするといったことは可能なのでしょうか?
イテレータとかいうやつを使うのでしょうか?

68 名前:名前は開発中のものです。 mailto:sage [2013/01/16(水) 19:43:47.57 ID:vHhR3ta5]
何をしたいかいまいち良く分からんが、
STLコンテナの類で全要素にアクセスするなら
イテレータ使うのがよろしい。
C++初心者にはキモイ構文かも知れんが、
まぁサンプル通りのコーディングすれば良し。

69 名前:名前は開発中のものです。 mailto:sage [2013/01/16(水) 23:25:51.98 ID:uIyKClGc]
イテレータ慣れると[]演算子でアクセスする方が気持ち悪くなってくるね

70 名前:名前は開発中のものです。 mailto:sage [2013/01/17(木) 22:34:40.20 ID:yNq2XjTR]
ムーブコンストラクタで無用なコピーを防ぐとか、そういう話かと

71 名前:名前は開発中のものです。 mailto:sage [2013/01/17(木) 22:47:58.36 ID:SK+WC+I6]
>>69
用途が違くね?
[]演算子ならどこでも一瞬でアクセスできるじゃん。

72 名前:名前は開発中のものです。 mailto:sage [2013/01/17(木) 23:59:25.21 ID:QQuSP+8l]
>>71
mapの場合は絶対にキーが格納済みであることが確実でもfind使うようにしてる
それとはまた違うがvectorもatがあるから[]は使ってないなあ

73 名前:名前は開発中のものです。 mailto:sage [2013/01/18(金) 00:50:51.69 ID:0xoMQDl+]
Vectorでatは毎回範囲チェックするから遅くなるだろ
ある程度連続してアクセスするなら無駄

74 名前:名前は開発中のものです。 mailto:sage [2013/01/18(金) 04:22:15.56 ID:6OYOcstc]
>>72
さすがにそれはどうかと思う

75 名前:名前は開発中のものです。 mailto:sage [2013/01/18(金) 21:17:01.14 ID:h30YIVHQ]
>>70
>>67の内容から察するにその辺の話だと俺も思うなぁ
C++11 std map pair move-semantics move-constructor move-assignment-operator
とかでググると>>67のやりたい事と一致する情報が色々拾える気がする



76 名前:名前は開発中のものです。 mailto:sage [2013/01/18(金) 22:19:03.33 ID:6FSUVQjN]
アルゴリズムでcopy一発じゃないの?

77 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 12:36:02.05 ID:q8h4iJfZ]
DXライブラリでゲームのセーブ及びロード関係なんですが
fopenやfwriteではint型やchar型のデータは読み書きできると思うんですが
クラスなどのオブジェクトまるまる保存するにはどのような関数があるのでしょうか?
参考に出来るサイトなんかでもなんでもいいのでお願いします。

78 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 13:49:54.50 ID:BIw3jTiL]
オブジェクトを保存できるような形式にすることを「シリアライズ」というが
DXライブラリとしてはシリアライズは提供してなかった、はず。
C++としても特にあるわけじゃない。
Boostではあるって聞いた。

データ形式が複雑じゃなければ自分で手でデータを並べてファイル出力。
structを一括とかすると若干見通しがいい。
余談だがこれには#pragma pack(1)とか非標準的な泥臭い話も若干出てくる。

79 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 13:51:20.31 ID:tuSK099a]
boost::serializationで検索……と言いたいところだけど、
まずはstructか何かに必要なデータを纏めて、それを1つずつ順番にバイナリ出力するところから始めてみてはどうだろう

80 名前:79 mailto:sage [2013/01/19(土) 13:51:53.80 ID:tuSK099a]
あ、ごめん、リロってなかった

81 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 15:03:13.68 ID:CuXnatAE]
>>77
クラスを読み書きするだけならこんな感じでどうでしょうか…

#include <iostream>
#include <fstream>
using namespace std;

struct Savedata{
int x, y, z;
};

int main(){
Savedata save; //オブジェクト
save.x = 1;save.y = 2;save.z = 3;
const char* filename = "sav.dat"; //ファイル名
ofstream out; //セーブ
out.open( filename );
out.write( ( const char* )&save, sizeof( Savedata ) );
out.close();
Savedata load; //ロード
ifstream in;
in.open( filename );
in.read( ( char* )&load, sizeof( Savedata ) );
in.close();
cout << load.x << load.y << load.z << endl; //確認
}

82 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 15:15:11.83 ID:hcRANC3J]
ファミコンゲームのセーブロードがシリアライズとかしてたかよ
必要なデータを洗い出してセーブデータの構造を自分で考えろよ

83 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 19:26:10.66 ID:tuSK099a]
ファミコンソフトってC++で開発されてたのか、知らなかったぜ

84 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 22:10:37.28 ID:+PjkUk0Q]
なんとなく想像はつくと思うけど、
セーブロード機構の実装はめんどくさいよ。

85 名前:名前は開発中のものです。 mailto:sage [2013/01/19(土) 22:30:50.58 ID:CgroCKX/]
いつどんなタイミングでもゲーム画面をまるごと保存&復元可能にするのと
ゲームのプレイデータをセーブできてロード時に適切なシーンへ移行するのとでは
かなり実装方法が違ってくるから注意だなあ

前者はアプリ用のライブラリとして組み込めるレベルの機能だけど
後者はゲーム別に高度にカスタマイズしたレベルでの機能になる








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<23KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef