mojtaba_cpp
یک شنبه 20 خرداد 1386, 02:03 صبح
سلام .
مدتی هست که تو این سایت عضو شدم . البته به خاطر قسمت ساخت بازی . حدود دو هفته هم می شه که ++C رو شروع کردم . دیدم بعضی ها هم دنبال کدش می گردن . این سورسیه که امروز بعد از چند ساعت کله زدن ! بدست آوردم :
#include <iostream.h>
int main()
{
int board[8][8] = { 0 },
horizontal[8] = { 2, 1, -1, -2, -2, -1, 1, 2 },
vertical[8] = { -1, -2, -2, -1, 1, 2, 2, 1 },
currentRow = 0,
currentColumn = 0,
r = 0,
c = 0,
hr1,
hc1,
hr2,
hc2,
hr3,
hc3,
score1,
score2,
accessibility[8][8] = { 2, 3, 4, 4, 4, 4, 3, 2,
3, 4, 6, 6, 6, 6, 4, 3,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
3, 4, 6, 6, 6, 6, 4, 3,
2, 3, 4, 4, 4, 4, 3, 2 };
for ( int a = 1 ; a <= 64 ; a++ ) {
score1 = 9;
for ( int b = 0 ; b < 8 ; b++ ) {
hr1 = currentRow + vertical[b];
hc1 = currentColumn + horizontal[b];
if ( hr1 >= 0 && hr1 <= 7 && hc1 >= 0 && hc1 <= 7 &&
board[hr1][hc1] == 0 && accessibility[hr1][hc1] < score1 ) {
score1 = accessibility[hr1][hc1];
}
}
score2 = 9;
for ( int d = 0 ; d < 8 ; d++ ) {
hr1 = currentRow + vertical[d];
hc1 = currentColumn + horizontal[d];
if ( hr1 >= 0 && hr1 <= 7 && hc1 >= 0 && hc1 <= 7 &&
board[hr1][hc1] == 0 && accessibility[hr1][hc1] <= score1 ) {
board[hr1][hc1] = 1;
for ( int e = 0 ; e < 8 ; e++ ) {
hr2 = hr1 + vertical[e];
hc2 = hc1 + horizontal[e];
if ( hr2 >= 0 && hr2 <= 7 && hc2 >= 0 && hc2 <= 7 &&
accessibility[hr2][hc2] < score2 ) {
score2 = accessibility[hr2][hc2];
r = hr1;
c = hc1;
}
}
board[hr1][hc1] = 0;
}
}
for ( int f = 0 ; f < 8 ; f++) {
hr3 = r + vertical[f];
hc3 = c + horizontal[f];
if ( hr3 >= 0 && hr3 <= 7 && hc3 >= 0 && hc3 <= 7 )
accessibility[hr3][hc3] -= 1;
}
cout << r << " " << c << endl;
board[r][c] = 1;
currentRow = r;
currentColumn = c;
}
for ( int m = 0 ; m < 8 ; m++ ) {
for ( int n = 0 ; n < 8 ; n++ ) {
cout << board[m][n] << " ";
}
cout << endl;
}
cout << endl;
return 0;
}
البته بهینه بودن یا نبودنش رو نمی دونم ولی کار می کن . به نظرتون چه طوری بهینه اش کنم ؟؟؟
مدتی هست که تو این سایت عضو شدم . البته به خاطر قسمت ساخت بازی . حدود دو هفته هم می شه که ++C رو شروع کردم . دیدم بعضی ها هم دنبال کدش می گردن . این سورسیه که امروز بعد از چند ساعت کله زدن ! بدست آوردم :
#include <iostream.h>
int main()
{
int board[8][8] = { 0 },
horizontal[8] = { 2, 1, -1, -2, -2, -1, 1, 2 },
vertical[8] = { -1, -2, -2, -1, 1, 2, 2, 1 },
currentRow = 0,
currentColumn = 0,
r = 0,
c = 0,
hr1,
hc1,
hr2,
hc2,
hr3,
hc3,
score1,
score2,
accessibility[8][8] = { 2, 3, 4, 4, 4, 4, 3, 2,
3, 4, 6, 6, 6, 6, 4, 3,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
3, 4, 6, 6, 6, 6, 4, 3,
2, 3, 4, 4, 4, 4, 3, 2 };
for ( int a = 1 ; a <= 64 ; a++ ) {
score1 = 9;
for ( int b = 0 ; b < 8 ; b++ ) {
hr1 = currentRow + vertical[b];
hc1 = currentColumn + horizontal[b];
if ( hr1 >= 0 && hr1 <= 7 && hc1 >= 0 && hc1 <= 7 &&
board[hr1][hc1] == 0 && accessibility[hr1][hc1] < score1 ) {
score1 = accessibility[hr1][hc1];
}
}
score2 = 9;
for ( int d = 0 ; d < 8 ; d++ ) {
hr1 = currentRow + vertical[d];
hc1 = currentColumn + horizontal[d];
if ( hr1 >= 0 && hr1 <= 7 && hc1 >= 0 && hc1 <= 7 &&
board[hr1][hc1] == 0 && accessibility[hr1][hc1] <= score1 ) {
board[hr1][hc1] = 1;
for ( int e = 0 ; e < 8 ; e++ ) {
hr2 = hr1 + vertical[e];
hc2 = hc1 + horizontal[e];
if ( hr2 >= 0 && hr2 <= 7 && hc2 >= 0 && hc2 <= 7 &&
accessibility[hr2][hc2] < score2 ) {
score2 = accessibility[hr2][hc2];
r = hr1;
c = hc1;
}
}
board[hr1][hc1] = 0;
}
}
for ( int f = 0 ; f < 8 ; f++) {
hr3 = r + vertical[f];
hc3 = c + horizontal[f];
if ( hr3 >= 0 && hr3 <= 7 && hc3 >= 0 && hc3 <= 7 )
accessibility[hr3][hc3] -= 1;
}
cout << r << " " << c << endl;
board[r][c] = 1;
currentRow = r;
currentColumn = c;
}
for ( int m = 0 ; m < 8 ; m++ ) {
for ( int n = 0 ; n < 8 ; n++ ) {
cout << board[m][n] << " ";
}
cout << endl;
}
cout << endl;
return 0;
}
البته بهینه بودن یا نبودنش رو نمی دونم ولی کار می کن . به نظرتون چه طوری بهینه اش کنم ؟؟؟