Adventure Game[gelöst]

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Adventure Game[gelöst]

Beitrag von McCry »

Hi, ich möchte mal ein kleines Adventure Game (Textbasierend) mit Lazarus/Pascal programmieren.
Um das möglich zu machen, muss sich der Text eines Labels/Checkbuttons verändern.
Man drückt auf "Weiter" und aus "1.Frage" wird z.B. "Hallo".
Jetzt weiss ich natürlich nicht, wie das geht.
Hoffe einer hier weiss es.
Danke schonmal
McCry
Zuletzt geändert von McCry am Mi 7. Dez 2011, 20:05, insgesamt 1-mal geändert.

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Adventure Game

Beitrag von Bauer321 »

Das Projekt haben ich vor Jahren mal gemacht, wenn du noch Anfänger bist hilft es vielleicht weiter allerdings ist es (ich habe es eben nochmal angeguckt) vom Aufbau her sehr umständlich gemacht. Wie man halt ganz am Anfang so programmiert^^

edit: Anhänge entfernt da unnötiger Speicherverbrauch und schlechter Code
Zuletzt geändert von Bauer321 am Sa 3. Dez 2011, 18:20, insgesamt 1-mal geändert.
www.mcpatcher.net | www.hoeper.me

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Adventure Game

Beitrag von McCry »

Ok, erstma Danke.
Nur Leider steig ich da net so durch. :roll:

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Adventure Game

Beitrag von Bauer321 »

aber sowas in der art willst du machen?
www.mcpatcher.net | www.hoeper.me

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Adventure Game

Beitrag von McCry »

Ja, so in der Art.
Da soll dann z.B stehen:
"Es gibt zwei türen. links oder rechts"
Man wählt links und der Text ändert sich in "DAs war der Falsche Weg, du bist TOT".
So in der Art.

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Adventure Game

Beitrag von Bauer321 »

Ja dann mach das doch in etwa so:

Ein Label, zwei Radiobuttons und ein Button.

edit: mit RadioButtonX.Caption := 'Text'; kannst du auch den Text der Radiobuttons ändern
Dateianhänge
Vorschau
Vorschau
bild.png (12.11 KiB) 2512 mal betrachtet
beispielexe.zip
exe zum testen
(641.72 KiB) 92-mal heruntergeladen
beispiel.zip
Quellcode mit Kommentaren
(2.41 KiB) 78-mal heruntergeladen
www.mcpatcher.net | www.hoeper.me

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Adventure Game

Beitrag von McCry »

@Bauer321 Es klappt jetzt. Danke :D
Jetzt hab ich aber noch 2 Fragen:
1. Wie füge ich jetzt mehrere Fragen als nur 3 ein?
2. Wie hast du es gemacht, dass sich am ende eine 2.Form öffnet?

Danke schonmal
McCry

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Adventure Game

Beitrag von Bauer321 »

also weitere Fragen einfach nach dem bisherigen muster statt end; ein end else if ... (Zeile 76 in meinem Beispiel) und dann nach dem schema einfach weiter

wenn du ne nachricht anzeigen willst nimm ShowMessage('Dein Text');

ne neue Form machst du über Datei -> neues Formular, dann oben unter uses den namen eintragen. Danach kannst du einfach Form2.Show; bzw .Hide aufrufen
www.mcpatcher.net | www.hoeper.me

camper3000
Beiträge: 31
Registriert: Fr 8. Jan 2010, 16:29

Re: Adventure Game

Beitrag von camper3000 »

Dazu würd ich einfach ne Mehrfachauswahl nehmen, mal gecodet:

Code: Alles auswählen

//Unter FormCreate       zaehler ist global, typ: integer
zaehler:=1; //Zähler rücksetzen
 
//auf dem Bestätigen button
zaehler:=zaehler+1;
case zaehler of
  2: lab_frage.caption:='Frage 2'  //Frage 1 steht von Anfang an drinne
  3: lab_frage.caption:='Frage 3' //Frage in abhängigkeit vom Zähler ändern
  4: lab_frage.caption:='Frage 4'
  5: lab_frage.caption:='Frage 5'
  .
  .
  .
  else begin
    lab_frage.caption:='Dein Zähler hat keine Frage'
  end;
end;
so ungefähr, ist natürlich noch nicht in den feinheiten.
(Falls du case-of-end noch nicht verwendet hast, schau dir einfach mal n tutorial an)

Hoffe konnte helfen
mfg camper3000
Auch wenn man einen Hammer hat, ist nicht jedes Problem ein Nagel.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Adventure Game

Beitrag von Bauer321 »

camper3000 hat geschrieben:Dazu würd ich einfach ne Mehrfachauswahl nehmen, mal gecodet:

Code: Alles auswählen

//Unter FormCreate       zaehler ist global, typ: integer
zaehler:=1; //Zähler rücksetzen
 
//auf dem Bestätigen button
zaehler:=zaehler+1;
case zaehler of
  2: lab_frage.caption:='Frage 2'  //Frage 1 steht von Anfang an drinne
  3: lab_frage.caption:='Frage 3' //Frage in abhängigkeit vom Zähler ändern
  4: lab_frage.caption:='Frage 4'
  5: lab_frage.caption:='Frage 5'
  .
  .
  .
  else begin
    lab_frage.caption:='Dein Zähler hat keine Frage'
  end;
end;
so ungefähr, ist natürlich noch nicht in den feinheiten.
(Falls du case-of-end noch nicht verwendet hast, schau dir einfach mal n tutorial an)

Hoffe konnte helfen
mfg camper3000
auch ne möglichkeit, ich hatte eine gepostet die die antwort überprüft und wenn sie richtig ist die nächste frage anzeigt und sonst wieder Frage1
www.mcpatcher.net | www.hoeper.me

camper3000
Beiträge: 31
Registriert: Fr 8. Jan 2010, 16:29

Re: Adventure Game

Beitrag von camper3000 »

jupp, geht auch.
find ich aber persönlich unübersichtlicher
Auch wenn man einen Hammer hat, ist nicht jedes Problem ein Nagel.

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Adventure Game

Beitrag von McCry »

Hab das mit der 2. Form geschafft.
Nur hab ich jetzt alles nochmal etwas "schöner" gemacht.
Jetzt kommt da aber ein Fehler:

Code: Alles auswählen

unit Unit_credits;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Unit_start ; //hier ist der Fehler
 
type
 
  { Tform_credits }
 
  Tform_credits = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  form_credits: Tform_credits;
 
implementation
 
{$R *.lfm}
 
{ Tform_credits }
 
procedure Tform_credits.Button1Click(Sender: TObject);
begin
  form_start.show;
  form_credits.close;
end;
 
end.

Code: Alles auswählen

unit Unit_start;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, Unit_credits;
 
type
 
  { Tform_start }
 
  Tform_start = class(TForm)
    ab_but: TButton;
    credits_but: TButton;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    procedure credits_butClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  form_start: Tform_start;
 
implementation
 
{$R *.lfm}
 
{ Tform_start }
 
procedure Tform_start.credits_butClick(Sender: TObject);
begin
  form_credits.show;
  form_start.close;
end;
 
end.
Ich hoffe ihr könnt mir da helfen.
LG McCry

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Adventure Game

Beitrag von mse »

Code: Alles auswählen

unit Unit_credits;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
//  Unit_start ; //hier ist der Fehler
[...] 
var
  form_credits: Tform_credits;
 
implementation
uses
 Unit_start;  
 
 

Code: Alles auswählen

unit Unit_start;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls{, Unit_credits};
[...]
implementation
uses
 Unit_credits;

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Adventure Game

Beitrag von McCry »

DANKEEEEEEEEEEEEEEE.
ES FUNKTIONIERT.
:mrgreen:

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Antworten