Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 20:33   #1
TanyaK.
 
Регистрация: 01.12.2013
Сообщений: 5
По умолчанию Общая идея написания конкретной программы на Windows Forms

Здравствуйте! Я написала программу для генерации лабиринтов по алгоритму Эллера. Но написала я ее для консоли. И теперь, пользуясь этим кодом, мне нужно написать эту же программу для Windows Forms.

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

Вот сам алгоритм Эллера( вместо множеств я использовала элементы массива):


1.Создайте первую строку. Ни одна ячейка не будет являться частью ни одного множества.
2.Присвойте ячейкам, не входящим в множество, свое уникальное множество.
3.Создайте правые границы, двигаясь слева направо:
Случайно решите добавлять границу или нет
3.1. Если текущая ячейка и ячейка справа принадлежат одному множеству, то создайте границу между ними (для предотвращения зацикливаний)
3.2. Если вы решили не добавлять границу, то объедините два множества в которых находится текущая ячейка и ячейка справа.
4.Создайте границы снизу, двигаясь слева направо:
Случайно решите добавлять границу или нет. Убедитесь что каждое множество имеет хотя бы одну ячейку без нижней границы (для предотвращения изолирования областей)
4.1. Если ячейка в своем множестве одна, то не создавайте границу снизу
4.2. Если ячейка одна в своем множестве без нижней границы, то не создавайте нижнюю границу
5.Решите, будете ли вы дальше добавлять строки или хотите закончить лабиринт
5.1. Если вы хотите добавить еще одну строку, то:
1.Выведите текущую строку
2.Удалите все правые границы
3.Удалите ячейки с нижней границей из их множества
4.Удалите все нижние границы
5.Продолжайте с шага 2
5.2. Если вы решите закончить лабиринт, то:
1.Добавьте нижнюю границу к каждой ячейке
2.Двигаясь слева направо:
Если текущая ячейка и ячейка справа члены разных множеств, то:
1.Удалите правую границу
2.Объедините множества текущей ячейки и ячейки справа
Выведите завершающую строку
TanyaK. вне форума Ответить с цитированием
Старый 01.12.2013, 22:07   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

В винформс можно использовать TextBox со свойством Multiline = true и выводить ровно тот же текст из пробелов подчёркиваний и вертикальных чёрточек, что и в консоли. Только желательно шрифт в свойствах поставить моноширный.
Также можно выводить буквы или даже просто чёрточки на Graphics любого контрола, это посложнее, но и выглядеть будет получше.

Ну и конечно, стоит приложить проект (Ваш консольный, прикрепите архивом), чтобы люди лучше могли сориентироваться, как помочь выполнить Вашу задачу.
phomm вне форума Ответить с цитированием
Старый 01.12.2013, 22:42   #3
TanyaK.
 
Регистрация: 01.12.2013
Сообщений: 5
По умолчанию

Идеи хорошие. Спасибо за подсказку!
Не стала выкладывать свой проект, так как он немного не доработан ( не расписано условие редактирования последней строки + при выводе на консоль лабиринт имеет неправильную форму - строки сдвигаются по причине того, что в каждой из них кол-во вертикальных границ разное).

Но вы правы, для общего представления, наверное, стоит его приложить.
Вложения
Тип файла: rar Генерация лабиринтов .rar (34.2 Кб, 19 просмотров)
TanyaK. вне форума Ответить с цитированием
Старый 01.12.2013, 22:46   #4
TanyaK.
 
Регистрация: 01.12.2013
Сообщений: 5
По умолчанию

Ой. Нет, это вообще черновой вариант. Сейчас загружу более приличный
TanyaK. вне форума Ответить с цитированием
Старый 01.12.2013, 22:54   #5
TanyaK.
 
Регистрация: 01.12.2013
Сообщений: 5
По умолчанию

Консольный проект
Вложения
Тип файла: rar Генерация лабиринтов_.rar (33.2 Кб, 17 просмотров)
TanyaK. вне форума Ответить с цитированием
Старый 03.12.2013, 11:26   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

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

В сам алгоритм генерации не лазил, тем более что там сложно что-то понять. Просто подключил проект к форме, развёл там консольный ввод-вывод и работу с данными, чтобы и форма могла использовать.
Вложения
Тип файла: zip Генерация лабиринтов 2 с формой.zip (89.1 Кб, 31 просмотров)
phomm вне форума Ответить с цитированием
Старый 23.12.2013, 19:17   #7
TanyaK.
 
Регистрация: 01.12.2013
Сообщений: 5
По умолчанию

Спасибо Вам огромное! Вы очень выручили! Правда, очень признательна.

P.S. Извините за столь долгий ответ
TanyaK. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Общая инфа по Windows формам interxor Visual C++ 3 25.03.2011 08:16
Запуск конкретной программы из кода и передача файла в нее almostdj Общие вопросы .NET 0 07.12.2010 17:37
Есть общая структура программы,как написать функции к ней? Aleksandr_Yanov Общие вопросы C/C++ 0 13.06.2010 16:53
Есть общая структура программы,как написать функции к ней? Aleksandr_Yanov Общие вопросы C/C++ 0 13.06.2010 16:53
Общая переменная для нескольких экземпляров программы. Fabio Общие вопросы Delphi 9 24.02.2009 09:25