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

Игра Крестики-нолики - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Композиции на основе собственных типов http://www.cyberforum.ru/cpp-beginners/thread708020.html
Здравствуйте. Пытаюсь написать реализацию простенького хештебла на основе связных цепочек для хранения дубликатов столкнулся с проблемой. class HashTable { protected: List* hashArray;
C++ наследование классов Помогите пожалуйста разобраться с задачей Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты получающие академическую стипендию, студенты получающие социальную стипендию. Базовый класс содержит имя и номер зачетной книжки. В информации о студентах получающих академическую стипендию содержится информация о среднем балле на который студент сдал сессию. В... http://www.cyberforum.ru/cpp-beginners/thread708019.html
Разбить main.cpp на файлы C++
Есть вот такой main.cpp: #include <stdlib.h> #include <iostream> #include <string.h> //#include <stdint.h> //#include <limits.h> #include <vector> //#include <iomanip> #include <math.h> #include <time.h>
Почему виртуальный деструктор вызывается дважды? C++
Непонятно: #include <iostream> #include <conio.h> #include<string> using namespace std; class base { public:
C++ Как вернуть индексы массива в функции? http://www.cyberforum.ru/cpp-beginners/thread707985.html
Подскажите пожалуйста, как вернуть mi, mj ?(надо вернуть индексы массива) #include <stdio.h> #include <string.h> #include <math.h> int index(int A); int main() {
C++ Написать код программы.Вычислить значение выражения Помогите написать код программы. Вычислить: подробнее

Показать сообщение отдельно
Andriy24
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 35
25.11.2012, 20:35     Игра Крестики-нолики
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
 
char board[9] = {}; 
 
void clearscreen(){
  for(int i = 0; i<40; i++){
    std::cout<<std::endl;
  }
}
 
void clearboard(){
  for(int i = 0; i<9; i++){
    board[i] = '-';
  }
}
 
bool has_wonQ(char player){
  
  int wins[][3] = {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7},
                    {2,5,8}, {0,4,8}, {2,4,6}};
 
  for(int i = 0; i<8; i++){
    int count = 0;
    for(int j = 0; j<3; j++){
      if(board[wins[i][j]] == player) 
        count++; 
    }
    if(count == 3){
      return true;
    }
  }
  return false;
}
 
void print_board(std::string indent){
        std::cout << std::endl;
        std::cout<<indent<<"-"<<board[6]<<"-|-"<<board[7]<<"-|-"<<board[8]<<"-\n";
    std::cout<<indent<<"-"<<board[3]<<"-|-"<<board[4]<<"-|-"<<board[5]<<"-\n";
    std::cout<<indent<<"-"<<board[0]<<"-|-"<<board[1]<<"-|-"<<board[2]<<"-\n";
}
 
int get_move(){
    std::cout<<"\nMove options: \n";
    std::cout<<"-7-|-8-|-9-" << std::endl;
    std::cout<<"-4-|-5-|-6-" << std::endl;
    std::cout<<"-1-|-2-|-3-" << std::endl;
    std::cout<<"\n";
 
    print_board("");
    std::cout << "\nYour move: "; 
    
    int move;
    std::cin >> move;
    while(move > 9 || move < 1 || board[move-1] != '-'){
        std::cout<<"Please enter a legal move (1-9): \n";
        std::cin >> move;
    }
    return move;
}
char play_and_get_winner(){
  int turn = 1;
  
  while(!has_wonQ('X') && !has_wonQ('O')){
          clearscreen();          
          int move = get_move();
          clearscreen();
          if(turn%2 == 1){
             board[move-1]='X';
             if(has_wonQ('X')){
                std::cout << "Congratulations player X! You have won!\n";
                return 'X';
             }
          } 
          else{ 
             board[move-1]='O';
             if(has_wonQ('O')){
                std::cout << "Congratulations player O! You have won!\n";
                return 'O';
             }
          }
      turn++;
      if(turn == 10){
        std::cout << "\t It's a draw!\n"; 
        return 'D';
      }
  }
 
}
 
int main(){
        std::cout<<"Welcome to tic-tac-toe!\n\n";
        std::string reply = "y";
        int x_wins=0, o_wins=0, ties=0;
 
        while(reply == "y"){
          clearboard();
          char winner = play_and_get_winner();
          print_board("\t  ");
          
          switch(winner){
            case 'X':
              x_wins++;
              break;
            case 'O':
              o_wins++;
              break;
            case 'D':
              ties++;
              break;
          }
          
          std::cout << "\n\t*Winner Statistics*\nPlayer X: " << x_wins 
                    << ", Player O: "<<o_wins << " and Ties: "<<ties<<"\n\n";
          std::cout << "\nWould you like to play again? (y/n): ";
          std::cin  >> reply; 
          while(reply != "y" && reply != "n"){
            std::cout << "Please enter a valid reply (y/n):";
            std::cin >> reply;
          }      
        } // end of while loop
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru