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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 15:41   #1
mrandrew1990
Пользователь
 
Регистрация: 02.05.2011
Сообщений: 13
По умолчанию Моделирование паникующей толпы в замкнутом пространстве

Люди добрые, нашел в инете "Моделирование поведения толпы в замкнутом пространстве".... но там прилагался только *.doc файл.... там в конце этого файла есть код программы на Delphi.... В этой работе есть скриншоты, якобы той программы.... но самого файла не прилагалось, только код в текстовом варианте.... я попробовал восстановить подобную картину при помощи того текстового кода, даже запустил его, но ничего не вывелось... Пожалуйста, посмотрите сие чудо.... я прикрепил ниже архив с тем *.doc файлом и папкой с исполняемым кодом (который я попытался восстановить по тому что было)...

Помогите пожалуйста, очень важно для меня... выручайте, товарищи... чтобы эта программа заработала правильно как полагается в том документе....
Вложения
Тип файла: rar mod.rar (169.5 Кб, 18 просмотров)
mrandrew1990 вне форума Ответить с цитированием
Старый 08.05.2011, 15:45   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Ты наверняка тупо компонентов накидал на форму, а связать их события (Events) не удосужился. Поэтому при нажатиях на кнопки ничего не происходит.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 08.05.2011, 15:47   #3
mrandrew1990
Пользователь
 
Регистрация: 02.05.2011
Сообщений: 13
По умолчанию

вот тот код с ошибками:

Цитата:
Unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphits, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
Const s=50;
P=20;
Type
TMod 1 Form = class(TForm)
Image: TImage;
StepButon: TButton;
IntButton: TButton;
Procedure IntButtonClick(Sender: TObject);
Procedure StepButtonClick(Sender: TObject);
Private
Procedure PaintSceen();
PROCEDURE Step();
Public
{ Public declarations }
End;

Var
Mod 1Form: Tmod 1 Form;
F: array [ 1..s, 1..s] of integer;
Implementation
{ $R * .DFM }

Procedure TMod 1 Form.InitButtonClick(Sender: TObject);
Var I, j: integer;
Begin
For i:=1 to s do
Fof j:=1 to s do
F[I, j]:=0;
Randomize;
For i:-1 to p do
F[Random(s) + 1, Random(s) + 1]:=1;
F[s div 2, 1]:=2;
PaintScreen();
End;

Procedure TMod 1 Form.PaintScreen;
Var I, j: integer;
Begin
Image.Canvas.Brush.Color:=clWhite;
Image.Canvas.Pen.Color:=clBlack;
Image.Canvas.Rectangle(0, 0, Image. Width, Image.Heigh);
For i:=1 to s do
For j;=1 to s do
Begin
If F[i,j] = 0 then
Image.Canvas.Brush.Color:=clWhite;
Image.Canvas.Pen.Color:=clWhite;
Image.Canvas.Rectangle((i-1) * 10+2, (j-1) * 10+2, I * 10 + 1, J * 10+1);
End;
If (F[i,j] = 1) or (F[i,j] = 3) then
Begin
Image.Canvas.Brush.Color:=clGreen;
Image.Canvas.Pen.Color:=clGreen;
Image.Canvas.Rectangle((i-1) * 10+2, (j-1) * 10+2, I * 10 + 1, J * 10+1);
End;
If F[i,j] = 2 then
Begin
Image.Canvas.Brush.Color:=clRed;
Image.Canvas.Pen.Color:=clRed;
Image.Canvas.Rectangle((i-1) * 10+2, (j-1) * 10+2, I * 10 + 1, J * 10+1);
End;
End;
End;

Procedure TMod 1 Form.Step;
Var st: integer;
i, j: integer;
x, y: integer;
begin
for i:=1 to s do
for j:=1 to s do
begin
if F[i,j] = 1 then
begin
x:=1; y:=1;
F[i,j]:=0;
st:=Random(9) + 1;
cae st of
1: x:= x +1;
2: x:= x-1;
3: y:= y +1;
4: y:= y-1;
5: begin x:= x+1; y:= y+1;
6: begin x:= x+1; y:= y-1;
7: begin x:= x-1; y:= y+1;
8: begin x:= x-1; y:= y-1;
End;
If x<1 then x:=1;
If x>1 then x:=s;
If y<1 then y:=1;
If y>1 then y:=s;
ShowMessege( Auoia iaeaai )
Else
F[x,y]:=4;
End;
End;
For i:=1 to s do
For j:=1 to s do
If F[i, j] = 4 then F[i, j]:=1;
End;


Procedure TMod 1 Form.StepButtonClick(Sender: TObject);
Begin
Step();
PaintScreen();
End;
End.
mrandrew1990 вне форума Ответить с цитированием
Старый 08.05.2011, 15:48   #4
mrandrew1990
Пользователь
 
Регистрация: 02.05.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Valio Посмотреть сообщение
Ты наверняка тупо компонентов накидал на форму, а связать их события (Events) не удосужился. Поэтому при нажатиях на кнопки ничего не происходит.
ну помогите пожалуйста.... просто там ничего не написано...
mrandrew1990 вне форума Ответить с цитированием
Старый 08.05.2011, 21:51   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Логика step() вообще не соответствует заданию. Во-первых направление выбирается случайно, а не с заданной вероятностью, во-вторых не учитываются столкновения людей (вернее сейчас один убивает другого ), обход препятствий, выходом считается не точка, а вся верхняя полоса...

Вот поправил немного, твоя задача - реализовать выбор направления в сторону клетки выхода, а не тупо вверх (тригонометрия).



Вообще толку от кода мало, лучше переписать с нуля используя ООП.
Вложения
Тип файла: rar test.rar (164.1 Кб, 13 просмотров)
пыщь

Последний раз редактировалось JTG; 08.05.2011 в 22:20.
JTG вне форума Ответить с цитированием
Старый 08.05.2011, 22:21   #6
mrandrew1990
Пользователь
 
Регистрация: 02.05.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
Логика step() вообще не соответствует заданию. Во-первых направление выбирается случайно, а не с заданной вероятностью, во-вторых не учитываются столкновения людей (вернее сейчас один убивает другого ), обход препятствий, выходом считается не точка, а вся верхняя полоса... Вот поправил немного, но толку от кода мало, лучше переписать с нуля с ООП
Спасибо большое за отклик... А что можно еще с ним подделать, подправить... Может какие-то еще правила воткнуть туда аналогичные (может где встречались)...??? Подскажите пожалуйста...
mrandrew1990 вне форума Ответить с цитированием
Старый 08.05.2011, 23:10   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Всё, дальше сам
Вложения
Тип файла: rar test2.rar (165.9 Кб, 21 просмотров)
пыщь
JTG вне форума Ответить с цитированием
Старый 08.05.2011, 23:19   #8
mrandrew1990
Пользователь
 
Регистрация: 02.05.2011
Сообщений: 13
По умолчанию

Огромнейшее спасибо!!!
mrandrew1990 вне форума Ответить с цитированием
Старый 15.05.2012, 16:19   #9
mrandrew1990
Пользователь
 
Регистрация: 02.05.2011
Сообщений: 13
Вопрос По теме...

Ребята, господа-программисты. Помогите реализовать обход препятствий, усовершенствовать алгоритм.... а то у меня получается что они при наличии препятствия бьются в него или как-то случайно обходят.... а если я допустим нарисую горизонтальное (или вертикальное) препятствие из нескольких стенок (имитация стены) - то они вместо обходы этой стены, вдоль нее, тупо стопорятся перед ней и всё.... как сделать, чтобы они как-то относительно выхода преодолевали подобное препятствие. Допустим, что если перед человеком клетка с препятствием, то он проверил бы соседнюю с препятствием клетку на наличие подобного препятствия, чтобы если она не занята - то на нее перейти, а если занята - как бы повторно проверить такое условие для последующей клетки.... Чтобы не плутать, а так постепенно двигаться вдоль стены к выходу, пока не найдется выход, свободное пространство для движения.... Помогите пожалуйста.... Вот схему нарисовал



Помогите пожалуйста, голову ломал, ниче не приходит... С виду - в принципе, ничего сложного. Но для меня стало тяжело что-то(
Вложения
Тип файла: rar прога_толпа.rar (195.2 Кб, 9 просмотров)
mrandrew1990 вне форума Ответить с цитированием
Старый 15.05.2012, 20:54   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Поищи по ключевым словам "поиск пути".
Вероятно, достаточно будет алгоритма A*. http://ru.wikipedia.org/wiki/A*
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точка в трехменом пространстве( Дима я Общие вопросы Delphi 3 11.05.2010 10:12
моделирование движения шаров с массой и диаметромт по прямой в двумерном пространстве belomorinka Помощь студентам 8 01.06.2009 11:17
Обнаружение картинки в пространстве Altera Свободное общение 7 21.02.2009 20:25
Звук в пространстве. Манжосов Денис :) Помощь студентам 1 02.06.2008 22:39
Прямая в пространстве Neuros1s Общие вопросы Delphi 12 29.06.2007 00:06