Delphi: Schulprogramm

ericstar

Vice Admiral Special
Mitglied seit
12.08.2005
Beiträge
553
Renomée
2
Standort
kOblenz
hallo, ich muss für die schule ein kleines delphiprogramm schreiben- es geht ausschließlisch darum, sich in einer art textadventure durch verschiedene räume zu bewegen.

jetzt habe ich verschiedene fragen:
- wie kann ich es erreichen, dass vor der beschreibung eines neuen raums das Memo1-Feld gecleart wird
- dass in den Feldern nicht mehr 'Memo1' und 'Edit1' steht und die Überschrift einen anderen Namen als 'Form1' hat
- wie kann ich fotos einfügen (siehe unten, einen teil habe ich schon)

p.s. das programm läuft bis auf die fotos


unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
Image1: TImage;
Image2: TImage;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }

public
{ Public-Deklarationen }
end;

type
TRaum = class
Beschreibung: String;
FotoReferenz: String;
U1, U2, U3, Exit, Station : TRaum;
procedure setAusgaenge (U1, U2, U3, Exit, Station : TRaum);
end;


var
Form1: TForm1;
ManhattanS, Manhattan, BrooklynS, Brooklyn, QueensS, Queens : TRaum;
aktuellerRaum : TRaum;

implementation

{$R *.dfm}

procedure TRaum.setAusgaenge (U1, U2, U3, Exit, Station :TRaum);

begin
self.U1 := U1;
self.U2 := U2;
self.U3 := U3;
self.Exit := Exit;
self.Station := Station;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Add('Welcome to a virtual trip through New York. You can explore the citys boroughs by taking the subway. Your job is to find Jennifer Lopez. Just click the "Move"-Button to start.');

ManhattanS:=TRaum.Create;
BrooklynS:=TRaum.Create;
QueensS:=TRaum.Create;
Manhattan:=TRaum.Create;
Brooklyn:=TRaum.Create;
Queens:=TRaum.Create;

ManhattanS.Fotoreferenz:= 'Bilder/lagemap.jpg'
BrooklynS.FotoReferenz:= 'Bilder/lagemap.jpg'
QueensS.FotoReferenz:= 'Bilder/lagemap.jpg'
Manhattan.FotoReferenz:= 'Bilder/Manhattan.jpg'
Brooklyn.FotoReferenz:= 'Bilder/Brookln.jpg'
Queens.FotoReferenz:= 'Bilder/Queens.jpg'


ManhattanS.Beschreibung:= ('Your journey starts in Manhattan Station. Its quite noisy.');
BrooklynS.Beschreibung:= ('This is the Brooklyn subway station.');
QueensS.Beschreibung:= ('You can either take the U2 to Manhattan Station, the U3 to Brooklyn Station or just exit the Station to explore the town of Queens.');
Manhattan.Beschreibung:= ('This is the skyline of Manhattan. Manhattan has got about 1.5million inhabitants and it was founded it 1624 as an independant town');
Brooklyn.Beschreibung:= ('What you just see is the Brooklyn-Bridge. It was finished in 1883 by german engineers and it connects Manhattan and Brooklyn');
Queens.Beschreibung:= ('Now youre in Queens. And what a nice surprise: You found Jennifer Lopez! Have a nice day!');


aktuellerRaum := ManhattanS;
end;

procedure TForm1.Button1Click(Sender: TObject);

var Eingabe : String;
begin
Eingabe := Edit1.text;

if Eingabe= 'U1' then aktuellerRaum:=aktuellerRaum.U1;
if Eingabe= 'U2' then aktuellerRaum:=aktuellerRaum.U2;
if Eingabe= 'U3' then aktuellerRaum:=aktuellerRaum.U3;
if Eingabe= 'Exit' then aktuellerRaum:=aktuellerRaum.Exit;
if Eingabe= 'Station' then aktuellerRaum:=aktuellerRaum.Station;

if Eingabe = 'ManhattanS' then Memo1.Lines.add (ManhattanS.Beschreibung);
if Eingabe = 'Manhattan' then Memo1.Lines.add (Manhattan.Beschreibung);
if Eingabe = 'BrooklynS' then Memo1.Lines.add (BrooklynS.Beschreibung);
if Eingabe = 'Brooklyn' then Memo1.Lines.add (Brooklyn.Beschreibung);
if Eingabe = 'QueensS' then Memo1.Lines.add (QueensS.Beschreibung);
if Eingabe = 'Queens' then Memo1.Lines.add (Queens.Beschreibung);

Memo1.Lines.add (aktuellerRaum.Beschreibung);

ManhattanS.setAusgaenge(BrooklynS, QueensS, nil, Manhattan, nil);
BrooklynS.setAusgaenge(ManhattanS, nil, QueensS, Brooklyn, nil);
QueensS.setAusgaenge(nil, ManhattanS, BrooklynS, Queens, nil);
Manhattan.setAusgaenge(nil, nil, nil, nil, ManhattanS);
Brooklyn.setAusgaenge(nil, nil, nil, nil, BrooklynS);
Queens.setAusgaenge (nil, nil, nil, nil, QueensS);

if aktuellerRaum.U1 <> nil then Memo1.Lines.add('--> U1');
if aktuellerRaum.U2 <> nil then Memo1.Lines.add('--> U2');
if aktuellerRaum.U3 <> nil then Memo1.Lines.add('--> U3');
if aktuellerRaum.Exit <> nil then Memo1.Lines.add('--> Exit');
if aktuellerRaum.Station <> nil then Memo1.Lines.add('--> Station');
end;
end.
 
Zuletzt bearbeitet:
Ja, ja. Wir machen auch mit Delphi rum... Besch&#228;ftigen uns allerdings gerade mir Rekursion :)

Im Objektexpektor kannst du unter Caption bzw. Text die "Beschriftungen" der jeweiligen Elemente &#228;ndern.
Unter zus&#228;tzlich, ziehst du dir das Element Image auf deine Form. Dann kannst du im Objektinspektor unter Picture dein Photo einf&#252;gen. Oder nat&#252;rlich z.B. mit Image1.Picture:='...' Achtung! W&#228;hle das passende Dateiformat und achte auf die Verzeichnisstruktur deines Projektes!
Beim Beschreiten eines neuen Raumes z.B. Edit1.Text:='';

SuperCow
 
danke dir also beim edit-feld habe ich den text jetzt gel&#246;scht, beim memo-feld finde ich im object-inspector aber weder 'text' noch 'caption'

mit dem foto hat der lehrer geschrieben:
fotoreferenz als string deklarieren,
verst&#228;ndlich

im form1.create teil:
[raum].FotoReferenz := 'Bilder/[raum].jpg'
habe ich bereits eingebracht, siehe oben

foto in das objekt laden:
Image1.Picture.LoadFromFile(aktuellerRaum.Fotoreferenz);
foto entfernen:
Image1.Picture.CleanUpInstance;
keine ahnung wo das hinsoll
 
Zuletzt bearbeitet:
Ja stimmt, beim Momo ist das so 'ne Sache.
Per OnCreate (Ereignis von Form) Memo1:=''; Dann wird das Memo-Feld gel&#246;scht beim Programmstart gel&#246;scht. Sonst nimmst du auch immer Memo1:='';.

Zum anderen: Du musst Image1.Picture.LoadFromFile(aktuellerRaum.Fotoreferenz); immer dann einf&#252;gen, wenn du den Raum (das Bild) wechseln willst, also wenn der Benutzer z.B. auf den Button "Move!" klickt.
Image1.Picture.CleanUpInstance; verwendest du immer, wenn du den Raum (das Bild) "l&#246;schen" willst.


SuperCow
 
- wie kann ich es erreichen, dass vor der beschreibung eines neuen raums das Memo1-Feld gecleart wird
Memo1.Lines sollte dein Freund sein.
- dass in den Feldern nicht mehr 'Memo1' und 'Edit1' steht und die Überschrift einen anderen Namen als 'Form1' hat
Form1.Caption, Edit1.Text, Memo1.Lines
- wie kann ich fotos einfügen (siehe unten, einen teil habe ich schon)
Image1.LoadFromFile(dateiname)
aber es müssen BMPs sein, JPEG kann Delphi nicht.
 
jo danke euch,
hab deine tips alle verstanden antarctica (bin leider neuling auf dem gebiet, der quelltext war vom lehrer so fast vorgegeben, bisher haben wir nur in pascal programmiert- ist doch praktisch delphi ohne graphischer oberfl&#228;che?)
jetzt fehlt mir nur noch das mit den bildern, der lehrer hat [raum].FotoReferenz := 'Bilder/[raum].jpg' vorgegeben, vielleicht hat er sich da vertan werds mal ausprobieren

/edit: ICH HAAAAABS!!!!
und es funktioniert mit jpeg's
 
Zuletzt bearbeitet:
Zurück
Oben Unten