質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

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

DXライブラリ

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

Q&A

解決済

1回答

7292閲覧

DXライブラリで”DrawGraph”があいまいになるエラーを解決したい

Courange

総合スコア17

C++

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

DXライブラリ

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

0グッド

1クリップ

投稿2019/08/12 14:43

前提・実現したいこと

DXライブラリの"DrawGraph"があいまいになるエラーを解決したい

発生している問題・エラーメッセージ

コード説明プロジェクト
E0266"DrawGraph"があいまいですVisualStudio_2019用

該当のソースコード

C++

1#include "DxLib.h" 2 3#define SHOT 15 4 5// WinMain関数 6int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 7 LPSTR lpCmdLine, int nCmdShow) 8{ 9 10 SetFullScreenResolutionMode(DX_FSRESOLUTIONMODE_MAXIMUM); 11 SetGraphMode(1920, 1080, 16); 12 13 int BallX, BallY, BallGraph; 14 int SikakuX, SikakuY, SikakuGraph,SikakuMuki; 15 int SikakuDamageFlag, SikakuDamageCounter, SikakuDamageGraph; 16 int ShotX[SHOT], ShotY[SHOT], ShotFlag[SHOT], ShotGraph; 17 int SikakuW, SikakuH, ShotW, ShotH; 18 int ShotBFlag; 19 int i; 20 21 // DXライブラリ初期化処理 22 if (DxLib_Init() == -1) return -1; 23 24 // グラフィックの描画先を裏画面にセット6 25 SetDrawScreen(DX_SCREEN_BACK); 26 27 // ボール君のグラフィックをメモリにロード&表示座標をセット 28 BallGraph = LoadGraph("Ball.png"); 29 BallX = 288; BallY = 400; 30 31 // 四角君のグラフィックをメモリにロード&表示座標をセット 32 SikakuGraph = LoadGraph("Samplepng.png"); 33 SikakuX = 0; SikakuY = 50; 34 35 SikakuDamageGraph = LoadGraph("SikakuDam.png"); 36 37 SikakuDamageFlag = 0; 38 39 //弾のグラフィックをメモリにロード 40 ShotGraph = LoadGraph("Shot.png"); 41 42 // 弾1・2が画面上に存在しているか保持する変数に『存在していない』を意味する0を代入しておく 43 for (i = 0; i < SHOT; i++) 44 { 45 ShotFlag[i] = 0; 46 } 47 48 //ショットボタンが前のフレームで押されたかどうかを保存する変数に0を代入 49 ShotBFlag = 0; 50 51 // 四角君の移動方向をセット 52 SikakuMuki = 1; 53 54 //弾と四角のグラフィックのサイズを考える 55 GetGraphSize(ShotGraph, &ShotW, &ShotH); GetGraphSize(SikakuGraph, &SikakuW, &SikakuH); 56 57 // 移動ルーチン 58 while (1) 59 { 60 // 画面を初期化(真っ黒にする) 61 ClearDrawScreen(); 62 clsDx(); 63 64 // ボール君の操作ルーチン 65 { 66 // ↑キーを押していたらボール君を上に移動させる 67 if (CheckHitKey(KEY_INPUT_UP) == 1) BallY -= 6; 68 69 // ↓キーを押していたらボール君を下に移動させる 70 if (CheckHitKey(KEY_INPUT_DOWN) == 1) BallY += 6; 71 72 // ←キーを押していたらボール君を左に移動させる 73 if (CheckHitKey(KEY_INPUT_LEFT) == 1) BallX -= 6; 74 75 // →キーを押していたらボール君を右に移動させる 76 if (CheckHitKey(KEY_INPUT_RIGHT) == 1) BallX += 6; 77 78 79 // スペースキーを押した場合は処理を分岐 80 if (CheckHitKey(KEY_INPUT_SPACE)) 81 { 82 //前フレームでショットボタンを押したかが保存されている変数が0だったら弾を発射 83 if (ShotBFlag == 0) 84 { 85 // 画面上にでていない弾があるか、弾の数だけ繰り返して調べる 86 for (i = 0; i < SHOT; i++) 87 { 88 // 弾iが画面上にでていない場合はその弾を画面に出す 89 if (ShotFlag[i] == 0) 90 { 91 int Bw, Bh, Sw, Sh; 92 93 // ボール君と弾の画像のサイズを得る 94 GetGraphSize(BallGraph, &Bw, &Bh); 95 GetGraphSize(ShotGraph, &Sw, &Sh); 96 97 // 弾iの位置をセット、位置はボール君の中心にする 98 ShotX[i] = (Bw - Sw) / 2 + BallX; 99 ShotY[i] = (Bh - Sh) / 2 + BallY; 100 101 // 弾iは現時点を持って存在するので、存在状態を保持する変数に1を代入する 102 ShotFlag[i] = 1; 103 104 // 一つ弾を出したので弾を出すループから抜けます 105 break; 106 } 107 } 108 } 109 //前フレームでショットボタンを押されていたかを保存する変数に1を代入 110 ShotBFlag = 1; 111 } 112 else 113 { 114 /*ショットボタンが押されていなかった場合は前フレームで 115 ショットボタンが押されていたかを保存する変数に0を代入*/ 116 ShotBFlag = 0; 117 } 118 119 // ボール君が画面左端からはみ出そうになっていたら画面内の座標に戻してあげる 120 if (BallX < 0) BallX = 0; 121 122 // ボール君が画面右端からはみ出そうになっていたら画面内の座標に戻してあげる 123 if (BallX > 1920 - 16) BallX = 1920 - 16; 124 125 // ボール君が画面上端からはみ出そうになっていたら画面内の座標に戻してあげる 126 if (BallY < 0) BallY = 0; 127 128 // ボール君が画面下端からはみ出そうになっていたら画面内の座標に戻してあげる 129 if (BallY > 1080 - 16) BallY = 1080 - 16; 130 131 // ボール君を描画 132 DrawGraph(BallX, BallY, BallGraph, TRUE); 133 134 } 135 136 //弾の数だけ弾を動かす処理を繰り返す 137 for (i = 0; i < SHOT; i++) { 138 //自機の弾iの移動ルーチン 139 if (ShotFlag[i] == 1) 140 { 141 //弾iを16ドット上に移動させる 142 ShotY[i] -= 16; 143 144 //画面外に出てしまった場合は存在状態を保持している変数に0を代入する 145 if (ShotY[i] < -80) 146 { 147 ShotFlag[i] = 0; 148 } 149 150 //画面に弾iを描画する 151 DrawGraph(ShotX[i], ShotY[i], ShotGraph, TRUE); 152 } 153 } 154 // 四角君の移動ルーチン 155 if (SikakuDamageFlag == 1) { 156 DrawGraph(SikakuX, SikakuY, SikakuDamageGraph, TRUE); 157 158 SikakuDamageCounter++; 159 160 if (SikakuDamageCounter == 30) 161 { 162 SikakuDamageFlag = 0; 163 } 164 } 165 else 166 { 167 // 四角君の座標を移動している方向に移動する 168 if (SikakuMuki == 1) SikakuX += 3; 169 if (SikakuMuki == 0) SikakuX -= 3; 170 171 // 四角君が画面右端からでそうになっていたら画面内の座標に戻してあげ、移動する方向も反転する 172 if (SikakuX > 1900 - 16) 173 { 174 SikakuX = 1900 - 16; 175 SikakuMuki = 0; 176 } 177 178 // 四角君が画面左端からでそうになっていたら画面内の座標に戻してあげ、移動する方向も反転する 179 if (SikakuX < 0) 180 { 181 SikakuX = 0; 182 SikakuMuki = 1; 183 } 184 185 // 四角君を描画 186 DrawGraph(SikakuX, SikakuY, SikakuGraph, FALSE); 187 } 188 //弾と敵の当たり判定、弾の数だけ繰り返す 189 for(i = 0;i < SHOT;i++) 190 { 191 //弾iが存在している場合のみ次の処理に移る 192 if (ShotFlag[i] == 1) 193 { 194 // 四角君との当たり判定 195 if (((ShotX[i] > SikakuX && ShotX[i] < SikakuX + SikakuW) || 196 (SikakuX > ShotX[i] && SikakuX < ShotX[i] + ShotW)) && 197 ((ShotY[i] > SikakuY && ShotY[i] < SikakuY + SikakuH) || 198 (SikakuY > ShotY[i] && SikakuY < ShotY[i] + ShotH))) 199 { 200 // 接触している場合は当たった弾の存在を消す 201 ShotFlag[i] = 0; 202 } 203 } 204 205 } 206 207 printfDx("X %d:Y %d", BallX, BallY); 208 // 裏画面の内容を表画面にコピーする 209 ScreenFlip(); 210 211 212 // Windows 特有の面倒な処理をDXライブラリにやらせる 213 // -1 が返ってきたらループを抜ける 214 if (ProcessMessage() < 0) break; 215 216 // もしESCキーが押されていたらループから抜ける 217 if (CheckHitKey(KEY_INPUT_ESCAPE)) break; 218 } 219 220 DxLib_End(); // DXライブラリ使用の終了処理 221 222 return 0; // ソフトの終了 223} 224 225

試したこと

"F5"キーで『デバックの開始』ををする。(エラーを残したまま)

結果

新しくウィンドウが出てきて

ビルドエラーが発生しました。最後に成功したビルドを実行しますか?

と表示される。

補足情報(FW/ツールのバージョンなど)

こちらのサイトを参考にしています。

使用しているツール類のバージョン

  • Visual Studio 2019 16.2.1
  • DXライブラリ Windows版 VisualStudio(C++)用(Ver3.20f)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2019/08/12 21:13

エラーメッセージは何と言うてますか? コードのどこ(何行目)ですか?
Courange

2019/08/12 22:04

エラー一覧で上記のようなエラーが4つ 132,151,156,186行目の 132:DrawGraph(BallX, BallY, BallGraph, TRUE); 151:DrawGraph(ShotX[i], ShotY[i], ShotGraph, TRUE); 156:DrawGraph(SikakuX, SikakuY, SikakuDamageGraph, TRUE); 186:DrawGraph(SikakuX, SikakuY, SikakuGraph, FALSE); の部分です。 ・・・もしかしてエラー一覧に書いてあることってエラーメッセージではないのですか?
episteme

2019/08/12 22:09

僕の環境ではその症状を再現できませんでした。ちゃんとコンパイル/リンクできます。
Courange

2019/08/12 23:28

回答ありがとうございました。自分のほうでもう少し解決方法を探してみます。
guest

回答1

0

ベストアンサー

リビルドすれば消えませんか?

投稿2019/08/12 23:42

nicoyou

総合スコア129

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Courange

2019/08/12 23:53

リビルド?ソリューションのリビルドであっていますか? ソリューションのリビルドをした結果普通にデバッグをした時とほぼ同じになりました
nicoyou

2019/08/12 23:57

あってます そうでしたか...私もまれに曖昧になるのですが、大体リビルドするか最悪VSの再起動治るのでもしかしたらと
Courange

2019/08/13 00:01

なるほど まさかの再起動をするという手段をとっていなかったのでパソコンごと再起動してみます。
Courange

2019/08/13 00:14

というわけで再起動したらエラーが消えました。 ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問