Delphi-PRAXiS
Seite 95 von 103   « Erste     4585939495 9697     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Andorra 2D [Ver. 0.4.5.1, 31.12.08] (https://www.delphipraxis.net/81314-andorra-2d-%5Bver-0-4-5-1-31-12-08%5D.html)

igel457 9. Jul 2009 22:02

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
In "OnCreate" ist Application.MainForm nil.

Codewalker 10. Jul 2009 08:48

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Autsch. Das erklärt das natürlich. Wieder was gelernt und Problem gelöst :dp:

Vasco da Gama 5. Aug 2009 19:24

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Hallo, wie kann ich AdFont anpassen?(Schriftart, Größe etc.)

igel457 5. Aug 2009 19:30

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Einfach folgendes:
Delphi-Quellcode:
  font := AdDraw.Fonts.GenerateFont('Tahoma', 12, [afBold]);
  font.Color := clRed;
  font.TextOut(...);
Wichtig: Die Fontvariable nicht freigeben, darum kümmert sich der Fontmanager.

Vasco da Gama 5. Aug 2009 19:32

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Danke, werd ich probieren.

Vasco da Gama 10. Aug 2009 18:56

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Hallo, ich habe eine Klasse (TEinheit) von TImageSprite abgeleitet und dort einige Eigenschaften hinzugefügt.
Gibt es irgendeine Möglichkeit, dass das folgende funktioniert?:
Delphi-Quellcode:
    AdSpriteEngine2.GetSpriteAt(p.x, p.y).angeklickt := true;
angeklickt ist eine der neuen Eigenschaften(Boolean) aber da GetSpriteAt ein Sprite liefert, kennt er das nicht.
Kann mir jemand helfen?
Danke und mfG

PS(Edit): Das mit den Fonts klappt inzwischen, danke

igel457 10. Aug 2009 19:42

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Dann caste es doch.

Vasco da Gama 10. Aug 2009 19:53

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Ah, vielen Dank.

fui-tak 22. Aug 2009 15:53

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Hallo, ich hab da nochmal ein Problem:
Ich bin im Moment dabei bei meinem Leveleditor für mein Spiel von TImage zu Andorra zu wechseln. Das eigentliche Spiel läuft schon super mit Andorra.

Nun mein Problem: Im OnCreate-Ereignis Erzeuge ich das ganze Andorra-Zeugs und anschließend meine Sprites und weise ihnen als Breite und Hoehe 48 zu und als X und Y Werte ihre Position im 2 dimensionen Array multipliziert mit 48 (Sprite[1,1] hat also die Koordinaten 48/48.
Das ganze wird aber nicht so dargestellt. Die Sprites werden vergrößert, aber immernoch schön aneinander dargestellt, als hätte man Breite, Höhe, X und Y verändert. Wenn ich mir die Koordinaten der Maus auf dem Bildschirm ausgeben lasse, sehe ich das die Sprites auf dem Bildschirm ca. 100 Pixel hoch und 125 Pixel breit sind. Lasse ich mir die Daten aber mit ShowMessage ausgeben sind sie so wie sie sollen.

Hier noch etwas Code der relevant sein müsste:
Delphi-Quellcode:
TLevelEditorSprite = class(THintergrundBild)
        tag: integer;
        hint: string;
end;

procedure TLevelEditor.FormCreate(Sender: TObject);
var i,h: integer;
const startgroesse = 48;
begin
    Timer1.Interval := 100;
    zoom := startgroesse;
    Panel1.caption := '';

    left := Form1.left + 20;
    top := Form1.top + 20;

    ListBox1.OnKeyDown := FormKeyDown;
    Label1.caption := '';
    Label2.caption := 'Steuerung:'+#13#10+
                      'Bewegen der Oberfläche: W,A,S,D'+#13#10+
                      'Quellcode generieren: M'+#13#10+
                      'Vergrössern/Verkleinern: +/-';
    Label3.caption := 'Größe: '+IntToStr(startgroesse)+'*'+IntToStr(startgroesse);
    Panel2.caption := '';

    for i := 0 to StrToInt(Form1.objektZurueckgeben(-1)) do
       ListBox1.Items.Add(Form1.objektZurueckgeben(i));
    ListBox1.ItemIndex := 0;
    Image1.Picture.Bitmap.LoadFromFile( programmpfad+'bilder\'+ListBox1.Items.Strings[ListBox1.ItemIndex]+'.bmp');


    AdDraw := TAdDraw.Create(Panel1);
    AdDraw.DllName := programmpfad+'AndorraDX93D.dll';
    if AdDraw.Initialize then
    begin
        //Application.OnIdle := Idle; //Ich rufe das ganze in einem Timer auf
        AdImageList := TAdImageList.Create(AdDraw);
        Form1.AndorraBilderZuweisen(AdImageList);

        AdSpriteEngine := TSpriteEngine.Create(nil);
        AdSpriteEngine.Surface := AdDraw;
        AdPerCounter := TAdPerformanceCounter.Create;


        setLength(hb,15,10);

        for i := 0 to high(hb) do
          for h := 0 to high(hb[0]) do
            bildErzeugen(i,h,startgroesse);

        panelAnpassen;

        label4.caption := 'Spalten: '+IntToStr(high(hb)+1)+' Zeilen: '+IntToStr(high(hb[0])+1);
    end;
end;



procedure TLevelEditor.bildErzeugen(xNummer,yNummer,groesse:integer);
begin
    hb[xNummer,yNummer] := TLevelEditorSprite.Create(AdSpriteEngine);
    Form1.hbdatenZuweisen(hb[xNummer,yNummer],0,AdImageList);
    with hb[xNummer,yNummer] do
        begin
          hint := IntToStr(xNummer)+'t'+IntToStr(yNummer);

          X := xNummer * groesse;
          Y := yNummer * groesse;
          width := groesse;
          height := groesse;
          visible := true;
        end;
end;


procedure TLevelEditor.panelAnpassen;
begin
   Panel1.Width := Round((high(hb)+1)*zoom);
   Panel1.Height := Round((high(hb[0])+1)*zoom);
end;




procedure TForm1.hbdatenZuweisen(bild:THintergrundBild;objektNummer:integer;AndorraImageList:TAdImageList);
begin
   Bild.Image := AndorraImageList.Find(AnsiLowerCase(objektZurueckgeben(objektNummer)));
   with Bild do
   case objektNummer of
     0: begin
         wand := false;
         AnimActive := false;
         AnimLoop := false;
         AnimSpeed := 0;
         AnimStart := 0;
         AnimStop := 0;
        end;

     1: begin
        ...    

     6: begin //Wand Haus
         wand := true;
         AnimActive := false;
         AnimLoop := false;
         AnimSpeed := 1;
         AnimStart := 1;
         AnimStop := 1;
         AnimPos := 0;
        end;
   end;
end;


procedure TForm1.AndorraBilderZuweisen(AndorraImageList: TAdImageList);
begin
        with AndorraImageList.Add('schuss') do
        begin
             Texture.LoadGraphicFromFile(programmpfad+'bilder\schuss.bmp',true,clWhite);
             PatternWidth := 20;
             PatternHeight := 20;
        end;
        with AndorraImageList.Add('scrollpfeile') do
        ...
 
        AndorraImageList.Restore;
end;

Vasco da Gama 22. Aug 2009 18:44

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]
 
Ich hab jetzt nicht den ganzen Quelltext gelesen, aber wenn ich mich nicht irre, könnte
Delphi-Quellcode:
ScreenToClient(TPoint);
helfen...?! :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 Uhr.
Seite 95 von 103   « Erste     4585939495 9697     Letzte »    

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 by Thomas Breitkreuz