Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Facharbeit Minigame-Editor- Ladenproblem (https://www.delphipraxis.net/157739-facharbeit-minigame-editor-ladenproblem.html)

fui-tak 23. Jan 2011 16:23

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Zuerst: benutze bitte hier im Forum nicht die "CODE" Tags, sondern die "DELPHI"-Tags (der Römerhelm), dann lässt sich der Code besser lesen


dann schreib mal in deine Render Prozedur folgendes rein:
Delphi-Quellcode:
 if not assigned(rCanvas) then
     showmessage('rCanvas ist noch nicht gesetzt');

 rCanvas.Pen.Color := clWhite;
 rCanvas.Rectangle(0, 0, 720, 480);
 ...//was da noch so alles kommt
wenn jetzt beim Testen des Programms eine Meldung mit den Worten "rCanvas ist noch nicht gesetzt" erscheint, wurde rCanvas noch nicht gesetzt.
Heißt also
Delphi-Quellcode:
Raster.Canvas := Self.Canvas;
hat nicht funktioniert, oder rCanvas wurde danach auf etwas anderes gesetzt.

generic 24. Jan 2011 00:17

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Schau dir mal das Tutorial auf dieser Seite an:
http://vimeo.com/14920760
http://impactjs.com/documentation/vi...al-weltmeister
Das hat zwar nichts mit Delphi zu tun, aber du kannst für dein Gameaufbau sehr viel lernen.

hoika 24. Jan 2011 06:24

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Hallo,

werden denn Warnungen beim Compilieren angezeigt ?
Ist es Absicht, dass du 2 Raster-Objekte hast, einmal in TForm1, einmal global ?



Heiko

Blup 24. Jan 2011 09:13

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Deine Objekte brauchen kein Canvas-Property.
Der Canvas wird nur beim Rendern benötigt, übergib den dort als Parameter.

Delphi-Quellcode:
type TObjekt = class(TObject)
Diese Namensähnlichkeit ruft geradezu nach Fehlern.

Delphi-Quellcode:
Blockwrite(Datei, Datenarray, Max);
{...}
So werden keine Objekte sondern nur Zeiger auf diese gespeichert.
Entsprechend werden dann auch nur ungültige Zeiger geladen.
Das Speichern und Laden von Objekten ist deutlich komplexer.
Sie dir dazu die Klassen TPersistent, TWriter, TReader und eventuell TComponent genauer an.

Black sheep 31. Jan 2011 20:34

AW: Facharbeit Minigame-Editor- Ladenproblem
 
hat sich inzwischen erledigt, habs gelöst

-close-

mkinzler 31. Jan 2011 20:37

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Vielleicht wäre deine Lösung auch für andere interessant

Black sheep 31. Jan 2011 21:22

AW: Facharbeit Minigame-Editor- Ladenproblem
 
erstmal sorry, iwie hab ich keine mails mehr bekommen, obwohl hier noch welche geposted haben, und dooferweise hab ich die zweite seite nicht gesehen...^^

hab nach nochmaligem unterhalten mit meinem lehrer die speicher procedure so erledigt:
Delphi-Quellcode:
procedure TForm1.Speichern;

var i: integer;
    Datensatz : Datentyp;

begin
 if SaveDialog.Execute then
  begin
   LeftLeft; //unwichtige nebenprocedure
   assignfile(Datei, SaveDialog.FileName);
   rewrite(Datei);
   for i := 1 to Max do
   begin
    Datensatz := DatWelt(Welt[i]);   //siehe nächstem code
    write(Datei,Datensatz);
   end;
   closefile(Datei);
   BtStart.Visible := true;
  end;
end;
Delphi-Quellcode:
function DatWelt(pObjekt: TObjekt): Datentyp;

begin
 result.Typ := pObjekt.Typ;
 result.Nummer := pObjekt.Nummer;
 result.StartX := pObjekt.StartX;
 result.StartY := pObjekt.StartY;
end;
und die laden procedure dementsprechend so:

Delphi-Quellcode:
procedure TForm1.Laden1Click(Sender: TObject);

var i: integer;
    Datensatz : Datentyp;

begin
 if MessageDlg('Wollen sie vorher speichern?', mtConfirmation,
        [mbYes, mbNo], 0) = mrYes
 then Speichern;
 if OpenDialog.Execute then
  begin
   assignfile(Datei, OpenDialog.FileName);
   reset(Datei);
   i := 0;
   NummerAktuell := 0;
   while not eof(Datei) do
    begin
     i := i+1;
     NummerAktuell := NummerAktuell+1;
     read(Datei, Datensatz);
     Welt[i].reset(Datensatz.Typ, Datensatz.Nummer,
                        Datensatz.StartX, Datensatz.StartY);
    end;
   closefile(Datei);
   Raster.Render;
   BtStart.Visible := true;
  end;
end;
somit werden jetzt genau die richtigen daten gespeichert und geladen.
denn was ich nicht wusste war, dass ich vorher sozusagen versucht habe, die kompletten objekte zu speichern und das ging ja, wie schon von blup geschrieben, deutlich schwieriger...

danke trotzdem nochmal an alle und sorry für meine unbeholfenheit...

haentschman 31. Jan 2011 21:27

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Zitat:

und sorry für meine unbeholfenheit...
Du brauchst dich für nix zu entschuldigen... wir machen alle mal Blödsinn. :mrgreen: Solange du daraus gelernt hast sind wir glücklich... 8-)

Black sheep 1. Feb 2011 18:36

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Zitat:

Zitat von Blup (Beitrag 1076815)
Deine Objekte brauchen kein Canvas-Property.
Der Canvas wird nur beim Rendern benötigt, übergib den dort als Parameter.

Wie mach ich das am besten? Vllt ein code möglich?
möchte jetzt auch das ganze auf ein Bild zeichnen lassen, und dann das Bild auf der Form neu zeichnen lassen, damit das flackern weggeht.
allerdings hab ich gelesen, dass das gleiche mit doublebuffered := true auch umgangen werden kann, weil das genau das bezweckt. bei mir flackerts allerdings immernoch... hat irgendwer ne ahnung, warum?

DeddyH 1. Feb 2011 23:15

AW: Facharbeit Minigame-Editor- Ladenproblem
 
Code wofür? Für einen Parameter vom Typ TCanvas? Bitteschön:
Delphi-Quellcode:
procedure PaintEllipse(const DestCanvas: TCanvas);
begin
  if Assigned(DestCanvas) then
    begin
      DestCanvas.Brush.Color := clYellow;
      DestCanvas.Ellipse(0,0,100,100);
    end;
end;
Als Parameter kannst Du nun die Zeichenfläche angeben, auf die gezeichnet werden soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Seite 2 von 2     12   

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