Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ball am Tisch (https://www.delphipraxis.net/128864-ball-am-tisch.html)

Hawkeye4077 7. Feb 2009 18:36


Ball am Tisch
 
hi, ich bin hier neu und hab gleich eine frage:
in der schule hab ivh seit einem halben jahr informatik, seit einem vierteljahr arbeiten wir nun mit delphi. eigentlich hab ich damit keine probleme, aber mit dem neuen projekt komm ich einfach nicht klar :( :
auf einem tisch ( panel) soll sich ein ball ( shape.objekt) bewegen, wenn m an in zwei edit felder werte für left und top eingibt und auf start klickt. hat der ball das ende des "tisches" erreicht, soll er abprallen und nicht aus dem panel verschwinden. ich hab zwar schon einige ideen gehabt und ausprobiert, aber es funktiniert einfach nicht. wenn ich bei edit1 bzw. edit2 werte eingebe und auf start drücke, tut sich nichts.
Meine note hängt davon zwar nicht ab, aber es ärgert mich einfach, dass ich es nicht hinkriege. wenn ich unseren lehrer frage, erklärt er mir nur: Das weiß ich auch nicht, musst du mal ausprobieren. :evil:

Könnt ihr mir bitte helfen????
bin für jeden tipp dankbar!!!!
LG Hawkeye4077

DeddyH 7. Feb 2009 18:38

Re: Ball am Tisch
 
Hallo und Willkommen in der DP :dp:

wohin soll sich der Ball denn bewegen? Da so eine Positionsverschiebung ja eine regelmäßig wiederkehrende Aufgabe ist, böte sich IMHO die Verwendung eines Timers an.

Hawkeye4077 7. Feb 2009 18:44

Re: Ball am Tisch
 
hi, der ball soll sich in alle richtungen bewegen, je nachdem welche left und top werte eingegeben werden. einen timer sollen wir nicht benutzen.
danke für die schnelle antwort.

DeddyH 7. Feb 2009 18:47

Re: Ball am Tisch
 
Sry, die Infos sind mir persönlich etwas zu dürftig (soll heißen: kapier ich nicht :wiejetzt:)

Whatever 7. Feb 2009 18:53

Re: Ball am Tisch
 
Ich glaube mit den left und top Werten soll die Richtung angegeben werden bzw. die "Schrittgröße".
Wenn ich damit richtig liege wäre das mit einem Timer wirklich am besten zu erledigen oder halt mit Sleep oder einer delay-procedure.

haentschman 7. Feb 2009 18:58

Re: Ball am Tisch
 
Zitat:

einen timer sollen wir nicht benutzen.
...wer sagt das ? Der Lehrer, der...
Zitat:

Das weiß ich auch nicht, musst du mal ausprobieren.
...gesagt hat ?

Sollte er noch mal fragen kannst du sagen, mit einem Timer ist das die eleganteste Lösung.

Zur Frage: im TimerEvent OnTimer setzt du dann die Position deines Shapes. Du müßtest noch die Richtung der Bewegung zwischenspeichern und bei Kollision mit dem "Rand" des Panels entsprechend die Richtung ändern. Desweiteren brauchst du noch eine Funktion für den Einfallswinkel und den Ausfallwinkel.

wenn mich nicht alles täuscht gab es hier schon mal was in dieser Richtung. Durchsuche mal die DP nach den Stichworten.

:hi:

PS: was ich nicht verstehe sind die Werte welche in die Edits eingetragen werden sollen ?

DeddyH 7. Feb 2009 18:59

Re: Ball am Tisch
 
[OT] Diese Sorte Lehrer hab ich gefressen :evil: [/OT]

Hawkeye4077 7. Feb 2009 19:01

Re: Ball am Tisch
 
das tut mir leid, ich versuchs nochmal besser zu erklären:
der ball soll sich innerhalb des panels verschieben. außerhalb des panels befinden sich zwei editfelder, in die man zwei zahlen eingeben soll. wenn man dann auf start drückt, soll sich der ball auf diese position begeben. i9ch hoffe, du verstehst, wei ich das meine!?

@deddyH: Ich auch!!!

@ whatever: genau das soll mi den left und top werten angegeben werden. den timer dürfen wir nicht benutzen. was ist denn die sleep bzw. die delay-procedure? das hatten wir in der schule noch nicht. (haben auch kein buch zum nachlesen)

haentschman 7. Feb 2009 19:08

Re: Ball am Tisch
 
Zitat:

(haben auch kein buch zum nachlesen)
...Delphi Hilfe :gruebel:
Zitat:

in die man zwei zahlen eingeben soll
3,1215926 oder 1000000000000000 oder 2E4 :gruebel:

was für Zahlen ? Bildschirmposition ? Position relativ zum Panel ? :gruebel:

wo nimmst du die Zahlen her ?

Whatever 7. Feb 2009 19:24

Re: Ball am Tisch
 
Sleep unterbricht das Programm komplett was ich aber nicht für sinnvoll halte.
Eine Delay-Procedure sorgt auch für eine Pause stoppt allerdings nicht das komplette Progamm.

Delphi-Quellcode:
procedure TForm1.Delay(time: word);
var
  Start : Integer;
begin
  Start:= GetTickCount;
  while (GetTickCount - Start <= time) do
  Application.ProcessMessages;
end;
Also kannst du z.B. in eine Schleife Delay(verzögerung) einbauen und sie wird "Schrittweise" ausgeführt womit du deine Bewegung erzeugen könntest.

Natürlich ist ein Timer das eleganteste aber dein genialer Lehrer möchte das ja nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 Uhr.
Seite 1 von 3  1 23      

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