Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi break it problem (https://www.delphipraxis.net/147030-break-problem.html)

Lumpiluk 31. Jan 2010 18:23

Re: break it problem
 
dx und dy veränderst du doch, also müssen das Variablen sein. Global hast du sie aber als Konstanten desklariert und lokal dann nochmal als Variablen.
Nimm doch mal die lokalen weg und packe dx und dy noch unter das 'var' ganz oben. Die Werte (5) kannst du dann immer noch im OnCreate zuweisen...

[so viele Nachrichten in so kurzer Zeit... hoffe, es hilft trotzdem ;) ]

//Edit: Ok, ich glaube, ich war gerade ganz woanders.

speedy23 31. Jan 2010 18:36

Re: break it problem
 
verdammt also langsam komm ich gar nich mehr klar... was muss ich jetzt durch was ersetzen? ich muss den konstanten ja nen wert zuweisen das habe ich ja mit 5 oben getan ich versteh gerade nicht was da falsch ist , was muss ich machen??

wieso warst du woanders...das erscheint mir gerade komisch da ja dx die konstanten sein sollen...? wenn ich denen oben nciht 5 zuweisen soll, was denn dann?

|edit
@eweiss danke für deine hilfe, das mit dem nciht annehmen ist nicht meine absicht, ich verliere nur langsam den überblick weil das worauf du dich beziehst sollte ich ein paar posts vorher noch auf das ändern was du nun kritisierst...

kann mit nicht vllt jemand einfach konkret zeigen wo mein fehler ist? das wäre echt sehr nett, ich sitze hier seit paar stunden und ändere ständig so wie in den posts und komme nicht 1 cm weiter... :(

mkinzler 31. Jan 2010 18:37

Re: break it problem
 
In der Konstantendefinition schon

speedy23 31. Jan 2010 18:40

Re: break it problem
 
na wo denn dann sonst? oben global hab ich denen 5 zugewiesen, bitte sag mir doch einfach wo der fehler liegt i krieg hier gleich nen nervenkollaps ;)

mkinzler 31. Jan 2010 18:43

Re: break it problem
 
Pack mal das komplette Projekt und hänge es hier an

speedy23 31. Jan 2010 18:45

Re: break it problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
1000 danke an dich

rollstuhlfahrer 31. Jan 2010 19:03

Re: break it problem
 
Delphi-Quellcode:
implementation
{$R *.dfm}

var
  x,y: integer;

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;
begin
  if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then
  begin
    y := -y;
  end;
  if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then
  begin
    x := -x;
  end;

  Shape1.Left := Shape1.Left + x;
  Shape1.Top := Shape1.Top + y;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // fehlendes... (hab ich zu voreilig gelöscht)
  x := 5;
  y := 5;
end;
Bernhard

mkinzler 31. Jan 2010 19:05

Re: break it problem
 
So sollte es funktionieren:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, sSkinManager, Buttons, sBitBtn, StdCtrls, sButton, jpeg,
  ExtCtrls, sPanel;

const dx=5;
      dy=5;
type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Hilfe1: TMenuItem;
    NeuesSpiel1: TMenuItem;
    Beenden1: TMenuItem;
    Image1: TImage;
    Startknopf: TsButton;
    Pauseknopf: TsBitBtn;
    reflektor: TImage;
    Shape1: TShape;
    Timer1: TTimer;
    procedure PauseknopfClick(Sender: TObject);
    procedure StartknopfClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure NeuesSpiel1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var x,y:integer;

procedure TForm1.PauseknopfClick(Sender: TObject);
begin
  {Spiel pausieren und button pause unsichtbar --> Start sichtbar}
 pauseknopf.visible:=false;
 timer1.enabled:=false;
end;

procedure TForm1.StartknopfClick(Sender: TObject);
begin
  {macht den pauseknopf sichtbar, setzt spiel fort}
  timer1.Enabled:=true;
  pauseknopf.Visible:=True;
  x := dx; y := dy;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

      if reflektor.left > 110 then
      begin
       case ord(key) of
        vk_left:reflektor.left:=reflektor.left-14;
       end;
      end;

      if (reflektor.left < 426) then
      begin
       case ord(key) of
         vk_right:reflektor.left:=reflektor.left+14;
       end;
      end;
   end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (Shape1.Top <= image1.Top + Shape1.Height ) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then
  begin
    y := -y;
  end;
  if (Shape1.Left <= image1.Left + Shape1.Width ) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then
  begin
    x := -x;
  end;

  Shape1.Left := Shape1.Left + x;
  Shape1.Top := Shape1.Top + y;
  Shape1.Repaint;
end;





procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled:=false;

end;

procedure TForm1.NeuesSpiel1Click(Sender: TObject);

begin
 timer1.enabled:=true;

end;

end.

speedy23 31. Jan 2010 19:09

Re: break it problem
 
ca. 38.000 mal danke aber nun geht er ja rechts nichtmehr an den imagerande, müsste er doch laut code eigentlich oder?

mkinzler 31. Jan 2010 19:12

Re: break it problem
 
Er stösst ja am Rande des Shapes ( nur nicht Am Rand des sichtbaten Teils) + der Schrittweite ab


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr.
Seite 4 von 6   « Erste     234 56      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz