Помогите дописать на С++ игру "шашки"

Тема в разделе "Другие языки", создана пользователем rafic, 1 июн 2011.

Модераторы: Цукер
  1. rafic

    rafic

    Регистр.:
    14 май 2008
    Сообщения:
    477
    Симпатии:
    24
    Код:
    // шашки.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
     
  2. bat

    bat

    Регистр.:
    24 сен 2009
    Сообщения:
    974
    Симпатии:
    276
    Млин если так быстро надо то не изобретай велосипед
    http://forum.3dnews.ru/showthread.php?t=72262
     
  3. rafic

    rafic

    Регистр.:
    14 май 2008
    Сообщения:
    477
    Симпатии:
    24
    Не, мы и половины из того что там есть не учили... и в том разобраться нужно еще, а у меня просто один алгоритм написать и все...