Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
328 / 163 / 89
Регистрация: 03.11.2010
Сообщений: 920
1

Игра "Трубопровод": как сделать разъединение труб

03.09.2012, 22:52. Показов 3200. Ответов 3

Author24 — интернет-сервис помощи студентам
Добрый день. Пишу игру Трубопровод. http://home.earthlink.net/~tdg... pegame.htm. Не получается сделать разъединение труб. Т.е. источник воды у нас - это центр. От него следует цепочка соединенных труб и если одна из труб меняет положение, то вся остальная цепочка труб остается без воды,т.к. не имеет связи с центром.

Связность труб сделал так... Например для объекта "|". Проверяю есть ли у объекта выход наверх, и есть ли у объекта сверху выход вниз. Источник воды у нас идет от центра. Центру ставим значение true. Остальные объекты имеют значение false. А вот как сделать разъединение не могу додумать.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
field [i, j].down = 1;
field [i, j].top = 1;
field [i, j].right = 0;
field [i, j].left = 0;
 
if ((field [i, j - 1].down == 1 && field [i, j].top == 1) && ((field [i, j - 1].flag == false && field [i, j].flag == true) || 
(field [i,j-1].flag == true && field [i,j].flag == false) || (field [i,j - 1].flag == true && field [i,j].flag == true))) {
 
field [i, j].flag = true;       
field [i, j - 1].flag = true;                                                                                                                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                    
cx.Cells [i + 2, j -  1 + 2].BackgroundColor = ConsoleColor.Blue;                                    
cx.Cells [i + 2, j + 2].BackgroundColor = ConsoleColor.Blue;}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2012, 22:52
Ответы с готовыми решениями:

Игра "Трубопровод". Как сделать проверку трубопровода на связность
Всем привет. Пишу игру "Трубопровод (Ветка)". Игра будет консольная. Имеется два вопроса. ...

Что сделать, чтоб при печати были видны линии, пересекающие трубопровод?
Проблема в следующем, на чертеже устанавливаю необходимые свойства отображения (скрытые линии,...

Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново?
Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново? unit1.cpp void...

Как реализовать угловой градиент для труб
Здравствуйте! в фотошопе разбираюсь довольно хорошо, но вот возникла проблема, которую я не в силах...

Онлайн игра, как сделать скрин ботов.
пытаюсь создать игру . помогите с скрипт ботовдля игры неверланс. они подойдут и для моей ...

3
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.09.2012, 07:38 2
Pahanuch, а зачем что-то разъединять? Пусть пользователь делает что хочет, а все проверки, когда вода уже польется и менять будет нельзя... Кстати интересно, как у вас объявлены структуры "труб", ну или классы. Теоретически видно, а практически такая запись:
C#
1
2
3
4
field [i, j].down = 1;
field [i, j].top = 1;
field [i, j].right = 0;
field [i, j].left = 0;
бред. У структуры должны быть свои поля, которые на присваиваются снаружи, которые определяются только типом трубы и поворотом. Я уже молчу про то, что вся логика должна быть отдельно от реализации написано, а не сначала пишем условия
C#
1
2
field [i, j].flag = true;       
field [i, j - 1].flag = true;
а потом закрашиваем прямо тут же
C#
1
2
cx.Cells [i + 2, j -  1 + 2].BackgroundColor = ConsoleColor.Blue;                                    
cx.Cells [i + 2, j + 2].BackgroundColor = ConsoleColor.Blue;
0
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
04.09.2012, 12:07 3
Тут подойдет рекурсивный обход дерева , есть множество алгоритмов
http://ru.wikipedia.org/wiki/%... F%F3%F2%E8
после того как юзер повернул трубу , делаем перерасчет от данного узла.
1
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 2
30.05.2018, 22:13 4
Игра трубопровод случайно не осталась? Очень нужно!

Добавлено через 2 минуты
Pahanuch, Игра трубопровод случайно не осталась? Очень нужно!
0
30.05.2018, 22:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2018, 22:13
Помогаю со студенческими работами здесь

Как сделать ТХТ Карты? Игра Лабиринт
Вот моя прога uses CRT,GraphABC; var ax,ay,vx,vy,bx,by: integer; A: array of char; ...

Как сделать столкновение ImageView (игра гонки)
Как сделать столкновение ImageView ? У меня есть 3 машины, одна на месте стоит, я ее перемещаю...

Как сделать, чтобы игра была по середине?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...

Как сделать чтоб игра на пк смотрелась гармонично
Как сделать чтоб 2d игра на пк смотрелась гармонично во всех форматах экрана, 16:9, 16:10 и тд.

Игра жизнь: как сделать отрисовку поколений
Добрый день, пытаюсь написать игру жизнь, но есть маленькая проблема с отрисовкой поколений есть...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru