AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Andorra] Sprites lassen sich nicht platzieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Andorra] Sprites lassen sich nicht platzieren

Offene Frage von "Diamondback2007"
Ein Thema von Diamondback2007 · begonnen am 16. Jul 2008 · letzter Beitrag vom 21. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#1

[Andorra] Sprites lassen sich nicht platzieren

  Alt 16. Jul 2008, 14:51
Hallo zusammen,

ich habe grade ein ziemlich merkwürdiges Problem und ich bin mir fast sicher,
dass der Fehler ein Dummheitsfehler auf meiner Seite ist.

Ich versuche grad einen Leveleditor für ein Spiel zu schreiben. Genauergesagt für ein Breakout.
Soweit kein Problem, ich speichere alle Bricks in eine Inidatei.
Doch jetzt kommt das Problem. Ich kann diese Datei nicht mehr lesen.
Sobald ich z.b. in jeder Ecke ein Brick platziere, dann speichere und wieder lade ist nur noch der in der rechten unteren Ecke da. Und zwar unabhängig davon ob das der letzte Stein im Level war oder nicht.

Ich stell euch einfach mal den Code hoch, ich hab keine Ahnung mehr wo der Fehler liegen könnte...

Delphi-Quellcode:
procedure TMainForm.Load;
var
  Path : string;
  tmpStrLst : TStringList;
  i : Integer;
begin
  New; //Spielfeld leeren
  with TOpenDialog.Create(nil) do
    begin
      Filter := 'Level|*.lvl';
      if Execute then
        begin
          Path := FileName;
          with TIniFile.Create(Path) do
            begin
              tmpStrLst := TStringList.Create;
              ReadSections(tmpStrlst);//Dektionen auslesen
              for i := 0 to tmpStrLst.Count - 1 do
                begin
                  AddBrick(ReadFloat(tmpStrLst.Strings[i], 'X', 0), ReadFloat(tmpStrLst.Strings[i], 'Y', 0), ReadInteger(tmpStrLst.Strings[i], 'Color', 0)); //Jede Sektion öffnen und den Brick hinzufügen
                end;
              tmpStrLst.Free;
              Free;
            end;
        end;
      Free;
    end;
end;
Delphi-Quellcode:
procedure TMainForm.AddBrick(aX, aY: Double; aColor: Integer);
var
  tmp : TBrickEditor;
begin
  tmp := TBrickEditor.Create(AdSpriteEngine);
  tmp.Image := AdImgLst.Find('brick');
  tmp.Width := 90;
  tmp.Height := 20;
  tmp.X := aX;
  tmp.Y := aY;
  tmp.Color := aColor;
  tmp.Free;//Auch das Weglassen hier hilft nichts...
end;
Vielleicht kann mir ja jemand helfen...
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#2

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 16. Jul 2008, 20:24
So,
also ich habe jetzt folgendes festgestellt.

Wenn ich folgenden Code habe klappt es auch nicht.
Delphi-Quellcode:
procedure TGameForm.Loadlevel;
var
  i, j : Integer;
  w : Integer;
const
  AnzahlBricksProReihe = 10;
  BrickHeight = 18;
begin
  Randomize;
  w := Round(Clientwidth / AnzahlBricksProReihe); //Breite der Bricks herrausfinden
  for j := 0 to 10 do //Alle Zeilen
    begin
      for i := 0 to AnzahlBricksProReihe - 1 do //Alle Spalten
        begin
          with TBrick.Create(AdSpriteEngine) do //Brick erzeugen
            begin
              Image := AdImgLst.Find('brick'); //Und Eigenschaften zuweisen
              Width := w;
              Height := BrickHeight;
              Y := j * Height;
              X := i * w;
              Color := clRed;
            end;
        end;
    end;
end;
Nun sollte eigentlich das ganze Feld links nach rechts und von oben nach unten mit Bricks gefüllt sein.
Dies funktioniert aber nicht.
Die erste Spalte und Zeile ist komplett leer.
Näheres dazu im Screenshot.
Weiß jemand was das ist? Kann man keine Objekte erzeugen, die eine Koordinate 0 hat?


EDIT:
Wenn ich
Delphi-Quellcode:
Y := 1+j * Height;
X := 1+i * w;
schreibe klappts...

Geht das nicht anders?
Miniaturansicht angehängter Grafiken
screenshot_509.jpg  
Fabian E.
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#3

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 17. Jul 2008, 08:35
Hi.

Habs selber grad mal ausprobiert und bei mir lassen sich Sprites ohne Probleme
bei (0/0) platzieren.

Delphi-Quellcode:
...
FPlayer.X := 0;
FPlayer.Y := 0;
...
... funktioniert tadellos.

Eventuell kommen hier:

Delphi-Quellcode:
...
w := Round(Clientwidth / AnzahlBricksProReihe); //Breite der Bricks herrausfinden
...
nicht immer die Werte raus, die du gerne hättest und dann gibt's hier Probleme.

Delphi-Quellcode:
...
begin
  Image := AdImgLst.Find('brick'); //Und Eigenschaften zuweisen
  Width := w; // <-- Evtl. ist hier die Breite der Bricks immer 0 ???
  Height := BrickHeight;
  Y := j * Height;
  X := i * w;
  Color := clRed;
end;
...
Prüfe das mal...

Edit:

Jepp, ich glaube das sollte es sein:

ClientWidth: 699
Round: 70
Div: 69


Gruss

BlackDragon
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#4

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 17. Jul 2008, 09:14
Hmmm...
Nein, an dieser Breitenzuweisung kanns nicht liegen, im anderen Code wo ich die nicht habe klappts auch nicht.
Ich hab eigentlich auch schon Objekte bei [0;0] platziert und hatte nie Probleme...
Könnte es daran liegen, dass ich Newton mitverwende? Also das integrierte von Andorra.
Fabian E.
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#5

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 17. Jul 2008, 09:16
Nein, Newton habe ich in meinem Test von eben auch mit eingebunden.

Aber schau noch mal in meinen letzten Post -> Edit

Gruss

BlackDragon
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#6

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 17. Jul 2008, 09:22
Also an irgendwelchen Round und Div Sachen kann es nicht liegen, in meinem "richtigen" Code also den um ein Level aus einer Datei zu lesen, hole ich mir einfach nur die Koordinaten... Die Breite stelle ich per Hand ein. Einfach nur eine Schleife die Alle Einträge in der Ini durchläuft und hinzufügen soll...
Fabian E.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 18. Jul 2008, 16:05
Erstmal kann man deinen code zu kürzten:
Delphi-Quellcode:
procedure TMainForm.AddBrick(aX, aY: Double; aColor: Integer);
begin
  with TBrickEditor.Create(AdSpriteEngine) do begin
    Image := AdImgLst.Find('brick');
    Width := 90;
    Height := 20;
    X := aX;
    Y := aY;
    Color := aColor;
  end;
end;
Zitat:
Wenn ich
Delphi-Quellcode: markieren
Y := 1+j * Height;
X := 1+i * w;

schreibe klappts... Confused

Geht das nicht anders?
Im Prinzip nicht. Das ganz lässt sich auch schnell erklären.
Du veränderst gleich große Objekte von einer Größe von 90X20.
Wenn du so speicherst wie es Igel in seinen Brekout Clone macht gilt folgendes:
Nehmen wir an du hast eine Breite von 640 und eine Höhe von 480.
640 div 90 = 7
480 div 20 = 24

Du hast also jetzt ein zwei 2D raster welches 7X24 große ist.
also haben die Objekte z.b. jetzt als Positions angaben:
X:2 und Y: 2
jetzt muss du einfach nur noch
X*90 und y*20 rechnen und schon hast du die genau Zeichen Position.

das geht aber nur bei gleich großen Objekten wie in deinen Fall.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 18. Jul 2008, 16:07
Wie speicherst Du das ganze denn ab?
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 18. Jul 2008, 16:13
ich nehme einfach mal an irgendwie so:
Delphi-Quellcode:
------------
- 1 -
- 2 -
- -
- -
- -
- -
------------
So macht es aufjedenfal Igel bei seinem BreakOut Beispiel. Und drauf basiert auch meine Erklärung/Lösung für das Problem.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: [Andorra] Sprites lassen sich nicht platzieren

  Alt 18. Jul 2008, 16:17
Er speichert es aber in einer Inidatei und ich würde gerne wissen, wie er es speichert, vielleicht ist ja da noch ein Fehlerchen drin.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:34 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