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

Лабиринт.

05.05.2010, 20:00. Показов 1644. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru