ゲームの座標判定でA1C3または1A3Cまでを座標判定したいのですが、下記の画像のようにうまく判定できていません。
また、このif文だと座標が増えた場合に書く量が膨大になってしまいます。
質問したいことは、
・なぜ下記のコードで判定できていないのか
・座標が増えた場合の今よりも簡単なif判定のアドバイス
をお願いします。
C
1#include <stdio.h> 2#include <string.h> 3 4#define MAXDATA 255 5#define DATA 4 //自分の環境ではAなどが2バイト、1などが1バイトのため、最後に¥nを含めた 6 // 4バイトにしています。(念のため、DATA 10などにもしてみましたがうまくいきませんでした) 7 8int main(void) { 9 char xy[DATA] = { }; 10 char flag = 0; 11 char xy_last = 0; 12 13 while (flag == 0) { 14 printf("A1または1Aと入力してください\n"); 15 16 fgets(xy, MAXDATA, stdin); 17 18 // 配列の最後を¥0にする(表示させる時の改行を防ぐ) 19 xy_last = strlen(xy) - 1; 20 xy[xy_last] = '\0'; 21 22 if (strlen(xy) <= DATA) { 23 // (1~3, A~C)または、(A~C, 1~3)までで入力判定させたい 24 if (((xy == "A1" || xy == "A2" == xy == "A3") || (xy == "1A" || xy == "2A" == xy == "3A") || (xy == "B1" || xy == "B2" == xy == "B3") || (xy == "1B" || xy == "2B" == xy == "3B") || (xy == "C1" || xy == "C2" == xy == "C3") || (xy == "1C" || xy == "2C" == xy == "3C"))) { 25 printf("正しい入力です。\n"); 26 flag++; 27 } 28 } 29 } 30 31 return 0; 32} 33 34```
回答5件
あなたの回答
tips
プレビュー