5目並べを作っております
Posted: 2010年4月21日(水) 08:20
DXライブラリで5目並べを作っており判定以外の実装は出来ました。
しかし判定について検討がつかなく質問させて頂きました。
Mapという二次元配列に白なら1、黒なら2というように入っております。
この値を見てどっちが勝ったかのWinF(int型)判定をしたいです。
動作は特に問題ないようなのですがソースはこんな感じで大丈夫なのでしょうか?
汚いソースで申し訳ないのですがアドバイスを頂けないでしょうか?
しかし判定について検討がつかなく質問させて頂きました。
Mapという二次元配列に白なら1、黒なら2というように入っております。
この値を見てどっちが勝ったかのWinF(int型)判定をしたいです。
動作は特に問題ないようなのですがソースはこんな感じで大丈夫なのでしょうか?
汚いソースで申し訳ないのですがアドバイスを頂けないでしょうか?
一部抜粋
#define CEL_W 18
#define CEL_H 18
int Map[CEL_H][CEL_W];
bool Check = false;
for(int i=0; i<CEL_H; i++){
for(int j=0; j<CEL_W; j++){
for(int Num=1; Num<PlayCount+1; Num++){
// 横
if(j < CEL_W-3){
if(Map[j] == Num && Map[j+1] == Num && Map[j+2] == Num && Map[j+3] == Num ) Check = true;
}
// 縦
if(i < CEL_H-3){
if(Map[j] == Num && Map[i+1][j] == Num && Map[i+2][j] == Num && Map[i+3][j] == Num ) Check = true;
}
// 斜め右下
if(i < CEL_H-3 && j < CEL_W-3){
if(Map[j] == Num && Map[i+1][j+1] == Num && Map[i+2][j+2] == Num && Map[i+3][j+3] == Num ) Check = true;
}
// 斜め右上
if(i > 3 && j < CEL_W-3){
if(Map[j] == Num && Map[i-1][j+1] == Num && Map[i-2][j+2] == Num && Map[i-3][j+3] == Num ) Check = true;
}
if(Check){
WinF = Num;
}
Check = false;
}
}
}