Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
21:12
4112
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

АвторDELPHI 7
И ваще... учись комменты к коду писать для начала, чтобы поменьше времени уходило н анализ хода твоих мыслей
Обойти # Можно обычным перебором координат, включая вектора для поиска наикротчайшей траектории
Оо это дельфи=) чем оно от паскаля отличается?
для ALEX-94-:
серьёзна )))
заработай бобликов))и тебе фсе напишут)))))))))))))
ещё : нужно ходдить w ,a,s,d затем жать Enter и так далее
Есть загвоздка с рандомом,есть случай что твоё перемещение будет заблокированно,ставь условие для исключения окружения символами "#",создай дополнительный массив в котором будет происходить передвижение,шаг передвижения I+1 J+1 естественно с условием что возможность передвижения есть,тогда программа будет работать,у тебя есть лишний рандом в передвижении,попробуй написать программу на паскале,в нём она напишется легче,а изменить из Tp на Delphi есть программа называется "черепаха",в которой нужно переместить из одного угла в другой всеми возможными способами,попробуй найти её и добавь 2 условия с преградами
Процедуре Солве(x,ы,к:интегер);
вар и:интегер;
бегин
а[x,ы]:=к;
иф (x=xк)анд(ы=ык) тхен Принт
елсе
фор и:=1 то н до
иф а[x+дx[и],ы+ды[и]]=0 тхен
Солве(x+дx[и],ы+ды[и],к+1);
а[x,ы]:=0;
енд;

1. каждой клетке выбирается еще не исследованный путь.
2. Если вариантов нет, то следует вернуться на шаг назад и выбрать другой путь.
Клетки нумеруются в порядке прохода по ним.

В общем это обычный перебор с возвратом. Это на паскале, интегрировать в делфи это я думаю особого труда не представляет.
Опиши короче задачу по подробнее, а то кидаешь кусками какими то
#-препятствие
%-клад.
$-это тот кем ходишь.
Суть в том что надо передвигать $ к % обходя # т.е. человек ($) двигается с помощью клавиш w,a,s,d затем жмет Enter и так далее пока не дойдёт к кладу.
# как появляется?
рандомно .ну то что я в первом посте написал всё делает впринципе правильно
смена координат # когда появляется? Блин, неужели все расспрашивать надо?
блин просто на экран выводится всё рандомно . #,% не меняется , меняется ток $.
как с самого начала вывели всё так оно и осталось
странная задача, если человек управляет поведением $ по нажатию клавиш, а # не меняется, то для чего тоггда тебе алгоритм движения $? Короче полное описание задачи в студию и 20$, я тебе прогу напишу эту
нет спс,думаю найдутся люди которые просто помогут сделать эт леггкую задачу не за деньги
сори((99 педалю на С\С++ знал бі помог бесплатно)
35: Требуется создать некое подобие Pacman’a ^^* Никаких поисков путей =)
36: Один хуман найдётся, но только завтра и после 12:00… ибо он по ночам вообще не соображает ^^*
http://www.softboard.ru/index.php?s=ea47d188f95842c7ce812c954fb040d3&showtopic=22470&hl =

попробуй сдесь зарегестрироваться и в этой теме оставить свой вопрос, может кто поможет, как не на делфи, так на С++ или Визуал Студио. А код слегка переделать под делфи не проблема. Только в делфи с кнопками игры много, что и под какую прописывать, то уже хз, или как без их можно
За переменые-буквы убивать надо >(. Ух ты... а я еще DELPHI помню :)

var map : array[0..10, 0..10] of boolean;
playerX, playerY : integer;
goldX, goldY : integer;
i, j : integer;
key : string;
begin
randomize;

playerX := random(11);
playerY := random(11);

goldX := random (11);
goldY := random (11);

for i := 0 to 10 do
for j := 0 to 10 do
begin
if (i <> playerX) and (i <> goldX)
and (j <> playerY) and (j <> goldY)
and (random(2) = 0) then
map[i][j] := True else map[i][j] := False;
end;

repeat

for j := 0 to 10 do
begin
for i := 0 to 10 do
begin
if (i = playerX) and (j = playerY) then
write('$')
else if (i = goldX) and (j = goldY) then
write('%')
else if map[i][j] then write('#')
else write(' ');
end;

writeln;
end;

readln( key );

if (key = 'w') and (not map[playerX][playerY - 1]) then playerY := playerY - 1;
if (key = 's') and (not map[playerX][playerY + 1]) then playerY := playerY + 1;
if (key = 'a') and (not map[playerX - 1][playerY]) then playerX := playerX - 1;
if (key = 'd') and (not map[playerX + 1][playerY]) then playerX := playerX + 1;
if (playerX = goldX) and (playerY = goldY) then
begin
write( 'You won!!!' );
readln;
end;

until (key = 'exit') or ((playerX = goldX) and (playerY = goldY));

end.
1|2
К списку тем
2007-2025, онлайн игры HeroesWM