Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Olich666
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 174
1

Функции в Си. Игра "крестики-нолики"

06.02.2015, 13:38. Просмотров 1038. Ответов 3
Метки нет (Все метки)

Помогите пожалуйста разобраться с назначениями функций, т.е. для чего они:

C
1
2
3
4
5
if (isdigit(*k) && a[CharToPos(*k)])
 
int CheckWin(const char* a)
 
unsigned
fflush(stdin) - я так понял это очистка буфера перед scanf...

while (isPlay)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2015, 13:38
Ответы с готовыми решениями:

Игра "Крестики-Нолики" - вдохнуть немного интеллекта в противника-компьютер
Есть исходный код программа запускается работает но все время выигрывает игрок подскажите что нужно...

Вывод игрового поля в игре "крестики-нолики" массивом
Вот у меня есть кусок кода для игры в крестики-нолики , мне нужно сделать так , чтобы часть поля...

Как сделать ИИ для игры "Крестики-нолики"?
как сделать ИИ для крестиков ноликов? напишите какой нибудь алгоритм или сам код, пожалуйста)

Нужно сделать игру "Крестики-Нолики" используя двухмерный массив.
Добрый вечер, ребята. Нам задали очень интесное задание и я думаю что и вам будет интересно мне...

Ошибка в игре "Крестики-нолики" на 5 ячеек
играют 2 игрока,поле 20 на 20. выигрывает тот, кто первым выстраивает пять крестиков (ноликов)...

3
HighPredator
5803 / 2063 / 732
Регистрация: 10.12.2010
Сообщений: 5,873
Записей в блоге: 3
06.02.2015, 13:47 2
Весь код в студию.
0
Olich666
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 174
06.02.2015, 15:27  [ТС] 3
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
#include <stdio.h>
#include <string.h>
#define TRUE  1
#define FALSE 0
 
unsigned CharToPos(char k)
{
   static const int i = 49;
   return (k - i);
}
 
void PField(const char* a)
{
   static const char Field[] = " 1 | 2 | 3 \n"
                                "---+---+---\n"
                                " 4 | 5 | 6 \n"
                                "---+---+---\n"
                                " 7 | 8 | 9 \n";
   const char* k = Field;
   while (*k)
   {
      if (id(*k) && a[CharToPos(*k)])
      {
         printf("%c", a[CharToPos(*k)]);
      }
      else
      {
         printf("%c", *k);
      }
      k++;
   }
}
 
int SetValue(char* a, char val, unsigned pos)
{
   int isExecute = FALSE;
   if (a[pos] == 0)
   {
      a[pos] = val;
      isExecute = TRUE;
   }
   return isExecute;
}
 
int CheckWin(const char* a)
{
   return (a[0] && (a[0] == a[1]) && (a[1] == a[2])) ||
          (a[3] && (a[3] == a[4]) && (a[4] == a[5])) ||
          (a[6] && (a[6] == a[7]) && (a[7] == a[8])) ||
          (a[0] && (a[0] == a[3]) && (a[3] == a[6])) ||
          (a[1] && (a[1] == a[4]) && (a[4] == a[7])) ||
          (a[2] && (a[2] == a[5]) && (a[5] == a[8])) ||
          (a[0] && (a[0] == a[4]) && (a[4] == a[8])) ||
          (a[2] && (a[2] == a[4]) && (a[4] == a[6]));
}
//---------------------------------------------//
int main()
{
   static const char CVal[] = {'x', 'o'};
   char a[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   unsigned notUsed = sizeof(a) / sizeof(*a);
   
   unsigned player = 0;
   char k;
   int isPlay = TRUE;
   PField(a);
   while (isPlay)
   {
      printf("[%c]: ", CVal[player]);
      scanf("%c", &k);
      fflush(stdin);
      printf("\n");
      if (isdigit(k) && SetValue(a, CVal[player], CharToPos(k)))
      {
         notUsed--;
         player = !player;
      }
      PField(a);
      if (CheckWin(a))
      {
         isPlay = FALSE;
         printf("Player '%c' is win!\n", CVal[!player]);
      }
      else if (notUsed == 0)
      {
         isPlay = FALSE;
         printf("Game over\n");
      }
   }
   return 0;
}
0
HighPredator
5803 / 2063 / 732
Регистрация: 10.12.2010
Сообщений: 5,873
Записей в блоге: 3
06.02.2015, 15:53 4
Цитата Сообщение от Olich666 Посмотреть сообщение
if (isdigit(*k) && a[CharToPos(*k)])
Если символ цифра и значение в массиве с индексом, соответствующим позиции цифры, ненулевое... Далее по коду.
Цитата Сообщение от Olich666 Посмотреть сообщение
int CheckWin(const char* a)
Функция проверки текущей ситуации в массиве ходов на выигрыш.
Цитата Сообщение от Olich666 Посмотреть сообщение
unsigned
Спецификатор типа данных.
Цитата Сообщение от Olich666 Посмотреть сообщение
fflush(stdin) - я так понял это очистка буфера перед scanf...
Это вообще неопределенное поведение согласно стандарту.
Цитата Сообщение от Olich666 Посмотреть сообщение
while (isPlay)
Цикл игры. Мол, пока можно играть -- играем.
0
06.02.2015, 15:53
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2015, 15:53

Ошибка в игре "Крестики-нолики"
Всем привет форумчане!)Прошу помощи с решением одной вроде маленькой ошибки,но из за которой игра...

Откомментировать "Крестики-Нолики"
Здравствуйте, ув. форумчане! Проблема такая: код нашел, и немного недопонимаю суть кода. Прошу...

Игра крестики-нолики - пояснить фрагмент программы
Можете объяснить, что происходит в этом фрагменте программы: if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.