AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit eigenem Textadventure in Delphi

Ein Thema von Gragas · begonnen am 20. Dez 2010 · letzter Beitrag vom 22. Dez 2010
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Gragas

Registriert seit: 16. Dez 2010
15 Beiträge
 
#1

Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 11:27
Hallo erstmal
Ich wusste nicht genau, unter welchem Bereich ich mein Problem posten soll, daher schon mal im voraus eine Entschuldigung von mir, falls das hier der falsche Ort dafür sein sollte.
Ich sollte für den Unterricht ein Textadventure erstellen.
Das Problem dabei ist jetzt ,dass ich das noch nie gemacht habe und jetzt anhand der vom Lehrer gegebenen Infos versucht habe, eins auf die Beine zu stellen.
Ich bin nun soweit ich das beurteilen kann durch, allerdings bekomme ich ständig eine Fehlermeldung sobald ich das Programm starten will .
Ich habe schon gesucht und gesucht, aber ich finde den Fehler einfach nicht bzw ich weiß auch nicht, ob vielleicht etwas fehlt und das ganze deswegen nicht läuft.
Es wäre wirklich nett, wenn mir jemand sagen könnte, wo mein Fehler liegt, damit ich ihn beheben kann ( Abgabe ist nämlich leider schon in ein paar Tagen und ich möchte nur ungern etwas abgeben,was nicht funktioniert ).

Hier mein "Text" ( Ich hoffe, er ist nicht zu lang :/ ):
__________________________________________________ ___________________________
Delphi-Quellcode:
unit Schulprojektbearbeitet;

interface

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


    type
TRaum = class
Beschreibung : string;
FotoReferenz : String;
Gegenstand : String;
Norden, Sueden, Westen, Osten : TRaum;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure setAusgaenge (norden, sueden, westen, osten, hoch, runter : TRaum);
end;

TRucksack = Class
Item : Array [1..5] of String;
procedure hinzufuegen (S:String);
function ausgeben : String;
Function voll: boolean;
end;

TForm2 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
  Form2: TForm2;
  aktuellerRaum: TRaum;
  Garten, Flur, Fluroben, Flur2, Flur3, Maggiesraum, Lisasraum, Bartszimmer, Elternschlafzimmer, Badezimmer, Badezimmer2, Kueche, TVRoom, Esszimmer, Wohnzimmer, Eingang : TRaum;

  Norden, Sueden, Westen, Osten: TRaum;
  Rucksack: TRucksack;



implementation
begin

{$R *.dfm}

procedure TRucksack.hinzufuegen ( S:String);
var i : integer ;
begin
i := 1;
while (i <= 5) do

begin
  if (self.item[i]=S) then
  break
  else
  if self.item[i]= " then
    begin
    self.item[i] = s;
    break
    end;
  inc(i);
end;

end;

function TRucksack.ausgeben : string;
var i: integer;
begin
result := " ;
i:=1;
while (i <=5) do
  begin
  if(self.item[i] = ") then
  break
  else
  result := result + self.item[i] + ',';
  inc(i);
  end;
end;

function TRucksack.voll : boolean;
var i, j : integer ;
begin
result := false;
j:= 0;
for i := 1 to 5 do
if (self.item[i]<> ") then
inc(j);
if(j=5) then
result := true;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
Raumwechsel('Norden');
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Rucksack:=TRucksack.create
memo1.lines.add('Herzlich Willkommen in der Welt der Simpsons');
Garten := TRaum.Create;
Eingang := TRaum.Create;
Flur := TRaum.Create;
Fluroben := TRaum.Create;
Kueche := TRaum.Create;
TVRoom := TRaum.Create;
Wohnzimmer := TRaum.Create;
Esszimmer := TRaum.Create;
Flur2 := TRaum.create;
Flur3 := TRaum.Create;
Maggiesraum := TRaum.Create;
Lisasraum := TRaum.Create;
Bartszimmer :=TRaum.Create;
Badezimmer := TRaum.Create;
Badezimmer2 := TRaum.create;
Elternschlafzimmer :=TRaum.Create;
Garten.Beschreibung :=('Nun stehen Sie vor dem Haus der Simpsons.Treten Sie doch ein');
Eingang.Beschreibung :=('Wie Sie sehen werden Sie bereits erwartet');
Flur.Beschreibung :=('Sie stehen nun im Flur.Wohin wollen Sie als nächstes?');
Fluroben.Beschreibung :=('Sie haben den ersten Stock des Hauses betreten');
Kueche.Beschreibung :=('Haben Sie Hunger? Dann sind Sie hier genau richtig, denn Sie sind in der Küche gelandet');
Esszimmer.Beschreibung :=('Sie haben das Esszimmer betreten');
Wohnzimmer.Beschreibung := ('Sie befinden sich nun im gemütlichstem Zimmer des Hauses , dem Wohnzimmer');
TVRoom.Beschreibung :=('Erkennen Sie dieses Zimmer vielleicht wieder? Es ist wohl das bekannteste der Simpsonsfamilie');
Fluroben.Beschreibung :=('Nun stehen Sie im ersten Stock. Wohin soll es nun gehen?');
Flur2.Beschreibung :=('Nun stehen sie weiter Rechts im Flur und haben die Wahl zwischen dem Badezimmer und dem Elternschlafzimmer');
Flur3.Beschreibung :=('Sie haben sich dazu entschieden, weiter links in den Flur hinein zu gehen und haben nun die Wahl zwischen Barts Zimmer und dem zweiten Badezimmer')
Bartszimmer.Beschreibung := ('Hier herrscht das Chaos.Sind Sie sicher ,dass sie hier hin wollten?');
Lisaszimmer.Beschreibung :=('Lust auf eine Runde Saxophon? Lisas Zimmer ist perfekt dafür!');
Elternschlafzimmer.Beschreibung := ('Hier im Elternschlafzimmer haben Sie ja eigentlich nichts zu suchen , aber wir drücken mal ein Auge zu');
Badezimmer.Beschreibung := ('Nach langem Suchen haben sie endlich das erste der zwei Badezimmer gefunden');
Badezimmer2.Beschreibung := ('Toilette frei, hier kommt das zweite Badezimmer');
Maggieszimmer.Beschreibung := ('Achtung, ein freilaufendes Baby, herumliegende Schnuller und Legowurfattacken gehören hier zur Standarteinrichtung');
Garten.setAusgaenge(Eingang, nil, nil, nil, nil, nil);
Eingang.setAusgaenge(Flur, Garten, nil, nil, nil, nil);
Flur.setAusgaenge(Kueche, Eingang, Wohnzimmer, Esszimmer ,Fluroben ,nil);
Wohnzimmer.setAusgaenge(TVRoom, nil, nil, Flur, nil, nil);
TVRoom.setAusgaenge(nil, Wohnzimmer, nil, Kueche, nil, nil);
Kueche.setAusgaenge nil, Esszimmer, TVRoom, nil, nil, nil);
Esszimmer.setAusgaenge(Kueche, nil, Flur, nil, nil, nil);
Fluroben.setAusgaenge( Maggiesraum, Lisasraum, Flur2, Flur3, nil, Flur);
Flur2.setAusgaenge(Badezimmer, Elternschlafzimmer, Fluroben, nil, nil, nil);
Flur3.setAusgaenge(Badezimmer2, Bartszimmer, nil, Fluroben, nil, nil);
Flur.Gegenstand:= ' ';
Fluroben.Gegenstand:= ' ';
Flur2.Gegenstand:= ' ';
Flur3.Gegenstand:= ' ';
Maggiesraum.Gegenstand:= 'blauer Schnuller';
Lisasraum.Gegenstand:= 'Saxophon';
Bartszimmer.Gegenstand:= 'Krusty-der-Clown-Aufziehpuppe';
Elternschlafzimmer.Gegenstand:= ' ';
Badezimmer.Gegenstand := ' ';
Badezimmer2.Gegenstand := ' ';
Garten.Gegenstand := ' ';
Eingang.Gegenstand := ' ';
Kueche.Gegenstand := ' Mit rosa Glassur überzogener Donut';
TVRoom.Gegenstand := 'Duffbierdose';
Esszimmer.Gegenstand := ' ';
Kueche.Gegenstand := ' ';
Wohnzimmer. Gegenstand := ' ';
aktuellerRaum := Garten ;
Garten.Fotoreferenz := 'Bilder/Klassenraum.jpg';
Eingang.Fotoreferenz := 'Bilder/Eingang.jpg';
Flur.Fotoreferenz := 'Bilder/Flur.jpg';
Kueche.Fotoreferenz := 'Bilder/Kueche.jpg';
Esszimmer.Fotoreferenz := 'Bilder/Esszimmer.jpg';
TVRoom.Fotoreferenz := 'Bilder/TVRoom.jpg';
Wohnzimmer.Fotoreferenz := 'Bilder/Wohnzimmer.jpg';
Maggiesraum.Fotoreferenz := 'Bilder/Maggiesraum.jpg';
Lisasraum.Fotoreferenz := 'Bilder/Lisasraum.jpg';
Elternschlafzimmer.Fotoreferenz := 'Bilder/Elternschlafzimmer.jpg';
Badezimmer.Fotoreferenz := 'Bilder/Badezimmer1.jpg'
Bartszimmer.Fotoreferenz := 'Bilder/Bartszimmer.jpg';
Badezimmer2.Fotoreferenz :='Bilder/Badezimmer2.jpg';
Image1.Picture.LoadFromFile(aktueller.Raum.Fotorefetenz);
end;


procedure TRaum.setAusgaenge (norden, sueden, westen, osten : TRaum);
begin
self.Norden := norden;
self.Sueden := sueden;
self.westen := westen;
self.osten := osten;
end;

procedure TForm2.Raumwechsel (Eingabe:String);
begin
Memo1.clear;
Rucksack.hinzufuegen(aktuellerRaum.Gegenstand);
Eingabe := Edit1.text;
if (Eingabe = 'Norden') and (aktuellerRaum.Norden <> nil) then aktuellerRaum := aktuellerRaum.Norden;
if (Eingabe = 'Sueden') and (aktuellerRaum.Sueden <> nil) then aktuellerRaum := aktuellerRaum.Sueden;
if (Eingabe = 'Westen') and (aktuellerRaum.Westen <> nil) then aktuellerRaum := aktuellerRaum.Westen;
if (Eingabe = 'Osten') and (aktuellerRaum.Osten <> nil) then aktuellerRaum := aktuellerRaum.Osten;
Memo1.Lines.add(aktuellerRaum.Beschreibung);
Memo1.Lines.add(' ');
Memo1.linesadd('Im Rucksack enthalten:' + Rucksack.ausgeben);
if Rucksack.voll then
Memo1.lines.add('Glückwunsch, Sie haben alle Gegenstände gefunden');
Memo1.lines.add(' ');
Memo1.Lines.add('Wählen Sie die gewünchte Richtung in die Sie gehen möchten');
if aktuellerRaum.Norden <> nil then memo1.lines.add('--> Norden');
if aktuellerRaum.Sueden <> nil then memo1.Lines.add('--> Sueden');
if aktuellerRaum.Westen <> nil then memo1.Lines.add('--> Westen');
if aktuellerRaum.Osten <> nil then memo1.lines.add ('--> Osten');
end;



procedure TForm2.Button3Click(Sender: TObject);
begin
Raumwechsel('Osten');
end;

procedure TForm2.Button4Click(Sender: TObject);
begin
Raumwechsel('Westen');
end;

procedure TForm2.Button5Click(Sender: TObject);
begin
Raumwechsel('Sueden');
end;

procedure TForm2.Button1Click(Sender: TObject);
var Eingabe : String;
begin
aktuellerRaum := Garten;
memo1.clear;
Eingabe := Edit1.text;
if (Eingabe = 'Norden') and (aktuellerRaum.Norden <> nil) then aktuellerRaum := aktuellerRaum.Norden;
if (Eingabe = 'Sueden') and (aktuellerRaum.Sueden <> nil) then aktuellerRaum := aktuellerRaum.Sueden;
if (Eingabe = 'Westen') and (aktuellerRaum.Westen <> nil) then aktuellerRaum := aktuellerRaum.Westen;
if (Eingabe = 'Osten') and (aktuellerRaum.Osten <> nil) then aktuellerRaum := aktuellerRaum.Osten;
Memo1.Lines.add(aktuellerRaum.Beschreibung);
if aktuellerRaum.Norden <> nil then memo1.lines.add('--> Norden');
if aktuellerRaum.Sueden <> nil then memo1.Lines.add('--> Sueden');
if aktuellerRaum.Westen <> nil then memo1.Lines.add('--> Westen');
if aktuellerRaum.Osten <> nil then memo1.lines.add ('--> Osten');
Memo1.Lines.add(aktuellerRaum.Beschreibung);
end;

end.
__________________________________________________ __
Wenn Ihr irgendwelche Fehler findet, bitte bitte sagt Bescheid !
Danke Schön schon einmal im Voraus (:

Geändert von Gragas (21. Dez 2010 um 00:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 11:35
Hallo und Willkommen in der DP ,

würdest Du Dir dies hier bitte durchlesen und dann Deinen Beitrag entsprechend ändern? Du hilfst damit nicht nur uns, sondern auch Dir selbst
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
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#3

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 11:51
Der Code ist, so wie er hier eingefügt ist, etwas unübersichtlich.
http://www.delphi-treff.de/object-pa...hi-styleguide/
http://www.delphi-treff.de/object-pa...-leerzeichens/

Aber könnte zumindest des "begin" nach "implementation" zuviel im Code sein?

Geändert von Jens01 (20. Dez 2010 um 11:56 Uhr)
  Mit Zitat antworten Zitat
Gragas

Registriert seit: 16. Dez 2010
15 Beiträge
 
#4

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 12:31
ich habe testweise das begin weggemacht, aber daran scheint es nicht zu liegen.
Ich bekomme immer noch die Fehlermeldungen .
Vielleicht mal etwas genauer zu der Fehlermeldung :
Mir wird immer ein :

"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt"

angezeigt.
Aber ich weiß nicht wirklich, was damit gemeint ist geschweige denn, wie ich diesen Fehler beheben kann.

Auch wird mir beim speichern immer angezeigt, dass Feld form2.sueden ( genauso wie bei feld form2.Fotoreferenz, Feld Form2.Gegenstand, Feld Form2.Osten, Feld Form2. Osten und Feld Form2.Westen) keine entsprechende Komponente besitzen würde.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 12:38
Irgendwie hast du in der Interface-Deklaration TRaum und TForm2 kräftig durchgemischt. Schau dir das mal an. TRucksack hast du ja auch außerhalb von TRaum deklariert.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#6

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 12:43
An den Fehlermeldungen kann Du Dich nicht orientieren. Du mußt Dein Code erst einmal aufräumen (einrücken). Dafür habe ich Dir 2 Links gegeben. Ich glaube, wenn Du den Code sauber hast, dann siehst Du Deine Fehler selbst.
Mit dem "begin ..end" ist es wie mit den Klammern in Mathe.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#7

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 12:44
Der Code compiliert nicht: Die Deklaration von TRaum innerhalb von TForm2 ist nicht korrekt!

Ups! Roter Kasten?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Namenloser

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

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 12:55
Delphi-Quellcode:
type
TRucksack = Class;
Item : Array [1..5] of String;
procedure hinzufuegen (S:String);
function ausgeben : String;
Function voll: boolean;
end;
Das Semikolon nach Class gehört da nicht hin. Außerdem kann ich nicht erkennen, wozu das end; vor implementation gehören soll.

Wie bereits gesagt wurde: Code unbedingt einrücken!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 12:59
Und noch was:

Flur3.setAusgaenge := (Badezimmer2, Bartszimmer, nil, Fluroben, nil, nil);
Das da compiliert auch nie im Leben. Methoden-Aufrufe sind was anderes als Zuweisungen ( := )
Die Zeile müsste so aussehen:

Flur3.setAusgaenge(Badezimmer2, Bartszimmer, nil, Fluroben, nil, nil);
Ich glaube du solltest dich nochmal mit ein paar Grundlagen beschäftigen. Der Fehler ist das reinste Chaos und mich wunderts, dass du so viel Code geschrieben hast, ohne ihn scheinbar bis jetzt mal getestet bzw. compiliert hast.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Problem mit eigenem Textadventure in Delphi

  Alt 20. Dez 2010, 13:09
In wie vielen Foren diskutieren wir denn das Problem zur Zeit?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 11:00 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