Форум программистов, компьютерный форум CyberForum.ru

Крестики-нолики, поиск в массиве для выявления победителя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Intrinsic функция для определения количества единиц в блоке http://www.cyberforum.ru/cpp-beginners/thread1239231.html
Есть блок, скажем типа __m256 и между всеми его байтами нужно выполнить xor. Или, что аналогично, посмотреть, четно ли количество единиц в этом блоке. Есть ли готовые intrinsic функции для этого? Пока не придумала ничего оптимальнее, чем выгружать значения из блока __m256 в обычный вектор и уже там средствами c++ считать количество единиц.
C++ Унаследоваться от базового класса и переопределить часть его данных Есть базовый класс с некоторыми (protected) данными, в том числе объявленными const, и (public) виртуальными функциями. Требуется унаследоваться от него и переопределить часть этих данных. Проблема - const члены класса. Как можно переопределить эти члены так, чтобы изменения подхватывали базовые методы? http://www.cyberforum.ru/cpp-beginners/thread1239229.html
Не работает switch C++
Помогите пожалуйста разобраться. Есть код, все полотно писать не буду, это часть функции класса. Компилируется все нормально, консоль открывается, когда я пытаюсь ввести буквы, case: не понимает, что я символы ввожу, постоянно выдает сообщение после default: "Not grade". char grade; объявлен как символы, хотя как int он тоже должен был работать, поскольку символы могут храниться в любом целом...
При выводе данных char исчезает первый элемент C++
Вот моя программа class Colect { public: Colect(); void Input(); void Output(); private: char *name; int year;
C++ Необъявленный идентификатор http://www.cyberforum.ru/cpp-beginners/thread1239173.html
Подскажите где ошибка? Совсем не давно начал изучать С++. Вроде все правильно. а проверка все ровно выдает ошибку. #include <iostream> class Students { public : void set_name(std::string students_name) { name = students_name; }
C++ Системное событие "Подключение к беспроводной сети" Здравствуйте! нужна помощь в написании одной програмки. Хочу организовать удаленный доступ до своего домашнего компьютера. У меня стоит роутер,на нем порты проброшены,и если я знаю IP интерфейса WAN то спокойно подключаюсь, но если роутер ребутнется то IP Wan'a поменяется. Мой комп автоматом подключается к Wifi роутера. Хочу на нем запустить прогу которая по этому событию будет отправлять мне... подробнее

Показать сообщение отдельно
chubakabra
0 / 0 / 1
Регистрация: 02.08.2014
Сообщений: 6
06.08.2014, 23:07     Крестики-нолики, поиск в массиве для выявления победителя
Это моя первая программа на С++. Маловероятно конечно, но вдруг будет полезно.

Файл model.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef GOMOKU_MODEL
#define GOMOKU_MODEL
   class ModelGomoku {
   private:
      const int Board[11][11];
      bool it_player1;
      enum whoWin{noBody, p1, p2, bohtWin};
   public:
      ModelGomoku();
      bool makeMove(int x, int y);
      int isWin();
      int getCell(int x,int y);
   };//~Model()
#endif
Файл model.ccp
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
#include <iostream>
#include "model.h"
 
ModelGomoku::ModelGomoku() {
   std::cout<<"Игра началась"<<std::endl;
   it_player1==true;
   for(int i=0;i<10;i++){
      Board[i][0]=i;
      for(int j=0;j<10;j++){
         Board[0][j]=j;
         Board[i+1][j+1]=0;
      }//j
   }//i
};//~Model()
int ModelGomoku::getCell(int x,int y){
      return Board[x][y];
   };//~getCell(int x,int y)
bool ModelGomoku::makeMove(int x, int y){
      if((x>0)&&(x<10)&&(y>0)&&(y<10)&&(Board[x][y]==0)){
         if(it_player1){
            Board[x][y]=10;
            it_player1=false;
         }//if
         else{
            Board[x][y]=20;
            it_player1=true;
         };//else 
         return true;        
      }//if
      else{
         return false;
      };//else
   };//~makeMove(int x, int y)
   int ModelGomoku::isWin(){
      for(int i=1;i<10;i++){
         for(int j=1;j<10;j++){
            if((Board[i][j]==10)
            &&(Board[i][j]==Board[i+1][j])
            &&(Board[i+1][j]==Board[i+2][j])
            &&(Board[i+2][j]==Board[i+3][j])
            &&(Board[i+3][j]==Board[i+4][j])){
               std::cout<<"5 крестиков по вертикали"<<std::endl;
               return p1;
            };//if
            if((Board[i][j]==20)
            &&(Board[i][j]==Board[i+1][j])
            &&(Board[i+1][j]==Board[i+2][j])
            &&(Board[i+2][j]==Board[i+3][j])
            &&(Board[i+3][j]==Board[i+4][j])){
               std::cout<<"5 ноликов по вертикали"<<std::endl;
               return p2;
            };//if
            if((Board[i][j]==10)
            &&(Board[i][j]==Board[i][j+1])
            &&(Board[i][j+1]==Board[i][j+2])
            &&(Board[i][j+2]==Board[i][j+3])
            &&(Board[i][j+3]==Board[i][j+4])){
               std::cout<<"5 крестиков по горизонтали"<<std::endl;
               return p1;
            };//if
            if((Board[i][j]==20)
            &&(Board[i][j]==Board[i][j+1])
            &&(Board[i][j+1]==Board[i][j+2])
            &&(Board[i][j+2]==Board[i][j+3])
            &&(Board[i][j+3]==Board[i][j+4])){
               std::cout<<"5 ноликов по горизонтали"<<std::endl;
               return p2;
            };//if
            if((Board[i][j]==10)
            &&(Board[i][j]==Board[i+1][j+1])
            &&(Board[i+1][j+1]==Board[i+2][j+2])
            &&(Board[i+2][j+2]==Board[i+3][j+3])
            &&(Board[i+3][j+3]==Board[i+4][j+4])){
               std::cout<<"5 крестиков по диаганали (сверху вниз слева направо)"<<std::endl;
               return p1;
            };//if
            if((Board[i][j]==20)
            &&(Board[i][j]==Board[i+1][j+1])
            &&(Board[i+1][j+1]==Board[i+2][j+2])
            &&(Board[i+2][j+2]==Board[i+3][j+3])
            &&(Board[i+3][j+3]==Board[i+4][j+4])){
               std::cout<<"5 ноликов по диаганали (сверху вниз слева направо)"<<std::endl;
               return p2;
            };//if
            if((Board[i][j]==10)
            &&(Board[i][j]==Board[i-1][j+1])
            &&(Board[i-1][j+1]==Board[i-2][j+2])
            &&(Board[i-2][j+2]==Board[i-3][j+3])
            &&(Board[i-3][j+3]==Board[i-4][j+4])){
               std::cout<<"5 крестиков по диаганали (сверху вниз справа налево)"<<std::endl;
               return p1;
            };//if
            if((Board[i][j]==20)
            &&(Board[i][j]==Board[i-1][j+1])
            &&(Board[i-1][j+1]==Board[i-2][j+2])
            &&(Board[i-2][j+2]==Board[i-3][j+3])
            &&(Board[i-3][j+3]==Board[i-4][j+4])){
               std::cout<<"5 ноликов по диаганали (сверху вниз справа налево)"<<std::endl;
               return p2;
            };//if
            if(Board[i][j]==0){
               return noBody;
            };//if
         }//j
      }//i
      return bohtWin;
   };//~isWin()
Файл view.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef GOMOKU_VEIW
#define GOMOKU_VEIW
#include "model.h"
   class  ViewGomoku { 
      private:
         ModelGomoku *model;
         void show();
      public:
         void startGame();
         ViewGomoku();
         ViewGomoku(ModelGomoku *m);
   };//~View()
#endif
Файл view.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
#include <iostream>
#include "view.h"
 
ViewGomoku::ViewGomoku() {};
ViewGomoku::ViewGomoku(ModelGomoku *m)
{
   model=m;
};//~View(Model *m)
void ViewGomoku::show(){
   for(int i=0;i<10;i++){
      for(int j=0;j<10;j++){
         switch(model->getCell(i,j)){
         case 0:
            std::cout<<"|_|";
            break;
         case 10:
            std::cout<<"|X|";
            break;
         case 20:
            std::cout<<"|0|";
            break;
         default:     
            std::cout<<"|"<<model->getCell(i,j)<<"|";
            break;
         }//switch
      }//j
         std::cout<<std::endl;
   }//i  
}//show()
void ViewGomoku::startGame(){
   show();
   std::cout<<"Введите имя первого игрока"<<std::endl;
   std::string player1;
   std::cin>>player1;
   std::cout<<"Введите имя вторго игрока"<<std::endl;
   std::string player2;
   std::cin>>player2;
   int w=model->isWin();
   while(w==0){
      std::cout<<player1<<" ходите (вы играете - Х)"<<std::endl;
      int a,b;
      std::cin>>a>>b;
      while(!(model->makeMove(a,b))){
         std::cout<<player1<<" вы сделали неверный ход,попробуйте еще раз"<<std::endl;
         std::cin>>a>>b;
      };//while
      
      show();
      w=model->isWin();
      if(w==0){
         std::cout<<player2<<" ходите (вы играете - 0)"<<std::endl;
         std::cin>>a>>b;
         while(!(model->makeMove(a,b))){
         std::cout<<player2<<" вы сделали неверный ход,попробуйте еще раз"<<std::endl;
         std::cin>>a>>b;
      };//while
         show();
      }//if         
   }//while
   switch(w){
      case 1:
         std::cout<<"ИГРА ЗАКОНЧЕНА: "<<player1<<" выиграл(а)"<<std::endl;
            break;
      case 2:
         std::cout<<"ИГРА ЗАКОНЧЕНА: "<<player2<<" выиграл(а)"<<std::endl;
            break;
      case 3:
         std::cout<<"ИГРА ЗАКОНЧЕНА: БОЕВАЯ НИЧЬЯ"<<std::endl;
            break;
   };//switch
};//startGame()
 
Текущее время: 07:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru