ゲームの内容はサッカーのPK(5回戦*5回で決着がつかなければ延長戦)というもので
自分なりにある程度作ったのですがテストしてみたところ、自分では理解できないエラーが出てきたため助けてほしいです。
PS.ソースでここはこうしたほうが良いというところがある場合、PSと書いたうえその後ろにソースとコメントを書いて頂けると助かります。
その他何かあればこちらにmreothe@gmail.com
長文すみません。
エラー一覧↓
{エラー 4 error LNK2001: 外部シンボル "__imp__system" は未解決です。 C:\Users\ths50065\Desktop\kadai\main.obj kadai}
{エラー 2 error LNK2001: 外部シンボル "__imp__scanf" は未解決です。 C:\Users\ths50065\Desktop\kadai\main.obj kadai}
{エラー 1 error LNK2001: 外部シンボル "__imp__rewind" は未解決です。 C:\Users\ths50065\Desktop\kadai\main.obj kadai}
{エラー 5 error LNK2001: 外部シンボル "__imp__printf" は未解決です。 C:\Users\ths50065\Desktop\kadai\main.obj kadai}
{エラー 6 error LNK2001: 外部シンボル "__imp__getchar" は未解決です。 C:\Users\ths50065\Desktop\kadai\main.obj kadai}
{エラー 3 error LNK2001: 外部シンボル "__imp____iob_func" は未解決です。 C:\Users\ths50065\Desktop\kadai\main.obj kadai}
プログラム↓
//------------------------------------------------------------------------------------------------------------------
// メイン処理(main.cpp)
//
//------------------------------------------------------------------------------------------------------------------
#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 FILE_NAME "SaveDate,bin"//バイナリデータ名マクロ
#define _CRT_SECURE_NO_ //ビルドエラー用
//------------------------------------------------------------------------------------------------------------------
// 構造体の定義
//------------------------------------------------------------------------------------------------------------------
typedef struct{
unsigned char nName [MAX_NAME]; //名前
int nTechnique; //テクニック
int nKickPower; //キック力
int nLuck; //運
int nGoal[MAX_MATCH]; //ゴール数
}PLAYER;
//------------------------------------------------------------------------------------------------------------------
// プロトタイプ宣言
//------------------------------------------------------------------------------------------------------------------
void Title(void); //タイトル
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 KeyWait(void); //キー待ち関数
//------------------------------------------------------------------------------------------------------------------
// メイン関数
//------------------------------------------------------------------------------------------------------------------
int main( void )
{
//変数宣言
PLAYER aPlayer[MAX_PLAYER]; //構造体
bool bEndBattle; //勝敗
int nCntMatch=0;
//タイトル
Title();
//入力処理
Input(&aPlayer[0]);
//ステータス処理
Status(&aPlayer[0]);
//出力処理
Output(&aPlayer[0]);
//バトル処理
bEndBattle = false;
while(bEndBattle == false)
{
for(nCntMatch=0; nCntMatch < MAX_MATCH; nCntMatch++)//最大試合数分(5)ループ
{
Battle(&aPlayer[0],&aPlayer[1]);
bEndBattle = Battle(&aPlayer[1],&aPlayer[0]);
bEndBattle = Battle(&aPlayer[0],&aPlayer[1]);
printf("%sのスコア\n",aPlayer[0].nName);
printf("%d|%d|%d|%d|%d|\n",aPlayer[0].nGoal[0],aPlayer[0].nGoal[1],aPlayer[0].nGoal[2],aPlayer[0].nGoal[3],aPlayer[0].nGoal[4]);
printf("%sのスコア\n",aPlayer[1].nName);
printf("%d|%d|%d|%d|%d|\n",aPlayer[1].nGoal[0],aPlayer[1].nGoal[1],aPlayer[1].nGoal[2],aPlayer[1].nGoal[3],aPlayer[1].nGoal[4]);
}
}
//結果
Result(&aPlayer[0]);
//キーボタン押し待ちの処理
printf("\nプログラムを終了します。何かキーを押してください。");
rewind( stdin );
getchar();
}
//------------------------------------------------------------------------------------------------------------------
// タイトル
//------------------------------------------------------------------------------------------------------------------
void Title(void)
{
//メインタイトル(枠2マスは確保)
//ペナルティ
//_____|_________5________10________15________20________25________30________35________40|
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●○●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●○○●●●●●●●●○●●●●●○●○●●●●●○○○●●●●●●●●\n");
printf("●●●●○●●○●●●●○○○○○○●●●○●○●●●●●●●●●●●●●●●●\n");
printf("●●●○●●●●○●●●●●●○●●●●●○●○●○●●○○○○○●●●○●●●\n");
printf("●●○●●●●●●○●●●●●○●●●●●○●○●○●●●●○●●●●○○●●●\n");
printf("●●●●●●●●●●○●●○○●●●●●○●●●○●●●●○●●●●●●○●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
//キッカー
//_____|_________5________10________15________20________25________30________35________40|
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●○●●●●●●●●●●●●●●●○●●●●●●●●●●●●●●●●●●\n");
printf("●●●●○○○○○●●●●●●●●●●○○○○○○●●●●●●●●●●●●●●●\n");
printf("●●●●●●○●●●●●○●○●○●●●●○●●○●●○○○○○●●●●●●●●\n");
printf("●●●●○○○○○●●●○●○●○●●●○●●●○●●●●●●●●●●●●●●●\n");
printf("●●●●●●●○●●●●●●●○●●●○●●○○●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●○●●●●●○●●●●●●●○●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
//コピーライト
//_____|_________5________10________15________20________25________30________35________40|
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●[START_Enter_]●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
printf("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●\n");
KeyWait(); //キー入力待ち
}
//------------------------------------------------------------------------------------------------------------------
// 入力処理
//------------------------------------------------------------------------------------------------------------------
void Input(PLAYER *aPlayer)
{
int nCntPlayer;
for( nCntPlayer=0 ; nCntPlayer < MAX_PLAYER ; nCntPlayer++ )
{
printf("%d P:あなたの名前を教えてださい\n(%s文字まで)\n",nCntPlayer+1,MAX_NAME);
printf("->");
scanf("%s",&aPlayer->nName);
KeyWait(); //キー入力待ち
aPlayer++;
}
}//int Input()の終わり
//------------------------------------------------------------------------------------------------------------------
// ステータス処理
//------------------------------------------------------------------------------------------------------------------
void Status(PLAYER *aPlayer)
{
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];
}
//------------------------------------------------------------------------------------------------------------------
// 出力処理
//------------------------------------------------------------------------------------------------------------------
void Output(PLAYER *aPlayer)
{
int nCntPlayer;
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);
KeyWait(); //キー入力待ち
aPlayer++;
}
}
//------------------------------------------------------------------------------------------------------------------
// バトル処理
//------------------------------------------------------------------------------------------------------------------
bool Battle(PLAYER *aPlayerAtk,PLAYER *aPlayerDef)
{
int nCntMatch=0; //試合数カウンタ
int nAkey=0,nDkey=0; //A(キッカー側)D(キーパー側)キー
int nKey; //キー判定
//操作はq左上w上e右上a左下s下d右下
//それぞれの値を初期化
nAkey=0;
nDkey=0;
printf("%sさんがボールの前に立ちました\n",aPlayerAtk->nName);
printf("%sはどこを狙う?\n",aPlayerAtk->nName);
printf("□□□\n");
printf("□□□\n");
scanf("%d",&nKey);
KeyWait(); //キー入力待ち
//キッカー側
switch (nKey)
{
case 'a':
{
printf("□□□\n");
printf("■□□\n");
KeyWait(); //キー入力待ち
nAkey = 1;
break;
}
case 's':
{
printf("□□□\n");
printf("□■□\n");
KeyWait(); //キー入力待ち
nAkey = 2;
break;
}
case 'd':
{
printf("□□□\n");
printf("□□■\n");
KeyWait(); //キー入力待ち
nAkey = 3;
break;
}
case 'q':
{
printf("■□□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nAkey = 4;
break;
}
case 'w':
{
printf("□■□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nAkey = 5;
break;
}
case 'e':
{
printf("□□■\n");
printf("□□□\n");
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("%d",&nKey);
KeyWait(); //キー入力待ち
switch (nKey)
{
case 'a':
{
printf("□□□\n");
printf("■□□\n");
KeyWait(); //キー入力待ち
nDkey = 1;
break;
}
case 's':
{
printf("□□□\n");
printf("□■□\n");
KeyWait(); //キー入力待ち
nDkey = 2;
break;
}
case 'd':
{
printf("□□□\n");
printf("□□■\n");
KeyWait(); //キー入力待ち
nDkey = 3;
break;
}
case 'q':
{
printf("■□□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nDkey = 4;
break;
}
case 'w':
{
printf("□■□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nDkey = 5;
break;
}
case 'e':
{
printf("□□■\n");
printf("□□□\n");
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; //試合数カウント
bEndBattle = false;
//試合結果
if(aPlayer[0].nGoal[0]>aPlayer[1].nGoal[0])
{
printf("%sが試合に勝利した\n",aPlayer[0].nName);
KeyWait();//キー入力待ち
}
else if(aPlayer[0].nGoal[0]<aPlayer[1].nGoal[0])
{
printf("%sが試合に勝利した\n",aPlayer[1].nName);
KeyWait();//キー入力待ち
}
else if(aPlayer[0].nGoal[0]<aPlayer[1].nGoal[0])//得点が同じ場合
{
printf("延長戦%d戦目",nCntMatch++);
//延長戦
while(bEndBattle == false)
{
Overtime(&aPlayer[0],&aPlayer[1]);
bEndBattle = Battle(&aPlayer[1],&aPlayer[0]);
bEndBattle = Battle(&aPlayer[0],&aPlayer[1]);
printf("%sのスコア\n",aPlayer[0].nName);
printf("%d|%d|%d|%d|%d|\n",aPlayer[0].nGoal);
printf("%sのスコア\n",aPlayer[1].nName);
printf("%d|%d|%d|%d|%d|\n",aPlayer[1].nGoal);
return Result(0);
}
}
}
//------------------------------------------------------------------------------------------------------------------
// 延長戦
//------------------------------------------------------------------------------------------------------------------
bool Overtime(PLAYER *aPlayerAtk,PLAYER *aPlayerDef)
{
int nAkey=0,nDkey=0; //A(キッカー側)D(キーパー側)キー
int nKey; //キー判定
//それぞれの値を初期化
nAkey=0;
nDkey=0;
printf("%sと%sのPKは延長戦に入った!");
printf("%sさんがボールの前に立ちました\n",aPlayerAtk->nName);
printf("%sはどこを狙う?\n",aPlayerAtk->nName);
printf("□□□\n");
printf("□□□\n");
scanf("%d",&nKey);
KeyWait(); //キー入力待ち
//キッカー側
switch (nKey)
{
case 'a':
{
printf("□□□\n");
printf("■□□\n");
KeyWait(); //キー入力待ち
nAkey = 1;
break;
}
case 's':
{
printf("□□□\n");
printf("□■□\n");
KeyWait(); //キー入力待ち
nAkey = 2;
break;
}
case 'd':
{
printf("□□□\n");
printf("□□■\n");
KeyWait(); //キー入力待ち
nAkey = 3;
break;
}
case 'q':
{
printf("■□□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nAkey = 4;
break;
}
case 'w':
{
printf("□■□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nAkey = 5;
break;
}
case 'e':
{
printf("□□■\n");
printf("□□□\n");
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("%d",&nKey);
KeyWait(); //キー入力待ち
switch (nKey)
{
case 'a':
{
printf("□□□\n");
printf("■□□\n");
KeyWait(); //キー入力待ち
nDkey = 1;
break;
}
case 's':
{
printf("□□□\n");
printf("□■□\n");
KeyWait(); //キー入力待ち
nDkey = 2;
break;
}
case 'd':
{
printf("□□□\n");
printf("□□■\n");
KeyWait(); //キー入力待ち
nDkey = 3;
break;
}
case 'q':
{
printf("■□□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nDkey = 4;
break;
}
case 'w':
{
printf("□■□\n");
printf("□□□\n");
KeyWait(); //キー入力待ち
nDkey = 5;
break;
}
case 'e':
{
printf("□□■\n");
printf("□□□\n");
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 KeyWait(void)
{
printf("ENTERキーを押してください\n");
/* キーボタン押し待ちの処理 */
rewind( stdin );
getchar();
system("cls");//画面更新