質問編集履歴

5 不要な文の削除

choko103478

choko103478 score 4

2018/06/06 17:50  投稿

「'('が必要です」とたくさん出ます><
![イメージ説明](5c7c6e0c44f6c9725df6d0a8d6a4b506.png)### 前提・実現したいこと
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
友達から貰ったコードなのですが、諸事情で連絡が取ることができないので助けて頂けると幸いです。
### 発生している問題・エラーメッセージ
```
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
```
### 該当のソースコード
```ここに言語を入力
#include"DxLib.h"
//キャラクタ型宣言
struct CharaData
{
   int x;
   int y;
   int ghandle;
   int life;
   int image_w;
   int image_h;
   int bounds_w;
   int bounds_h;
};
//プロトタイプ宣言
void MyMove(int movable);
void JitamaMove(void);
void TekiMove(void);
int IsAtari(CharaData, CharaData);
int AtariHantei(void);
void GameOver(void);
void GameClear(void);
void ChaInit(void);
//構造化設定
struct CharaData jikidata;
struct CharaData jitama[7];
struct CharaData tekidata[5];
int trigger = 0;
//メインプログラム
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
   ChangeWindowMode(true); //ウィンドウモードで起動
   if (DxLib_Init() == -1) return -1; //DXライブラリの初期化
   ChaInit();
   SetDrawScreen(DX_SCREEN_BACK);
   while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
   {
       ClsDrawScreen(); //画面消去
       MyMove(true);
       JitamaMove();
       TekiMove();
       GameOver();
       GameClear();
       if (AtariHantei() == 1)break;
       ScreenFlip();
   }
   DxLib_End();
   return 0;
};
//キャラクタ初期設定
void ChaInit(void)
{
   //自分キャラクタの初期設定
   jikidata.ghandle = LoadGraph("自キャラ.bmp");
   jikidata.x = 0;
   jikidata.y = 0;
   jikidata.image_w = 48;
   jikidata.image_h = 32;
   jikidata.bounds_w = 32;   
   jikidata.bounds_h = 20;
   //自弾の初期設定
   int g = LoadGraph("自弾.bmp");
   for (int i = 0; i<7; i++)
   {
       jitama[i].ghandle = g;
       jitama[i].image_w = 64;
       jitama[i].image_h = 16;
       jitama[i].bounds_w = 48;
       jitama[i].bounds_h = 12;
   }
   //敵キャラクタデータの初期化
   int k = LoadGraph("敵キャラ.bmp");
   for (int i = 0; i<5; i++)
   {
       tekidata[i].ghandle = k;
       tekidata[i].life = 1;
       tekidata[i].x = GetRand(100) + 500;
       tekidata[i].y = GetRand(448);
       tekidata[i].image_w = 32;
       tekidata[i].image_h = 32;
       tekidata[i].bounds_w = 20;
       tekidata[i].bounds_h = 20;
   }
}
//自キャラクタ移動関数
void MyMove(int movable)
{
   int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
   if (key&PAD_INPUT_UP) jikidata.y = jikidata.y - 4 * (movable == TRUE);
   if (key&PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4 * (movable == TRUE);
   if (key&PAD_INPUT_LEFT) jikidata.x -= 4 * (movable == TRUE);
   if (key&PAD_INPUT_RIGHT)jikidata.x += 4 * (movable == TRUE);
   if (jikidata.x<0) jikidata.x = 0;
   if (jikidata.x>640 - 32) jikidata.x = 640 - 32;
   if (jikidata.y<0) jikidata.y = 0;
   if (jikidata.y>480 - 32) jikidata.y = 480 - 32;
   DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE);
}
//自キャラクタ弾の移動関数
void JitamaMove(void)
{
   int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
   if ((key&PAD_INPUT_A) && (trigger == 0))
   {
       for (int i = 0; i<7; i++)
       {
           if (jitama[i].life == 0)
           {
               jitama[i].life = 1;
               jitama[i].x = jikidata.x + 24;
               jitama[i].y = jikidata.y + 0;
               break;
           }
       }
       trigger = 10;
   }
   if (trigger>0) trigger = trigger - 1;
   for (int i = 0; i<7; i++)
   {
       if (jitama[i].life>0)
       {
           jitama[i].x = jitama[i].x + 10;
           DrawGraph(jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE);
           if (jitama[i].x>640) jitama[i].life = 0;
       }
   }
}
//敵キャラクタ移動関数
void TekiMove(void)
{
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].life >0)
       {
           int teki_y = GetRand(40) - 20;
           int teki_x = GetRand(4) - 1;
           tekidata[i].x = tekidata[i].x - teki_x;
           tekidata[i].y = tekidata[i].y - teki_y;
           if (tekidata[i].x<-32) tekidata[i].x = -32;
           if (tekidata[i].y<0) tekidata[i].y = 0;
           if (tekidata[i].y>480 - 32) tekidata[i].y = 480 - 32;
           DrawGraph(tekidata[i].x, tekidata[i].y, tekidata[i].ghandle, TRUE);
       }
   }
}
//当たり判定チェック
int IsAtari(CharaData a, CharaData b)
{
   int retval = 0;
   int ax1 = a.x + (a.image_w - a.bounds_w) / 2;
   int ay1 = a.y + (a.image_h - a.bounds_h) / 2;
   int ax2 = a.x + (a.image_w + a.bounds_w) / 2;
   int ay2 = a.y + (a.image_h + a.bounds_h) / 2;
   int bx1 = b.x + (b.image_w + b.bounds_w) / 2;
   int by1 = b.y + (b.image_h + b.bounds_h) / 2;
   int bx2 = b.x + (b.image_w + b.bounds_w) / 2;
   int by2 = b.y + (b.image_h + b.bounds_h) / 2;
   if ((ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2))
   {
       retval = 1;
   }
   return (retval);
}
//当たり判定メイン
int AtariHantei()
{
   for (int i = 0; i<50; i++)
   {
       if (tekidata[i].life>0)
       {
           if (IsAtari(jikidata, tekidata[i]) == 1) return(1);
           for (int j = 0; j<3; j++)
           {
               if (jitama[j].life>0)
               {
                   if (IsAtari(jitama[j], tekidata[i]) == 1)
                   {
                       jitama[j].life = 0;
                       tekidata[i].life = 0;
                   }
               }
           }
       }
   }
   return (0);
}
//ゲームオーバーチェック関数
void GameOver(void)
{
   MyMove(FALSE);
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].x<64)
       {
           int col = GetColor(255, 0, 0);
           SetFontSize(100);
           SetFontThickness(9);
           ChangeFontType(DX_FONTTYPE_EDGE);
           int x = 320 - GetDrawStringWidth("GAMEOVER", 8) / 2;
           DrawString(x, 160, "GAMEOVER", col);
       }
   }
}
//ゲームクリアチェック関数
void GameClear(void)
{
   int count = 0;
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].life<1)
       {
           count++;
       }
   }
   if (count >= 5)
   {
       int col = GetColor(255, 255, 0);
       SetFontSize(100);
       SetFontThickness(9);
       ChangeFontType(DX_FONTTYPE_EDGE);
       int x = 320 - GetDrawStringWidth("GAMECLEAR", 8) / 2;
       DrawString(x, 160, "GAMECLEAR", col);
   }
}
 
```
### 試したこと  
 
ここに問題に対して試したことを記載してください。  
 
### 補足情報(FW/ツールのバージョンなど)
VisualStudio 2015
ここにより詳細な情報を記載してください。
VisualStudio 2015
  • C++

    5537 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • C

    5661 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Visual Studio

    2987 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • DXライブラリ

    115 questions

    DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

4 バージョン、スクリーンショットの追加

choko103478

choko103478 score 4

2018/06/06 17:40  投稿

「'('が必要です」とたくさん出ます><
### 前提・実現したいこと
![イメージ説明](5c7c6e0c44f6c9725df6d0a8d6a4b506.png)### 前提・実現したいこと
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
友達から貰ったコードなのですが、諸事情で連絡が取ることができないので助けて頂けると幸いです。
### 発生している問題・エラーメッセージ
```
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
```
### 該当のソースコード
```ここに言語を入力
#include"DxLib.h"
//キャラクタ型宣言
struct CharaData
{
   int x;
   int y;
   int ghandle;
   int life;
   int image_w;
   int image_h;
   int bounds_w;
   int bounds_h;
};
//プロトタイプ宣言
void MyMove(int movable);
void JitamaMove(void);
void TekiMove(void);
int IsAtari(CharaData, CharaData);
int AtariHantei(void);
void GameOver(void);
void GameClear(void);
void ChaInit(void);
//構造化設定
struct CharaData jikidata;
struct CharaData jitama[7];
struct CharaData tekidata[5];
int trigger = 0;
//メインプログラム
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
   ChangeWindowMode(true); //ウィンドウモードで起動
   if (DxLib_Init() == -1) return -1; //DXライブラリの初期化
   ChaInit();
   SetDrawScreen(DX_SCREEN_BACK);
   while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
   {
       ClsDrawScreen(); //画面消去
       MyMove(true);
       JitamaMove();
       TekiMove();
       GameOver();
       GameClear();
       if (AtariHantei() == 1)break;
       ScreenFlip();
   }
   DxLib_End();
   return 0;
};
//キャラクタ初期設定
void ChaInit(void)
{
   //自分キャラクタの初期設定
   jikidata.ghandle = LoadGraph("自キャラ.bmp");
   jikidata.x = 0;
   jikidata.y = 0;
   jikidata.image_w = 48;
   jikidata.image_h = 32;
   jikidata.bounds_w = 32;   
   jikidata.bounds_h = 20;
   //自弾の初期設定
   int g = LoadGraph("自弾.bmp");
   for (int i = 0; i<7; i++)
   {
       jitama[i].ghandle = g;
       jitama[i].image_w = 64;
       jitama[i].image_h = 16;
       jitama[i].bounds_w = 48;
       jitama[i].bounds_h = 12;
   }
   //敵キャラクタデータの初期化
   int k = LoadGraph("敵キャラ.bmp");
   for (int i = 0; i<5; i++)
   {
       tekidata[i].ghandle = k;
       tekidata[i].life = 1;
       tekidata[i].x = GetRand(100) + 500;
       tekidata[i].y = GetRand(448);
       tekidata[i].image_w = 32;
       tekidata[i].image_h = 32;
       tekidata[i].bounds_w = 20;
       tekidata[i].bounds_h = 20;
   }
}
//自キャラクタ移動関数
void MyMove(int movable)
{
   int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
   if (key&PAD_INPUT_UP) jikidata.y = jikidata.y - 4 * (movable == TRUE);
   if (key&PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4 * (movable == TRUE);
   if (key&PAD_INPUT_LEFT) jikidata.x -= 4 * (movable == TRUE);
   if (key&PAD_INPUT_RIGHT)jikidata.x += 4 * (movable == TRUE);
   if (jikidata.x<0) jikidata.x = 0;
   if (jikidata.x>640 - 32) jikidata.x = 640 - 32;
   if (jikidata.y<0) jikidata.y = 0;
   if (jikidata.y>480 - 32) jikidata.y = 480 - 32;
   DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE);
}
//自キャラクタ弾の移動関数
void JitamaMove(void)
{
   int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
   if ((key&PAD_INPUT_A) && (trigger == 0))
   {
       for (int i = 0; i<7; i++)
       {
           if (jitama[i].life == 0)
           {
               jitama[i].life = 1;
               jitama[i].x = jikidata.x + 24;
               jitama[i].y = jikidata.y + 0;
               break;
           }
       }
       trigger = 10;
   }
   if (trigger>0) trigger = trigger - 1;
   for (int i = 0; i<7; i++)
   {
       if (jitama[i].life>0)
       {
           jitama[i].x = jitama[i].x + 10;
           DrawGraph(jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE);
           if (jitama[i].x>640) jitama[i].life = 0;
       }
   }
}
//敵キャラクタ移動関数
void TekiMove(void)
{
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].life >0)
       {
           int teki_y = GetRand(40) - 20;
           int teki_x = GetRand(4) - 1;
           tekidata[i].x = tekidata[i].x - teki_x;
           tekidata[i].y = tekidata[i].y - teki_y;
           if (tekidata[i].x<-32) tekidata[i].x = -32;
           if (tekidata[i].y<0) tekidata[i].y = 0;
           if (tekidata[i].y>480 - 32) tekidata[i].y = 480 - 32;
           DrawGraph(tekidata[i].x, tekidata[i].y, tekidata[i].ghandle, TRUE);
       }
   }
}
//当たり判定チェック
int IsAtari(CharaData a, CharaData b)
{
   int retval = 0;
   int ax1 = a.x + (a.image_w - a.bounds_w) / 2;
   int ay1 = a.y + (a.image_h - a.bounds_h) / 2;
   int ax2 = a.x + (a.image_w + a.bounds_w) / 2;
   int ay2 = a.y + (a.image_h + a.bounds_h) / 2;
   int bx1 = b.x + (b.image_w + b.bounds_w) / 2;
   int by1 = b.y + (b.image_h + b.bounds_h) / 2;
   int bx2 = b.x + (b.image_w + b.bounds_w) / 2;
   int by2 = b.y + (b.image_h + b.bounds_h) / 2;
   if ((ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2))
   {
       retval = 1;
   }
   return (retval);
}
//当たり判定メイン
int AtariHantei()
{
   for (int i = 0; i<50; i++)
   {
       if (tekidata[i].life>0)
       {
           if (IsAtari(jikidata, tekidata[i]) == 1) return(1);
           for (int j = 0; j<3; j++)
           {
               if (jitama[j].life>0)
               {
                   if (IsAtari(jitama[j], tekidata[i]) == 1)
                   {
                       jitama[j].life = 0;
                       tekidata[i].life = 0;
                   }
               }
           }
       }
   }
   return (0);
}
//ゲームオーバーチェック関数
void GameOver(void)
{
   MyMove(FALSE);
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].x<64)
       {
           int col = GetColor(255, 0, 0);
           SetFontSize(100);
           SetFontThickness(9);
           ChangeFontType(DX_FONTTYPE_EDGE);
           int x = 320 - GetDrawStringWidth("GAMEOVER", 8) / 2;
           DrawString(x, 160, "GAMEOVER", col);
       }
   }
}
//ゲームクリアチェック関数
void GameClear(void)
{
   int count = 0;
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].life<1)
       {
           count++;
       }
   }
   if (count >= 5)
   {
       int col = GetColor(255, 255, 0);
       SetFontSize(100);
       SetFontThickness(9);
       ChangeFontType(DX_FONTTYPE_EDGE);
       int x = 320 - GetDrawStringWidth("GAMECLEAR", 8) / 2;
       DrawString(x, 160, "GAMECLEAR", col);
   }
}
```
### 試したこと
ここに問題に対して試したことを記載してください。
### 補足情報(FW/ツールのバージョンなど)
VisualStudio 2015
ここにより詳細な情報を記載してください。
  • C++

    5537 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • C

    5661 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Visual Studio

    2987 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • DXライブラリ

    115 questions

    DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

3

choko103478

choko103478 score 4

2018/06/06 17:08  投稿

エラー直して頂けますでしょうか。。。。
「'('が必要です」とたくさん出ます><
### 前提・実現したいこと
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
友達から貰ったコードなのですが、諸事情で連絡が取ることができないので助けて頂けると幸いです。
### 発生している問題・エラーメッセージ
```
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
```
### 該当のソースコード
```ここに言語を入力
#include"DxLib.h"
//キャラクタ型宣言
struct CharaData
{
int x;
int y;
int ghandle;
int life;
int image_w;
int image_h;
int bounds_w;
int bounds_h;
};
//プロトタイプ宣言
void MyMove(int movable);
void JitamaMove(void);
void TekiMove(void);
int IsAtari(CharaData, CharaData);
int AtariHantei(void);
void GameOver(void);
void GameClear(void);
void ChaInit(void);
//構造化設定
struct CharaData jikidata;
struct CharaData jitama[7];
struct CharaData tekidata[5];
int trigger = 0;
//メインプログラム
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
ChangeWindowMode(true); //ウィンドウモードで起動
if (DxLib_Init() == -1) return -1; //DXライブラリの初期化
ChaInit();
SetDrawScreen(DX_SCREEN_BACK);
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClsDrawScreen(); //画面消去
MyMove(true);
JitamaMove();
TekiMove();
GameOver();
GameClear();
if (AtariHantei() == 1)break;
ScreenFlip();
}
DxLib_End();
return 0;
};
//キャラクタ初期設定
void ChaInit(void)
{
//自分キャラクタの初期設定
jikidata.ghandle = LoadGraph("自キャラ.bmp");
jikidata.x = 0;
jikidata.y = 0;
jikidata.image_w = 48;
jikidata.image_h = 32;
jikidata.bounds_w = 32;
jikidata.bounds_h = 20;
//自弾の初期設定
int g = LoadGraph("自弾.bmp");
for (int i = 0; i<7; i++)
{
jitama[i].ghandle = g;
jitama[i].image_w = 64;
jitama[i].image_h = 16;
jitama[i].bounds_w = 48;
jitama[i].bounds_h = 12;
}
//敵キャラクタデータの初期化
int k = LoadGraph("敵キャラ.bmp");
for (int i = 0; i<5; i++)
{
tekidata[i].ghandle = k;
tekidata[i].life = 1;
tekidata[i].x = GetRand(100) + 500;
tekidata[i].y = GetRand(448);
tekidata[i].image_w = 32;
tekidata[i].image_h = 32;
tekidata[i].bounds_w = 20;
tekidata[i].bounds_h = 20;
}
}
//自キャラクタ移動関数
void MyMove(int movable)
{
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if (key&PAD_INPUT_UP) jikidata.y = jikidata.y - 4 * (movable == TRUE);
if (key&PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4 * (movable == TRUE);
if (key&PAD_INPUT_LEFT) jikidata.x -= 4 * (movable == TRUE);
if (key&PAD_INPUT_RIGHT)jikidata.x += 4 * (movable == TRUE);
if (jikidata.x<0) jikidata.x = 0;
if (jikidata.x>640 - 32) jikidata.x = 640 - 32;
if (jikidata.y<0) jikidata.y = 0;
if (jikidata.y>480 - 32) jikidata.y = 480 - 32;
DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE);
}
//自キャラクタ弾の移動関数
void JitamaMove(void)
{
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if ((key&PAD_INPUT_A) && (trigger == 0))
{
for (int i = 0; i<7; i++)
{
if (jitama[i].life == 0)
{
jitama[i].life = 1;
jitama[i].x = jikidata.x + 24;
jitama[i].y = jikidata.y + 0;
break;
}
}
trigger = 10;
}
if (trigger>0) trigger = trigger - 1;
for (int i = 0; i<7; i++)
{
if (jitama[i].life>0)
{
jitama[i].x = jitama[i].x + 10;
DrawGraph(jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE);
if (jitama[i].x>640) jitama[i].life = 0;
}
}
}
//敵キャラクタ移動関数
void TekiMove(void)
{
for (int i = 0; i<5; i++)
{
if (tekidata[i].life >0)
{
int teki_y = GetRand(40) - 20;
int teki_x = GetRand(4) - 1;
tekidata[i].x = tekidata[i].x - teki_x;
tekidata[i].y = tekidata[i].y - teki_y;
if (tekidata[i].x<-32) tekidata[i].x = -32;
if (tekidata[i].y<0) tekidata[i].y = 0;
if (tekidata[i].y>480 - 32) tekidata[i].y = 480 - 32;
DrawGraph(tekidata[i].x, tekidata[i].y, tekidata[i].ghandle, TRUE);
}
}
}
//当たり判定チェック
int IsAtari(CharaData a, CharaData b)
{
int retval = 0;
int ax1 = a.x + (a.image_w - a.bounds_w) / 2;
int ay1 = a.y + (a.image_h - a.bounds_h) / 2;
int ax2 = a.x + (a.image_w + a.bounds_w) / 2;
int ay2 = a.y + (a.image_h + a.bounds_h) / 2;
int bx1 = b.x + (b.image_w + b.bounds_w) / 2;
int by1 = b.y + (b.image_h + b.bounds_h) / 2;
int bx2 = b.x + (b.image_w + b.bounds_w) / 2;
int by2 = b.y + (b.image_h + b.bounds_h) / 2;
if ((ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2))
{
retval = 1;
}
return (retval);
}
//当たり判定メイン
int AtariHantei()
{
for (int i = 0; i<50; i++)
{
if (tekidata[i].life>0)
{
if (IsAtari(jikidata, tekidata[i]) == 1) return(1);
for (int j = 0; j<3; j++)
{
if (jitama[j].life>0)
{
if (IsAtari(jitama[j], tekidata[i]) == 1)
{
jitama[j].life = 0;
tekidata[i].life = 0;
}
}
}
}
}
return (0);
}
//ゲームオーバーチェック関数
void GameOver(void)
{
MyMove(FALSE);
for (int i = 0; i<5; i++)
{
if (tekidata[i].x<64)
{
int col = GetColor(255, 0, 0);
SetFontSize(100);
SetFontThickness(9);
ChangeFontType(DX_FONTTYPE_EDGE);
int x = 320 - GetDrawStringWidth("GAMEOVER", 8) / 2;
DrawString(x, 160, "GAMEOVER", col);
}
}
}
//ゲームクリアチェック関数
void GameClear(void)
{
int count = 0;
for (int i = 0; i<5; i++)
{
if (tekidata[i].life<1)
{
count++;
}
}
if (count >= 5)
{
int col = GetColor(255, 255, 0);
SetFontSize(100);
SetFontThickness(9);
ChangeFontType(DX_FONTTYPE_EDGE);
int x = 320 - GetDrawStringWidth("GAMECLEAR", 8) / 2;
DrawString(x, 160, "GAMECLEAR", col);
}
}
```
### 試したこと
ここに問題に対して試したことを記載してください。
### 補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
  • C++

    5537 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • C

    5661 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Visual Studio

    2987 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • DXライブラリ

    115 questions

    DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

2

choko103478

choko103478 score 4

2018/06/06 16:57  投稿

エラー直して頂けますでしょうか。。。。
### 前提・実現したいこと
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
友達から貰ったコードなのですが、諸事情で連絡が取ることができないので助けて頂けると幸いです。
### 発生している問題・エラーメッセージ
```
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
```
### 該当のソースコード
```ここに言語を入力
#include"DxLib.h"
//キャラクタ型宣言
struct CharaData
{
int x;
int y;
int ghandle;
int life;
int image_w;
int image_h;
int bounds_w;
int bounds_h;
};
//プロトタイプ宣言
void MyMove(int movable);
void JitamaMove(void);
void TekiMove(void);
int IsAtari(CharaData, CharaData);
int AtariHantei(void);
void GameOver(void);
void GameClear(void);
void ChaInit(void);
//構造化設定
struct CharaData jikidata;
struct CharaData jitama[7];
struct CharaData tekidata[5];
int trigger = 0;
//メインプログラム
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
ChangeWindowMode(true); //ウィンドウモードで起動
if (DxLib_Init() == -1) return -1; //DXライブラリの初期化
ChaInit();
SetDrawScreen(DX_SCREEN_BACK);
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClsDrawScreen(); //画面消去
MyMove(true);
JitamaMove();
TekiMove();
GameOver();
GameClear();
if (AtariHantei() == 1)break;
ScreenFlip();
}
DxLib_End();
return 0;
};
//キャラクタ初期設定
void ChaInit(void)
{
//自分キャラクタの初期設定
jikidata.ghandle = LoadGraph("自キャラ.bmp");
jikidata.x = 0;
jikidata.y = 0;
jikidata.image_w = 48;
jikidata.image_h = 32;
jikidata.bounds_w = 32;
jikidata.bounds_h = 20;
//自弾の初期設定
int g = LoadGraph("自弾.bmp");
for (int i = 0; i<7; i++)
{
jitama[i].ghandle = g;
jitama[i].image_w = 64;
jitama[i].image_h = 16;
jitama[i].bounds_w = 48;
jitama[i].bounds_h = 12;
}
//敵キャラクタデータの初期化
int k = LoadGraph("敵キャラ.bmp");
for (int i = 0; i<5; i++)
{
tekidata[i].ghandle = k;
tekidata[i].life = 1;
tekidata[i].x = GetRand(100) + 500;
tekidata[i].y = GetRand(448);
tekidata[i].image_w = 32;
tekidata[i].image_h = 32;
tekidata[i].bounds_w = 20;
tekidata[i].bounds_h = 20;
}
}
//自キャラクタ移動関数
void MyMove(int movable)
{
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if (key&PAD_INPUT_UP) jikidata.y = jikidata.y - 4 * (movable == TRUE);
if (key&PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4 * (movable == TRUE);
if (key&PAD_INPUT_LEFT) jikidata.x -= 4 * (movable == TRUE);
if (key&PAD_INPUT_RIGHT)jikidata.x += 4 * (movable == TRUE);
if (jikidata.x<0) jikidata.x = 0;
if (jikidata.x>640 - 32) jikidata.x = 640 - 32;
if (jikidata.y<0) jikidata.y = 0;
if (jikidata.y>480 - 32) jikidata.y = 480 - 32;
DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE);
}
//自キャラクタ弾の移動関数
void JitamaMove(void)
{
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if ((key&PAD_INPUT_A) && (trigger == 0))
{
for (int i = 0; i<7; i++)
{
if (jitama[i].life == 0)
{
jitama[i].life = 1;
jitama[i].x = jikidata.x + 24;
jitama[i].y = jikidata.y + 0;
break;
}
}
trigger = 10;
}
if (trigger>0) trigger = trigger - 1;
for (int i = 0; i<7; i++)
{
if (jitama[i].life>0)
{
jitama[i].x = jitama[i].x + 10;
DrawGraph(jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE);
if (jitama[i].x>640) jitama[i].life = 0;
}
}
}
//敵キャラクタ移動関数
void TekiMove(void)
{
for (int i = 0; i<5; i++)
{
if (tekidata[i].life >0)
{
int teki_y = GetRand(40) - 20;
int teki_x = GetRand(4) - 1;
tekidata[i].x = tekidata[i].x - teki_x;
tekidata[i].y = tekidata[i].y - teki_y;
if (tekidata[i].x<-32) tekidata[i].x = -32;
if (tekidata[i].y<0) tekidata[i].y = 0;
if (tekidata[i].y>480 - 32) tekidata[i].y = 480 - 32;
DrawGraph(tekidata[i].x, tekidata[i].y, tekidata[i].ghandle, TRUE);
}
}
}
//当たり判定チェック
int IsAtari(CharaData a, CharaData b)
{
int retval = 0;
int ax1 = a.x + (a.image_w - a.bounds_w) / 2;
int ay1 = a.y + (a.image_h - a.bounds_h) / 2;
int ax2 = a.x + (a.image_w + a.bounds_w) / 2;
int ay2 = a.y + (a.image_h + a.bounds_h) / 2;
int bx1 = b.x + (b.image_w + b.bounds_w) / 2;
int by1 = b.y + (b.image_h + b.bounds_h) / 2;
int bx2 = b.x + (b.image_w + b.bounds_w) / 2;
int by2 = b.y + (b.image_h + b.bounds_h) / 2;
if ((ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2))
{
retval = 1;
}
return (retval);
}
//当たり判定メイン
int AtariHantei()
{
for (int i = 0; i<50; i++)
{
if (tekidata[i].life>0)
{
if (IsAtari(jikidata, tekidata[i]) == 1) return(1);
for (int j = 0; j<3; j++)
{
if (jitama[j].life>0)
{
if (IsAtari(jitama[j], tekidata[i]) == 1)
{
jitama[j].life = 0;
tekidata[i].life = 0;
}
}
}
}
}
return (0);
}
//ゲームオーバーチェック関数
void GameOver(void)
{
MyMove(FALSE);
for (int i = 0; i<5; i++)
{
if (tekidata[i].x<64)
{
int col = GetColor(255, 0, 0);
SetFontSize(100);
SetFontThickness(9);
ChangeFontType(DX_FONTTYPE_EDGE);
int x = 320 - GetDrawStringWidth("GAMEOVER", 8) / 2;
DrawString(x, 160, "GAMEOVER", col);
}
}
}
//ゲームクリアチェック関数
void GameClear(void)
{
int count = 0;
for (int i = 0; i<5; i++)
{
if (tekidata[i].life<1)
{
count++;
}
}
if (count >= 5)
{
int col = GetColor(255, 255, 0);
SetFontSize(100);
SetFontThickness(9);
ChangeFontType(DX_FONTTYPE_EDGE);
int x = 320 - GetDrawStringWidth("GAMECLEAR", 8) / 2;
DrawString(x, 160, "GAMECLEAR", col);
}
}
```
### 試したこと
ここに問題に対して試したことを記載してください。
### 補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
  • C++

    5537 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • C

    5661 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Visual Studio

    2987 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • DXライブラリ

    115 questions

    DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

1 コード

choko103478

choko103478 score 4

2018/06/06 16:04  投稿

エラー直して頂けますでしょうか。。。。
### 前提・実現したいこと
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
友達から貰ったコードなのですが、諸事情で連絡が取ることができないので助けて頂けると幸いです。
### 発生している問題・エラーメッセージ
```
何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
```
### 該当のソースコード
```ここに言語を入力  
#include"DxLib.h"
//キャラクタ型宣言
struct CharaData
{
   int x;
   int y;
   int ghandle;
   int life;
   int image_w;
   int image_h;
   int bounds_w;
   int bounds_h;
};
//プロトタイプ宣言
void MyMove(int movable);
void JitamaMove(void);
void TekiMove(void);
int IsAtari(CharaData, CharaData);
int AtariHantei(void);
void GameOver(void);
void GameClear(void);
void ChaInit(void);
//構造化設定
struct CharaData jikidata;
struct CharaData jitama[7];
struct CharaData tekidata[5];
int trigger = 0;
//メインプログラム
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
   ChangeWindowMode(true); //ウィンドウモードで起動
   if (DxLib_Init() == -1) return -1; //DXライブラリの初期化
   ChaInit();
   SetDrawScreen(DX_SCREEN_BACK);
   while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
   {
       ClsDrawScreen(); //画面消去
       MyMove(true);
       JitamaMove();
       TekiMove();
       GameOver();
       GameClear();
       if (AtariHantei() == 1)break;
       ScreenFlip();
   }
   DxLib_End();
   return 0;
};
//キャラクタ初期設定
void ChaInit(void)
{
   //自分キャラクタの初期設定
   jikidata.ghandle = LoadGraph("自キャラ.bmp");
   jikidata.x = 0;
   jikidata.y = 0;
   jikidata.image_w = 48;
   jikidata.image_h = 32;
   jikidata.bounds_w = 32;   
   jikidata.bounds_h = 20;
   //自弾の初期設定
   int g = LoadGraph("自弾.bmp");
   for (int i = 0; i<7; i++)
   {
       jitama[i].ghandle = g;
       jitama[i].image_w = 64;
       jitama[i].image_h = 16;
       jitama[i].bounds_w = 48;
       jitama[i].bounds_h = 12;
   }
   //敵キャラクタデータの初期化
   int k = LoadGraph("敵キャラ.bmp");
   for (int i = 0; i<5; i++)
   {
       tekidata[i].ghandle = k;
       tekidata[i].life = 1;
       tekidata[i].x = GetRand(100) + 500;
       tekidata[i].y = GetRand(448);
       tekidata[i].image_w = 32;
       tekidata[i].image_h = 32;
       tekidata[i].bounds_w = 20;
       tekidata[i].bounds_h = 20;
   }
}
//自キャラクタ移動関数
void MyMove(int movable)
{
   int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
   if (key&PAD_INPUT_UP) jikidata.y = jikidata.y - 4 * (movable == TRUE);
   if (key&PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4 * (movable == TRUE);
   if (key&PAD_INPUT_LEFT) jikidata.x -= 4 * (movable == TRUE);
   if (key&PAD_INPUT_RIGHT)jikidata.x += 4 * (movable == TRUE);
   if (jikidata.x<0) jikidata.x = 0;
   if (jikidata.x>640 - 32) jikidata.x = 640 - 32;
   if (jikidata.y<0) jikidata.y = 0;
   if (jikidata.y>480 - 32) jikidata.y = 480 - 32;
   DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE);
}
//自キャラクタ弾の移動関数
void JitamaMove(void)
{
   int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
   if ((key&PAD_INPUT_A) && (trigger == 0))
   {
       for (int i = 0; i<7; i++)
       {
           if (jitama[i].life == 0)
           {
               jitama[i].life = 1;
               jitama[i].x = jikidata.x + 24;
               jitama[i].y = jikidata.y + 0;
               break;
           }
       }
       trigger = 10;
   }
   if (trigger>0) trigger = trigger - 1;
   for (int i = 0; i<7; i++)
   {
       if (jitama[i].life>0)
       {
           jitama[i].x = jitama[i].x + 10;
           DrawGraph(jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE);
           if (jitama[i].x>640) jitama[i].life = 0;
       }
   }
}
//敵キャラクタ移動関数
void TekiMove(void)
{
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].life >0)
       {
           int teki_y = GetRand(40) - 20;
           int teki_x = GetRand(4) - 1;
           tekidata[i].x = tekidata[i].x - teki_x;
           tekidata[i].y = tekidata[i].y - teki_y;
           if (tekidata[i].x<-32) tekidata[i].x = -32;
           if (tekidata[i].y<0) tekidata[i].y = 0;
           if (tekidata[i].y>480 - 32) tekidata[i].y = 480 - 32;
           DrawGraph(tekidata[i].x, tekidata[i].y, tekidata[i].ghandle, TRUE);
       }
   }
}
//当たり判定チェック
int IsAtari(CharaData a, CharaData b)
{
   int retval = 0;
   int ax1 = a.x + (a.image_w - a.bounds_w) / 2;
   int ay1 = a.y + (a.image_h - a.bounds_h) / 2;
   int ax2 = a.x + (a.image_w + a.bounds_w) / 2;
   int ay2 = a.y + (a.image_h + a.bounds_h) / 2;
   int bx1 = b.x + (b.image_w + b.bounds_w) / 2;
   int by1 = b.y + (b.image_h + b.bounds_h) / 2;
   int bx2 = b.x + (b.image_w + b.bounds_w) / 2;
   int by2 = b.y + (b.image_h + b.bounds_h) / 2;
   if ((ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2))
   {
       retval = 1;
   }
   return (retval);
}
//当たり判定メイン
int AtariHantei()
{
   for (int i = 0; i<50; i++)
   {
       if (tekidata[i].life>0)
       {
           if (IsAtari(jikidata, tekidata[i]) == 1) return(1);
           for (int j = 0; j<3; j++)
           {
               if (jitama[j].life>0)
               {
                   if (IsAtari(jitama[j], tekidata[i]) == 1)
                   {
                       jitama[j].life = 0;
                       tekidata[i].life = 0;
                   }
               }
           }
       }
   }
   return (0);
}
//ゲームオーバーチェック関数
void GameOver(void)
{
   MyMove(FALSE);
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].x<64)
       {
           int col = GetColor(255, 0, 0);
           SetFontSize(100);
           SetFontThickness(9);
           ChangeFontType(DX_FONTTYPE_EDGE);
           int x = 320 - GetDrawStringWidth("GAMEOVER", 8) / 2;
           DrawString(x, 160, "GAMEOVER", col);
       }
   }
}
//ゲームクリアチェック関数
void GameClear(void)
{
   int count = 0;
   for (int i = 0; i<5; i++)
   {
       if (tekidata[i].life<1)
       {
           count++;
       }
   }
   if (count >= 5)
   {
       int col = GetColor(255, 255, 0);
       SetFontSize(100);
       SetFontThickness(9);
       ChangeFontType(DX_FONTTYPE_EDGE);
       int x = 320 - GetDrawStringWidth("GAMECLEAR", 8) / 2;
       DrawString(x, 160, "GAMECLEAR", col);
   }
}
```  
### 試したこと
ここに問題に対して試したことを記載してください。
### 補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
  • C++

    5537 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • C

    5661 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Visual Studio

    2987 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • DXライブラリ

    115 questions

    DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る