![]() |
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. |
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... :( |
Re: break it problem
In der Konstantendefinition schon
|
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 ;)
|
Re: break it problem
Pack mal das komplette Projekt und hänge es hier an
|
Re: break it problem
Liste der Anhänge anzeigen (Anzahl: 1)
1000 danke an dich
|
Re: break it problem
Delphi-Quellcode:
Bernhard
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; |
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. |
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?
|
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. |
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