AGB  ·  Datenschutz  ·  Impressum  







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

Ball am Tisch

Ein Thema von Hawkeye4077 · begonnen am 7. Feb 2009 · letzter Beitrag vom 8. Feb 2009
Antwort Antwort
Seite 3 von 3     123   
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#21

Re: Ball am Tisch

  Alt 8. Feb 2009, 11:27
Eine Bewegung ist eine aneinander reihung einzelner Schritte. Also musst Du eine Schleife bauen die bei jedem Durchlauf einen Schritt macht (die X und Y Werte des Shapes werden verändert). Durch eine Verzögerung entsteht dann eine Bewegung. Die Schleife kommt dann in die OnClick Prozedur des StartButtons.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

Re: Ball am Tisch

  Alt 8. Feb 2009, 11:27
Ja, nur bevor du mich gleich fressen möchtest schau mal hier unter Punkt 2.3.2.3
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Hawkeye4077

Registriert seit: 7. Feb 2009
10 Beiträge
 
#23

Re: Ball am Tisch

  Alt 8. Feb 2009, 11:34
danke, das hilft mir weiter. dann muss ich doch die repeat until schleife verwenden, oder?

@ sir rufo:
ich weiß, dass die null bock haltung hier nicht erwünscht ist, aber habe ich denn je geschrieben, dass ich von euch erwrte, dass ihr meine hausaufgaben macht? das projekt ist im übrigen freiwillig, ich mache es, weil mir delphi spaß macht. nur diesmal hab ich halt ein brett vorm kopf!
  Mit Zitat antworten Zitat
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#24

Re: Ball am Tisch

  Alt 8. Feb 2009, 11:40
Ja zum Beispiel die.
Oder die For Schleife ansonsten musst du dir eine geeignete Abbruchsbedingung überlegen.
  Mit Zitat antworten Zitat
Hawkeye4077

Registriert seit: 7. Feb 2009
10 Beiträge
 
#25

Re: Ball am Tisch

  Alt 8. Feb 2009, 11:45
gut, vielen dank!
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#26

Re: Ball am Tisch

  Alt 8. Feb 2009, 11:52
Zitat von Hawkeye4077:
na toll, mathe ist nicht gerade mein lieblingsfach.
was wir mit "delta x" und "delta y" meinen, ist aber schon klar (sollte auch aus der zeichnung ersichtlich sein), und wie du diese berechnen kannst?
dann brauchst ja nur noch das verhältnis der beiden berechnen, eine schleife mit der länge eines deltas bauen (am besten das größte der beiden) den entsprechenden wert mit jedem schleifendurchlauf erhöhen und gleichzeitig den anderen mit hilf des Verhältniswertes erhöhen.

kleiner tip...machs erstmal ohne abprallen. das verkompliziert das Ganze am Anfang nur.

HTH Frank
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#27

Re: Ball am Tisch

  Alt 8. Feb 2009, 12:00
Ja, anbieten würde sich eine Funktion, die das Shape um max. 1 Pixel in x- und y- Richtung auf den Zielpunkt bewegt.

Diese Funktion so lange aufrufen, bis der Zielpunkt erreicht wurde.

Das Abprallen wird dann dadurch realisiert, dass sich jeweils beim Erreichen der Grenzen der Zielpunkt ändert.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Hawkeye4077

Registriert seit: 7. Feb 2009
10 Beiträge
 
#28

Re: Ball am Tisch

  Alt 8. Feb 2009, 12:03
hi, danke. was mit delta x und delta y gemeint ist, verstehe ich schon. an das apprallen mache ich mich später, wenn der ball sich erstmal bewegt.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#29

Re: Ball am Tisch

  Alt 8. Feb 2009, 14:19
um das mal ganz einfach (ohne sonderfälle zu berücksichtigen) in code zu fassen (muss natürlich noch optimiert werden):

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
    dx,dy:integer;
    v:double;
    ps,pz:TPoint;
begin
  ps:=Point(10,10); //ball soll von da
  pz:=Point(100,200); //nach da
  //den weg als linie vorzeichnen
  canvas.moveto(ps.x,ps.y);
  canvas.lineto(pz.x,pz.y);
  shape1.SetBounds(ps.x,ps.y,10,10);//die startposition und größe des Shapes setzen
  sleep(1000);//einfach mal warten, um den startpunkt in ruhe zu betrachten
  //deltas berechnen
  dx:=pz.x-ps.x;
  dy:=pz.y-ps.y;
  if dx>dy then
  begin
    v:=dy/dx; //verhältnis berechnen
    for i:=1 to dx do
    begin
      //neu positionieren
      shape1.left:=ps.x+i;
      shape1.Top:=ps.y+trunc(i*v);
      application.ProcessMessages;
      sleep(20); //damit die bewegung bisschen langsamer wird...
    end;
  end else
  begin
    v:=dx/dy; //verhältnis berechnen
    for i:=0 to dy do
    begin
      //neu positionieren
      shape1.top:=ps.y+i;
      shape1.Left:=ps.x+trunc(i*v);
      application.ProcessMessages;
      sleep(20); //damit die bewegung bisschen langsamer wird...
    end;
  end;
end;
HTH Frank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 11:45 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