課題

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

課題

#1

投稿記事 by ジェイ » 8年前

前レスと同じくサッカーのPKのゲームを作っているのですがわけのわからないエラーが出るため投稿しました。
メニューセレクト(1:1P2Pともデータがない場合)

まず名前入力(2)し、その名前から選手のステータスを作り出す。
それらを構造体(この時点で入れるのは(名前、テクニック、キック力、運、ゴール数)のみ、ほかにも、既プレイ判定、勝利回数)に入れる。
そしてPKバトルを行う。
(1P2Pキッカー交代)を5回繰り返し(PKのルールと同じ)、ゴール数が多いほうが勝ち、もし同じだった場合はどちらかが失敗するまで繰り返し、勝ったほうの名前とゴール数と勝利回数をテキストに入れる。そしてお互いの構造体をbinに入れる。
}
(2:1P(2P)のデータがない場合)

データがある方はなにも入力せずデータがない方は(1)のやり方を行う。
今のところ(1)と同じ。
//複数のデータを書き込み&読み込み&保存するためのやり方を教えてください!

(3:どちらもデータがある場合)

入出力を行わずメッセージが出るだけでバトル開始(1)と同じ
//複数のデータを書き込み&読み込み&保存するためのやり方を教えてください!

環境はVisualStadio2010です。

***********エラーコード***********

1>------ ビルド開始: プロジェクト: CP11_kadai09, 構成: Debug Win32 ------
1>2016/01/14 23:20:07 にビルドを開始しました。
1>InitializeBuildStatus:
1> "Debug\CP11_kadai09.unsuccessfulbuild" のタッチ タスクを実行しています。
1>ClCompile:
1> すべての出力が最新のものです。
1>ManifestResourceCompile:
1> すべての出力が最新のものです。
1>main.obj : warning LNK4217: ローカルで定義されたシンボル ___iob_func がフィクション _main にインポートされました。

1>main.obj : warning LNK4217: ローカルで定義されたシンボル _exit がフィクション _main にインポートされました。

1>main.obj : warning LNK4217: ローカルで定義されたシンボル _printf がフィクション _main にインポートされました。

1>main.obj : warning LNK4217: ローカルで定義されたシンボル _fclose がフィクション "void __cdecl Status(struct PLAYER *)" (?Status@@YAXPAUPLAYER@@@Z) にインポートされました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__getchar が関数 _main で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__rewind が関数 _main で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__system が関数 _main で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__scanf が関数 _main で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__getch が関数 "void __cdecl INKEY(int &)" (?INKEY@@YAXAAH@Z) で参照されました。

1>OLDNAMES.lib(getch.obi) : error LNK2001: 外部シンボル "__imp__getch" は未解決です。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__kbhit が関数 "void __cdecl INKEY(int &)" (?INKEY@@YAXAAH@Z) で参照されました。

1>OLDNAMES.lib(kbhit.obi) : error LNK2001: 外部シンボル "__imp__kbhit" は未解決です。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__srand が関数 "void __cdecl Title(void)" (?Title@@YAXXZ) で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp___time64 が関数 _time で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__fread が関数 "void __cdecl Status(struct PLAYER *)" (?Status@@YAXPAUPLAYER@@@Z) で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__fwrite が関数 "void __cdecl Status(struct PLAYER *)" (?Status@@YAXPAUPLAYER@@@Z) で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__fopen が関数 "void __cdecl Status(struct PLAYER *)" (?Status@@YAXPAUPLAYER@@@Z) で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__scanf_s が関数 "bool __cdecl Battle(struct PLAYER *,struct PLAYER *)" (?Battle@@YA_NPAUPLAYER@@0@Z) で参照されました。

1>main.obj : error LNK2019: 未解決の外部シンボル __imp__fprintf が関数 "void __cdecl Result(struct PLAYER *)" (?Result@@YAXPAUPLAYER@@@Z) で参照されました。

1>OLDNAMES.lib(getch.obi) : error LNK2001: 外部シンボル "__imp___getch" は未解決です。

1>OLDNAMES.lib(kbhit.obi) : error LNK2001: 外部シンボル "__imp___kbhit" は未解決です。

1>C:\Users\ths50065\Desktop\CP\CP11_kadai09\Debug\CP11_kadai09.exe : fatal error LNK1120: 外部参照 15 が未解決です。
1>
1>ビルドに失敗しました。
1>
1>経過時間 00:00:00.24
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

**********コード************

コード:


//------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#include <conio.h>
//------------------------------------------------------------------------------------------------------------------
//	マクロ定義
//------------------------------------------------------------------------------------------------------------------
#define MAX_PLAYER (2)			//プレイヤーの最大値
#define MAX_NAME (5)			//プレイヤーの名前の最大値
#define MAX_MATCH (5)			//最大試合数
#define MAX_SELECT (5)			//セレクト画面 / セレクト数上限
#define FILE_NAME "SaveDate,bin"//バイナリデータ名マクロ
#define WINNER_FILE_NAME "WinnerSaveDate,txt"//勝者用テキスト名マクロ
//------------------------------------------------------------------------------------------------------------------
// 構造体の定義
//------------------------------------------------------------------------------------------------------------------
typedef struct{
	unsigned char nName [MAX_NAME];	//名前
	int nTechnique;				//テクニック
	int nKickPower;				//キック力
	int nLuck;					//運
	int nGoal[MAX_MATCH];		//ゴール数
	int nCount;					//既プレイ判定
	int nWin;					//勝利回数
}PLAYER;
//------------------------------------------------------------------------------------------------------------------
// プロトタイプ宣言
//------------------------------------------------------------------------------------------------------------------
void Input(PLAYER *aPlayer);							//入力処理
void Status(PLAYER *aPlayer);							//ステータス処理
void Output(PLAYER *aPlayer);							//出力処理
bool Battle(PLAYER *aPlayerAtk,PLAYER *aPlayerDef);		//バトル処理
bool Overtime(PLAYER *aPlayerAtk,PLAYER *aPlayerDef);	//延長戦
void Result(PLAYER *aPlayer);							//結果
void Save ( PLAYER *aPlayer);							//セーブ処理
int Lord (PLAYER *aPlayer);								//ロード処理
void KeyWait(void);										//キー待ち関数
//------------------------------------------------------------------------------------------------------------------
// メイン関数
//------------------------------------------------------------------------------------------------------------------
int main( void )
{
	//変数宣言
	PLAYER aPlayer[MAX_PLAYER];					//構造体
	bool bLoop = true;							//bool型変数宣言/bLoopの初期値をtrue
	int nCntMatch=0;
	int nScore=0;
	int nSelect = 0;							//選択用変数
	int cCode = 0;
	//選択処理
	do{
	//セレクト画面
		do{
			printf( "-------メニュー-------\n" );
			printf("\n");//改行
			printf("1:キックオフ\n");
			printf( "2:ロード\n" );
			printf( "3:終了\n");
			printf( "\n選択:" );	//コマンド入力
			scanf("%d",&nSelect);
			system("cls");//画面更新
		}while( (nSelect<=0) && (nSelect > MAX_SELECT));
	
		//選択処理内部
		switch( nSelect )
		{
		//入力処理(キックオフ)
		case 1:
			{
				
				Input ( &aPlayer[0] );
				printf("メニュー画面に戻ります\n");
				KeyWait();
				break;
			}
		//ロード処理
		case 2:
			{
				
				Lord ( &aPlayer[0]);
				printf("メニュー画面に戻ります\n");
				KeyWait();
				break;
			}
		//プログラム終了
		case 3:
			{
				
				char GoBack;		//終了判定用変数
				do{
					GoBack = NULL;
					printf("◆◆◆◆◆◆◆終了メッセージ◆◆◆◆◆◆◆");
					printf("本当に終了しますか\n");
					printf("[ y ] か [ n ]を入力しENTERを押してください\n");
					printf( "選択:" );	//コマンド入力
					scanf("%s",&GoBack);
					KeyWait();
				}while((GoBack != 'y') && (GoBack != 'n'));//y&nが押されるまで繰り返す
		
				system("cls");
				if(GoBack == 'y')//プログラム終了
				{	 
					printf("プログラムを終了します\n");
					KeyWait();
					bLoop = false;
					break;
				}
				else
				{ 
					printf("メニュー画面に戻ります。\n");
					KeyWait();
					break;
				}
			}
		}//switchの終わり
		system( "cls" );
	}while( bLoop == true);//trueの時繰り返す
	exit(0);//終了(return 0だとエラー/ exit(0)でosに終了を指示)

	//キーボタン押し待ちの処理
	printf("\nプログラムを終了します。何かキーを押してください。");
	rewind( stdin );
	getchar();
}//-------------------------------------------------------------------------------------------------------------
// 入力処理
//------------------------------------------------------------------------------------------------------------------
 void Input(PLAYER *aPlayer)
{
	int nCntPlayer;
	if((aPlayer[0].nCount = NULL)||(aPlayer[1].nCount = NULL))
	{
		for( nCntPlayer=0 ; nCntPlayer < MAX_PLAYER ; nCntPlayer++ )
		{
			printf("%d P:あなたの名前を教えてださい\n(%d文字まで)\n",nCntPlayer+1,MAX_NAME);
			printf(">>");
			scanf("%s",&aPlayer->nName);
			aPlayer->nCount++;
			aPlayer++;
			KeyWait();		//キー入力待ち
		}
	}
	else if(aPlayer[0].nCount = NULL)
	{
		printf("%s と対戦する方の名前を教えてださい\n(%d文字まで)\n",aPlayer[1].nName,MAX_NAME);
		printf(">>");
		scanf("%s",&aPlayer[0].nName);
		KeyWait();		//キー入力待ち
	}
	else if(aPlayer[1].nCount = NULL)
	{
		printf("%s と対戦する方の名前を教えてださい\n(%d文字まで)\n",aPlayer[0].nName,MAX_NAME);
		printf(">>");
		scanf("%s",&aPlayer[1].nName);
		KeyWait();		//キー入力待ち
	}
	else
	{
		for( nCntPlayer=0 ; nCntPlayer < MAX_PLAYER ; nCntPlayer++ )
		{
			printf("%d Pさんのステータスをロードしています。\n",aPlayer->nName);
			aPlayer++;
			KeyWait();		//キー入力待ち
		}
	}
}//int Input()の終わり
//------------------------------------------------------------------------------------------------------------------
// ステータス処理
//------------------------------------------------------------------------------------------------------------------
 void Status(PLAYER *aPlayer)
 {
	int nCntPlayer;
	FILE *pFile;
	if((aPlayer[0].nCount = NULL)||(aPlayer[1].nCount = NULL))
	{
		pFile =fopen("FILE_NAME","w");
		for( nCntPlayer=0 ; nCntPlayer < MAX_PLAYER ; nCntPlayer++ )
		{
			printf("監督が%d Pさんのステータスを測定しています。\n",aPlayer->nName);
			aPlayer++;
			KeyWait();		//キー入力待ち
		}
		aPlayer[0].nTechnique = (int)aPlayer[0].nName[0]+aPlayer[0].nName[1];
		aPlayer[0].nKickPower = (int)aPlayer[0].nName[2]+aPlayer[0].nName[3];
		aPlayer[0].nLuck = (int)aPlayer[0].nName[4]+aPlayer[0].nName[5];
		aPlayer[1].nTechnique = (int)aPlayer[1].nName[0]+aPlayer[1].nName[1];
		aPlayer[1].nKickPower = (int)aPlayer[1].nName[2]+aPlayer[1].nName[3];
		aPlayer[1].nLuck = (int)aPlayer[1].nName[4]+aPlayer[1].nName[5];
		fwrite(aPlayer,sizeof(PLAYER),MAX_PLAYER,pFile);//pFile/構造体ステータス書き込み
		fclose(pFile);//ファイルを閉じる
	}
	else if(aPlayer[0].nCount = NULL)
	{
		pFile =fopen("FILE_NAME","w");
		printf("監督が%d Pさんのステータスを測定しています。\n",aPlayer[0].nName);
		aPlayer[0].nTechnique = (int)aPlayer[0].nName[0]+aPlayer[0].nName[1];
		aPlayer[0].nKickPower = (int)aPlayer[0].nName[2]+aPlayer[0].nName[3];
		aPlayer[0].nLuck = (int)aPlayer[0].nName[4]+aPlayer[0].nName[5];
		fwrite(aPlayer,sizeof(PLAYER),MAX_PLAYER,pFile);//pFile/構造体ステータス書き込み
		fclose(pFile);//ファイルを閉じる
	}
	else if(aPlayer[1].nCount = NULL)
	{
		pFile =fopen("FILE_NAME","w");
		printf("監督が%d Pさんのステータスを測定しています。\n",aPlayer[1].nName);
		aPlayer[1].nTechnique = (int)aPlayer[1].nName[0]+aPlayer[1].nName[1];
		aPlayer[1].nKickPower = (int)aPlayer[1].nName[2]+aPlayer[1].nName[3];
		aPlayer[1].nLuck = (int)aPlayer[1].nName[4]+aPlayer[1].nName[5];
		fwrite(aPlayer,sizeof(PLAYER),MAX_PLAYER,pFile);//pFile/構造体ステータス書き込み
		fclose(pFile);//ファイルを閉じる
	}
	else
	{
		pFile = fopen("FILE_NAME","rb");	//ファイルオープン
		for( nCntPlayer=0 ; nCntPlayer < MAX_PLAYER ; nCntPlayer++ )
		{
			printf("%d Pさんのステータスをロードしました!\n",aPlayer->nName);
			fread(aPlayer,sizeof(PLAYER),MAX_PLAYER,pFile);	//pFile/構造体ステータス読み込み
			aPlayer++;
			KeyWait();		//キー入力待ち
		}
		fclose(pFile);									//ファイルを閉じる
	}
 }
//------------------------------------------------------------------------------------------------------------------
// 出力処理
//------------------------------------------------------------------------------------------------------------------
void Output(PLAYER *aPlayer)
{
	//ステータス処理
	Status(&aPlayer[0]);
	int nCntPlayer;
	int nCntMatch;
	for( nCntPlayer=0; nCntPlayer < MAX_PLAYER ; nCntPlayer++ )
	{
		printf("プレイヤー%d P\n",nCntPlayer+1);
		printf("名前      : %s\n",aPlayer->nName);
		printf("テクニック: %d\n",aPlayer->nTechnique);
		printf("シュート力: %d\n",aPlayer->nKickPower);
		printf("運        : %d\n",aPlayer->nLuck);
		aPlayer++;
		KeyWait();		//キー入力待ち
	}
	bool bEndBattle;				//勝敗
	//バトル処理
	bEndBattle = false;

	for(nCntMatch=0; nCntMatch < MAX_MATCH; nCntMatch++)//最大試合数分(5)ループ
	{
		printf("%d回目",nCntMatch+1);
		bEndBattle = Battle(&aPlayer[1],&aPlayer[0]);
		bEndBattle = Battle(&aPlayer[0],&aPlayer[1]);
	}
	//結果
	Result(&aPlayer[0]);
}
//------------------------------------------------------------------------------------------------------------------
// バトル処理
//------------------------------------------------------------------------------------------------------------------
bool Battle(PLAYER *aPlayerAtk,PLAYER *aPlayerDef)
{
	int nCntMatch=0;			//試合数カウンタ
	int nAkey=0,nDkey=0;		//A(キッカー側)D(キーパー側)キー
	int nKey;					//キー判定

	//それぞれの値を初期化
	nAkey=0;
	nDkey=0;
	printf("%sさんがボールの前に立ちました\n",aPlayerAtk->nName);
	printf("%sはどこを狙う?\n",aPlayerAtk->nName);
	printf("□□□\n");
	printf("□□□\n");
	scanf_s("%d",&nKey);
	KeyWait();		//キー入力待ち
	
	//キッカー側
	switch (nKey)
	{
		case 'a':
		{
			printf("□□□\n");
			printf("■□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 1;
			break;
		}
		case 's':
		{
			printf("□□□\n");
			printf("□■□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 2;
			break;
		}
		case 'd':
		{
			printf("□□□\n");
			printf("□□■\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 3;
			break;
			}
		case 'q':
		{
			printf("■□□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 4;
			break;
		}
		case 'w':
		{
			printf("□■□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 5;
			break;
		}
		case 'e':
		{
			printf("□□■\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 6;
			break;
		}
	}
	//画面更新
	printf("%sさんは%sと操作を交代してください\n",aPlayerAtk->nName,aPlayerDef->nName);
	printf("%sさんは%sの番が終わるまで画面見ないように\n",aPlayerAtk->nName,aPlayerDef->nName);
	KeyWait();		//キー入力待ち
	//キーパー側
	nKey=0;
	printf("%sはどこに飛ぶ?\n",aPlayerDef->nName);
	printf("□□□\n");
	printf("□□□\n");
	scanf_s("%d",&nKey);
	
	KeyWait();		//キー入力待ち
	switch (nKey)
	{
		case 'a':
		{
			printf("□□□\n");
			printf("■□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 1;
			break;
		}
		case 's':
		{
			printf("□□□\n");
			printf("□■□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 2;
			break;
		}
		case 'd':
		{
			printf("□□□\n");
			printf("□□■\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 3;
			break;
		}
		case 'q':
		{
			printf("■□□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 4;
			break;
		}
		case 'w':
		{
			printf("□■□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 5;
			break;
		}
		case 'e':
		{
			printf("□□■\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 6;
			break;
		}
	}
	if(nAkey==nDkey)
	{
		if((aPlayerAtk->nKickPower+aPlayerAtk->nTechnique)*aPlayerAtk->nLuck<aPlayerDef->nTechnique*1.25*aPlayerDef->nLuck)
		{
			printf("%sが決めたぁぁ!\n",aPlayerAtk->nName);
			KeyWait();		//キー入力待ち
			aPlayerAtk[0].nGoal[0]++;
		}
		else
		{
			printf("%sが止めたぁぁ!\n",aPlayerDef->nName);
			KeyWait();		//キー入力待ち
		}
	}
	else
	{
		if((aPlayerAtk->nKickPower+aPlayerAtk->nTechnique)*aPlayerAtk->nLuck<aPlayerDef->nTechnique*1.25*aPlayerDef->nLuck)
		{
			printf("%sが外したぁぁ!\n",aPlayerAtk->nName);
			KeyWait();		//キー入力待ち
		}
		else
		{
			printf("%sが決めたぁぁ!\n",aPlayerAtk->nName);
			KeyWait();		//キー入力待ち
			aPlayerAtk[0].nGoal[0]++;
		}
	}
	nCntMatch++;
	if(nCntMatch==10)
	{
		return true;
	}
	return false;
}
//------------------------------------------------------------------------------------------------------------------
// 結果
//------------------------------------------------------------------------------------------------------------------
void Result(PLAYER *aPlayer)
{
	bool bEndBattle;	//勝敗
	int nCntMatch=0;	//試合数カウント
	FILE *pFile;
	pFile =fopen("FILE_NAME","w");
	bEndBattle = false;
	//試合結果
	if(aPlayer[0].nGoal[0]>aPlayer[1].nGoal[0])
	{
		printf("%sが試合に勝利した\n",aPlayer[0].nName);
		aPlayer[0].nWin++;
		fprintf(pFile,WINNER_FILE_NAME,aPlayer[0].nName);
		fprintf(pFile,WINNER_FILE_NAME,aPlayer[0].nGoal);
		fprintf(pFile,WINNER_FILE_NAME,aPlayer[0].nWin);
		KeyWait();//キー入力待ち
	}
	else if(aPlayer[0].nGoal[0]<aPlayer[1].nGoal[0])
	{
		printf("%sが試合に勝利した\n",aPlayer[1].nName);
		aPlayer[1].nWin++;
		fprintf(pFile,WINNER_FILE_NAME,aPlayer[1].nName);
		fprintf(pFile,WINNER_FILE_NAME,aPlayer[1].nGoal);
		fprintf(pFile,WINNER_FILE_NAME,aPlayer[1].nWin);
		KeyWait();//キー入力待ち
	}
	else if(aPlayer[0].nGoal[0]==aPlayer[1].nGoal[0])//得点が同じ場合
	{
		printf("延長戦!!");
		//延長戦
		while((aPlayer[0].nGoal[0]>aPlayer[1].nGoal[0])||(aPlayer[0].nGoal[0]<aPlayer[1].nGoal[0]))//どちらかが勝つまで
		{
				printf("%d回目",nCntMatch+1);
				bEndBattle = Battle(&aPlayer[1],&aPlayer[0]);
				bEndBattle = Battle(&aPlayer[0],&aPlayer[1]);
		}
		//延長戦の試合結果
		if(aPlayer[0].nGoal[0]>aPlayer[1].nGoal[0])
		{
			printf("%sが試合に勝利した\n",aPlayer[0].nName);
			aPlayer[0].nWin++;
			fprintf(pFile,WINNER_FILE_NAME,aPlayer[0].nName);
			fprintf(pFile,WINNER_FILE_NAME,aPlayer[0].nGoal);
			fprintf(pFile,WINNER_FILE_NAME,aPlayer[0].nWin);
			KeyWait();//キー入力待ち
		}
		else if(aPlayer[0].nGoal[0]<aPlayer[1].nGoal[0])
		{
			printf("%sが試合に勝利した\n",aPlayer[1].nName);
			aPlayer[1].nWin++;
			fprintf(pFile,WINNER_FILE_NAME,aPlayer[1].nName);
			fprintf(pFile,WINNER_FILE_NAME,aPlayer[1].nGoal);
			fprintf(pFile,WINNER_FILE_NAME,aPlayer[1].nWin);
			KeyWait();//キー入力待ち
		}
	}
	printf("試合後の結果をセーブします。\n");
	Save ( &aPlayer[0]);
	KeyWait();		//キー入力待ち
}
//------------------------------------------------------------------------------------------------------------------
// 延長戦
//------------------------------------------------------------------------------------------------------------------
bool Overtime(PLAYER *aPlayerAtk,PLAYER *aPlayerDef)
{
	int nAkey=0,nDkey=0;	//A(キッカー側)D(キーパー側)キー
	int nKey=0;				//キー判定

	//それぞれの値を初期化
	nAkey=0;
	nDkey=0;
	printf("%sと%sのPKは延長戦に入った!");
	printf("%sさんがボールの前に立ちました\n",aPlayerAtk->nName);
	printf("%sはどこを狙う?\n",aPlayerAtk->nName);
	printf("□□□\n");
	printf("□□□\n");
	scanf_s("%d",&nKey);
		
	KeyWait();		//キー入力待ち
	//キッカー側
	switch (nKey)
	{
		case 'a':
		{
			printf("□□□\n");
			printf("■□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 1;
			break;
		}
		case 's':
			{
			printf("□□□\n");
			printf("□■□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 2;
			break;
		}
		case 'd':
		{
			printf("□□□\n");
			printf("□□■\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 3;
			break;
		}
		case 'q':
		{
			printf("■□□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 4;
			break;
		}
		case 'w':
		{
			printf("□■□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 5;
			break;
			}
		case 'e':
		{
			printf("□□■\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nAkey = 6;
			break;
		}
	}
	//画面更新
	printf("%sさんは%sと操作を交代してください\n",aPlayerAtk->nName,aPlayerDef->nName);
	printf("%sさんは%sの番が終わるまで画面見ないように\n",aPlayerAtk->nName,aPlayerDef->nName);
	KeyWait();		//キー入力待ち
	//キーパー側
	printf("%sはどこに飛ぶ?\n",aPlayerDef->nName);
	printf("□□□\n");
	printf("□□□\n");
	scanf_s("%d",&nKey);
	
	KeyWait();		//キー入力待ち
	switch (nKey)
	{
		case 'a':
		{
			printf("□□□\n");
			printf("■□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 1;
			break;
		}
		case 's':
		{
			printf("□□□\n");
			printf("□■□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 2;
			break;
		}
		case 'd':
		{
			printf("□□□\n");
			printf("□□■\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 3;
			break;
		}
		case 'q':
		{
			printf("■□□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 4;
			break;
		}
		case 'w':
		{
			printf("□■□\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 5;
			break;
		}
		case 'e':
		{
			printf("□□■\n");
			printf("□□□\n");
			Sleep(1);
			KeyWait();		//キー入力待ち
			nDkey = 6;
			break;
		}
	}
	if(nAkey==nDkey)
	{
		if((aPlayerAtk->nKickPower+aPlayerAtk->nTechnique)*aPlayerAtk->nLuck<aPlayerDef->nTechnique*1.5*aPlayerDef->nLuck)
		{
			printf("%sが決めたぁぁ!\n",aPlayerAtk->nName);
			KeyWait();		//キー入力待ち
			aPlayerAtk[0].nGoal[0]++;
		}
		else
		{
			printf("%sが止めたぁぁ!\n",aPlayerDef->nName);
			KeyWait();		//キー入力待ち
		}
	}
	else
	{
		if((aPlayerAtk->nKickPower+aPlayerAtk->nTechnique)*aPlayerAtk->nLuck<aPlayerDef->nTechnique*1.5*aPlayerDef->nLuck)
		{
			printf("%sが外したぁぁ!\n",aPlayerAtk->nName);
			KeyWait();		//キー入力待ち
		}
		else
		{
			printf("%sが決めたぁぁ!\n",aPlayerAtk->nName);
			KeyWait();		//キー入力待ち
			aPlayerAtk[0].nGoal[0]++;
		}
	}
	return true;
}
//------------------------------------------------------------------------------------------------------------------
// セーブ処理
//------------------------------------------------------------------------------------------------------------------
void Save ( PLAYER *aPlayer)
{
	//変数の宣言
	FILE *pFile;		//ファイルポインタ
	pFile = fopen(FILE_NAME,"wb");//ファイルオープン

	//ファイルエラー
	if( pFile == NULL )
	{
		printf("◆◆◆◆◆◆◆警告◆◆◆◆◆◆◆\n");
		fopen("ファイルが開けませんでした\n","w");	//pFile作成					
		printf("セーブが出来ませんでした\n");
		KeyWait();									//キー入力待ち
		system("cls");								//画面更新
	}
	else
	{
		printf("ファイルが無事ひらけました!\n");										
		printf("ファイルにセーブします\n");
		KeyWait();											//キー入力待ち
		system("cls");										//画面更新
		fwrite(aPlayer,sizeof(PLAYER),MAX_PLAYER,pFile);	//pFile/構造体ステータス書き込み
		fclose(pFile);//ファイルを閉じる
	}//「ファイルエラー」if(else)の終わり
}//void Saveの終わり

//------------------------------------------------------------------------------------------------------------------
// ロード処理
//------------------------------------------------------------------------------------------------------------------
int Lord (PLAYER *aPlayer)
{
	//変数の宣言
	FILE *pFile;					//ファイルポインタ作成
	pFile = fopen(FILE_NAME,"rb");	//ファイルオープン
	//ファイルエラー
	if( pFile == NULL )
	{
		printf("◆◆◆◆◆◆◆警告◆◆◆◆◆◆◆\n");
		fopen("ファイルが開けませんでした\n","w");	//pFile作成
		printf("ロードが出来ませんでした\n");
		KeyWait();
	}
	//成功
	else
	{
		printf("ファイルが無事ひらけました\n");
		printf("ファイルからロードします\n");
		fread(aPlayer,sizeof(PLAYER),MAX_PLAYER,pFile);	//pFile/構造体ステータス読み込み
		fclose(pFile);									//ファイルを閉じる
		KeyWait();										//キー押し待ち
	}
	return 0;
}//int Lordの終わり

//------------------------------------------------------------------------------------------------------------------
// キー待ち処理
//------------------------------------------------------------------------------------------------------------------
void KeyWait(void)
{
	printf("ENTERキーを押してください\n");
	/* キーボタン押し待ちの処理 */
	rewind( stdin );
	getchar();
	system("cls");//画面更新
}

box
記事: 2002
登録日時: 13年前

Re: 課題

#2

投稿記事 by box » 8年前

本題とはたぶん関係ない回答ですけど…。
ジェイ さんが書きました:

コード:

				char GoBack;		//終了判定用変数
				do{
					GoBack = NULL;
char型の変数にポインターであるNULLを入れてはいけません。
ジェイ さんが書きました:

コード:

	if((aPlayer[0].nCount = NULL)||(aPlayer[1].nCount = NULL))
	else if(aPlayer[0].nCount = NULL)
	else if(aPlayer[1].nCount = NULL)
	if((aPlayer[0].nCount = NULL)||(aPlayer[1].nCount = NULL))
	else if(aPlayer[0].nCount = NULL)
	else if(aPlayer[1].nCount = NULL)
またやっちゃってますね。

それから、インデント(字下げ)が乱れていて読みづらい箇所があります。
他の人たちがどういういう風に字下げしているかをよく見て、勉強してください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ジェイ

Re: 課題

#3

投稿記事 by ジェイ » 8年前

0に変えてもエラーは変わりませんでした。。。

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: 課題

#4

投稿記事 by へにっくす » 8年前

外部参照が未解決なのは、適切なライブラリファイルが指定されていないからです。
ライブラリファイルはどう設定されていますか?

それと
ジェイ さんが書きました:0に変えてもエラーは変わりませんでした。。。
条件文は?
boxさんのまたやっちゃってますね。の意味を分かってますか。

また修正したなら、そのコードを掲示してください。
written by へにっくす

閉鎖

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