AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Planeten drehen

Ein Thema von Noob1990 · begonnen am 7. Mär 2010 · letzter Beitrag vom 8. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Noob1990

Registriert seit: 7. Mär 2010
15 Beiträge
 
#1

Planeten drehen

  Alt 7. Mär 2010, 19:06
Hi ich programmier schon so seit einen Jahr delphi habe die 2005er personal edition und mach hin und wieder kleine Programme
jetzt wollte ich mich mal aber an etwas großes wagen: Ein Spiel.
Es ist ein Weltraumspiel
Grafiken habe ich schon gemacht
nun ist aber ein Problem aufgetreten ich wollte das sich der Planet um seine eigene Achse dreht und habe dann deshalb 240 einzel Bilder entworfen die immer in eine TImage datei geladen werden das durch diverse Schleifen geregelt wird
nur gibt er mir beim starten des Programmes eine Fehler Meldung manchmal nicht aber dann verschwindet einfach meine TImage Dateei bzw picture wird auf ohne gesetzt warum auch immer
naja lange rede kurzer Sinn hier ist mein Code kann mir jmd sagen wo der Fehler liegt
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
   Image1,Image2: TImage;
    procedure Image1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    Planet:array[1..240] of tpicture;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i,x:integer;
dateiname:string;
begin

for i:=1 to 240 do
  begin
   dateiname:='p'+ inttostr(i);
   planet[i]:= Tpicture.Create;
   planet[i].loadfromfile('Planet1/' + dateiname +'.jpg') ;

  end;




end;

procedure TForm1.Image1Click(Sender: TObject);
var
x:integer;
begin



for x:=1 to 240 do
 begin
  Image1.Picture:=Planet[x];
  sleep(20);
 end


end;

end.
für weitere Anregungen bin ich gerne offen
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Planeten drehen

  Alt 7. Mär 2010, 19:12
Relative Pfadnamen sind immer ein Glücksspiel. Probier es stattdessen mal mit absoluten:
Delphi-Quellcode:
var
  BaseDir: string;
begin
  // ParamStr(0) enthält den gesamten "Aufrufnamen" des Programms
  // z.B. "C:\Program files\dingsbums\programm.exe -parameter1 -parameter2"
  BaseDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
  // In BaseDir steht jetzt ausgehend von obigem Beispiel
  // "C:\Program files\dingsbums\"

  {...}

  planet[i].loadfromfile(BaseDir + 'Planet1\' + dateiname + '.jpg');
Edit: Was auch noch wichtig zu wissen wäre, wäre WELCHE Fehlermeldung dir angezeigt wird. So können wir nämlich nur rumraten.
  Mit Zitat antworten Zitat
Noob1990

Registriert seit: 7. Mär 2010
15 Beiträge
 
#3

Re: Planeten drehen

  Alt 7. Mär 2010, 19:21
hmmm kommich jetzt wollte ichs noch mal starten um die fehler meldung zu lesen aber jetzt kommt keine aber beim onklick auf die image passiert auch nix grad -.-
hmm naja egal wo wird den der pfad von parameter(0) festegelegt?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Planeten drehen

  Alt 7. Mär 2010, 19:29
ParamStr wird automatisch von Delphi bzw. Windows beim Programmstart mit dem richtigen Wert gefüllt.
  Mit Zitat antworten Zitat
Noob1990

Registriert seit: 7. Mär 2010
15 Beiträge
 
#5

Re: Planeten drehen

  Alt 7. Mär 2010, 19:38
also brauch ich quasi nur
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
i,x:integer;
dateiname:string;
begin

for i:=1 to 240 do
  begin
   dateiname:='p'+ inttostr(i);
   planet[i]:= Tpicture.Create;
   planet[i].loadfromfile('Planet1/' + dateiname +'.jpg') ;

  end;




end;
durch
Delphi-Quellcode:
var
 dateiname, BaseDir: string;
 i:integer;
begin
 for i:=1 to 240 do
 begin
  dateiname:='p'+ inttostr(i);
  BaseDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));

  planet[i].loadfromfile(BaseDir + 'Planet1\' + dateiname + '.jpg');
 end
end;
zu ersetzen und dann funktionier das also dann auch die schlleife die in TImage1 onclick stehent?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Planeten drehen

  Alt 7. Mär 2010, 19:44
Das sollte so sein, dort wird ja nicht mehr auf die Festplatte, sondern auf das Array zugegriffen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Noob1990

Registriert seit: 7. Mär 2010
15 Beiträge
 
#7

Re: Planeten drehen

  Alt 8. Mär 2010, 15:51
funktioniert immer noch nicht beim klicken auf die image datei rechnet er kurz iwas und dann verschwindet die Image datei ohne sich geändert zu haben
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: Planeten drehen

  Alt 8. Mär 2010, 16:08
Was soll dort eigentlich passieren? Du gehst das ganze Array durch und lädst jede Bitmap einmal in das Image. Wozu soll das gut sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Planeten drehen

  Alt 8. Mär 2010, 16:11
Mal mit Application.ProcessMessages probiert?
Delphi-Quellcode:
for x := 1 to 240 do
begin
  Image1.Picture := Planet[x];
  Application.ProcessMessages;
  sleep(20);
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: Planeten drehen

  Alt 8. Mär 2010, 16:13
Achso, das soll eine Animation werden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 06:44 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