初めまして、こんにちは。
回答させていただきます。
breakはしなくても問題なさそうですね。
もしパネルに重なり部分がないのでしたら、breakした方が処理的には軽くて良いかとは思いますが。
ソースをお借りしまして試してみたのですが、私の環境では、多少違和感がありました(後述)が、基本的に問題なく意図した動作をしました。
ですので、紅葉さんの仰る通り、何かしらの値が正確にinputされてないのだと思います。
x, y, panelの値をご確認いただければと思います。
以下、ソースとなります。
コメントアウトしました箇所は、お借りしたソースの原本です。
コメントアウトされてないものは、元の
panel
[j].x+32,panel[j].x-32,panel[j].y+32,panel[j].y-32
の部分の[+|-]32が気になりまして、削除いたしましたものです。
#include <stdio.h>
#include <stdlib.h>
static const int HEIGHT_MAX = 10;
static const int WIDTH_MAX = 10;
class CPanel{
public:
int x;
int y;
int num;
};
int main(){
int x = 100;
int y = 100;
CPanel panel[HEIGHT_MAX][WIDTH_MAX];
for( int i=0; i<HEIGHT_MAX; i++ ){
for( int j=0; j<WIDTH_MAX; j++ ){
panel[j].x = j*64;
panel[j].y = i*64;
panel[j].num = ((int)rand())%2 + 1;
}
}
/*
for( int i=0; i<HEIGHT_MAX; i++ ){
for( int j=0; j<WIDTH_MAX; j++ ){
if((int)x-32 < panel[j].x+32 && (int)x+32 > panel[j].x-32 &&
(int)y-32 < panel[j].y+32 && (int)y+32 > panel[i][j].y-32){
if( panel[i][j].num == 1 ) panel[i][j].num = 2;
else if( panel[i][j].num == 2 ) panel[i][j].num = 1;
}
}
}
*/
for( int i=0; i<HEIGHT_MAX; i++ ){
for( int j=0; j<WIDTH_MAX; j++ ){
if((int)x-32 < panel[i][j].x && (int)x+32 > panel[i][j].x &&
(int)y-32 < panel[i][j].y && (int)y+32 > panel[i][j].y){
if( panel[i][j].num == 1 ) panel[i][j].num = 2;
else if( panel[i][j].num == 2 ) panel[i][j].num = 1;
}
}
}
}