Avatar billede dcgeek Nybegynder
22. juli 2002 - 16:06 Der er 2 kommentarer og
1 løsning

Skal ikke ramme panels

Jeg har et image, kaldet Player samt et x antal panels.
Jeg har skrevet følgende kode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = 'a' then
  player.left := player.left-4;

if key = 'd' then
  player.left := player.left+4;

if key = 'w' then
  player.top := player.top-4;

if key = 's' then
  player.top := player.top+4;

end;
Nu vil jeg gerne have, at player ikke støder ind i noget panel. Mine panels hedder Panel1,panel2,panel3 osv.
Så skriver jeg koden:
If player.top = panel1.top-4 then EtEllerAndet.
Men da jeg nu har flere panels, så skal jeg jo skrive:
if player1.top = panel1.top-4 then EtEllerAndet;
if player1.top = panel2.top-4 then EtEllerAndet;
if player1.top = panel3.top-4 then EtEllerAndet;
osv. osv. osv. Og hvis der nu er 100 panels,så skal jeg skrive "if player1.top = panel1.top-4 then EtEllerAndet; " 100 gane. Hvordan undgår jeg det, og siger, at hvis player.top = panelX.top-4, således at jeg ikke skal fortælle hvad hver panel hedder, hvis den bare får at vide, at hvert panel hedder Panel, og hvis den støder ind i noget Panel, så skal den gøre et eller andet?
Jeg har prøvet med følgende kode:
for x := 0 to 100 do
begin
  if player.top = panel[x].top-4 do EtEllerAndet.
end;
Men det kan den ikke håndtere... Hvad gør jeg?
Avatar billede nico26 Nybegynder
22. juli 2002 - 16:19 #1
lav et array af panels

Panels : array[0..N - 1] of Panels;

put alle dine panels i arrayet, så kan du gøre følgende

for i := 0 to N - 1 do
  if Player.Top = Panels[i].Top then
    ...
Avatar billede dkn Nybegynder
22. juli 2002 - 16:23 #2
Måske du kunne bruge noget alla det her:

var i :integer;
begin
for I := 0 to ControlCount-1 do
begin
if Controls[I].ClassType = TPanel then
if Controls[I].Top = -4 then //do noget
end;
end;
Avatar billede dcgeek Nybegynder
22. juli 2002 - 18:55 #3
Mange tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester