AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Alternative zu sprite von DelphiX?
Thema durchsuchen
Ansicht
Themen-Optionen

Alternative zu sprite von DelphiX?

Ein Thema von ferby · begonnen am 6. Okt 2005 · letzter Beitrag vom 8. Okt 2005
Antwort Antwort
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

Alternative zu sprite von DelphiX?

  Alt 6. Okt 2005, 17:55
Hallo,

Ich programmiere gerade an einen Spiel das ca. am Bildschirm 50 verschiedene animierte Grafiken anzeigt. Ich habe versucht alles mit DelphiX und Sprites zu lösen nur leider scheitert es an mehreren dingen wie z.B. eine pixelgenaue kollisionsabfrage wenn teile der grafiken transperent sind, an unerklärlichen fehlermeldungen etc.

Jedenfalls wollte ich fragen ob es eine alternative zu sprites gibt. Früher habe ich immer mit TImage gearbeitet aber die wurden mir abgeraten, was kann ich noch nehmen???


Ferby
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Alternative zu sprite von DelphiX?

  Alt 6. Okt 2005, 18:14
Zitat:
Früher habe ich immer mit TImage gearbeitet aber die wurden mir abgeraten
Dann rate ich dir es wieder an *g* . Solange du im zweidimensionalen Raum bleibst, wirst du ziemlich wahrscheinlich keine Hardwarebeschleunigung brauchen. Wichtig ist nur, dass du OffScreenBitmaps benutzt, eine schnelle Grafikbibliothek wie die GR32-Lib kann auch nicht schaden. Wenn du also mit TBitmap und Co. schon vertraut bist, kannst du ruhig dabei bleiben. Ich will dir aber nicht von OpenGL/DirectX abraten, vor allem, weil ich damit (noch) keine Erfahrungen gesammelt habe .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Alternative zu sprite von DelphiX?

  Alt 6. Okt 2005, 18:42
Hallo,

gibts irgendwo eine einführung mit der GR32-Lib??

Kenn mich mit der nicht aus...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Alternative zu sprite von DelphiX?

  Alt 6. Okt 2005, 19:03
Soweit ich weiß, nein. Das ist vielleicht eine Schwäche der Lib, aber TBitmap und TBitmap32 haben im Groben und Ganzen viele Gemeinsamkeiten, sodass der Umstieg von VCL zu GR32 nicht so schwer fallen sollte. Wichtig ist natürlich, die Hilfe zu lesen (z.B. "Using TImage32"). Und wenn du trotzdem Fragen hast: Einfach fragen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#5

Re: Alternative zu sprite von DelphiX?

  Alt 6. Okt 2005, 19:16
Hallo,

Ja ich habe eine Frage,

kannst du mir ein Programm schreiben das einfach per Tastendruck (Pfeiltasten) eine grafik nach rechts,links,oben und unten bewegt??

Ich lerne so am schnellsten.

Ich habe mir das Besipielprogramm für sprites angeschaut nur werde ich nicht ganz schlau daraus....
kann das jemand ein wenig erklären was in jeder zeile passiert?

Delphi-Quellcode:
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  GR32, GR32_Transforms, StdCtrls, AppEvnts, GR32_Image, GR32_Layers;

type
  TForm1 = class(TForm)
    Image32: TImage32;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    BitmapList: TBitmap32List;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  public
    Velocities: TArrayOfFloatPoint;
    procedure IdleHandler(Sender: TObject; var Done: Boolean);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  X: Integer;
  ALayer: TBitmapLayer;
  L: TFloatRect;
  I: Integer;
begin
  Image32.BeginUpdate;
  for X := 0 to 49 do
  begin
    // create a new layer...
    ALayer := TBitmapLayer.Create(Image32.Layers);
    with ALayer do
    begin
      Bitmap := BitmapList.Bitmaps[Random(BitmapList.Bitmaps.Count)].Bitmap;
      Bitmap.DrawMode := dmBlend;
      Bitmap.MasterAlpha := Random(255);

      // put it somethere
      L.Left := Random(Image32.Width);
      L.Top := Random(Image32.Height);
      L.Right := L.Left + Bitmap.Width;
      L.Bottom := L.Top + Bitmap.Height;
      ALayer.Location := L;

      I := Length(Velocities);
      SetLength(Velocities, I + 1);
      Velocities[I] := FloatPoint(Random - 0.5, Random - 0.5);
    end;
  end;
  Image32.EndUpdate;
  Image32.Changed;
  Edit1.Text := IntToStr(Image32.Layers.Count) + ' layers';
end;

procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
var
  I: Integer;
  R: TFloatRect;
begin
  if Image32.Layers.Count = 0 then Exit;
  Image32.BeginUpdate;
  for I := 0 to Image32.Layers.Count - 1 do
  begin
    with TBitmapLayer(Image32.Layers[I]) do
    begin
      Bitmap.MasterAlpha := (Bitmap.MasterAlpha + 1) mod 256;
      R := Location;
      with Velocities[I] do
      begin
        OffsetRectF(R, X, Y);
        X := X + (Random - 0.5) * 0.1;
        Y := Y + (Random - 0.5) * 0.1;
        if (R.Left < 0) and (X < 0) then X := 1;
        if (R.Top < 0) and (Y < 0) then Y := 1;
        if (R.Right > Image32.Width) and (X > 0) then X := -1;
        if (R.Bottom > Image32.Height) and (Y > 0) then Y := -1;
      end;
      Location := R;
    end;
  end;
  Image32.EndUpdate;
  Image32.Invalidate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Image32.Layers.Clear;
  Velocities := nil;
  Edit1.Text := '0 layers';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnIdle := IdleHandler;
end;

end.
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: Alternative zu sprite von DelphiX?

  Alt 6. Okt 2005, 19:58
Hallo,

ok ich habe mich jetzt eine weile herumgespielt und kenn mich jetzt mehr oder weniger aus.

Zwei Fragen hab ich noch:

1) Mit

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Image32.Layers.Clear;
  Velocities := nil;
end;
Werden alle grafiken wieder gelöscht, aber was muss ich machen wenn ich nur einzelne löschen will???

2) Gibt es eine einfache Möglichkeit animierte Grafiken zu zeichnen?


Ferby
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Alternative zu sprite von DelphiX?

  Alt 7. Okt 2005, 05:35
Zitat von ferby:
[...] was muss ich machen wenn ich nur einzelne löschen will???
Ein schneller Blick in die Hilfe zur G32 fördert nach sagenhaften 4 Clicks dies zu Tage :
  Image32.Layers.Delete(LayerIndex);
Zitat von ferby:
2) Gibt es eine einfache Möglichkeit animierte Grafiken zu zeichnen?
Das heisst du möchtest eines (oder manche) Layer mit einer Animation belegen?
In dem Fall würde ich mir eine Referenz auf diese entsprechenden Layer behalten, und jedes neue Frame das darin befindliche Bitmap austauschen. Diese wiederum würde ich in einem "array of TBitmap32" buffern. Das heisst, du musst zumindest selbst animieren.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Alternative zu sprite von DelphiX?

  Alt 7. Okt 2005, 12:51
Zitat:
2) Gibt es eine einfache Möglichkeit animierte Grafiken zu zeichnen?
Das klingt eigentlich gut: news://news.graphics32.org:119/d9ngm...remobjects.com (falls es nicht funktioniert: news://news.graphics32.org -> g.General -> "[ANN] Animators for G32"). Allerdings gibt es die Dateien auf dem Server nicht mehr . Am Besten fragst du mal den Autor danach (würde mich persönlich auch interessieren).
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: Alternative zu sprite von DelphiX?

  Alt 8. Okt 2005, 06:18
Hallo,

danke,
werde mir eure Vorschläge mal ansehen.

Zitat:
Ein schneller Blick in die Hilfe zur G32 fördert nach sagenhaften 4 Clicks dies zu Tage Zwinkern:
Wo find ich die Hilfe?



MfG.
Ferby
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Alternative zu sprite von DelphiX?

  Alt 8. Okt 2005, 06:45
Zitat von ferby:
Wo find ich die Hilfe?
In dem Ordner in den du die GR32 entpackt hast evtl.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz