Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/61: Рейтинг темы: голосов - 61, средняя оценка - 4.64
Amadel
5 / 5 / 0
Регистрация: 07.12.2009
Сообщений: 7
1

Игры на Delphi. Крестики-нолики.

07.12.2009, 00:43. Просмотров 11122. Ответов 20
Метки нет (Все метки)

Крестики-нолики... how to?
Помогите пожалуйста с алгоритмом создания всем известной игры "крестики-нолики". Тема этой игры рассматривалась много раз, правда рассматривалась лишь стандартная традиционная игра (поле 3х3, 9 клеток, игроки ставят по очереди крестик/нолик). Меня же интересует немного другая разновидность игры, где на листе бумаги рисуется поле в виде ромба, игроки по очереди заполняют это поле горизонтальными и вертикальными черточками, когда образуется закрытый квадрат, игрок рисует в нем крестик или нолик. когда все поле заполнено выигрывает тот у кого больше очей.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 00:43
Ответы с готовыми решениями:

Заполнение определенного элемента массива кликом в delphi (крестики-нолики)
Я организовываю массив, потом нужно как-то совместить мапу с массивом, потом...

Выбрать 2 разные стратегии игры в "крестики-нолики" и запрограммировать игру двух игроков
При игре в крестики-нолики выигрывает тот, кто первым выстраивает 5...

Создание игры "Крестики-Нолики"
Нужно создать игру на делфи крестики нолики 3х3 с помощью майн меню , ...

Крестики-нолики
Народ!!! Помогите пожалуйста сделать мне игру крестики-нолики 3х3 поле на...

Крестики нолики
Очень срочно нужна программа для курсовой. Крестики нолили. Обязательно нужен...

20
New_Neznayka
57 / 21 / 3
Регистрация: 29.10.2009
Сообщений: 198
07.12.2009, 23:11 2
я делал недавно эту игру работает канеш хрен знает как )))) даже когда ты выйграешь программа пишет что вы проиграли но об алгоритме я расскажу:
я добавил на форму 9 элементов типа panel при нажатии мышкой на один из них ставиться крестик если уже не поставлен нолик, затем проверяются все клетки и если находятся такие клетки в двух которых стоят нолики и в третьей (если в которую поставить 0 выйграешь) не стоит уже крестик то в неё ставиться 0, если же таких клеток нет то проверяется другое условие: если стоят два крестика и есть возможность между ними поставить ещё один крестик длЯ выйгрыша то в эту panel ставиться 0. если же и это условие не выполняется то 0 ставиться в случайное место! как смог рассказал чё не ясно спрашивайте!
1
Amadel
5 / 5 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 00:13  [ТС] 3
ну ты описал алгоритм игры класической.
http://kis-brys.ru/UserFiles/Image/LOGO/krest_logo.gif
может я не прав, и это называется по другому, но игрок изначально рисует палочки... если я не ошибаюсь игра эта правильно называется ромбы.
http://kis-brys.ru/UserFiles/Image/LOGO/rom_logo.gif
1
New_Neznayka
57 / 21 / 3
Регистрация: 29.10.2009
Сообщений: 198
08.12.2009, 00:27 4
аааа блин полинился не дочитал ваше сообщение(((( а насчёт вашей игры над подумать!
в чём основная проблема ?
0
Amadel
5 / 5 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 00:37  [ТС] 5
основная проблема создать само поле для игрового процесса, задать события, прорисовку, играбельность, доступную простому пользователю. вообще в самой ней не предусматривается ИИ компьютерного игрока, создаётся для игры по сети, это существенно облегчает задачу.
1
New_Neznayka
57 / 21 / 3
Регистрация: 29.10.2009
Сообщений: 198
08.12.2009, 07:28 6
рисовать поле над линиями Canvas.Lineto(x,y);
затем всё поле условно раздилить на точки(поле сосотоит из квадратов) вершины квадратов это ибудут те точки, игрок жмёт мышью на поле и закрашивается ближайшая вершина квадрата и Canvas.MoveTo(x,y) указывает на эту позицию, затем игрок жмёт ещё раз и окрашивается другая ближайшая вершина они соединяются линией Canvas.Lineto(x,y); вот так буду линии рисоваться, ток над как то сделать чтоб за края не уходили и чтоб повторно линии нельзя было рисовать
1
Amadel
5 / 5 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 18:55  [ТС] 7
тоесть, чтобы распределить поле на точки нужно будет создать массив
a : array[1..n] of tpoint;
где tpoint :
type tpoint = record x,y : integer end;
и тогда еще вопрос. если игрок поставил первую точку(начало линии) но передумал и решил отменить, чтобы поставить гдето в другом месте, наверное с помощью ESC отмену действия сделать чтоли..?
1
New_Neznayka
57 / 21 / 3
Регистрация: 29.10.2009
Сообщений: 198
08.12.2009, 18:56 8
можно на правую кнопку мыши отмену сделать
1
Amadel
5 / 5 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 18:58  [ТС] 9
хм... прошу прощения за глупый вопрос, как сделать событие для правой кнопки мыши?
1
New_Neznayka
57 / 21 / 3
Регистрация: 29.10.2009
Сообщений: 198
08.12.2009, 19:01 10
[ссылка на сторонний форум]
1
Amadel
5 / 5 / 0
Регистрация: 07.12.2009
Сообщений: 7
08.12.2009, 19:12  [ТС] 11
вопрос как быть с координатами мыши.
когда я проверяю просто прорисовку при клике, к примеру
Delphi
1
2
3
 x:=mouse.CursorPos.X;
 y:=mouse.CursorPos.Y;
 form1.Image1.Canvas.Ellipse(x-r,y-r,x+r,y+r);
прорисовка происходит совсем в другом месте.
0
БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
23.12.2009, 22:10 12
Скачала себе как образец игру крестики нолики...и возникли вопросы, если несложно - может кто нить посмотреть код и ответить мне на них ? дело в том что все стратегии (выигрыша/проигрыша/ничьи) ясны, но вот почему они хранятся в кнопке пока не ясно... и что значит
Delphi
1
2
button3.Click;
I:=1;
при описании выигрыша
0
Вложения
Тип файла: rar кг.rar (173.5 Кб, 251 просмотров)
БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
27.12.2009, 08:26 13
Мне в игрушечку нужно добавить задержку с помощью таймера перед ходом соперника - 1 или 2 секунды, может кто нибудь с этим помочь?
0
schdub
Эксперт С++
3039 / 1381 / 421
Регистрация: 19.01.2009
Сообщений: 3,700
Завершенные тесты: 1
27.12.2009, 09:07 14
БелкО, исходный код покажи
0
БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
27.12.2009, 09:10 15
прога подобная моей прикреплена постом выше =)
0
schdub
Эксперт С++
3039 / 1381 / 421
Регистрация: 19.01.2009
Сообщений: 3,700
Завершенные тесты: 1
27.12.2009, 10:04 16
Ну вот моя версия.
За задержку перед ходом копьютера отвечает строка
Delphi
1
Sleep(2000);
в треде-решатиле.

В проге использована многопоточность и такой приметив синхронизации, как событие с ручным сбросом.

PS: программу можно существенно упростить и улучшить, то что вы видете сейчас сделано за несколько минут на "коленке" - если Вам это действительно нужно, то можно доделать
1
Вложения
Тип файла: rar крестикинолики.rar (7.1 Кб, 237 просмотров)
БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
27.12.2009, 10:32 17
Проблема в том, что требуют именно таймер
0
schdub
Эксперт С++
3039 / 1381 / 421
Регистрация: 19.01.2009
Сообщений: 3,700
Завершенные тесты: 1
27.12.2009, 10:40 18
Ну вот с таймером
1
Вложения
Тип файла: rar крестикинолики_Timer.rar (6.7 Кб, 128 просмотров)
БелкО
6 / 6 / 1
Регистрация: 03.09.2009
Сообщений: 69
27.12.2009, 11:27 19
Новая проблема, иногда когда я ставлю крестик, даже по истечению 2х секунд ничего не происходит и игра висит, а если перекрыть компу выигрышную комбинацию, то тоже зависает, посмотрите если не сложно)
0
Вложения
Тип файла: rar кр.rar (176.7 Кб, 79 просмотров)
schdub
Эксперт С++
3039 / 1381 / 421
Регистрация: 19.01.2009
Сообщений: 3,700
Завершенные тесты: 1
28.12.2009, 09:21 20
Цитата Сообщение от БелкО Посмотреть сообщение
даже по истечению 2х секунд ничего не происходит и игра висит
сколько незакрытых полей остается при зависании? я такого эффекта добился лишь при одном незакрытом поле при ходе компа.

Добавлено через 5 минут
Существенный недочет в алгоритме принятия решения - нет приоритета выигрышных комбинаций компа, над закрытием выигрышной комбинации игрока, при ходе компьютера.
0
28.12.2009, 09:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2009, 09:21

Крестики-нолики
Привет всем! делаю курсовую "Крестики-нолики" в делфи, практически сделала ее,...

Крестики-нолики
Доброго времени суток! Подскажите пожалуйста, чем лучше реализовать...

крестики-нолики
написал крестики-нолики,но не работает,так сказать "интелект"(он выражен в...


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

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

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