• 22 odgovora
  • 6.900 pregleda
Re: Delphi: Igra na foru Bounca 28.03.2006. u 22:18 · pre 250 meseci #22
@badam
Nije losa ideja, kada bih radio svaku kocku posebno, ali je kod mene to sve jedna mreza 400x400 napravljena u Paintu.
Mada bih mogao da promenim da ne bude mreza vec da imam par elemenata npr Imagea
Re: Delphi: Igra na foru Bounca 28.03.2006. u 23:34 · pre 250 meseci #23
Ovaj kod sam probao sa lavirintom nacrtanim u Paintu. Ucitan je u Image1. Image1 left i top treba da su 0, a ako ne, potrebno je preracunati.
Code:

function TForm1.proveri(smer:integer):integer;
var i,j:integer;
    Moze:Boolean;
begin
  Result:=0;
  Moze:=False;
  case smer of
    1:begin          //Levo
      for i:=1 to 5 do
      begin
        for j:=Image2.Top to Image2.Top+Image2.Height do
        begin
          if Image1.Canvas.Pixels[Image2.left-i,j]<>clWhite then
            Moze:=True
          else
          begin
            Moze:=False;
            break
          end
        end;
          if Moze then
            Result:=i
          else
            break
      end
    end;
    2:begin                //Gore
      for i:=1 to 5 do
      begin
        for j:=Image2.Left to Image2.Left+Image2.Width do
        begin
          if Image1.Canvas.Pixels[j,Image2.Top-i]<>clWhite then
            Moze:=True
          else
          begin
            Moze:=False;
            break
          end
        end;
        if Moze then
          Result:=i
        else
          break
      end
    end;
    3:begin          //Desno
      for i:=1 to 5 do
      begin
        for j:=Image2.Top to Image2.Top+Image2.Height do
        begin
          if Image1.Canvas.Pixels[Image2.left+Image2.Width+i,j]<>clWhite then
            Moze:=True
          else
          begin
            Moze:=False;
            break
          end
        end;
          if Moze then
            Result:=i
          else
            break
      end
    end;
    4:begin                //Dole
      for i:=1 to 5 do
      begin
        for j:=Image2.Left to Image2.Left+Image2.Width do
        begin
          if Image1.Canvas.Pixels[j,Image2.Top+Image2.Height+i]<>clWhite then
            Moze:=True
          else
          begin
            Moze:=False;
            break
          end
        end;
        if Moze then
          Result:=i
        else
          break
      end
    end
  end
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  DoubleBuffered:=True;
  case Key of
     37: Image2.Left:=Image2.Left-proveri(1);
     38: Image2.Top:=Image2.Top-proveri(2);
     39: Image2.Left:=Image2.Left+proveri(3);
     40: Image2.Top:=Image2.Top+proveri(4);
  end;
  if Image2.Top>395 then
    image2.Top:=-5;
  if image2.Left>395 then
    Image2.Left:=-5;
  if Image2.Top<-5 then
    image2.Top:=395;
  if image2.Left<-5 then
    Image2.Left:=395
end;
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme