Delphi-PRAXiS
Seite 17 von 26   « Erste     7151617 1819     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)

mimi 18. Jun 2008 17:08

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Danke ! Dann werde ich gleich mal DevlL ausprobieren.

Andorra kann auch SDL ? Praktisch.

igel457 18. Jun 2008 17:31

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Ja, aber erst mit der nächsten Version. Im CVS läuft es schon.

mimi 18. Jun 2008 19:17

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Wie hast du bei der DevIL lib die so Dateien erzeugt ? Ich finde einfach keine und ich schaffe es auch nicht eine so Datei zu erzeugen. Daran scheitert es einfach.

mimi 18. Jun 2008 19:21

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Ich habe jetzt eine Verknüpfung erstellt von:
ln libIL.so.1 libFreeImage.so

Aber leider werden immer noch keine PNG Dateien geladen. :( :(

mimi 19. Jun 2008 11:25

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
ich habe jetzt die Frage nochmal hier gestellt:
http://www.lazarusforum.de/viewtopic.php?p=20481#20481
damit es hier nicht ganz so unübersichtlich wird.

_BlackDragon_ 19. Jun 2008 11:26

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo.

Bevor ich loslege, :-D erstmal ein dickes Lob an die Entwickler. :thumb:

Ich weiß weder ob es hier der richtige Ort ist, dies zu posten, noch ob es für alle Benutzer von
Andorra 2D interessant sein könnte oder nur für die Entwickler.

Ich versuche mich gerade in die Engine einzuarbeiten und scheiterte schon am ersten Beispiel.
Allerdings liegt das Problem nicht bei mir, wie ich nach etwas suchen festgestellt habe.

In den beiliegenden Beispiel-Projekten ist in den Projektoptionen (Compiler-Optionen) die Überlaufsprüfung abgeschaltet.
Ist leider ein wenig unsicher wie ich festgestellt habe. Denn in der Unit "AdContainers.pas" fliegt man beim compilieren mit einem EIntOverflow-Error zurecht raus.

Delphi-Quellcode:
...
procedure TAdMap.Rehash(ACapacity: Cardinal);
...

  //Copy elements into new array
  PList1 := FData;
  for i := 0 to FCapacity - 1 do // <--- Hier der Fehler, FCapacity ist bisher immer 0 gewesen
  begin
    with PList1^ do
    begin
      StartIteration;
      while not ReachedEnd do
      begin
        PCurItem := GetCurrent;

        //Insert element
        PList2 := PTmp;
        Pos := (PCurItem^.Key.Hash mod ACapacity);
        Inc(PList2,Pos);

        PList2^.Add(PCurItem);
      end;
    end;
    Inc(PList1);
  end;
...
FCapacity ist, bis jetzt, immer 0 gewesen, dadurch die Exception.

In meinen (neuen) Projekten ist diese Bereichsprüfung standardmäßig eingeschaltet, dadurch flog ich raus und beim kompilieren der Demos funktionierte es.

Es gäbe zwei Möglichkeiten das Problem zu lösen.
Entweder man schaltet die Überlaufsprüfung aus, was ich persönlich nicht für günstig halte, da, wie man sieht, sich schnell Fehler einschleichen können, die das ganze Programm in den Abgrund ziehen.
Oder es wird die Prüfung vor der Schleife durchgeführt. Allerdings müsste man das im Quelltext ändern und das evtl. an mehreren Stellen.

Delphi-Quellcode:
...
procedure TAdMap.Rehash(ACapacity: Cardinal);
...
  //Copy elements into new array
  PList1 := FData;

  if FCapacity > 0 then //  <-- Hier prüfen...
  begin
    for i := 0 to FCapacity - 1 do // <-- ... damits hier nicht knallt
    begin
      with PList1^ do
      begin
        StartIteration;
        while not ReachedEnd do
        begin
          PCurItem := GetCurrent;

          //Insert element
          PList2 := PTmp;
          Pos := (PCurItem^.Key.Hash mod ACapacity);
          Inc(PList2,Pos);

          PList2^.Add(PCurItem);
        end;
      end;
      Inc(PList1);
    end;
  end;
...
Falls mir hier dennoch irgendein Fehler unterlaufen sein sollte, Sorry...

Gruss

BlackDragon

mimi 19. Jun 2008 12:00

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
@Igel ich habe den Fehler gefunden:
http://www.lazarusforum.de/viewtopic.php?p=20485#20485
anscheind gibt es Probleme bei der "Image Liste" wenn dort
LoadFromFile verwendet wird. Es liegt also nicht an PNG. Weil die LCL kann PNG Bilder laden.
Wie ich heute erfahren habe.

Ich habe mir aber alle Stellen die das Laden von Grafiken durchlaufen angesehen,
aber nix gefunden, was der Fehler sein könnte.

I.A 19. Jun 2008 15:58

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo,

Hebe soeben Andorra auf meinen Rechner geladen und das Tutorialbeispiel eingetippt und compiliert.
Funzt soweit. Werde jetzt erst mal damit experimentieren.

Danke an die Entwickler.

I.A

igel457 19. Jun 2008 17:40

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo,

danke für den Patch und das Lob - werde ich einbauen.

I.A 19. Jun 2008 23:48

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Halloooo,

Ich habe jetzt das Handbuchbeispiel in Delphi 7 (Per) eingegeben.

Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ADDraws, ADClasses, ADTypes;

type
  TAdForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure Idle(Sender: TObject; var Done: Boolean);
  end;

var
  AdForm: TAdForm;
  ADDraw: TADDraw;
  AdImageList: TAdImageList;


implementation

{$R *.dfm}

procedure TAdForm.FormCreate(Sender: TObject);
begin
  ADDraw := TADDraw.Create(Self);
  AdDraw.DllName := 'AndorraDX93D.dll';

  if AdDraw.Initialize then
  begin
    // Hier geht's gleich weiter
    Application.OnIdle := Idle;

    AdImageList := TAdImageList.Create(AdDraw);
    with AdImageList.Add('bild') do //Zu der Liste wird ein Bild mit dem Namen "bild" hinzugefügt.
    begin
      Texture.LoadGraphicFromFile('Gins.bmp'); //In die Textur wird ein Bild hineingeladen.
    end;
    AdImageList.Restore;
    //Hier geht es jetzt weiter mit zeichnen

  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display'+
              'mode or use another video adapter.');
    halt; //<-- Schließt die komplette Anwendung
  end;
end;

procedure TAdForm.FormDestroy(Sender: TObject);
begin
  ADDraw.Free;
end;

procedure TAdForm.Idle(Sender: TObject; var Done: Boolean);
begin
  if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann...
  begin
    //auch hier geht's bald weiter.
    AdDraw.BeginScene;

    AdDraw.EndScene;
    AdDraw.Flip;
  end;
  Done := false;
end;

end.
Habe die Dlls nicht mit D7 neu übersetzt. Das wird empfohlen, das die Dlls mit Turbo Delphi übersetzt sind. In der Empfehlung steht aber auch, das bei falscher Dll-Version eine Exception kommt. Die erhalte ich aber nicht. Aber die Bitmap (Habe eine andere genommen, da ich Texture.bmp, wie im Original angegeben nicht habe. Die Bitmap wird aber nicht angezeigt, sondern sowas hier:

Neutral General 19. Jun 2008 23:56

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hi I.A.

Eigentlich sollte bei dem vorliegenden Quelltext überhaupt nichts zu sehen sein (außer ein schwarzer Bildschirm).

Bist du sicher, dass dieser Code auch so in deinem Quelltext steht?

PS: Ich habe gerade kein Andorra installiert aber das Bild kannst du wenn ichs Recht in Erinnerung habe ungefähr(!) so darstellen:

So musst dus machen:

Delphi-Quellcode:
procedure TAdForm.Idle(Sender: TObject; var Done: Boolean);
begin
  if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann...
  begin
    //auch hier geht's bald weiter.
    AdDraw.BeginScene;
      AdImageList.Find('bild').Draw(AdDraw,0,0,0); // AdDraw|x|y|PatternIndex
      // ODER direkt über den Index:
      AdImageList.Items[0].Draw(AdDraw,0,0,0);
    AdDraw.EndScene;
    AdDraw.Flip;
  end;
  Done := false;
end;
Gruß
Neutral General

I.A 20. Jun 2008 00:22

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Neutral General,

Danke erst mal für Dein Listing!

Ja,ich bin mir sicher, das ich den Quelltext so eingegeben habe. Hab ihn so in den Thread kopiert. In Delphi Bearbeiten->Alles Markieren, dann Beaarbeiten->Kopieren und in der DP Bearbeiten->Einfügen.

Allerdings muss es heißen: AdImageList.Items[0].Draw(); Hast Du ja grad eben noch korrigiert.

Die Bitmap ist jetzt ok, aber der Hintergrund ist nicht komplett schwarz.

So sieht es jetzt bei mir aus:

Jetzt hör ich aber erst mal auf. Morgen ist auch noch ein Tag. Ich schlafe erst mal. Bis denne!!! :kiss:

Neutral General 20. Jun 2008 00:29

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hi,

Also das ist doch etwas seltsam. Woher kommt denn diese Schrift? Stammen diese Sätze in irgendeiner Weise von dir? Wobei ich schätze, das es Sätze aus Igels Tutorial sind...

Aber irgendwo müssen die ja stehn. Die werden ja nicht "einfach so" da angezeigt.

Warte am besten mal auf den Schöpfer himself :stupid:

Bin jetzt auch müde und gehe ins Bett. Mach das am besten auch. So spät passiert es schonmal das man ein Brett vor dem Kopf hat ;)

Edit: Den letzten Satz hätte ich mir ja sogar sparen können seh ich gerade :) Dann machs auch gut, bis morgen oder so, gute Nacht ;) :mrgreen:

Codewalker 20. Jun 2008 07:25

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Die Fläche wird natürlich nur schwarz, wenn du sie auch mit Schwarz füllst. Ansonsten wird wirres Zeug aus dem Grafikspeicher ausgegben (letzteres ist Spekulation :mrgreen: ).

Also noch AdDraw.ClearSurface(clBlack) eingefügt und gut ist.

Delphi-Quellcode:
procedure TAdForm.Idle(Sender: TObject; var Done: Boolean);
begin
  if AdDraw.CanDraw then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann...
  begin
    //auch hier geht's bald weiter.
    AdDraw.BeginScene;
    AdDraw.ClearSurface(clBlack); // Das hast du vergessen, steht aber im Tutorial drin ;-)
     AdImageList.Find('bild').Draw(AdDraw,0,0,0); // AdDraw|x|y|PatternIndex
      // ODER direkt über den Index:
      AdImageList.Items[0].Draw(AdDraw,0,0,0);
    AdDraw.EndScene;
    AdDraw.Flip;
  end;
  Done := false;
end;
Grüße

I.A 21. Jun 2008 01:38

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo,
Danke, @Codewalker, das war die entscheidende Anweisung. Jetzt kann ich weiter machen. Jetzt habe ich den gewünschten schwarzen Hintergrund. Und die Bitmap wird auch korrekt angezeigt.

Danke auch @Natural General, für die gegebene Hilfe! :hello:

Diamondback2007 21. Jun 2008 23:12

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo,

es wäre auch schön, wenn in der nächsten Version die Namen der Texturen in einer Liste oder Datei nicht Casesensitiv wären.
Also mit LoerCase() vergeleichen. Das erleichtert einem die Arbeit nämlich ungemein.

gruß

inherited 22. Jun 2008 00:33

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Davon würde ich abraten, da es durchaus (nach meinen Erfahrungen) üblich ist, die Namen der Textur einheitlich mit dem Dateinamen zu halten und das ganze auch unter Linux funktionieren soll, wo die Dateinamen auch case sensitiv sind.

Diamondback2007 22. Jun 2008 13:42

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Man könnte es ja einstellbar machen, mich hat es nämlich so seh gestört, dass ich es in meiner Version umgebaut habe.
Ist ja auch keine große Sache.

gruß

mimi 23. Jun 2008 11:00

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Ich frage mich was ist daran so schlimm ?
Unter Linux ist das Standard, nur unter Windows nicht. Wie es mit anderen Systemen aussieht weiß ich nicht.

Gut einstellbar währe eine Lösung. Aber die ImageList Datei muss natürlich angepasst sein.

inherited 23. Jun 2008 13:40

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
mimi: läuft inzwischen FreeLibrary bei dir? Wenn nicht, meld dich mal.

mimi 23. Jun 2008 13:47

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
leider immer noch nicht, ich habe es aufgeben. bzw. ich weiß nicht ob es läuft. Da der Fehler ja anscheind nicht beim PNG Format liegt wie ich anfangst gedacht habe, sondern am AI Format. Also im ImageList Format.

Wenn ich z.b. ein PNG BILD Manuel hinzufüge geht das.
Wenn ich aber per AI Datei mache geht das nicht mehr.

Ich habe mir die Code Stellen angesehen und auch ein paar Test gemacht. Wie gesagt es muss am AI Format liegen.

Wobei die Datei wurde von Diamondback2007 erstellt. Er hat ja Andorra leicht verändert evlt. geht es darum nicht mehr.

Ich denke die Lösung währe eine komplett neue AI Datei zu erstellen.
Leider läuft der Image Editor unter Linux nur bedingt. Also müsste ich erst einen eigenen schreiben für Linux. Was aber auch nicht viel Aufwand währe. Müsste ich mir überlegen.


Ich hatte doch nach einigen Tagen die Frage im Lazarus Forum gepostet:
http://www.lazarusforum.de/viewtopic.php?t=1761
um den Thread hier nicht allzu durcheinander zu bringen *G*

Diamondback2007 23. Jun 2008 14:27

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Also an mir kann das icht liegen. Das einzige was ich veränert habe, ist, dass die Texturen mit Lowercase vergleichen werden und dass man einen Dll-Pfad für den SetupDlg angeben kann.
Wenn es mit der Datei nicht geht müssen wir uns eben etwas anderes überlegen.

igel457 23. Jun 2008 14:29

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
@mimi:
Hast du den alternativen FreeImage-Header von Inherited bekommen? Seinen Aussagen nach läuft Andorra 2D mit diesem ohne Probleme unter Linux.

Wenn nicht schau mal hier:
http://andorra.cvs.sourceforge.net/*.../FreeImage.pas

igel457 23. Jun 2008 17:50

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe Andorra 2D jetzt eigentlich soweit, dass (fast) alle 0.4 Features eingebaut sind und funktionieren.

Daher rufe ich zu einem großflächigen Betatest auf: Wer will sollte sich die aktuelle Version aus dem CVS-Archiv herunterladen, und einfach drauf los testen.

Tutorial, wie man an das CVS-Repository gelangt gibt es hier:
http://andorra.sourceforge.net/index...b=cvstutot1ger

Für alle die, die DLLs nicht selbst kompilieren möchten und obendrein noch eine nette Shader Demo haben möchten, empfiehlt sich der Anhang ;-)

Bis zum Release muss ich "nur" noch hier und da ein paar Exceptions werfen sowie die Dokumentation vervollständigen.

Bin auf euer Feedback gespannt,
Andreas

Neutral General 23. Jun 2008 18:14

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Feedback Nr. 1:

Delphi-Quellcode:
function AdRect(X1,Y1,X2,Y2:LongInt):TAdRect;overload;inline;
Zitat:

[Error] AdTypes.pas(232): Declaration expected but 'INLINE' found
Das Gleiche bei allen anderen Functionen mit Inline;

Diamondback2007 23. Jun 2008 18:17

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo,

also an sich sieht das j gut aus, aber mit OGL bekomme ich nur einen schwarzen Bildschirm und AVs in der Idle Schleife....
DX9 klappt. :)

BUG 23. Jun 2008 18:19

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Zitat:

Zitat von igel457
Für alle die, die DLLs nicht selbst kompilieren möchten und obendrein noch eine nette Shader Demo haben möchten, empfiehlt sich der Anhang ;-)

Super (Vista mit DirectX & openGL) :thumb: (nur gibt es ab und zu einen weißen Pixelrand, liegt aber IMHO an der Textur)

Was mich interessieren würde:
Verwenden nicht DirectX und openGL unterschiedliche Shadersprachen?
Hast du also den Shader 2x programmiert oder gibt es eine andere Lösung?

MfG,
Bug

igel457 23. Jun 2008 18:40

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo,

@Diamondback2007
Hast du den neusten Grafikkartentreiber installiert?

@BUG
Schön das es läuft. In diesem Beispiel verwende ich Cg - das ist Grafiksystemunabhängig, da es einen eigenen Compiler beinhaltet. Andorra 2D unterstützt momentan aber auch noch HLSL - das ist nativ in Direct3D eingebaut. Die Cg-Shader-Language und HLSL haben den gleichen Syntax und die gleichen Funktionen, sprich, Cg Shader lassen sich auch mit HLSL laden.

@Neutral General
Welche Delphi-Version hast du?

Neutral General 23. Jun 2008 18:41

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Delphi7, wies links unter meinem Avatar steht ;) :P

igel457 23. Jun 2008 19:25

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Ok, das Problem sollte gelöst sein.

I.A 23. Jun 2008 22:09

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich arbeite gerade das Kapitel "The Spriteengine" durch und erhalte eine
EAccessViolation an Adresse: $00459CBB, Lesen von Adresse 0024.
Der Debugger hält in der Unit AdDraws in der folgenden Prozedur auf der if-
Anweisung:
Delphi-Quellcode:
procedure TAdImage.Draw(Dest:TAdDraw;X,Y,PatternIndex:integer);
begin
  if (Texture.Texture.Loaded) and (Dest.CanDraw) and (AdMesh <> nil) then
  begin
    SetCurrentColor(255);
    if (PatternIndex < 0) then PatternIndex := 0;
    if (PatternIndex > PatternCount-1) then PatternIndex := PatternCount-1;
    DrawMesh(Dest, AdRect(X,Y,X+Width,Y+Height), Rects[PatternIndex],
      0, 0, 0, bmAlpha);
  end;
end;
Die Anwendung zeigt sich nicht an, ich erhalte stattdessen das Icon in der Taskleiste, das mir zeigt, das das Programm aktiv ist.

AUßerdem habe ich die Frage, wie groß das einzelne Bild ist. In der SetLine() Methode wird Start- und Enpunkt von 0..7 bzw 8..15 gesetzt, andererseits aber X = -96 bzw. Clientwidth + 96. Ich habe damit die Arbeitsweise der Methode noch nicht richtig verstanden. Was macht die SetLine() Methode?

Ist das bild 8 Pixel und der FRame 96 Pixel groß?

Die folgenden beiden Anweisungen stehen in der SetLine() Methode:
Delphi-Quellcode:
X:=ClientWidth + 96;
Y:=Clientheight - 96;

Ich verstehe nicht, warum ClientWidth addiert wird, um auf die neue Position zu kommen, bzw. ClientHeight subtrahiert wird, um auf die nächste Position zu kommen. Damit käme die Figur zwar, wenn sie rechts das Bild verlässt, links wieder rein, aber dann?

Die Anweisung Y:=Random(ClientHeight - 96) sagt mir, das die Figuren an zufälliger Position angezeigt werden sollen. Warum aber dann die Berechnung von X und Y mittels ClientWidth bzw ClientHeight?
Allerdings erhalte ich die o.g. Exception und mein Programm zeigt gar nix an. Ist das ein bekannter Fehler in der Bibliothek, oder habe ich was falsch gemacht?

Falls der Fehler bei mir liegt, hier noch mein aktueller Quelltext. Es ist der Quelltext des Kapitels "My first picture" und zwar der Teil, wo die Datei "Boy.bmp" geladen wird und Einzelbilder angezeigt werden, oder halt eines der Einzelbilder an zufälliger Position. Kann ich aus o.g. Grund nicht testen. Wer kann mir weiter helfen?

delphifan2004 24. Jun 2008 08:41

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Hallo!

Hab grad mal wieder bissl hier rumgesurft und bin auf das Theme hier gestossen. Schnell Andorra runtergeladen und das erste Handbuch Kapitel durchgearbeitet. Funzt ja klasse. Wir werden bestimmt wieder voneinander hören. Hoffentlich bin ich dann aber einer derjenigen, die eine Frage zur Programmierung beantworten, staa selber Fragen zu stellen. Bis bald.

Delphifan2004

igel457 24. Jun 2008 09:30

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
@I.A
Die Namen in der ImageList sind CaseSensitive. Du musst immer die gleiche Groß- und Kleinschreibung verwenden

I.A 24. Jun 2008 12:07

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Danke @igel457: Habe jetzt die Schreibweise angepasst und voila, die Anzeige funzt.

Jetzt will ich weiter machen und deshalb hier das nächste Problem:

Ich verstehe die SetLine() Methode nicht vollständig, hier ist sie:
Delphi-Quellcode:
TForm1.SetLine;
begin
  XSpeed := -XSpeed;
  if XSpeed > 0 then
  begin
    StartPt := 0; //Den Zwck dieser Anweisungen
    EndPt := 7;   //verstehe ich nicht!
    X := -96;
  end
  else
  begin
    StartPt := 8; //Den Zwck dieser Anweisungen
    EndPt := 15; //verstehe ich nicht!
    X := ClientWidth+96;
  end;
  Y := Random(ClientHeight-96);
end;
Ich nehme mal an, das die Figur 96 Pixel hoch und 96 Pixel breit ist. In die Breite geht der Bewegungsspielraum mit ein. Welcher Teil ist dann aber 8 Pixel breit? StartPt u. EndPt sagen mir das.

Wenn XSpeed < 0 ist, dann ist StartPt = 8 und EndPt = 15 und wenn XSpeed > 0 ist dann StartPt = 0 und EndPt = 7.

Welche Bedeutung haben diese Anweisungen für die Bewegung der Figur. Ich sehe zwar im Quelltext der Methode die Anweisungen und weiß, was die machen, kann aber deren Sinn in Bezug auf die Bewegung der Figur nicht nachvollziehen.

Kann mir jemand dabei helfen?

Es bringt ja nix, wenn ichb jetzt das nächste Kapitel durcharbeite, ohne den Bewegungsablauf der Figur wirklich verstanden zu haben.

Es wird eine Imageliste erzeugt.

Da drin wird Platz für eine Figur geschaffen.

Dann wird die Datei boy.bmp da rein geladen.

Aber da drin sind alle Figuren, das heißt alle Einzelbilder, nicht nur eines davon.

Woher weiß mein Programm, welches Einzelbild angezeigt werden soll

Delphi-Quellcode:
     AdImageList.Find('figur').Draw(AdDraw,round(X),round(Y),round(Pattern));
Mit dieser Methode wird das Einzelbild gesucht. Aber wo ist der Index in die Liste?
Ich nehme an es ist 'Pattern'

In der Liste mit dem Namen "figur" wird das Einzelbild gesucht.

Ist meine Annahme richtig, das Pattern der Index in die Liste der Einzelbilder ist? Dann wären X und Y die Position der Figur auf dem Bildschirm. Wäre dem so, könnte ich ins nächste Kapitel gehen. Will aber noch mal rückfragen. Will es ja lernen. Habe auch die Diskussion "Hilfeverhalten im Forum" mitgekrigt. Und ich habe nicht vor, mir "meine Hausaufgaben machen zu lassen". Ich will es selber können. Wenn ich schon richtig liege mit meinen Annahmen, um so besser. Dann kann ich weiter machen mit dem nächsten Kapitel.

igel457 24. Jun 2008 12:23

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
"StartPt und EndPt" steht für "StartPattern und EndPattern" und soll die aktuelle Animation spezifizieren.

inherited 24. Jun 2008 12:45

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
StartPt ist der erste Index der Animationsbilder, EndPt der Letzte. Wenn das Bild animiert wird, soll er ja nur die Animationsschritte anzeigen die zur aktuellen Bewegungsrichtung passen.

Diamondback2007 24. Jun 2008 23:28

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe noch einen Bug gefunden.
Und zwar geht es um das GUI-System.
Dort wird der Mauszeiger auch dann noch im Andorra Fenster angezeigt, wenn er das Fenster eigentlich schon verlassen hat.
Im Screenshot kann man das eigentlich nicht sehen, da bei einem Screenshot der Mauszeiger nicht mit auf dem Bild ist.
Er ist allerdings auf der Form zu sehen. Dort dürfte er nicht mehr sein.
Das ganze ist beliebig reproduzierbar.

igel457 25. Jun 2008 08:30

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
It's not a bug, it's a feature

Diamondback2007 25. Jun 2008 08:32

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Will ich ja mal nicht hoffen ;)
Sollte aber wahrscheinlich kein Problem sein zu beheben oder?

igel457 25. Jun 2008 08:51

Re: Andorra 2D [Ver. 0.35, 04.03.08]
 
Der Fehler (der wie gesagt kein Fehler ist, von daher war das schon ernst gemeint) kommt einfach daher, dass das Andorra 2D interne Mauszeigersystem für die GUI verwendet wird. Das bedeutet, das die Mauszeiger kein Grafikkarten-Overlay-Sprite im eigentlichen Sinn sind, sondern (wie in jedem Spiel auch) komplett von der Engine gezeichnet werden. Dadurch können die Mauszeiger auch mit Alphablendeffekten sowie Animationen versehen werden. Da ich jedoch nur auf das MouseMove-Event des Fensters reagiere, bekomme ich keine Mauszeigerbewegung mehr mit, sobald der Mauszeiger das Fenster verlassen hat.

Lösung:
Besorge dir jeden Renderschleifendurchlauf die aktuellen Zeigerkoordinaten (GetCursorPos, unit Windows), vergleiche diese mit den letzten, wenn sich diese verändert haben rechne Sie in Fensterkoordinaten um und rufe Manuell AdGUI.MouseMove auf.

Allerdings sollte man meinen, das die meisten Spiele sowieso im Vollbildmodus ablaufen, da ist das dann egal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr.
Seite 17 von 26   « Erste     7151617 1819     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-2025 by Thomas Breitkreuz