ШАХМАТЫ 2

#include "stdafx.h" #include <stdio.h> #include <math.h> #include <locale.h> struct chess //координата поля - 1 буква и соответствующий номер, 2 цифра { int a; char b_char; int b; }; int char_to_int(char b_char) //переводит буквенную координату в числовую: a - 1, b - 2,... { int b; b = (int)b_char - (int)'а' + 1; return b; } //функция turn описывает возможные ходы коня при направлениях 1-8 chess turn(chess st, int dir) { chess fn; switch (dir) { case 1: fn.a = st.a - 1; fn.b = st.b + 2; fn.b_char = 0; //??? break; case 2: fn.a = st.a - 2; fn.b = st.b + 1; break; case 3: fn.a = st.a - 2; fn.b = st.b - 1; break; case 4: fn.a = st.a - 1; fn.b = st.b - 2; break; case 5: fn.a = st.a + 1; fn.b = st.b - 2; break; case 6: fn.a = st.a + 2; fn.b = st.b - 1; break; case 7: fn.a = st.a + 2; fn.b = st.b + 1; break; case 8: fn.a = st.a + 1; fn.b = st.b + 2; break; default: break; } return fn; } int place(chess st, chess fn) { int place, ro_height, ro_width; ro_height = fn.a - st.a; ro_width = fn.b - fn.b; if (ro_height > 0) if (ro_width > 0) if (ro_height < ro_width) place = 1; else place = 2; else if (abs(ro_height) < abs(ro_width)) place = 4; else place = 3; else if (ro_width > 0) if (abs(ro_height) < abs(ro_width)) place = 8; else place = 7; else if (abs(ro_height) > abs(ro_width)) place = 6; else place = 5; return place; } void main() { chess F[8][8]; int i, aux_int; char j,aux_c; chess fin; for (j = 0; j <= 8; j++) for (i = 'a'; i <= 'h'; i++) { F[i][j].a = 0; F[i][j].b_char = 'z'; F[i][j].b = 0; } printf("enter the starting square coordinates: \n"); scanf("%c%i", &aux_c, &aux_int); F[aux_int][char_to_int(aux_c)].a = aux_int; F[aux_int][char_to_int(aux_c)].b_char = aux_c; F[aux_int][char_to_int(aux_c)].b = char_to_int(aux_c); printf("enter the finishing square coordinates: \n"); scanf("%c%i", &fin.a, &fin.b_char); fin.b = char_to_int(fin.b_char); F[fin.a][char_to_int(fin.b_char)].a = fin.a; F[fin.a][char_to_int(fin.b_char)].b_char = &fin.b_char; F[fin.a][char_to_int(fin.b_char)].b = char_to_int(fin.b_char); do { turn(F[aux_int][char_to_int(aux_c)], place(F[aux_int][char_to_int(aux_c)], F[fin.a][char_to_int(fin.b_char)])); } while (/*взаимное расположение начальной и конечной координаты не критическое*/); }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.