Тема: The Maze
Показать сообщение отдельно
Старый 27.11.2008, 21:42   #31
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: The Maze

ещё неброльшая оптимизация в MIDletPascal, дальше только реализация алгоритма в java. ....ну так как? какие у кого идеи? у меня сейчас логику делать - нету времени...
procedure drawMap;
var  {вывод видимой проекции на экран}
  px,py,dx,dy,k,y1,y2,depth,i,h:integer;
begin
  //h:=map[(y div 1024) and 255, (x div 1024) and 255]+10;
  for i:=8 to 8+sw do
  begin
    px:=x;
    py:=y;
    k:=(angle+1960+i) and 2047;//рисовать проекцию слева и справа от центрального угла
    dy:=sintab[k];
    dx:=costab[k];
    y2:=sh;
    for depth:=1 to 60{#1} do
    begin
      px:=px+dx;
      py:=py+dy;
      k:=map[(py div 1024) and 255, (px div 1024) and 255];
      y1:=(((265{#2}-k)*8{#3}) div depth)+10{#4};  //constant #2 = (#1/#3)+2+h, h=255;  #4 - place for the sky
      if (y1<y2) then  //вертикальная линия цветом "k" от "y1" до "y2" где "i"="x"
      begin
        setColor(cr[k],cg[k],cb[k]);
        drawLine(i,y1,i,y2);
        y2:=y1;
        if y2<=0 then break; //выход если достигли границы экрана, дальше рисовать не имеет смысла
      end;
    end;
    //if y2>0 then begin setColor(0,0,0); drawLine(i,0,i,y2); end;  //fills in a background
  end;
end;
p.s. Если придумать хорошую логику, и переделать в java, будет приемлемая скорость, даже для телефонов Motorola e398,v3,v3i и д.р.
(Offline)
 
Ответить с цитированием