Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie schreibt man in die Unit beim Programmablauf?? (https://www.delphipraxis.net/8664-wie-schreibt-man-die-unit-beim-programmablauf.html)

Kihaku 9. Sep 2003 19:45


Wie schreibt man in die Unit beim Programmablauf??
 
Hihohollala,

Ich verzweifel hier...

Ich möchte auf irgendeine art und weise wärend des laufenden Programmes Variabeln, Sprites, wat weis ich erzeugen können.

nur da gibt es ein klitze kleines Problem....ich weis absolut nicht wie!!!

Irgendwie muss das doch gehen.

Cu :freak: :freak: :freak:

citybreaker 9. Sep 2003 20:03

Re: Edit1.Text := 'HILFT MIR BITTE!!!';
 
Hi!
Ich kann dir nicht sagen wie es geht,
aber ich kann dir sagen wir du es event.
herrausfindest. Du solltest erst mal den
Titel des Threads ändern, so findest du
dann sicher schneller Personen die die helfen
können.

CalganX 9. Sep 2003 20:59

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Hi,
du erstellst die entsprechende Komponete einfach dynamisch.
Z.B. ein Button:
Delphi-Quellcode:
var
  btnNewBtn: TButton;
begin
  btnNewBtn := TButton.Create(self);
  try
    btnNewBtn.Caption := 'Hallo Welt';
  finally
    btnNewBtn.Free;
  end;
end;
Chris

Kihaku 9. Sep 2003 21:09

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Hi,

EDIT: war ein dummer kommentar von mir



ok das mit dem Button funktioniert, nur wie geht das mit Sprites??

Denn ich möchte, wenn ich zb nen Editor für nen 2d game mache, ja irgendwie die objecte plazieren, und das müssen ja sprites sein. und um die nicht zu programmieren möchte ich das so machen, das ich nen knopf drücke um einen stein hinzuzufügen, dann gebe ich dem stein nen namen, und klick dann an die stelle wo er hin soll.

Das muss doch irgendwie gehen oder?

axelf98 9. Sep 2003 23:48

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Versuchs mal mit einem Dynamischen Array:
Delphi-Quellcode:
var i:integer;
Steine : Array of Timage;
begin

setlength(Steine,6);  // 6 Steine

for i := 0 to high(Steine) do
begin
  with Steine[i] do
 begin
   Timage.Create(self);
   Picture.LoadFromFile('C:\Stein.bmp');
   Top := trunc(random * 300); // Zufallszahlen als Bsp
   left := trunc(random * 300);
   height := 36;
   width:= 36;
   Visible := true;
   Show;
 end;

end;
end;
So oder so ähnlich kann man unendlich viele Images "machen".
Wenn neue hinzukommen sollen:
Delphi-Quellcode:
setlength(steine,length(steine)+1);
Stein[high(steine)] := Timage.Create(self);  // usw.
Wenn Stein 8 gelöscht werden soll:
Delphi-Quellcode:
Stein[7].free; // Die Lücke im Array müsste wieder aufgefüllt werden!
Vielleicht hilft dir das...

Wormid 10. Sep 2003 00:07

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Zitat:

Zitat von Kihaku
Hi, erstmal vielen dank das überhaupt jemand geantwortet hat, ist ja nicht so oft der fall hier...

Ich glaube, mit dieser Meinung stehst Du ziemlich alleine da...
Vielleicht liegt es an der Frage/Fragestellung, da schon mal dran gedacht?

Kihaku 10. Sep 2003 00:31

Re: Wie schreibt man in die Unit beim Programmablauf??
 
@axelf98

vielen dank, werde es sofort ausprobieren, hoffentlich bekomme ich es hin.


@wormid

also bis mal jemand antwortet dauert es stunden. und die fragestellung sollte auch nicht wirklich kompliziert gewesen sein oder? Naja dann nehme ich den satz mal zurück...

Luckie 10. Sep 2003 00:35

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Sorry, dass die Antworten nicht im Minuten Takt kommen - wir arbeiten dran. :roll:

Kihaku 10. Sep 2003 00:45

Re: Wie schreibt man in die Unit beim Programmablauf??
 
So hab ich es auch wieder nicht gemeint, aber es ist schon ärgerlich das man meistens min. 5 Stunden warten muss, bis etwas kommt. Aber wie gesagt, sorry für die Bemerkung


Hmm also das von axel klappt nicht so ganz. ich muss das ja auch in nen Spriteändern oder? also ich habe das jetzt so:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var i:integer;
Gegen : Array of TImageSprite;
begin


setlength(Gegen,6);  // 6 Steine

for i := 0 to high(Gegen) do
begin
  with Gegen[i] do
begin
   TGegenstand.Create(self);
   inherited Create(AParent);
   Image := Form1.DXImageList1.Items.Find('Stone');
   Top := trunc(random * 300); // Zufallszahlen als Bsp
   left := trunc(random * 300);
   height := 36;
   width:= 36;
   Visible := true;
   Show;
end;

end;
end;

keine ahnung ob das richtig ist, aber wenn ich es ausführen möchte, kommt diese Fehlermeldung:

[Error] Unit1.pas(284): Incompatible types: 'TSprite' and 'TForm1'
[Error] Unit1.pas(285): Undeclared identifier: 'AParent'


Kann mir da jemand helfen?

flomei 10. Sep 2003 01:05

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Zitat:

Zitat von Kihaku
So hab ich es auch wieder nicht gemeint

Es kam aber so rüber :roll:

Zitat:

Zitat von Kihaku
aber es ist schon ärgerlich das man meistens min. 5 Stunden warten muss, bis etwas kommt.

Du musstest nicht mal ne halbe Stunde warten bis die erste Antwort kam...
Und das spät am Abend nicht mehr so viele Antworten kommen ist eigentlich auch klar...

MfG Florian :hi:

Luckie 10. Sep 2003 01:16

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Um hier mal was klar zustellen: Die DelphiPraxis ist kein Dienstleistungsunternehmen. Es ist ein kostenloses Angebot von Daniel, der euch hier eine Diskussionspaltform für Fragen bezüglich Delphi anbietet. Alle Mitglider der Community beantworten hier Fragen anderer Mitglieder auf freiwilliger und uneigennütziger Basis. Wann hier wie kompetent geantwortet wird, hängt allein von den Community-Mitgliedern ab. Da derjenige, der dir helfen kann und auch bereit dazu ist, nicht alle fünf Minuten die Beiträge überprüft, dürfte wohl klar sein.

Desweiteren gibt es noch andere Möglichkeiten Hilfe zu seinem Problem zu bekommen. Da wäre als erstes mal die Delphi Hilfe zu nennen, dann gibt es noch Bücher (Ich würde dir mal ein Grundlagenbuch empfehlen.), dann gibt es noch die Forensuche (Das Theam hatten wir schon oft genug.) und schlußendlich gibt es immer noch Google.

Kihaku 10. Sep 2003 01:20

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Ist doch gut jetzt, ok?
Ich hab nen blöden Kommentar abgelassen, hab eingesehen das es dumm war, und fertig.

Lass doch bitte lieber wieder aufs eigentliche Thema zurück kommen.

Also das problem ist immer noch das gleiche wie weiter oben beschrieben.


Cu

Kihaku 10. Sep 2003 12:59

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Hi,

also um das ganze mal besser zu erklären:

Ich habe jetzt zb folgendes Sprite in DELPHIX erstellt:

Delphi-Quellcode:
  TStar = class(TImageSprite)
    public
      constructor Create(AParent: TSprite); override;
    end;

das hier habe ich bei variabeln eingetragen:

[/delphi] Star : TStar;[delphi]


Dann rufe ich die constructor anweisung auf:

Code:
constructor TStar.Create(AParent: TSprite);
begin
  inherited Create(AParent);
  Image := Form1.DXImageList1.Items.Find('star');
  Width := Image.Width;
  Height := Image.Height;
  Visible := True;
end;

In der Collisionsanweisung steht dann am ende speziell für diesen gegenstand folgendes:

Code:
procedure TKirby.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  {Hier dann der rest des codes}
  if sprite is TStar then
  begin
    score := score + 10;
    sprite.dead;
  end;
end;

Und auf dem Start Knopf, wo das Level gestartet wird, steht dieses hier mit dabei:


Code:
...
  with TStar.Create(DXSpriteEngine1.Engine) do
  begin
    x := 300;
    y := 200;
    Z := 2;
  end;
...



Jetzt zu meiner Frage.
Wie kann man das Zeugs alles am besten IM Game generieren, also so ne art editor. das ich jetzt auf nen knopf klicke, wo durch ich dieses TStar Object bekomme, und ihn plazieren kann, aber soviel erstellen wie ich möchte. Also das ich nicht nur einen plazieren kann sondern halt zb unendlich. Und das er Automatisch sagt, welcher Star das ist, und automatisch die ganzen funktionen in eine Unit reinschreibt.


Ist sowas möglich??




Cu

sakura 10. Sep 2003 13:09

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Ja und Nein.

Deine Fragestellung zeigt einen grundlegenden Gedankenfehler auf. Du kannst während des Programmablaufes die Unit nicht ändern. Wäre auch unsinnig. Aber was Dir helfen würde, wäre Dich mal in die Arbeit mit entweder Hier im Forum suchenarray, Hier im Forum suchendynamische arrays bzw mit Hier im Forum suchenTObjectList or TList einzufriemeln. Damit kann man solche Probleme lösen.

...:cat:...

P.S. DirectX ist nicht der beste Startpunkt für solche Übungen.

Kihaku 10. Sep 2003 13:13

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Hi,

ok danke, dann werde ich mir das vorher mal anschaun und lernen...



Womit sollte man denn deiner meinung nach anfangen? Ich meine jetzt auch um Spiele damit zu programmieren, aber ich möchte erst auch nur 2d games erstellen.


Cu

sakura 10. Sep 2003 13:16

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Du kannst gerne anschließend am Game weiterarbeiten, was ich meinte war, daß Du da Konzept der dynamischen Arrays, bzw. der Objektlisten vorher einfach mal an einem Dummy testen solltest ;-)

...:cat:...

Kihaku 10. Sep 2003 13:20

Re: Wie schreibt man in die Unit beim Programmablauf??
 
Hi,

ahso ^^. ok mach ich, vielen dank nochmal!

Cu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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