はじめに
C/C++の外部ライブラリなしでゲームを作っているものです。(YouTubeの動画を参考に(パズ◯ラ))
初心者でどこがどのように間違っているのかわからないので質問させていただきます・・・
困っているところ
変数への書き込みについて困っています。
こちらが書いているコードです↓
C
1#include <cstdio> 2#include <cstdlib> 3#include <conio.h> 4#include <iostream> 5#include <ctime> 6using namespace std; 7 8#define BOARD_WIDTH 6 9#define BOARD_HEIGHT 5 10 11enum { 12 DROP_NONE, 13 DROP_FIRE, // 火 14 DROP_WATER, // 水 15 DROP_WOOD, // 木 16 DROP_LIGHT, // 光 17 DROP_DARK, // 闇 18 DROP_MAX 19}; 20 21enum { 22 DROP_STATUS_DEFAULT, 23 DROP_STATUS_HOLD, 24 DROP_STATUS_MAX 25}; 26 27typedef struct { 28 int x, y; 29}VEC2; 30char bropAA[DROP_MAX][DROP_STATUS_MAX][2 + 1] = { 31 {" "," "}, // DROP_NONE, 32 {"▽","▼"}, // DROP_FIRE, // 火 33 {"△","▲"}, // DROP_WATER, // 水 34 {"◇","◆"}, // DROP_WOOD, // 木 35 {"◯","●"}, // DROP_LIGHT, // 光 36 {"☆","★"} // DROP_DARK, // 闇 37}; 38 39int board[BOARD_HEIGHT][BOARD_WIDTH]; 40 41VEC2 cursorPos = {}; 42 43bool holding = false; 44 45int main() { 46 srand((unsigned int)time(NULL)); 47 48 for (int y = 0; y < BOARD_HEIGHT; y++) 49 for (int x = 0; x < BOARD_WIDTH; x++) 50 board[y][x] = 1 + rand() % (DROP_MAX - 1); 51 52 while (true) { 53 system("cls"); 54 for (int y = 0; y < BOARD_HEIGHT; y++) { 55 for (int x = 0; x < BOARD_WIDTH; x++) { 56 int status = DROP_STATUS_DEFAULT; 57 if(holding && (x == cursorPos.x) && (y == cursorPos.y)) 58 status = DROP_STATUS_HOLD; 59 cout << bropAA[board[y][x]][status]; 60 } 61 62 if (y == cursorPos.y) 63 cout << "←"; 64 cout << endl; 65 } 66 67 for (int x = 0; x < BOARD_WIDTH; x++) 68 if (x == cursorPos.x) 69 cout << "↑"; 70 else 71 cout << " "; 72 73 VEC2 lastCursorPos = cursorPos; 74 switch (_getch()) { 75 case 'w':cursorPos.y--; break; 76 case 's':cursorPos.y++; break; 77 case 'a':cursorPos.x--; break; 78 case 'd':cursorPos.x++; break; 79 default: 80 holding = !holding; 81 break; 82 } 83 84 if (holding) 85 int temp = board[cursorPos.y][cursorPos.x]; 86 board[cursorPos.y][cursorPos.x] = board[lastCursorPos.y][lastCursorPos.x]; 87 board[lastCursorPos.y][lastCursorPos.x] = temp; 88 } 89}
このコードの中で困っているのは最後の方の
C
1if (holding) 2 int temp = board[cursorPos.y][cursorPos.x]; 3 board[cursorPos.y][cursorPos.x] = board[lastCursorPos.y][lastCursorPos.x]; 4 board[lastCursorPos.y][lastCursorPos.x] = temp;
の部分です。
int temp にboard[省略][省略]を書き込もうとしてもtempが定義されていませんとエラーが出ます。
参考にしている動画ではコンパイルが通っています。
環境
OS:Windows 10 Home 64bit
コンパイラ:Visual Studio 2022 Preview
使用言語:C/C++
さいごに
こんなことで質問してしまってすみません・・・まだ初心者なもので・・・
一応コードは理解してるつもりなのですが・・・
回答してくださる心優しい方を待ってます・・・
追記
エラーメッセージの詳細を忘れていました・・・
エラーメッセージは以下です。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー (アクティブ) E0020 識別子 "temp" が定義されていません Puzzle and Dragons C:\Users\user\Documents\Programming\C - C++\Puzzle and Dragons\Puzzle and Dragons\source.cpp 87
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/22 14:14
2021/09/22 14:17
2021/09/23 04:39 編集
2021/09/23 05:25
2021/09/23 05:26
2021/09/23 05:37 編集