С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Оптимизация кода игры в крестики нолики. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Имя экземпляра объекта внутри класса на С++ http://www.cyberforum.ru/cpp-beginners/thread946447.html
Добрый день. Подскажите, пожалуйста, как узнать имя экземпляра объекта внутри класса на С++ ? В частности, мне надо имя экземпляра объекта печатать на экран.
C++ Разница между С и С++ Если не брать во внимание объекты и классы, то разница состоит только лишь в cin, cout и директивах? http://www.cyberforum.ru/cpp-beginners/thread946442.html
C++ Рекурсивные функции
1. Написать рекурсивную функцию, которая бы вычисляла n-тое число Фибоначчи. 2. Написать рекурсивную функцию которая печатает элементы массива в обратном порядке.
C++ Принципы отладки в MVS 2012
Привет киберфорумцы! Подскажите пожалуйста, как в режиме отладки путешествовать только по написанному мной коду не, заходя в файлы предоставляемые MVS? А то начинаешь искать ошибку, выставив...
C++ Присвоение значения указателю http://www.cyberforum.ru/cpp-beginners/thread946401.html
Как можно, вот так, присваивать указателю значение? Разве, указатель не должен всегда содержать адрес? const char* szString = "Randy";
C++ function overloading День добрый. Что такое function overloading я понимаю, но вот не очень въезжаю, что требуется от меня в задании (учусь в универе прикладных наук по спец. IT) Вот задание: Write functions... подробнее

Показать сообщение отдельно
Teplotexnik
1 / 1 / 0
Регистрация: 31.08.2013
Сообщений: 25

Оптимизация кода игры в крестики нолики. - C++

31.08.2013, 19:57. Просмотров 1116. Ответов 3
Метки (Все метки)

Написал небольшой код буду благодарен если нормальные программисты порекомендуют как его нужно исправить. это игра в крестики нолики 10*10.
ниже привожу файлы.
Board.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#ifndef _Board_
#define _Board_
#include <iostream>
#include "board.h"
#endif
using namespace std;
 
Board::Board(){
    
    
        Board::SetCell();
            Board::cell_win = Going;
}
Who_Win Board::WhoWinner(){
return cell_win;
}
 
Who_Win Board::IsWin (Who_Win prov){
    int wcount, hcount;
    for (int i=0; i<10; i++){// горизонтальная вертикальная проверка
        wcount=0;
        for (int j=0; j<10; j++){
            hcount=0;
            if (Array[i][j]==prov){
                wcount++;
                if (wcount==5){ 
                    cell_win =prov;
                    return cell_win;
                }
            }
            else{
                wcount =0;
            };
            if (Array[j][i]==prov){
                hcount++;
                if (hcount==5){ 
                    cell_win =prov;
                    return cell_win;
                }
            }
            else{
                hcount =0;
            };
        };
    };
 
    int drCount,dlCount;         //диагональная проверка
    for (int j=-10; j<10; j++){
        drCount=0; dlCount=0;
        for (int i=0;i<10;i++){
            if (((i+j)<10)&&((i+j)>=0)){
                if (Array[i][i+j]==prov){
                    drCount++;
                    if (drCount==5){
                        cell_win=prov;
                    return cell_win;}
                }
                else{
                    drCount =0;}
            };
            if (((j-i+10)<10)&&((j-i+10)>=0)){
                if (Array[i][(j-i+10)]==prov){
                    dlCount++;
                    if (dlCount==5){
                        cell_win=prov;
                        return cell_win;}
                    }
                    else{
                dlCount =0;}
            };
        };
    };
    
    int nobody=0;
    for (int i=0; i<10; i++){
        for (int j=0; j<10; j++){
            if (Array[i][j]==0){nobody++;
            }
        }
    }
    if (!nobody){return Draw;} 
    // cout << cell_win;    
    return cell_win;
    
};
bool Board::SetCell (int set_x, int set_y, XO xo){
    //cout << Array [set_x-1][set_y-1];
    if ((set_x>0)&&(set_x<11)&&(set_y>0)&&(set_y<11)){
    if ((Array[set_x-1][set_y-1]==0)){
                
        Array [set_x-1][set_y-1]= int (xo);
            //  cout << Array [set_x-1][set_y-1];
                return true;
    };
    };
    //Array [set_x-1][set_y-1]= int (xo);
    //  cout << Board::Array [set_x-1][set_y-1];
return false;
};
int Board::GetCell (int set_x, int set_y){
    return Board::Array[set_x][set_y];
};
void  Board::SetCell (){
    for (int i=0; i<10;i++){
        for (int j=0;j<10;j++){
            Board::Array[i][j]=0;
        }; 
    };
}
Board.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
enum Who_Win {Going, X_win, Y_win, Draw};
enum XO {x_count=1,y_count};
 
class Board{
private:
    int Array [10][10];
//  int set_x, set_y;
    Who_Win cell_win;
    static const int FIELD_SIZE=5;
public:
    Who_Win IsWin(Who_Win prov);
    bool SetCell (int set_x, int set_y, XO xo);
    void SetCell ();
    int GetCell (int set_x, int set_y);
    Who_Win WhoWinner();
    Board();
};
BoardView.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
enum Players {PLAYER1=1, PLAYER2};
 
class BoardView 
{
private:
        Board *MyBoard;
        void PrintMap();
public:
    BoardView();
    BoardView(Board* b );
    void GoGame();
    int Proverka (Players player);
};
BoardView.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#ifndef _Board_View_
#define _Board_View_
#include "board.h"
#include <iostream>
#include "boardview.h"
#endif
using namespace std;
 
 
BoardView::BoardView(Board* My) 
{
    MyBoard = My;
};
 
void BoardView::PrintMap(){
    for (int i=0; i<10; i++){
        for (int j=0; j<10; j++){
            switch (MyBoard->GetCell(j,i)){
            case 0: cout << " _";
                break;
            case 1: cout << " X";
                break;
            case 2: cout << " O";
            }
        };
    cout << "\n";
    };
};
 
void BoardView::GoGame(){
 
    Players player;
 
    do{
        player = PLAYER1;
        cout<<"\n" << "1 Player enter the koordinats"<<"\n";
        Proverka(player);
        if (MyBoard->IsWin(X_win)) {break;}
        player = PLAYER2;
        cout<<"\n" << "2 Player enter the koordinats"<<"\n";
        Proverka(player);
        PrintMap();
    }while ((!MyBoard->IsWin(X_win))&&(!MyBoard->IsWin(Y_win)));
    if (MyBoard->WhoWinner()==2){
        cout << "Player 2 WINNER";}
    else {
        cout << "Player 1 WINNER";}
 
    }
 
 
int BoardView::Proverka(Players player){
        int set_x=0;
        int set_y=0;
                do{
        cin >> set_x, 
        cin >>  set_y;
        }while (!MyBoard->SetCell(set_x, set_y, XO(player)));
        
    return 1;
};
 
 
    int main(){
    char teta;
    Board MyBoard;
    BoardView MyBoardview(&MyBoard);
    char moreGames='y';
    do {
        if ((moreGames =='n')||(moreGames =='N'))
        {cout << "Are you sure? Y/N "<<"\n";
        cin >> moreGames;
        if ((moreGames =='y')||(moreGames =='Y')){
        break;} }
    //MyBoardview.GoGame();
    cout << "Do you want again Y/N" << "\n";
    cin >> moreGames;
    }while ((moreGames =='y')||(moreGames =='Y')||(moreGames =='n')||(moreGames =='N'));
    //MyBoardview.PrintMap();
    //cin >> teta;
    return 0;
}
0
Вложения
Тип файла: rar program.rar (1.6 Кб, 21 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.