Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Omsk
0 / 0 / 1
Регистрация: 26.12.2015
Сообщений: 6
1

Игра Крестики-нолики - найти ошибки в коде

13.08.2016, 12:03. Просмотров 390. Ответов 4
Метки нет (Все метки)

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
#include <stdio.h>
#include <stdlib.h>
#define SPACE ' '
char matrix[3][3] = { /* матрица для крестикова-ноликов */
{SPACE, SPACE, SPACE},
{SPACE, SPACE, SPACE},
{SPACE, SPACE, SPACE}
} ;
static void get_computer_move(void), get_player_move(void);
static void disp_matrix(void);
static char check (void);
int main()
{
char done;
printf("This is the game of Tic-Tack-Toe.\n");
printf("You will be playing against the computer.\n");
done = SPACE;
do {
disp_matrix(); /* вывод игровой доски */
get_player_move(); /* ходит игрок */
done = check(); /* проверка на победу */
if (done!=SPACE) break; /* победитель */
get_computer_move(); /* ходит компьютер */
done=check(); /* проверка на победу */
} while(done==SPACE);
if(done=='X') printf("You won!\n");
else printf("I won!!!!\n");
disp_matrix(); /* отображение результирующего положения */
return 0;
}
 
/* ввод хода игрока */
void get_player_move(void)
{
int x,y;
printf("Enter coordinates for your X.\n");
printf("Row? ");
scanf ("%d", &x);
printf("Column? ");
scanf("%d", &y);
if (x<0 || y<0 || x>2 || y>2 || matrix[x] [y] !=SPACE)
{
printf("Invalid move, try again.\n");
get_player_move();
}
else matrix[x][y]='X';
}
 
/* ход компьютера */
void get_computer_move(void)
{
register int t;
char *p;
p = (char *) matrix;
for (t=0; *p!=SPACE && t<9; ++t) p++;
if(t==9)
{
printf("draw\n");
exit(0); /* game over */
}
else *p = '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 t;
char *p;
for(t=0; t<3; t++) { /* проверка строк */
p = &matrix[t] [0];
if (*p==* (p+1) && * (p+1)==*(p+2)) return *p;
}
for(t=0; t<3; t++) { /* проверка столбцов */
P = &matrix[0][t];
if(*p==* (p+3) && *(p+3)==*(p+6)) return *p;
}
 
/* проверка диагоналей */
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 SPACE;
}

Курсач писал, код не пашет, уже запарился, пожалуйста подредактируйте до рабочего состояния)) Всем спасибо!!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2016, 12:03
Ответы с готовыми решениями:

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

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

Функции в Си. Игра "крестики-нолики"
Помогите пожалуйста разобраться с назначениями функций, т.е. для чего они: if (isdigit(*k) &amp;&amp; a)...

Крестики-нолики - найти ошибку
Крестики - нолики. Поле 3х3. Играют два игрока. Первый крестиками,второй ноликами.Ходы задаются...

Игра в крестики-нолики с "умным" компьютером
Скиньте или подскажите как написать код для игры с компьютером в крестики-нолики и это должен быть...

4
magirus
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
27975 / 15701 / 963
Регистрация: 15.09.2009
Сообщений: 67,816
Записей в блоге: 78
13.08.2016, 12:34 2
Цитата Сообщение от Omsk Посмотреть сообщение
подредактируйте до рабочего состояния
ща, только шнурки погладим.
условие задачи в студию.
0
Omsk
0 / 0 / 1
Регистрация: 26.12.2015
Сообщений: 6
13.08.2016, 12:39  [ТС] 3
Игрок играет по очереди с другим игроком (первый игрок ставит крестики, второй игрок нолики) . Первый, выстроивший в ряд 3 свои фигуры по вертикали, горизонтали или диагонали, выигрывает. Первый ход делает игрок, ставящий крестики.
Обычно по завершении партии выигравшая сторона зачеркивает чертой свои три знака (нолика или крестика), составляющих сплошной ряд на поле.


Всё, что написано в условии!
0
Тупенький
-7 / 25 / 3
Регистрация: 09.11.2015
Сообщений: 141
15.08.2016, 08:22 4
Так все работает, откуда Вы списали?
строка 86 - P заменить на p
строка 91 - поставить скобку и отредактировать сетку
0
CoderHuligan
773 / 554 / 203
Регистрация: 30.06.2015
Сообщений: 3,138
Записей в блоге: 24
15.08.2016, 12:00 5
Цитата Сообщение от Тупенький Посмотреть сообщение
откуда Вы списали?
Наверно отсюда он списал:http://www.c-cpp.ru/books/primer-programmy-igry-v-krestiki-noliki
0
15.08.2016, 12:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2016, 12:00

Игра "жизнь" - найти и исправить ошибки в коде
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; #include...

Найти и исправить ошибки в коде: игра "Крепс" (программа из учебника Харви и Пола Дейтелов)
Решил проверить работу программы из учебника Харви Дейтела и Пола Дейтеле. Получается, что при ее...

Сыграем в крестики-нолики?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { char r; int t1, t2; int c1; int...


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

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

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