2 złote za baterie :)

Po pierwsze tutaj rysujemy "naszym" sposobem nie takim czystym DirectX'em

Dobra nie czas na głupoty ale jak szedłem przez miasto to słyszałem gościa co "chyba" ;) sprzedawał baterie :) Taki handel mi się podoba ja mu daję baterie a on mi 2 zł (oczywiście możecie inaczej ten tekst zinterpretować :)
Lecz przejdźmy od razu do kodu. (objaśnienie wszystkiego pod kodem)


Sekcja VARRIANTS :)
var
Form1 : TForm1;
dist : integer = 5; - dystans
x,y,z : integer; - pozycje x,y,z

implementation


{$R *.DFM} - forma


function XS(x,z:integer):integer; // wiadoma funkcja
begin
if z+dist<>0 then
Xs:=round(X*dist/(Z+dist))+400; //320
Xs := result;
end;


function YS(y,z:integer):integer; //wiadoma funkcja
begin
if z+dist<>0 then
Ys:=round(Y*dist/(Z+dist))+300;///240
Ys := result;
end;



procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
NoxxDXmenu1.surface.Fill(0); //czysczenie ekranu na czarno
dximagelist1.Items[0].Draw(NoxxDXmenu1.surface,xs(x,z),ys(y,z),0); //zrzucenie naszego punktu w przestrzeni na ekran
NoxxDXmenu1.flip; //przerysowanie wszystkiego z bufora na ekran
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin //bindowanie klawiszy :)
if key = vk_escape then close;
if key = vk_up then y := y - 4;
if key = vk_down then y := y + 4;
if key = vk_left then x := x - 4;
if key = vk_right then x := x + 4;
if key = vk_home then z := z + 1;
if key = vk_end then z := z - 1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
x := 10;
y := 10;
z := 10;
end;

end. // koniec ;)



Jak umiesz myśleć to zauważysz, że tutaj tylko rysujemy niesprite'a tylko normalny obrazek :)
Jednak to samo mozemy zrobic ze spriteami tylko zamiast tego dximagelist1.Items[0].Draw wpisujemy:

nazwa_sprite.x := xs(x,z);
nazwa_sprite.y := ys(y,z);

I Już :]]]

Do poruszania się wykorzystujemy klawisze: góra, dół, lewo, prawo, Home, End.