rafic
Местный житель
- Регистрация
- 14 Май 2008
- Сообщения
- 477
- Реакции
- 24
- Автор темы
- #1
Код:
// шашки.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
void SetColor(int text, int background)
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
int main()
{
const int polex = 8;
const int poley = 8;
int pole[poley][polex] = {0},
figura1 = 1,
figura2 = 2,
newx = -1,
newy = -1,
oldx= -1,
oldy = -1,
figure_player,
current_value,
plauer=0;
bool step=true,
value_exists,
go=true,
plauer1,
plauer2,
error=true;
const int kolfig = 4;
for(int y=0; y<poley; y++){
for(int x=0; x<polex; x++){
if(y >= 5){
if(y%2 != 0){
if(x%2 != 0) pole[x][y] = figura1;
} else {
if(x%2 == 0) pole[x][y] = figura1;
}
}
if(y <= 2){
if(y%2 != 0){
if(x%2 != 0) pole[x][y] = figura2;
} else {
if(x%2 == 0) pole[x][y] = figura2;
}
}
}
}
do{
system("cls");
// Вывод верхней нумерации по X
for(int y=0; y<2; y++){
cout << " ";
for(int x=0; x<polex; x++)
y==0 ? cout << x << " " : cout << "---";
cout << endl;
}
// Вывод верхней нумерации по X (END)
for(int y=0; y<poley; y++){
// Вывод боковой нумерации по Y
SetColor( 11, 0);
cout << y << "| ";
// Вывод боковой нумерации по Y (END)
for(int x=0; x<polex; x++){
pole[x][y] == 0 ? SetColor( 0, 11) : pole[x][y] == 2 ? SetColor( 0, 8) : SetColor( 11, 4);
cout << " " << pole[x][y] << " ";
}
cout << endl;
}
cout << endl;
// Переключение игрока
plauer1 = plauer%2 == 0 ? true : false;
plauer2 = plauer%2 == 1 ? true : false;
SetColor(11, 0);
plauer2 ? cout << "Plauer 2" << endl << endl : cout << "Plauer 1" << endl;
!error ? cout<< "Hoda net!" << endl : cout << endl;
cout<< "OldX: ";
cin >> oldx;
cout<< "OldY: ";
cin >> oldy;
cout<< "NewX: ";
cin >> newx;
cout<< "NewY: ";
cin >> newy;
// Выводим значение в массива по координате следующего хода
current_value = pole[newx][newy];
// Выбор фигуры пользователя
figure_player = plauer1 ? figura1 : figura2;
// Проверка возможности хода
plauer1 ?
step = (newx==oldx-1 && newy == oldy-1) || (newx==oldx+1 && newy == oldy-1)
:
step = (newx==oldx-1 && newy == oldy+1) || (newx==oldx+1 && newy == oldy+1);
// Проверка ошибки
error = step && current_value != figure_player;
// Запись ходов в поле
if(error){
pole[newx][newy] = figure_player;
pole[oldx][oldy] = 0;
plauer++;
}
}while(0<1);
system("pause");
return 0;
}
Собственно не хватает правильного алгоритма проверки хода шашек в зависимости от игрока. У меня сейчас модульная неделя, времени свободного понты, а сдать это нужно 02.06.2011