Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Spiel für Informatik Unterricht!! (https://www.delphipraxis.net/60570-spiel-fuer-informatik-unterricht.html)

emteg 9. Jan 2006 15:12

Re: Spiel für Informatik Unterricht!!
 
Also das erste was du machen solltest, ist dir arrays zu bauen, so blickt man ja garicht mehr durch:

Delphi-Quellcode:
var Room: array [1..16] of TRaum;

{...}

procedure TForm1.FormCreate(Sender:TObject);
var i: integer;
begin

  //---Räume erzeugen---
  for i:=1 to 16 do
  begin
    Room[i]:=TRaum.Create;
    Room[i].Beschreibung:='Raum'+IntToStr(i);          //Das ergibt immer "Raum"+Zahl, also z.B. Raum1, Raum2, ...
    Room[i].Bild:='Bilder\raum'+IntToStr(i)+'.jpg';    //Da werden wie obend die Namen der Bilder erzeugt.
  end;
 
  //---Ausgänge setzen---
  room[1].setAusgaenge(nil,room2,room5,nil);
  room[2].setAusgaenge(nil,room3,room6,room1);
  room[3].setAusgaenge(nil,room4,room7,room2);
  room[4].setAusgaenge(nil,nil,room8,room3);
  room[5].setAusgaenge(room1,room6,room9,nil);
  room[6].setAusgaenge(room2,room7,room10,room5);
  room[7].setAusgaenge(room3,room8,room11,room6);
  room[8].setAusgaenge(room4,nil,room12,room7);
  room[9].setAusgaenge(room5,room10,room13,nil);
  room[10].setAusgaenge(room6,room11,room14,room9);
  room[11].setAusgaenge(room7,room12,room15,room10);
  room[12].setAusgaenge(room8,nil,room16,room11);
  room[13].setAusgaenge(room9,room14,nil,nil);
  room[14].setAusgaenge(room10,room15,nil,room13);
  room[15].setAusgaenge(room11,room16,nil,room14);
  room[16].setAusgaenge(room12,nil,nil,room15);

  aktuellerRaum:=room[1];

end;

malo 9. Jan 2006 15:13

Re: Spiel für Informatik Unterricht!!
 
Was hast du denn da gemacht? :mrgreen:

Da scheint jemand entweder gerne alles selbst zu tippen, oder er benutzt gerne Strg+C und Strg+V :mrgreen:

Du musst, wenn du ein Event (Ereignis) hinzufügst, auch das richtige Event im Objektinspektor auswählen. Bei FormCreate und ButtonClick reicht auch ein Doppelklick auf das entspr. Objekt.

Jedenfalls musst du oben im Interface-Abschnitt bei der Klasse TForm1 noch was ergänzen. An dieser Stelle:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
Da hast du dann auch die Buttons stehen, dann die Prozedur FormCreate. Da musst du auch die Button-Prozeduren hinzufügen. Z.B:
Delphi-Quellcode:
procedure Button1Click(Sender: TObject);
Das musst du für jedes Click-Event machen ;)

eMGee 9. Jan 2006 15:16

Re: Spiel für Informatik Unterricht!!
 
ok danke für die ganze hilfe, wie gesagt hab von delpühi noch net so den plan... habe noch nie objektorientiert prgrammiert ;)
werde mir mal aus euren tipps was neues basteln.. ;)

eMGee 9. Jan 2006 15:29

Re: Spiel für Informatik Unterricht!!
 
also hab deinen vorschlag mit den array jetzt umgesetzt, allerdings sagt delphi mir jetzt hier:

Delphi-Quellcode:
  room[1].setAusgaenge(nil,room2,room5,nil);
  room[2].setAusgaenge(nil,room3,room6,room1);
  room[3].setAusgaenge(nil,room4,room7,room2);
  room[4].setAusgaenge(nil,nil,room8,room3);
  room[5].setAusgaenge(room1,room6,room9,nil);
  room[6].setAusgaenge(room2,room7,room10,room5);
  room[7].setAusgaenge(room3,room8,room11,room6);
  room[8].setAusgaenge(room4,nil,room12,room7);
  room[9].setAusgaenge(room5,room10,room13,nil);
  room[10].setAusgaenge(room6,room11,room14,room9);
  room[11].setAusgaenge(room7,room12,room15,room10);
  room[12].setAusgaenge(room8,nil,room16,room11);
  room[13].setAusgaenge(room9,room14,nil,nil);
  room[14].setAusgaenge(room10,room15,nil,room13);
  room[15].setAusgaenge(room11,room16,nil,room14);
  room[16].setAusgaenge(room12,nil,nil,room15);
immer undefinierter bezeichner room2, room5 usw also bei allen räumen...

kann ich die räume dort nicht so ansprechen wenn ich die durch einen array erzeugt habe??

eMGee 9. Jan 2006 15:30

Re: Spiel für Informatik Unterricht!!
 
schon ok habs selber gefunden ;)

eMGee 9. Jan 2006 15:45

Re: Spiel für Informatik Unterricht!!
 
so hab mir jetzt aus euren ganzen hilfen (danke nochmal) was geschrieben was sich auch ohne fehler kompilieren lässt allerdings tut sich beim drücken auf die buttons komischerweise nichts... weder die beschreibung taucht im memo feld auf noch ein bild wird geleaden... bin am verzweifeln :?
naja hier der quelltext

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Memo1: TMemo;
    Image1: TImage;

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  TRaum=class
    Beschreibung:String;
    Bild:String;
    Norden,Osten,Sueden,Westen:TRaum;
    procedure setAusgaenge(norden,osten,sueden,westen:TRaum);
end;


var
  Form1: TForm1;
  Room: array [1..16] of TRaum;
  aktuellerRaum:TRaum;

implementation

{$R *.dfm}

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

procedure TForm1.FormCreate(Sender:TObject);
var i: integer;
begin

  //---Räume erzeugen---
  for i:=1 to 16 do
  begin
    Room[i]:=TRaum.Create;
    Room[i].Beschreibung:='blabla';
    Room[i].Bild:='Bilder\raum'+IntToStr(i)+'.jpg';
  end;

  //---Ausgänge setzen---
  room[1].setAusgaenge(nil,room[2],room[5],nil);
  room[2].setAusgaenge(nil,room[3],room[6],room[1]);
  room[3].setAusgaenge(nil,room[4],room[7],room[2]);
  room[4].setAusgaenge(nil,nil,room[8],room[3]);
  room[5].setAusgaenge(room[1],room[6],room[9],nil);
  room[6].setAusgaenge(room[2],room[7],room[10],room[5]);
  room[7].setAusgaenge(room[3],room[8],room[11],room[6]);
  room[8].setAusgaenge(room[4],nil,room[12],room[7]);
  room[9].setAusgaenge(room[5],room[10],room[13],nil);
  room[10].setAusgaenge(room[6],room[11],room[14],room[9]);
  room[11].setAusgaenge(room[7],room[12],room[15],room[10]);
  room[12].setAusgaenge(room[8],nil,room[16],room[11]);
  room[13].setAusgaenge(room[9],room[14],nil,nil);
  room[14].setAusgaenge(room[10],room[15],nil,room[13]);
  room[15].setAusgaenge(room[11],room[16],nil,room[14]);
  room[16].setAusgaenge(room[12],nil,nil,room[15]);

  aktuellerRaum:=room[1];

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (aktuellerRaum.Norden <> nil) then
  begin
    aktuellerRaum:= aktuellerRaum.Norden;
    Image1.Picture.LoadFromFile(aktuellerRaum.Bild);
    Memo1.Lines.Add(aktuellerRaum.Beschreibung);
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  if (aktuellerRaum.Osten <> nil) then
  begin
    aktuellerRaum:= aktuellerRaum.Osten;
    Image1.Picture.LoadFromFile(aktuellerRaum.Bild);
    Memo1.Lines.Add(aktuellerRaum.Beschreibung);
  end;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
  if (aktuellerRaum.Sueden <> nil) then
  begin
    aktuellerRaum:= aktuellerRaum.Sueden;
    Image1.Picture.LoadFromFile(aktuellerRaum.Bild);
    Memo1.Lines.Add(aktuellerRaum.Beschreibung);
  end;
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
  if (aktuellerRaum.Westen <> nil) then
  begin
    aktuellerRaum:= aktuellerRaum.Westen;
    Image1.Picture.LoadFromFile(aktuellerRaum.Bild);
    Memo1.Lines.Add(aktuellerRaum.Beschreibung);
  end;
end;

end.

Phoenix 9. Jan 2006 15:59

Re: Spiel für Informatik Unterricht!!
 
Nachdem Du schon mit dem FormCreate() ein Problem hattest dünkt mir, dass die Funktionen der Buttons (also alle ButtonClick's) gar nicht mit den Buttons verknüpft sind.

Wenn Du Dein Form hast und im Objektinspektor den Button anwählst und dort die Ereignisse anzeigen lässt, verweisen die Buttons dann auch auf die entsprechenden Funktionen?

eMGee 9. Jan 2006 16:08

Re: Spiel für Informatik Unterricht!!
 
nein bei den ereignissen ist nichts eingetragen... aber woran liegt das?? ich habe doch unten mit button1.click usw alles definiert.. was muss ich denn bei den erignissen eintragen damit es funzt?

tomsel 9. Jan 2006 16:26

Re: Spiel für Informatik Unterricht!!
 
Drei mal darfst du raten. Ich wette, du kommst selbst drauf.

Thorben86 9. Jan 2006 16:45

Re: Spiel für Informatik Unterricht!!
 
Mal so ne frage: Wenn ich doppelklick auf bnen Button mach , dann legt der doch in der regel automatisch die deklaration an, oder? :)

hast du die button-Proceduren direkt geschrieben ohne über butten zu klicken?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr.
Seite 2 von 4     12 34      

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