ورود

View Full Version : سورس حرکت اسب



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;
}


البته بهینه بودن یا نبودنش رو نمی دونم ولی کار می کن . به نظرتون چه طوری بهینه اش کنم ؟؟؟

delangiz
چهارشنبه 12 دی 1386, 15:39 عصر
خواهش می کنم من خیلی فوری سورس بازی شطرنجو در دلفی می خوام

ICEMAN
چهارشنبه 12 دی 1386, 19:30 عصر
خواهش می کنم من خیلی فوری سورس بازی شطرنجو در دلفی می خوام
موقع ورود دم در ندیدی نوشته بخش مربوط به C و C++

SEZAR_200002000
چهارشنبه 14 دی 1390, 16:55 عصر
سلام دوستان ظاهرا این الگوریتم کار میکنه.
من این پروژه رو واسه پروژه پایان ترمم میخوام ولی میخوام یه کد از خودم بنویسم.
پس لطفا اگه میدونید بگید این کد دقیقا چکار میکنه که بتونم با معلومات خودم جمع بندی کنم!
احیاناد اگه زحمتی نیست توی کد کامنت بزارید.تا یه بار برای همیشه این قضیه اسب و شطرنج رو تو این سایت به همه آموزش بدیم
ممنون

SEZAR_200002000
دوشنبه 26 دی 1390, 13:53 عصر
دوستان کسی نیست که طرز حرکت اسب رو بگه؟

hr1 , hc1 , hc2 و ... چه کاربردی داره؟

hajizadeh.m
دوشنبه 26 دی 1390, 14:51 عصر
بابا این کارا چیه؟چرا اینقدر سختش میکنین واسه خودتون
یه تابع بنویسین که اگه حرکت واسه اسب مجازه true برگردونه
توی تابع هم بنویسین که یا اختلاف y دوتا باشه x یکی ، و یا اختلاف x دوتا باشه , y یکی.اگه هرکدوم از اینا بود درسته
اگه نه false برگردونه