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

крестик-нолик - функция победы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
26.11.2010, 17:00     крестик-нолик - функция победы #1
пишу игру крестики нолики.
функция bool win(int x[][n]; порверят на каждом шагу наличие на победу.
Как мне писать грамотно условие проверки?я написал но грр..
C++
1
2
if(x[0][1]==x[0][0] && x[0][1]==x[0][2] || x[0][1]==x[1][2] && x[0][1]==x[2][1])
        return 1;
я помню учитель через фор сделал...я еще код скинул оттуда на флешку но не смог читать дома файл т.к. был заражен файл...вот и сам с самого начала пишу...а там хоть препод помогал..

Добавлено через 3 минуты
хотя можно тип функции объявить как void чтобы проверить если я победил то выводить YOU WON или же YOU LOSE....
зы
пустые клетки это 0,крести это 1 а нолик это 2)))
то есть что то типо такого

1 0 0
2 1 2
0 0 1

YOU WON
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2010, 17:00     крестик-нолик - функция победы
Посмотрите здесь:

C++ крестик-нолик-условие ничьи
крестик-нолик - функция пoбеды C++
C++ Условие победы!
C++ Список, выводит лишний нолик
Интеллект компьютера в игре Крестик-Нолик C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
26.11.2010, 17:01     крестик-нолик - функция победы #2
^Tecktonik_KiLLeR, Если что,вот легинкий пример игры
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
char matrix [3][3]; //Игральная доска
 
char check(void);
void init_matrix(void);
void get_player_move(void);
void get_computer_move(void);
void disp_matrix(void);
 
int main(void)
{
    char done;
    printf("Eto igta xpectuku-noluku\n");
    printf("Bu bydete igrat c komputerom\n");
    done = ' ';
    init_matrix();
    do
    {
                  disp_matrix();
                  get_player_move();
                  done = check(); //есть ли победитель ?
                  if(done != ' ')
                     break;//победитель определен
                  get_computer_move();
                  done = check();
                     
    }while(done == ' ');
    if(done == 'X')
      printf("You WIN!\n");
    else 
      printf("PC WIN!\n"); 
    disp_matrix();   
    getch();
    return 0;
}
 
//Инициализация матрици
void init_matrix(void)
{
     int i, j;
     for(i = 0; i < 3; i++)
        for(j = 0; j < 3; j++)
           matrix[i][j] = ' ';
}
 
//Ход грока
void get_player_move(void)
{
     int x, y;
     printf("Bedute koopdunatu X,Y: ");
     scanf("%d%*c%d", &x, &y);
     x--;
     y--;
     if(matrix[x][y] != ' ')
     {
                     printf("Hevepnuu kod.Poputautec ewe.\n");
                     get_player_move();
     }
     else
                     matrix[x][y] = 'X';
}
 
//Ход компа
void get_computer_move(void)
{
     int i, j;
     for(i = 0; i < 3; i++)
     {
        for(j = 0; j < 3; j++)
           if(matrix[i][j] == ' ')
              break;
        if(matrix[i][j] == ' ')
              break;      
     }
     if(i*j == 9)
        printf("Hichya");
     else 
        matrix[i][j] = 'O';   
}
 
//Вивести матрицу на екран
void disp_matrix(void)
{
     int t;
     for(t = 0; t < 3; t++)
     {
           printf(" %c | %c | %c ", matrix[t][0], matrix[t][1], matrix[t][2]);
           if(t != 2)
             printf("\n---|---|---\n");
     }
     printf("\n");
}
 
//Проверить ести ли победитель
char check(void)
{
     int i;
     for(i = 0; i < 3; i++)
        if(matrix[i][0] == matrix[i][1] && matrix[i][0] == matrix[i][2])
          return matrix[i][0];
     for(i = 0; i < 3; i++)
        if(matrix[0][i] == matrix[i][1] && matrix[0][i] == matrix[i][2])
          return matrix[0][i];
     if(matrix[0][0] == matrix[1][1] && matrix[1][1] == matrix[2][2])
          return matrix[0][0];
     if(matrix[0][2] == matrix[1][1] && matrix[1][1] == matrix[2][0])
          return matrix[0][2]; 
     return ' ';                 
}
Думаю перевести на С++ не составит труда.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
26.11.2010, 17:11  [ТС]     крестик-нолик - функция победы #3
не понятный код
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
26.11.2010, 17:14     крестик-нолик - функция победы #4
^Tecktonik_KiLLeR, Хм,вроде простенкий,к слову, это пример из книги, уже точно не помню какой.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
26.11.2010, 22:21  [ТС]     крестик-нолик - функция победы #5
C++
1
  if(x[0][i] == x[i][1] && x[0][i] == x[i][2])
тут что то не верно...если подставлять вместо i 2-то будет неверно и вылетит ВЫ ПОБЕДИЛИ..

Добавлено через 4 часа 54 минуты
ну блин кто нибудь напишите же это условие
Yandex
Объявления
26.11.2010, 22:21     крестик-нолик - функция победы
Ответ Создать тему
Опции темы

Текущее время: 11:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru