tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
494
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Imod
    Imod Imod ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Ort
    Waldsee
    Beiträge
    87
    Hey Leutz,

    Ich habe früher viel C++ Programmiert bin aber vor einiger Zeit auf Delphi umgestiegen.

    Nun bin ich dabei ein naja einfaches Game zu schreiben, mein Problem liegtnach
    if (bar.Top = Kugel.Top)
    then if

    vermute ich Code.

    Und zwar soll, wenn der Ball auf das Rechteck fliegt wieder zurück kehren.
    Dummerweiße erkennt mein Programm nicht dass der Ball die gleiche .left wie mein
    Balken(Rechteck) hat. Dass rechteck hat eine Width von 25 darum auch immer +1/-1
    da er ja , egal auf welcher Fläche er landet es Merken soll.

    Ich hoffe ihr habts kapiert ...

    Hier der Code :

    PHP-Code:
    var
      
    Form1TForm1;
      
    counter integer;
      
    xK integer;
      
    yKinteger;
      
    integer;

    implementation

    {$R *.dfm}


    procedure TForm1.FormMouseMove(SenderTObjectShiftTShiftStateX,
      
    YInteger);
    var
    yy string;
    xx string;
    begin
    yy 
    := IntToStr(Y);
    xx := IntToStr(X);
    aY.Caption := yy;
    aX.Caption := xx;

    if 
    350 then if 426 then bar.Top := Y;
    if 
    501 then bar.Left := X;                 // Bar der Maus nachlaufen lassen!
    end;



    procedure TForm1.FormActivate(SenderTObject);
    begin
    counter 
    := 1;
    xK := 300;
    end;

    procedure TForm1.Timer1Timer(SenderTObject);
    begin
    Kugel
    .Left := xK;
    if (
    1then begin counter := counter +1;
                          
    yK := counterend else
    if (
    2then begin counter := counter -1;
                          
    yK := counterend;

    if (
    bar.Top Kugel.Top)
      
    then if
       (
    bar.Left =
       (
    Kugel.Left) or (Kugel.Left +1) or (Kugel.Left -1) or
       (
    Kugel.Left +2) or (Kugel.Left -2) or (Kugel.Left +3) or (Kugel.Left -3) or
       (
    Kugel.Left +4) or (Kugel.Left -4) or (Kugel.Left +5) or (Kugel.Left -5) or
       (
    Kugel.Left +6) or (Kugel.Left -6) or (Kugel.Left +7) or (Kugel.Left -7) or
       (
    Kugel.Left +8) or (Kugel.Left -8) or (Kugel.Left +9) or (Kugel.Left -9) or
       (
    Kugel.Left +10) or (Kugel.Left -10) or (Kugel.Left +11) or (Kugel.Left -11) or
       (
    Kugel.Left +12) or (Kugel.Left -12) or (Kugel.Left +13) or (Kugel.Left -13) or
       (
    Kugel.Left +14) or (Kugel.Left -14) or (Kugel.Left +15) or (Kugel.Left -15) or
       (
    Kugel.Left +16) or (Kugel.Left -16) or (Kugel.Left +17) or (Kugel.Left -17) or
       (
    Kugel.Left +18) or (Kugel.Left -18) or (Kugel.Left +19) or (Kugel.Left -19) or
       (
    Kugel.Left +20) or (Kugel.Left -20) or (Kugel.Left +21) or (Kugel.Left -21) or
       (
    Kugel.Left +22) or (Kugel.Left -22) or (Kugel.Left +23) or (Kugel.Left -23) or
       (
    Kugel.Left +24) or (Kugel.Left -24) or (Kugel.Left +25) or (Kugel.Left -25))
        
    then begin
        i 
    := 2end;
    if 
    Kugel.Top 410 then
    begin
      Kugel
    .Top := Kugel.Top yK;
    end else begin
      yK 
    := 160xK := 372Panel1.Visible := true;
    end;
    end;

    procedure TForm1.FormCreate(SenderTObject);
    begin
    := 1
    end
    ;

    end
    Mfg ImoD
     
    www.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi

  2. #2
    Avatar von Imod
    Imod Imod ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Ort
    Waldsee
    Beiträge
    87
    hey,

    sry mein Internet ist ausgefallen Router störung ... sry

    undzwar mit ungelich <=/>=
    geht es sehr gut
     
    www.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi

  3. #3
    Sadi al Wadidrah Sadi al Wadidrah ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Ort
    Schweiz
    Beiträge
    65
    könntest du ev. eine Zeichnung von dem machen, was du willst? ich kann es mir relativ schlecht vorstellen.

    so vom Schiff aus würde ich sagen, dass der Fall bar.Top == Kugel.Top nie eintrifft, weil du keine Toleranzgrenze festgelegt hast. Oben beachtest du zwar eine Art Range

    Code :
    1
    2
    3
    
    (if Y > 350 then if Y < 426 then bar.Top := Y;
    if X < 501 then bar.Left := X;                // Bar der Maus nachlaufen lassen!
    end; ),

    aber unten ignorierst du sie wieder.
     
    Lächle, morgen wird alles noch schlimmer ...

  4. #4
    Avatar von Imod
    Imod Imod ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Ort
    Waldsee
    Beiträge
    87
    hey,

    wie meinst du das genau?
    und wie bau ich so ne toleranz grenze ein, hab so was noch nie gemacht =(

    Mfg Domi
     
    www.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi

  5. #5
    Sadi al Wadidrah Sadi al Wadidrah ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Ort
    Schweiz
    Beiträge
    65
    Code :
    1
    2
    
    if (bar.Top = Kugel.Top)
      then if

    testet ja, ob die Y-Koordinate des Balkens und der Kugel gleich sind. Sobald sich in deinem Programm Werte schnell ändern , darfst du nicht mehr mit "=" arbeiten.
    Man sagt sogar, dass man bei Schleifen eine Zählvariable nie nur auf Gleichheit testen soll.

    falsch:
    Code :
    1
    2
    3
    4
    
    i := 0;
    while not i == 532 do
      inc(i);
    end;

    richtig:
    Code :
    1
    2
    3
    4
    
    i := 0;
    while i < 532 do
      inc(i);
    end;

    bei visuellen Komponenten kommt noch dazu, dass nicht jeder Pixel registriert wird, über den du mit der Maus fährst. (Zeichne mal in MSPaint mit dem Bleistift einen schnellen Kreis, dann sieht mans).

    Wenn man Komponenten hat, die sich bewegen, checkt man nicht den Bereich, welchen sie nicht übertreten dürfen, sondern man legt den Bereich fest, in welchem sie sich aufhalten dürfen, oder nicht dürfen.

    ich hoffe, ich habe dir jetzt nicht lauter Zeugs erzählt, dass du sowieso schon weisst. Wenn was unklar ist, einfach fragen.

    grz
     
    Lächle, morgen wird alles noch schlimmer ...

  6. #6
    Avatar von Imod
    Imod Imod ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Ort
    Waldsee
    Beiträge
    87
    hey,

    erstmals vielen Dank.

    Leider weiß ich nicht wie ich so einen Breich festlegen soll

    Mfg Domi
     
    www.freaky-keylogger.de.ms ! -> Pls mal testen und mir ne Mail schreiben wäre echt net, da ich wissen muss obs so okay ist. Mfg Domi

  7. #7
    Registriert seit
    Mar 2004
    Beiträge
    441
    Nur mal so in den Raum geworfen:
    Helfen dir evtl. die Methoden IntersectRect() oder PtInRect aus der Unit "Types" weiter?
     

Ähnliche Themen

  1. Break Out
    Von Chickow im Forum Bildbearbeitung & Illustration
    Antworten: 8
    Letzter Beitrag: 08.05.07, 09:05
  2. BREAK; - Cannot break/continue 1 level
    Von Papenburger im Forum PHP
    Antworten: 2
    Letzter Beitrag: 02.05.07, 15:12
  3. Cannot break
    Von GoldenEye im Forum PHP
    Antworten: 4
    Letzter Beitrag: 14.09.06, 19:35
  4. break;
    Von Flegmon im Forum Coders Talk
    Antworten: 5
    Letzter Beitrag: 06.12.05, 16:05
  5. break
    Von origin^sad im Forum PHP
    Antworten: 8
    Letzter Beitrag: 10.01.03, 23:32