複数のCppを1つにする方法
複数のCppを1つにする方法
ってなにかないでしょうか?
ggっても望みの者は出てこず困っています。
チーム制作で分担しプログラミング作業をしていていままさに締めで
よし!くっつけて1つにするぞ!
ってとこなんですけどどうしたことかうまくいかないのです。。。
どなたかわかる人はいますでしょうか?
ggっても望みの者は出てこず困っています。
チーム制作で分担しプログラミング作業をしていていままさに締めで
よし!くっつけて1つにするぞ!
ってとこなんですけどどうしたことかうまくいかないのです。。。
どなたかわかる人はいますでしょうか?
Re: 複数のCppを1つにする方法
単純にファイルを結合するならコピペでいいと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 複数のCppを1つにする方法
何がどううまく行かないのか説明してもらわないと答えようがないのですね。
プロでも多人数でバラバラに開発したものの結合は手間取りますが、アマチュアだとちゃんと取り決めしていないことが多く簡単には出来ません。
今出ている問題やエラー内容を箇条書きにしてみて下さい。
プロでも多人数でバラバラに開発したものの結合は手間取りますが、アマチュアだとちゃんと取り決めしていないことが多く簡単には出来ません。
今出ている問題やエラー内容を箇条書きにしてみて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 複数のCppを1つにする方法
#include "GV.h"
enum
{
Opening, //オープニング
GameMain, //ゲームメイン
Result, //リザルト
Ending, //エンディング
};
enum ResultSequence
{
Failed, //~9
Usually, //10~99
Wonderful, //100~
};
ResultSequence resultSequence = ResultSequence::Failed;
int function_status=Opening,White;
int setumeiX = 0;
int titleX = 0;
int ruruX = 0;
int g = 0;
int G = 0;
int theme;
bool spacekey1 = false;
bool spacekey2 = false;
bool spacekey3 = false;
bool spacekey4 = false;
int Handle; // データハンドル格納用変数
int Handle2;
int Handle3;
int openingMovieHandle; //オープニングムービー
int result_agoMovieHandle; //結果前ムービー
int resultMovieHandle; //リザルトグムービー
int endingMovieHandle; //エンディングムービー
int backgroundImage; //背景画像
int boyImage[8]; //主人公画像
int character[5]; //キャラクター画像
int numberImage[11]; //タイム画像
int flagImage; //旗画像
int ban; //『バンッ』画像
int logo; //ロゴ画像
int pan_bgm; //『パンッ』音
int push_bgm; //空気入れを押す
int Opening_bgm; //オームニングBGM
int playing_bgm; //プレイ中BGM
int ending_bgm; //エンディングBGM
int num; //連打回数
int opening()
{
Handle3 = LoadGraph("img\\ルールプレート改 .png"); //画像をロード
Handle = LoadGraph( "img\\あらすじ プレート改.png" ); // 画像をロード
Handle2 = LoadGraph( "img\\OPキャプチャ画像.png" ); // 画像をロード
theme = LoadSoundMem( "BGM\\新ロケット君.WAV" ) ;
PlaySoundMem( theme , DX_PLAYTYPE_BACK , TRUE ) ;
int titleMovie = LoadGraph("movie\\ロケットmovie.avi");
PlayMovieToGraph(titleMovie);
for( int i = 0 ; i < 230 ; i ++ ) //輝度0→230
{
SetDrawBright(i, i, i) ; // 描画輝度をセット
DrawGraph( 0 , 0 , logo, FALSE ) ; // グラフィックを描画
ScreenFlip() ;
}
waitTimer_1000();
for(int i = 0 ; i < 230 ; i ++ ) //輝度230→0
{
SetDrawBright( 230 - i , 230 - i , 230 - i ) ;
DrawGraph( 0 , 0 , logo, FALSE ) ;
ScreenFlip() ;
}
waitTimer_1000(); // 10秒待機
SetDrawBright(255, 255, 255) ;//輝度リセット
PlayMovieToGraph(openingMovieHandle);//動画再生
//動画が終わるまでorスペースが押されるまで再生
while( ProcessMessage() == 0 && GetMovieStateToGraph(titleMovie) == 1 && CheckHitKey( KEY_INPUT_SPACE ) == 0 )
{
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph( 0 , 0 , 640 , 480 , titleMovie , FALSE ) ;
// 裏画面データを表画面へ反映
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
DrawGraph(0 , ruruX*6, Handle3, FALSE ); //画像の描画
DrawGraph(0 , setumeiX*6, Handle, FALSE ); //画像の描画
DrawGraph( 0,titleX*6 , Handle2, FALSE ); //画像の描画
if (GetMovieStateToGraph(titleMovie) == 0)
{
}
else
{
DrawExtendGraph( 0 , 0 , 640, 480, titleMovie , FALSE ) ;
}
if( CheckHitKey( KEY_INPUT_SPACE ) ){
spacekey1 = true;
if(titleX*5 > 640){
spacekey2 = true;
}
}
if( spacekey1 ){
titleX++;
}
if(spacekey2){
setumeiX++;
}
}
}
push_space();//スペースを押せ
return GameMain;//GameMainへ移動
}
int gamemain()
{
backgroundImage = LoadGraph( "img/haikei_1.png" );
flagImage = LoadGraph( "img/flag.png" );
ban = LoadGraph( "img/ban.png" );
pan_bgm = LoadSoundMem("BGM/pan.MP3");
push_bgm = LoadSoundMem("BGM/push.mp3") ;
playing_bgm = LoadSoundMem("BGM/op.WAV") ;
int vo = 80; //ボリューム
int time_limite = 10900; //制限時間
int progress_time = 0 ; //経過時間
int remain_time = 0; //制限時間-経過時間
int start_time; //windows起動からの経過時間
int push_flag = 0; //プッシュフラグ
int img_flag = 1; //主人公画像切り替えフラグ
double y = 0; //旗縦軸
double z = 0; //旗横軸
double c = 0; //旗回転
for(int i=0; i<11; i++) //タイム画像格納
{
char filename[256];
sprintf(filename, "img/time%d.png", i);
numberImage[i] = LoadGraph(filename);
}
for(int i=0; i<8; i++) //主人公画像格納
{
char filename[256];
sprintf(filename, "img/dousa%d.png", i);
boyImage[i] = LoadGraph(filename);
}
for(int i=0; i<5; i++) //キャラクター画像格納
{
char filename[256];
sprintf(filename, "img/character%d.png", i);
character[i] = LoadGraph(filename);
}
DrawRotaGraph( 320, 240,0.8,0.0,backgroundImage, TRUE );
DrawRotaGraph( 300,350,0.25,0.0,boyImage[0], TRUE );
DrawRotaGraph( 290,240,0.8,0.0,flagImage, TRUE );
num = 0;
waitTimer_2000();
start_time = GetNowCount() ;
PlaySoundMem(pan_bgm,DX_PLAYTYPE_BACK);
while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetNowCount() - start_time < 1000 )
{
DrawRotaGraph(320,240,0.8,0.0,backgroundImage,TRUE);
DrawRotaGraph(300,350,0.25,0.0,boyImage[0],TRUE);
DrawRotaGraph(290-z,240-c,0.8,y,flagImage, TRUE );
z= z + 13.5;
c= c + 8.5;
y= y - 0.043;
DrawRotaGraph( 320,240,1.0,0.0,ban,TRUE);
if( ProcessMessage() == -1 )// メッセージ処理
{
break ; // エラーが発生したらループを抜ける
}
}
StopSoundMem(pan_bgm);
PlaySoundMem(playing_bgm,DX_PLAYTYPE_BACK);// 音の再生
ClsDrawScreen() ;
start_time = GetNowCount() ;//windows起動からの経過時間を代入
while ( progress_time < time_limite)//経過時間が制限時間になるまで処理を繰り返す
{
int x = remain_time / 1000;
int x_10 =(remain_time % 1000) / 100;
int x_100 = ((remain_time % 1000) % 100) /10;
DrawRotaGraph(320,240,0.8,0.0,backgroundImage,TRUE);
progress_time = int(GetNowCount() - start_time);//起動時間-開始時間を経過時間に代入
remain_time = time_limite - progress_time;
DrawFormatString(5,5,GetColor(255,255,255),"残り:%02d'%d%d", x,x_10,x_100);//座標5,5に残り時間表示
DrawFormatString(5,25,GetColor(255,255,255),"%d回",num);
DrawRotaGraph(320,50,0.5,0.0,numberImage[x],TRUE);//タイム画像表示
ChangeVolumeSoundMem(255*vo/100,playing_bgm);//BGMボリューム
if (x<2)//2秒からボリュームが小さくなる
vo = vo - 1;
if((CheckHitKey( KEY_INPUT_SPACE )) == 1)
{
if(push_flag == 0)
switch(img_flag)
{
case 1:
DrawRotaGraph( 300,350,0.25,0.0,boyImage[img_flag], TRUE );
img_flag = 2;
waitTimer_20();
case 2:
DrawRotaGraph( 300,350,0.25,0.0,boyImage[img_flag], TRUE );
img_flag = 3;
waitTimer_20();
case 3:
DrawRotaGraph( 300,350,0.25,0.0,boyImage[img_flag], TRUE );
img_flag = 4;
}
else
DrawRotaGraph( 300,350,0.25,0.0,boyImage[4], TRUE );
}
else
{
if(push_flag == 1)
switch(img_flag)
{
case 4:
DrawRotaGraph( 300,350,0.25,0.0,boyImage[img_flag], TRUE );
img_flag = 5;
waitTimer_20();
case 5:
DrawRotaGraph( 300,350,0.25,0.0,boyImage[img_flag], TRUE );
img_flag = 6;
waitTimer_20();
case 6:
DrawRotaGraph( 300,350,0.25,0.0,boyImage[img_flag], TRUE );
img_flag = 1;
}
else
DrawRotaGraph( 300,350,0.25,0.0,boyImage[1], TRUE );
}
if(push_flag == 1)
{
if((CheckHitKey( KEY_INPUT_SPACE )) == 0 )
{
push_flag = 0;
StopSoundMem(push_bgm) ;
}
}
if(( CheckHitKey( KEY_INPUT_SPACE )) == 1 )
{
if(push_flag == 0)
{
push_flag = 1;
PlaySoundMem(push_bgm, DX_PLAYTYPE_BACK );
num = num + 1;
}
}
if(x<1)//0秒の時ボタンが押されたら連打回数が-1になる
{
if(CheckHitKey( KEY_INPUT_SPACE ) == 1)
num = -1;
}
ScreenFlip() ;
if( ProcessMessage() == -1 )// エラーが起きたらループから抜ける
{
break ;
}
}
StopSoundMem(playing_bgm);// BGMの再生を止める
return Result;//Resultへ移動
}
int result()
{
result_agoMovieHandle = LoadGraph("movie/temae.avi");
if(num < 10) //連打回数が10未満(お手つきを含む)だったらresultSequenceに『Failed』を格納
resultSequence = ResultSequence::Failed;
else if(num < 100) //連打回数が10以上100未満だったらresultSequenceに『Usually』を格納
resultSequence = ResultSequence::Usually;
else //連打回数がその他(100以上)だったらresultSequenceに『Wonderful』を格納
resultSequence = ResultSequence::Wonderful;
switch (resultSequence)
{
case ResultSequence::Failed:
{
resultMovieHandle = LoadGraph("movie/0-9.avi");
PlayMovieToGraph(resultMovieHandle);
while( ProcessMessage() == 0 && GetMovieStateToGraph(resultMovieHandle) == 1)
{
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph( 0 , 0 , 640 , 480 ,resultMovieHandle, FALSE ) ;
// 裏画面データを表画面へ反映
ScreenFlip() ;
}
return Opening;//動画再生後Openingに戻る
}
case ResultSequence::Usually:
{
PlayMovieToGraph(result_agoMovieHandle);
while( ProcessMessage() == 0 && GetMovieStateToGraph(result_agoMovieHandle) == 1)
{
DrawExtendGraph( 0 , 0 , 640 , 480 ,result_agoMovieHandle, FALSE ) ;
ScreenFlip() ;
}
if (num < 51)
resultMovieHandle = LoadGraph("movie/10-50.avi");
else if (num < 71)
resultMovieHandle = LoadGraph("movie/51-70.avi");
else
resultMovieHandle = LoadGraph("movie/71-99.avi");
break;
}
case ResultSequence::Wonderful:
resultMovieHandle = LoadGraph("movie/tengoku.avi");
break;
}
PlayMovieToGraph(resultMovieHandle);
while( ProcessMessage() == 0 && GetMovieStateToGraph(resultMovieHandle) == 1)
{
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph( 0 , 0 , 640 , 480 ,resultMovieHandle, FALSE ) ;
// 裏画面データを表画面へ反映
ScreenFlip() ;
}
return Ending;//Endingへ移動
}
int ending()
{
endingMovieHandle = LoadGraph("movie/ed.avi");
ending_bgm = LoadSoundMem("BGM/ending.WAV");
PlaySoundMem(ending_bgm,DX_PLAYTYPE_BACK);
PlayMovieToGraph(endingMovieHandle);
while( ProcessMessage() == 0 && GetMovieStateToGraph(endingMovieHandle) == 1 && CheckHitKey( KEY_INPUT_SPACE ) == 0 )
{
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph( 0 , 0 , 640 , 480 ,endingMovieHandle, FALSE ) ;
// 裏画面データを表画面へ反映
ScreenFlip() ;
ChangeVolumeSoundMem(255/100,ending_bgm);
}
return Opening;
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
ChangeWindowMode(TRUE),DxLib_Init(),SetDrawScreen( DX_SCREEN_BACK );
SetMainWindowText( "飛び出せロケット君" ) ;
SetGraphMode( 640 , 480 , 32 ) ;// 画面モードの変更
while(1)
{
ClearDrawScreen();
switch(function_status)
{
case Opening:
function_status = opening();
break;
case GameMain:
function_status = gamemain();
break;
case Result:
function_status = result();
break;
case Ending:
function_status = ending();
break;
default:
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
break;
}
if( ProcessMessage() == -1 ) break ;
WaitTimer( 17 );
ScreenFlip() ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
1> main.cpp
1>main.cpp(18): warning C4482: 非標準の拡張機能が使用されています: enum 'ResultSequence' が限定名で使用されます
1>main.cpp(61): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [27]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(62): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [29]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(63): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [27]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(64): error C2664: 'DxLib::LoadSoundMem' : 1 番目の引数を 'const char [21]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(66): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [24]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(140): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [17]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(141): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [13]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(142): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [12]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(144): error C2664: 'DxLib::LoadSoundMem' : 1 番目の引数を 'const char [12]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(145): error C2664: 'DxLib::LoadSoundMem' : 1 番目の引数を 'const char [13]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(146): error C2664: 'DxLib::LoadSoundMem' : 1 番目の引数を 'const char [11]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(165): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'char [256]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(172): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'char [256]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(179): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'char [256]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(194): warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
1>main.cpp(194): warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
1>main.cpp(225): error C2664: 'DxLib::DrawFormatString' : 4 番目の引数を 'const char [16]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(226): error C2664: 'DxLib::DrawFormatString' : 4 番目の引数を 'const char [5]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(321): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [16]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(324): warning C4482: 非標準の拡張機能が使用されています: enum 'ResultSequence' が限定名で使用されます
1>main.cpp(326): warning C4482: 非標準の拡張機能が使用されています: enum 'ResultSequence' が限定名で使用されます
1>main.cpp(328): warning C4482: 非標準の拡張機能が使用されています: enum 'ResultSequence' が限定名で使用されます
1>main.cpp(333): warning C4482: 非標準の拡張機能が使用されています: enum 'ResultSequence' が限定名で使用されます
1>main.cpp(335): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [14]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(347): warning C4482: 非標準の拡張機能が使用されています: enum 'ResultSequence' が限定名で使用されます
1>main.cpp(357): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [16]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(359): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [16]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(361): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [16]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(365): warning C4482: 非標準の拡張機能が使用されています: enum 'ResultSequence' が限定名で使用されます
1>main.cpp(366): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [18]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(383): error C2664: 'DxLib::LoadGraph' : 1 番目の引数を 'const char [13]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(384): error C2664: 'DxLib::LoadSoundMem' : 1 番目の引数を 'const char [15]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>main.cpp(405): error C2664: 'DxLib::SetMainWindowText' : 1 番目の引数を 'const char [19]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1> other.cpp
1>other.cpp(53): error C2664: 'DxLib::DrawString' : 3 番目の引数を 'const char [29]' から 'const TCHAR *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
こうなってます
一応コードも載せときます。。。
ひたすらに手直ししたのですが駄目でした。。。
Re: 複数のCppを1つにする方法
文字コードの設定が間違っている気がします。
Re: 複数のCppを1つにする方法
そもそも、ソースファイルのレベルでそういうことをしなくていいように、アルル さんが書きました: チーム制作で分担しプログラミング作業をしていていままさに締めで
よし!くっつけて1つにするぞ!
事前に設計やモジュール分けを行なっているのではないのでしょうか。
将来、メンテナンスを分業体制で行なうことが必要になったら、
いったんくっつけたものをばらすのでしょうか。それはそれで間違いが発生するもとではないか、
と個人的には思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 複数のCppを1つにする方法
[/quote]
そもそも、ソースファイルのレベルでそういうことをしなくていいように、
事前に設計やモジュール分けを行なっているのではないのでしょうか。
将来、メンテナンスを分業体制で行なうことが必要になったら、
いったんくっつけたものをばらすのでしょうか。それはそれで間違いが発生するもとではないか、
と個人的には思います。[/quote]
すみません、言ってる意味がよくわかんないです。。。
そもそも、ソースファイルのレベルでそういうことをしなくていいように、
事前に設計やモジュール分けを行なっているのではないのでしょうか。
将来、メンテナンスを分業体制で行なうことが必要になったら、
いったんくっつけたものをばらすのでしょうか。それはそれで間違いが発生するもとではないか、
と個人的には思います。[/quote]
すみません、言ってる意味がよくわかんないです。。。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 複数のCppを1つにする方法
とりあえずプロジェクトのプロパティで、文字セットをマルチバイト文字にするだけで大半のエラーは消えます。
補足すると結合といってもファイルを同じプロジェクトに登録して、結合相手のヘッダを書くだけぐらいが結合する一般的な方法です。
ヘッダやソースを切り貼りするのは後々のことを考えない面倒な方法だと言うことです。[追記]
【補足】
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ] 補足資料.11章 書いてはいけない4つの処理」
http://dixq.net/g/h_11.html
書いてはいけない処理に2つは該当しますのでデバッグが困難な事は明白です。
補足すると結合といってもファイルを同じプロジェクトに登録して、結合相手のヘッダを書くだけぐらいが結合する一般的な方法です。
ヘッダやソースを切り貼りするのは後々のことを考えない面倒な方法だと言うことです。[追記]
【補足】
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ] 補足資料.11章 書いてはいけない4つの処理」
http://dixq.net/g/h_11.html
書いてはいけない処理に2つは該当しますのでデバッグが困難な事は明白です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 複数のCppを1つにする方法
ビルドが通ったとしても、このコードはバグだらけです。おそらくちゃんと動かないでしょう。
デバッグできないままコードの規模が大きくなってしまうので、このような共同開発の方法は取るべきではないと思います。
デバッグできないままコードの規模が大きくなってしまうので、このような共同開発の方法は取るべきではないと思います。
Re: 複数のCppを1つにする方法
そもそもなぜモジュールごとに役割を分けずにすべて同じファイルの中で行おうとするのかわかりません。
仮に、現在のコードからエラーやバグが全て消えたとしても、そこへ新たなコードを追加するには大変非効率となるでしょうし、
バグも発生しやすくなるでしょう
仮に、現在のコードからエラーやバグが全て消えたとしても、そこへ新たなコードを追加するには大変非効率となるでしょうし、
バグも発生しやすくなるでしょう
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 複数のCppを1つにする方法
見事に「やってはいけない処理の典型」にあてはまってしまっています。
softyaさんが書かれているリンク先をご覧ください。
> 書いてはいけない処理に2つは該当しますのでデバッグが困難な事は明白です。
特定のFPSで動作させる方法の記述がわかりにくかったのでこちらに書き直しました。
http://dixq.net/g/03_14.html
チームで作っているなら誰かリーダーがいると思いますが、少なくともリーダーはDXライブラリの使い方を理解した上で、
コードの分割方法を考えて指示を出す必要があると思います。
もし誰もDXライブラリの使い方が理解できていないのだとすると、少し小規模なものから作った方がよいと思います。
ゲームプログラミングの館(http://dixq.net/g/)に一から説明を書いていますのでよければご覧ください。
やってはいけない処理をしない方法や、コードを分割する方法などもそちらに書かれています。
今のコードを無理やりつなげるより基本をきちんと押さえて設計しなおした方がずっと近道かと思います。
> すみません、言ってる意味がよくわかんないです。。。
最初の質問の時もそうでしたが、質問するときは具体的に言わないと回答が具体的にできません。
こちらは質問者さんのことを全く知らないのですから、質問文で何がわからないのか言ってもらないとサッパリ分かりません。
例えば、医者に行って「最近調子が悪いんです、なぜでしょう?」と言って的確にこたえられる医者はいないでしょう。それと同じです。
言っている意味が分からないなら、何がわからないか書きましょう。
boxさんが仰っていることを要約して纏めてみると以下のようになると思います。
1. 事前に設計してから実装しなかったんですか?
2. モジュールに修正が必要になった時、今回くっつけた状態からまた別々にばらして担当者に連絡し、改修してもらってまたくっつけるのでしょうか?
softyaさんが書かれているリンク先をご覧ください。
> 書いてはいけない処理に2つは該当しますのでデバッグが困難な事は明白です。
特定のFPSで動作させる方法の記述がわかりにくかったのでこちらに書き直しました。
http://dixq.net/g/03_14.html
チームで作っているなら誰かリーダーがいると思いますが、少なくともリーダーはDXライブラリの使い方を理解した上で、
コードの分割方法を考えて指示を出す必要があると思います。
もし誰もDXライブラリの使い方が理解できていないのだとすると、少し小規模なものから作った方がよいと思います。
ゲームプログラミングの館(http://dixq.net/g/)に一から説明を書いていますのでよければご覧ください。
やってはいけない処理をしない方法や、コードを分割する方法などもそちらに書かれています。
今のコードを無理やりつなげるより基本をきちんと押さえて設計しなおした方がずっと近道かと思います。
> すみません、言ってる意味がよくわかんないです。。。
最初の質問の時もそうでしたが、質問するときは具体的に言わないと回答が具体的にできません。
こちらは質問者さんのことを全く知らないのですから、質問文で何がわからないのか言ってもらないとサッパリ分かりません。
例えば、医者に行って「最近調子が悪いんです、なぜでしょう?」と言って的確にこたえられる医者はいないでしょう。それと同じです。
言っている意味が分からないなら、何がわからないか書きましょう。
boxさんが仰っていることを要約して纏めてみると以下のようになると思います。
1. 事前に設計してから実装しなかったんですか?
2. モジュールに修正が必要になった時、今回くっつけた状態からまた別々にばらして担当者に連絡し、改修してもらってまたくっつけるのでしょうか?
Re: 複数のCppを1つにする方法
あと、起きそうな問題としては、
Aさん、Bさん、Cさん、…が各自担当している.cppファイルの中で、
自分が分担している.cppファイルの中だけで下請的に使うような、
ファイルスコープのstatic関数を作っていた。
このとき、いくつかのstatic関数が「たまたま」同じ名前であったため、
各自の.cppファイルをガッチャンコしたとき、
1個のファイルの中に同じ名前の関数が出てきて、コンパイルが失敗する。
Aさん、Bさん、Cさん、…が各自担当している.cppファイルの中で、
自分が分担している.cppファイルの中だけで下請的に使うような、
ファイルスコープのstatic関数を作っていた。
このとき、いくつかのstatic関数が「たまたま」同じ名前であったため、
各自の.cppファイルをガッチャンコしたとき、
1個のファイルの中に同じ名前の関数が出てきて、コンパイルが失敗する。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。