forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   столкновение со стенкой на уровне в виде клетки (http://forum.boolean.name/showthread.php?t=3177)

aureli0 17.04.2007 23:05

столкновение со стенкой на уровне в виде клетки
 
как правильно проверять колизию например для такого случая
есть
герой и уроыень в виде клеток

type hero_type = record
up,down,right,left,fire,death:boolean;// виртуальная клавиатура героя
xs,ys:integer;
end;

var
hero:array [1..6] of hero_type;
num:integer //порядковый номер героя

level:array[0..19,0..19] of string;
XL,YL:integer;
shag_setki:integer;
...
begin

num:=1;
repeat
уровень грузим из текстового файла в ресурсе
111
101
000
единица - это стенка
for xl:=1 to 3 do
for yl:=1 to 3 do
begin
lf level [xl,yl]>0 then выводим стеку в положение xl*shag_setki,yl_shag_setki
end
при нажатии клавиши вверх проверяем есть ли стенка по направлению движения героя num=1,если нету то даем добро на движение

if level[hero[num].xs,hero[num].ys]<>1 then hero[num].up:=true; ***


until false

end.
Паскаль ругается на ***:
Как павильно зделать в данном случае контроль героя на столкновение со стенкой?

ViNT 19.04.2007 16:09

Re: столкновение со стенкой на уровне в виде клетки
 
я както давно писал подобную фигню на Delphi
попробуй так:
const
maph=10;//высота карты
mapw=10;//ширина карты
var
map:array[1..maph]of array[1..mapw]of boolean;
px,py:integer//текущие координаты
//карта. если true то можно стать, если false, то нельзя

procedure draw;
begin
//рисуем героя в PX:PY
end;

procedure initmap
var xx,yy:integer;
begin
for yy:=1 to maph do
for xx:=1 to mapw do
begin
if map[xx,yy]=false then рисуем_стену;
end;
end;


//процедуры движения
procedure up;
begin
py:=py-1;
if map[py][px]=true then //стать можно
begin
draw;
end else
py:=py+1;//стать нельзя , возвращаем координату наместо
end;

//аналогично для каждой команды


Часовой пояс GMT +4, время: 17:01.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot