Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Image bewegen (https://www.delphipraxis.net/144048-image-bewegen.html)

Jonski 28. Nov 2009 23:36

Re: Image bewegen
 
Ich glaub das liegt am Laptop.

DeddyH 28. Nov 2009 23:39

Re: Image bewegen
 
Pack einmal die *.dpr, *.pas und *.dfm Deines Projektes in ein Zip-Archiv und hänge das an Deinen Beitrag an. Dass das am Laptop liegen soll, wage ich zu bezweifeln.

Namenloser 28. Nov 2009 23:42

Re: Image bewegen
 
Zitat:

Zitat von Jonski
Ich glaub das liegt am Laptop.

Solang nicht deine Tastatur kaputt ist (und das scheint ja nicht der Fall zu sein, weil du ja hier noch Beiträge schreiben kannst), wage ich einfach mal, zu widersprechen, auch ohne die genauen Umstände zu kennen. Nach meinen ca. 7 Jahren Erfahrung, kann ich sagen, dass, wenn etwas nicht funktioniert, es in mindestens 99% aller Fälle die eigene Schuld ist.
Solange du uns aber den Code vorenthälst, kann dir niemand helfen. Noch besser wäre es natürlich, wenn du das Problem selbst lösen würdest, denn dabei lernst du viel mehr.

Jonski 28. Nov 2009 23:45

Re: Image bewegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier is die Scheiße

Jonski 28. Nov 2009 23:48

Re: Image bewegen
 
ich habe bestimmt den einfachsten Fehler der Welt gemacht.

DeddyH 28. Nov 2009 23:49

Re: Image bewegen
 
Das OnKeyDown ist nicht zugewiesen. Klick einfach auf eine leere Stelle auf Deinem Formular, wechsel im Objektinspektor auf den Reiter "Ereignisse", dort auf "OnKeyDown" und wähle "FormKeyDown" aus. Dann nochmal versuchen.

Jonski 29. Nov 2009 11:18

Re: Image bewegen
 
Helft mir mal bitte.

Diese Bitmap wird nur als weißer Balken angezeigt:
Delphi-Quellcode:
//Bitmap3
  Bitmap3:=TBitmap.Create;
  try
    Bitmap3.Width:=Image3.Width;
    Bitmap3.Height:=Image3.Height;
    Bitmap3.Canvas.pen.color:=clBlue;
    Bitmap3.Canvas.pen.width:=10;
    Bitmap3.Canvas.Rectangle(0,0,5,1000);
    Image3.Picture.Assign(Bitmap3);
  finally
    Bitmap3.Free;
  end;

  with Image3 do
    begin
    transparent:=true;
    end;

DeddyH 29. Nov 2009 11:20

Re: Image bewegen
 
Schau Dir die Parameter von Canvas.Rectangle einmal an. Ist die Bitmap wirklich 1000 Pixel hoch?

Jonski 29. Nov 2009 11:22

Re: Image bewegen
 
Nein aber mit -1000 geht es auch nicht und wie kann ich eigentlich die Pixel zählen lassen?

DeddyH 29. Nov 2009 11:23

Re: Image bewegen
 
Nimm doch einfach Höhe und Breite der Bitmap.

himitsu 29. Nov 2009 11:41

Re: Image bewegen
 
Zitat:

ransparent:=true;
das Pixel links unten wird standardmäßig als Transparentfarbe genommen, dieses Pixel ist bei dir wohl Blau, weswegen alles Blaue transparent/durchsichtig wird und nur noch der Rest sichtbar ist ... wo nix gezeichnet wurde, ist ein Bitmap standardmäßig weiß ... ergo ist nur was Weißes sichtbar. :angel:

Jonski 29. Nov 2009 11:44

Re: Image bewegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt wo ihr mir so toll geholfen habt dürft ihr auch sehen was ich gemacht habe.

Guckt es euch bitte an und bewertet es, danke.

Jonski 29. Nov 2009 11:56

Re: Image bewegen
 
Ich hab wieder eine Frage!

Wie kriege ich es hin, dass sich dieses Image1 solange bewegt bis es Image 2 oder 5 berührt?

Denn ich will jetzt einen Ball der darum hüpft! Bei mir springt er immer nur zu einer Wand und man sieht keine Bewegung.

DeddyH 29. Nov 2009 12:23

Re: Image bewegen
 
Versuch es mal mit einem Timer.

Jonski 29. Nov 2009 12:36

Re: Image bewegen
 
Genau das ist mein Problem wie baue ich einen Timer ein?

Ich weiß man kann in millisekunden angeben, wielange das Programm nichts machen soll, aber wie schreibe ich das?

DeddyH 29. Nov 2009 12:39

Re: Image bewegen
 
Die Bewegung samt Prüfung schreibst Du ins Ereignis OnTimer des Timers.

Jonski 29. Nov 2009 12:44

Re: Image bewegen
 
Hab ich, aber jetzt wird nurnoch der Timer verwendet und nicht der Button, und der Punkt springt immernoch von einem zum anderen Ort!

DeddyH 29. Nov 2009 12:55

Re: Image bewegen
 
Dann überprüfe einfach mal Deine Programmlogik. Es nützt Dir ja nichts, wenn wir Dir hier das Denken abnehmen.

Jonski 29. Nov 2009 13:03

Re: Image bewegen
 
Ich müsste nur mal wissen wie ich 2 Proceduren miteinander verknüpfe(habe ich schon mal gelesen aber wieder vergessen).

Und wie kann ich die Zeit, die angehalten wird, regeln?

DeddyH 29. Nov 2009 13:09

Re: Image bewegen
 
Die Zeit wird in der Interval-Eigenschaft des Timers angegeben. Und was meinst Du mit Verknüpfen?

Jonski 29. Nov 2009 13:16

Re: Image bewegen
 
Jaja das habe ich auch bemerkt, aber der Punkt bewegt sich nicht langsam sondern hüpft von A nach B, man soll aber die Bewegung sehen!

Und ich will mit Button1.Click den Vorgang starten ,dass er sich so wie bei einem Pong-spiel nur ohne "Schläger" bewegt.

Also ,dass der Timer dann gestartet wird,wenn ich auf den Button kilcke.

Namenloser 29. Nov 2009 13:19

Re: Image bewegen
 
Wenn der Punkt sich langsam von A nach B bewegen soll, musst du eben genau das programmieren. Als Programmierer ist es deine Aufgabe, dir zu überlegen, wie du das anstellen kannst. Wenn du Hilfe zu den Komponenten brauchst, guck dir halt die interne Delphi-Hilfe an, oder nutze die Referenz hier im Forum.

Bitte hör auf, bei jeder Kleinigkeit nachzufragen.

Jonski 29. Nov 2009 13:22

Re: Image bewegen
 
Ja, aber wie erreiche ich das denn, welcher Befehl fehlt mir denn?

Namenloser 29. Nov 2009 13:26

Re: Image bewegen
 
Zitat:

Zitat von Jonski
Ja, aber wie erreiche ich das denn, welcher Befehl fehlt mir denn?

Dir fehlt kein Befehl. Delphi-Referenz durchsuchenTTimer und Delphi-Referenz durchsuchenTTimer.Interval wurden schon genannt. Das - verbunden mit etwas Eigeninitiative - reicht völlig aus, um dein Ziel zu erreichen.

Jonski 29. Nov 2009 15:45

Re: Image bewegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bitte guck es dir an, ich komme weder vor noch zurück!

Das mit dem Timer ist nicht das Problem der geht, aber der Ball geht durch Wände!

DeddyH 29. Nov 2009 16:00

Re: Image bewegen
 
Ich hab nicht reingeschaut, aber vermutlich fehlt die Kollisionskontrolle. Hatten wir doch alles schon.

Jonski 29. Nov 2009 16:02

Re: Image bewegen
 
Nein ich hab diese Kollisionskontrolle:
Delphi-Quellcode:
Punkt_HochRunter:=x;
Punkt_LinksRechts:=y;

if Image1.Left = Image2.Left +30 then
  begin
  Punkt_LinksRechts:=1;
  end;

if Image1.Left = Image3.Left -50 then
  begin
  Punkt_LinksRechts:=2;
  end;

if Image1.Top = Image4.Top +30 then
  begin
  Punkt_HochRunter:=1;
  end;

if Image1.Top = Image5.Top -50 then
  begin
  Punkt_HochRunter:=2;
  end;

x:=Punkt_HochRunter;
y:=Punkt_LinksRechts;

if Punkt_LinksRechts = 1 then
  begin
  Image1.Left:= Image1.Left +10;
  end;

if Punkt_LinksRechts = 2 then
  begin
  Image1.Left:= Image1.Left -10;
  end;

if Punkt_HochRunter = 1 then
  begin
  Image1.Top:= Image1.Top +10;
  end;

if Punkt_HochRunter = 2 then
  begin
  Image1.Top:= Image1.Top -10
  end;

DeddyH 29. Nov 2009 16:05

Re: Image bewegen
 
Dann setz einmal einen Haltepunkt und schau Dir die Inhalte Deiner Variablen an.

hugo1990 29. Nov 2009 16:10

Re: Image bewegen
 
Eine Kollisionsabfrage nur mit "=" zu machen ist in den meisten Fällen kritisch, man sollte lieber ">=" oder "<=" benutzten, je nach dem was man gerade benötigt. Denn wenn bei "=" der gesuchte Wert übersprungen wird, dann läuft alles normal weiter.

Jonski 29. Nov 2009 16:12

Re: Image bewegen
 
Also ich seh das so:

1.Punkt_LinksRechts und Punkt_HochRunter werden die Werte aus x und y zugewiesen.
2.Es wird getestet ob die Koordinaten von Image1 auf denen von Image? liegen.
3.Ggf. werden den Var. Punkt_LinksRechts und Punkt_HochRunter andere Werte zugeordnet.
4.x und y werden die neuen Werte zugewiesen.(Irgendwie überflüssig oder?).
5.Das Objekt wird bewegt.

Ich versteh meinen Fehler nicht :gruebel:

Jonski 29. Nov 2009 16:15

Re: Image bewegen
 
Ihr seid so gut zu mir es klappt!

So und jetzt wie kriege ich es hin das es erst bei Button1.click losgeht?

hugo1990 29. Nov 2009 16:17

Re: Image bewegen
 
Du testest aber mit "=" und DeddyH hat gesagt du sollst mal Haltepunkte setzten und den Inhalt der Variablen anschauen. Wenn du das getan hättest, wüsstest du wo dein Fehler liegt.
Dein Image1 startet bei 432, 272 und diese Werte werden immer mit 10 inkementiert bzw. dekrementiert.
Deine anderen Images haben aber bei den Positionen als letzte Ziffer nie eine 2, deshalb habe ich ja gesagt, du sollst ">=" oder "<=" verwenden.

DeddyH 29. Nov 2009 16:18

Re: Image bewegen
 
Timer.Enabled initial auf false und im ButtonClick auf true stellen.

Namenloser 29. Nov 2009 16:18

Re: Image bewegen
 
Zitat:

Zitat von Jonski
Ihr seid so gut zu mir es klappt!

So und jetzt wie kriege ich es hin das es erst bei Button1.click losgeht?

Delphi-Referenz durchsuchenTTimer.Enabled

Jonski 29. Nov 2009 16:27

Re: Image bewegen
 
Ich bin gerade dabei Pong zu Programmieren :-D

Wolfgang Mix 29. Nov 2009 16:36

Re: Image bewegen
 
Setze den Timer im Objektinstektor auf disabled und im Button1-Event
auf Enabled. Müßte doch funktionieren!

Medium 29. Nov 2009 16:44

Re: Image bewegen
 
Zitat:

Zitat von Jonski
Ich bin gerade dabei Pong zu Programmieren :-D

Nein, die Antworter hier programmieren Pong. Du schreibst es nur hin.

Jonski 29. Nov 2009 16:48

Re: Image bewegen
 
Toll danke das motiviert mich!

Ich weiß, aber ich habe das gestern erst gelernt und ich find meine Fehler nicht.

So wie hier:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

begin

case Key of
  VK_Left:
  if Image6.Left > Image2.Left +43 then
    begin
    Image6.Left:= Image6.Left -10;
    end;
  VK_Right:
  if Image6.Left < Image3.Left -100 then
    begin
    Image6.Left:= Image6.Left +10;
    end;
end;
end;
Gebt mir nur einen Tipp

Jonski 29. Nov 2009 17:24

Re: Image bewegen
 
Ich komme nicht weiter :wall:

Luckie 29. Nov 2009 17:29

Re: Image bewegen
 
Würdest du es bitte unterlassen deine beitrage zu pushen bevor 24 Stunden um sind:

Des Weiteren:
Zitat:

find meine Fehler nicht
Das hilft uns relativ wenig. Was passiert bzw. passiert nicht und was soll passieren? Fehlermeldungen der des Compilers? Fehlermeldungen zur Laufzeit? Was hast du beim Debuggen rausgefunden?

Du kannst nicht von uns erwarten, dass wir wissen was passiert und wenn du uns essentielle Informationen vorenthältst, können wir kaum helfen außer raten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Seite 2 von 3     12 3      

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