Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76

Лабиринт.

05.05.2010, 20:00. Показов 1624. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, вот решил создать примитивный лабиринтик, создал, проблем не было, но тут пришла в голову идея, что бы сделать дополнения к лабиринту, тоесть сделать так, что бы после нажатия скольки то клавиш вниз, в право..( либо с таймером каждые секунд 5) , в лабиринте пропадала бы стенка с каком то месте и появлялось в другом, вообщем не знаю я как реализовать эту затею, вот код програмки:


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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     Canvas->Pen->Color=clBlack;
     Canvas->MoveTo(90,40); Canvas->LineTo(360,40);
     Canvas->LineTo(360,190); Canvas->LineTo(360,190);
     Canvas->LineTo(240,190);
     Canvas->LineTo(90,190); Canvas->LineTo(90,70);
     Canvas->MoveTo(120,70); Canvas->LineTo(120,130);
     Canvas->MoveTo(90,160); Canvas->LineTo(120,160);
     Canvas->MoveTo(150,40); Canvas->LineTo(150,70);
     Canvas->MoveTo(120,100); Canvas->LineTo(180,100);
     Canvas->LineTo(180,130);
     Canvas->MoveTo(150,130); Canvas->LineTo(150,190);
     Canvas->MoveTo(180,160); Canvas->LineTo(210,160);
     Canvas->MoveTo(240,190); Canvas->LineTo(240,160);
     Canvas->MoveTo(240,130); Canvas->LineTo(270,130);
     Canvas->MoveTo(330,130); Canvas->LineTo(330,190);
     Canvas->MoveTo(270,160); Canvas->LineTo(330,160);
     Canvas->MoveTo(330,100); Canvas->LineTo(360,100);
     Canvas->MoveTo(300,70); Canvas->LineTo(300,130);
     Canvas->MoveTo(330,40); Canvas->LineTo(330,70);
     Canvas->MoveTo(270,70); Canvas->LineTo(330,70);
     Canvas->MoveTo(180,70); Canvas->LineTo(240,70);
     Canvas->MoveTo(240,40); Canvas->LineTo(240,100);
     Canvas->LineTo(270,100);
      Canvas->MoveTo(210,70); Canvas->LineTo(210,130);
 
 
 
 
     BitBtn1->Visible=true;
     Image1->Visible=True;
     Button1->Enabled=false;
     
     BitBtn1->SetFocus();
 
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::BitBtn1KeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if (Key==37 && Canvas->Pixels[BitBtn1->Left-5][BitBtn1->Top]!=clBlack)
    BitBtn1->Left-=30;
 
   if (Key==39 && Canvas->Pixels[BitBtn1->Left+25][BitBtn1->Top]!=clBlack)
    BitBtn1->Left+=30;
 
    if (Key==38 && Canvas->Pixels[BitBtn1->Left][BitBtn1->Top-5]!=clBlack)
    BitBtn1->Top-=30;
 
    if (Key==40 && Canvas->Pixels[BitBtn1->Left][BitBtn1->Top+25]!=clBlack)
    BitBtn1->Top+=30;
 
    if ((BitBtn1->Top) == (Image1->Top) && (BitBtn1->Left) == (Image1->Left))
    {Label1->Visible=True; Label1->Caption="  Òû âûéãðàë!   Èãðà îêîí÷åííà" ;
         BitBtn1->Enabled=false;}
 
}
//---------------------------------------------------------------------------
Визуально это выглядит так:
Миниатюры
Лабиринт.  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2010, 20:00
Ответы с готовыми решениями:

Покрасить лабиринт
Помогите решить, зачет завтра вообще надо https://www.cyberforum.ru/algorithms/thread133611.html?uri=/algorithms/thread133611.html

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

Лабиринт
Помогите, пожалуйста, нарисовать лабиринт на всю консоль, чтобы смайлик двигался по лабиринту (лабиринт в виде двумерного массива)

8
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
05.05.2010, 20:15
делаешь массив с переменными-флагами.
если флаг установлен - рисуешь стенку, если нет - не рисуешь.
хоть в цикле, хоть на каждую стенку отдельно.

по таймеру меняешь состояния флагов.

только вот проблема: если удалять/ставить стенки случайным образом - может получиться непроходимый лабиринт.
чтобы этого не возникало - нужно еще делать функцию проверки проходимости...
0
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
05.05.2010, 20:53  [ТС]
Хорошо, возник ещё вопрос, как добавить стенку, что бы после повторного нажатия клавиши она не пропала снова, делаю программу используя цвета, тоесть если граница чёрная, пройти ей нельзя если другогог цвета то можно, просто сделать иначе мои знания этого языка не позволяют, поэтому есть как есть.
C++
1
2
3
 if ((BitBtn1->Top==75) && (BitBtn1->Left==125))
{ Canvas->MoveTo(150,70); Canvas->LineTo(150,100);
  Canvas->Pen->Color=clWindow; Canvas->MoveTo(150,40); Canvas->LineTo(150,70);}
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
05.05.2010, 21:12
Цитата Сообщение от Apmyp /7 Посмотреть сообщение
Хорошо, возник ещё вопрос, как добавить стенку, что бы после повторного нажатия клавиши она не пропала снова
а почему она должна пропасть после нажатия клавиши?
0
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
05.05.2010, 21:15  [ТС]
Цитата Сообщение от Patch Посмотреть сообщение
а почему она должна пропасть после нажатия клавиши?
Да я сам вот не могу понять, вписываю код программы, одна стенка появляется-другая, которую хочу убрать, пропадает, но если я два раза пытаюсь пройти через появившуюся стенку-она тоже пропадает. Вот код отрывка:
C++
1
2
3
 if ((BitBtn1->Top==75) && (BitBtn1->Left==125))
{ Canvas->MoveTo(150,70); Canvas->LineTo(150,100);
  Canvas->Pen->Color=clWindow; Canvas->MoveTo(150,40); Canvas->LineTo(150,70);}
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
06.05.2010, 08:00
а почему
Цитата Сообщение от Apmyp /7 Посмотреть сообщение
Canvas->Pen->Color=clWindow;
делай по-человечески.
0
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
06.05.2010, 14:25  [ТС]
Цитата Сообщение от Patch Посмотреть сообщение
а почему

делай по-человечески.
не важно какой цвет я ставлю, всёравно проблема остаётся.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
06.05.2010, 14:34
Цитата Сообщение от Apmyp /7 Посмотреть сообщение
всёравно проблема остаётся.
кончено остается.
делаешь-то все равно через попу.

сделай все-таки массив. и будет тебе счастье.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
06.05.2010, 14:41
массив можно сделать к тому же еще и упакованным, те хранить например только левую и верхнюю грань в каждой локации (в виду избыточности полного описания)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2010, 14:41
Помогаю со студенческими работами здесь

Сделал лабиринт, оцените кто нибудь уровень говнокода, и что бы подправить тут или изменить
karta.txt положить в диск С #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; #include...

Игра "лабиринт" - как предотвратить перемещение объектов сквозь стены?
Доброго времени суток. В Builder C++ Пытаюсь сделать лабиринт простейшего вида.Создал форму, на неё поместил фоновый рисунок( карта по...

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

Лабиринт
вот у меня картинка ездит по экрану с помощью управления стрелок.а как сделать , что бы она не проходила под панелями , а упиралась? ...

Лабиринт
Есть задача. Я не прошу вас решить её за меня. Как вообще это должно происходить, этого не пойму. С чего пробывать её решать? От чего...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru