AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere If-Abfragen

Ein Thema von Matze33 · begonnen am 8. Dez 2010 · letzter Beitrag vom 10. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#1

Mehrere If-Abfragen

  Alt 8. Dez 2010, 20:52
Hey, hab mal ne "Anfängerfrage".
Ich möchte abfragen, ob sich ein Bild (das ich bewege, Konzept: Jump&Run-Game) über einem Panel befindet nach einem Sprung, damit es dann auf dem Panel landen kann und nicht wieder auf den Boden geht.
Eigentlich hätte ich dann jetzt das so geschrieben:
Delphi-Quellcode:
If Image1.Left>=Panel1.Left and Image1.Left<=Panel1.Left+Panel1.Width
Then Image.Top:=Image1.Top-Panel1.Height;
Wenn ich starten will, geht der Cursor hinter das Then und der Fehler "Incompatible Types" erscheint.
Der Fehler hierin liegt offensichtlich im "and", aber wie kann ich sonst mehrere Sachen überprüfen?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mehrere If-Abfragen

  Alt 8. Dez 2010, 20:56
Delphi-Quellcode:
If Image1.Left>=Panel1.Left and Image1.Left<=Panel1.Left+Panel1.Width
Then Image.Top:=Image1.Top-Panel1.Height;
Delphi-Quellcode:
If (Image1.Left>=Panel1.Left) and (Image1.Left<=Panel1.Left+Panel1.Width)
Then Image{1}.Top:=Image1.Top-Panel1.Height;
Sollte es nicht Image1.top heißen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#3

AW: Mehrere If-Abfragen

  Alt 8. Dez 2010, 21:01
Äh ja, natürlich. War eben nur hingeschmiert^^

Auf jeden Fall danke dafür. Jetzt setz ich mich mal weiter hin, und gucke, wieso es noch nicht geht (Also der beabsichtigte Effekt). Sollte ich es nicht hinkriegen (wovon ich nicht ausgehe), melde ich mich wieder xD

Edit: Kann ich ein and auch nach Then verwenden?

Edit2: Hat sich schon erledigt, man bin ich blöd

Geändert von Matze33 ( 8. Dez 2010 um 21:08 Uhr)
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#4

AW: Mehrere If-Abfragen

  Alt 8. Dez 2010, 21:08
Edit: Kann ich ein and auch nach Then verwenden?
Zu welchem Zweck, mit einem AND verbindest du doch deine booleschen Ausdrücke?

Edit: Da war ich wohl etwas zu langsam - hat sich ja doch von selbst ergeben.
Max
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#5

AW: Mehrere If-Abfragen

  Alt 8. Dez 2010, 21:40
Japp, hab ich noch mal Glück gehabt, bevor ich wieder noch blöder dagestanden hätte^^

Wie dem auch sei, hab jetzt wieder eine Stelle, wo ich nicht weiter komme.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  wiederholungen:=wiederholungen+1;

  if Image1.Visible=True Then
  begin
    if wiederholungen<=14
    Then Image1.Top:=Image1.Top-wert;
    if wiederholungen>=15
    Then Image1.Top:=Image1.Top+wert;
    if wiederholungen=28
    Then begin Timer1.Enabled:=False; wiederholungen:=0; end;
  end;

  if Image2.Visible=True Then
  begin
    if wiederholungen<=14
    Then Image2.Top:=Image2.Top-wert;
    if wiederholungen>=15
    Then Image2.Top:=Image2.Top+wert;
    if wiederholungen=28
    Then begin Timer1.Enabled:=False; wiederholungen:=0; end;
  end;

  If (Image1.Left>=Panel1.Left) and (Image1.Left<=Panel1.Left+Panel1.Width)
  and (Image1.Top+Image1.Height=Panel1.Top)
  Then begin
    Image1.Top:=Panel1.Top-Image1.Height;
    Timer1.Enabled:=False;
  end;

  if Image1.Visible=True
  Then Image2.Top:=Image1.Top;
  if Image2.Visible=True
  Then Image1.Top:=Image2.Top;
end;
Das ist das, was bei einem Sprung (VK_UP) passiert. Aber die Figur (das Image1) springt jetzt immer wieder auf den Boden zurück, also er bleibt nicht auf dem Kasten (Panel1) stehen. Kann mir wer sagen, wieso? (den Smiley musste ich ausprobieren )

Edit: Noch zur Erläuterung: Image1 ist die Spielfigur, die nach rechts guckt und Image2 das ganze gespiegelt, also nach links.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Mehrere If-Abfragen

  Alt 8. Dez 2010, 22:12
Image1.Top+Image1.Height wird wohl nie geanu den Wert von Panel1.Top haben

BTW: Boolean-Werte nie auf True überprüfen. .Visible ist ja sschon ein Boolean. Zudem ist wahr als nicht falsch (0) deklariert und die Konstante True als 1.
Ich würde auch anders einrücken
Markus Kinzler
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#7

AW: Mehrere If-Abfragen

  Alt 8. Dez 2010, 22:30
Image1.Top+Image1.Height wird wohl nie geanu den Wert von Panel1.Top haben
Doch klar. Image1.Top+Image1.Height ist ja dann praktisch das untere Ende vom Bild. Und Panel1.Top ist halt das obere vom Panel xD
Wenn ich also springe sinkt der Wert von Image1.Top+Image1.Height auf eine Größe, die über Panel1.Top liegt, liegt aber zwischndurch genau auf der Höhe.

Image1.Top:=372
Image1.Height:=43
Image1.Top+Image1.Height:=415
Panel1.Top:=375
Sprung: 14*5px=70px
415-70=345
345<375
Und da ich in 5er Schritten gehe, wird genau die Position auch erwischt zwischendurch (2x).

BTW: Boolean-Werte nie auf True überprüfen. .Visible ist ja sschon ein Boolean. Zudem ist wahr als nicht falsch (0) deklariert und die Konstante True als 1.
Ich würde auch anders einrücken
Das geht mir jetzt zu schnell. Wie machst du es denn?
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#8

AW: Mehrere If-Abfragen

  Alt 9. Dez 2010, 01:10
Markus meinte das in etwa so:
Delphi-Quellcode:
if Image1.Visible Then
  ...
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Mehrere If-Abfragen

  Alt 9. Dez 2010, 07:48
Wie wäre es erstmal deinen Variablen vernünftige Namen zu geben?
Dann ist es viel angenehmer und erspart unnötige erklärungen.
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#10

AW: Mehrere If-Abfragen

  Alt 9. Dez 2010, 14:21
Wie wäre es erstmal deinen Variablen vernünftige Namen zu geben?
Dann ist es viel angenehmer und erspart unnötige erklärungen.
Wo liegt denn bitte an "Wiederholungen" das Problem?...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz