Autor Beitrag
Tobiklein
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 30.04.06 16:28 
Hallo!
Ich habe eine Aufgabe bekommen die folgendermaßen lautet:

"Das Programm stellt dem Spieler biographische Daten von Komponisten vor. Weis der Spieler keine Antwort, wird ein weiterer Fakt hinzugefügt, bis der Komponist erraten ist. Eine Punktbewertung soll das ganze auflockern."


Dazu hab ich ein paar fragen:
Soll ich das ganze Programm mit IF-THEN Schleifen schreiben oder gibt es da noch einfachere bzw. bessere Möglichkeiten?

Ich hätte gern das wenn man den richtigen Komponisten erraten hat das ein Bild von dem richtigen Komponisten erscheint! Wie geht das???

Danke schon mal im vorraus!!
Würde mich auch über Tips anderer Art freuen, mit denen das Programm einen schöneren Look bekommt!!!

MFG Tobi
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 334

Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
BeitragVerfasst: So 30.04.06 16:44 
um if-then-else (nein, es ist keine schleife :D ) wirst du nicht herum kommen....
höchstens mit "case of" kannst du arbeiten aber ob das sinnvoll ist mag ich nich zu beurteilen, ich denke eher nicht....


Bilder anzeigen ist recht einfach, leg einfach alle Bilder in einen ordner ab und lad das Bild was du grade brauchst einfach zu Laufzeit in ein Timage
(loadfromfile), die Pfade für die Bilder musst du natürlich irgendwo speichern...siehe weiter unten...

weise schon wie du die Daten speichern willst?
ich würde ja dafür ne ini Datei vorschlagen.... ne Datenbank für son bissel wäre mit Kanonen auf Spatzen schießen^^

Beispiel für die ini:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
[komponist1]
geb=1877
ges=1900
geschlecht=w
stil=klassik
bild_pfad=c:\komp1.bmp;
....

[komponist2]
geb=1455
ges=1600
geschlecht=m
stil=heavy metal
bild_pfad=c:\komp2.bmp;
....
//und weitere infos


und dann läds du per Zufall irgendein Komponisten, lädst dazu alle daten in einen Record der so aufgebaut ist wie der abschnitt in der ini Datei.
Damit fütterst du nach un nach den Nutzer...

_________________
GEIZ IST GEIL! - Ihr Sozialamt
DelphiAnfänger
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 112

Win XP, Firefox 2.0, IE6
Delphi 5 Prof., Delphi 2005 PE
BeitragVerfasst: So 30.04.06 16:59 
falls dir das mit der ini datei zu schwer ist gibt es noch die (weniger elegante) Lösung soviele komponisten du hast soviel memos legst du dir an (mit Visible auf false) und machst ein sichtbares memo. Danach sucht du dir per zufall ein memo aus das nach und nach immer eine zeile aus dem unsichtbaren memo läd.
zu den bildern gibt es auch die möglichkeit sie in die *.exe datei zu integrieren:
  1. du erstellst eine RC datei die folgendermaßen aussieht:
    ausblenden Quelltext
    1:
    2:
    3:
    BILD1 RCDATA "Bild1.jpg"
    BILD2 RCDATA "Bild2.jpg"
    ...

  2. kopier die Datei "brcc32.exe" aus deinem Delphi/Bin verzeichnis in das verzeichnis in dem deine rc datei und die bilder sind
  3. führe im cmd folgenden Befehl aus (in dem Verzeichnis in dem die bilder und die rc datei liegt): BRCC32 BILDER.RC
  4. jetzt müsstest du eine BILDER.res Datei haben
  5. jetzt schreibst du in deinem Projekt(Unit1)
    ausblenden Delphi-Quelltext
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    var
      Form1: TForm1;

    implementation

    {$R *.DFM}
    {$R BILDER.RES}

  6. die Bilder kannst du folgendermaßen aufrufen:
    ausblenden Delphi-Quelltext
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    procedure TForm1.Bild1laden;
    var Bild: TJPEGImage;
      resstream: TResourceStream;
    begin
      Bild := TJPEGImage.Create;
      resstream := tresourceStream.Create(hInstance, 'BILD1', RT_RCDATA);
      Bild.LoadFromStream(resstream);
      Bildbezeichner.Picture.Assign(bild);
      //statt Bildbezeichner schreibst du den namen den du der TImage komponente gegeben hast (Objektinspektor)
      bild.free;
      resstream.free;
    end;

  7. in deinem Projekt wenn das Bild angezeigt werden soll einfach die procedur Bild1laden aufrufen


hier nochmal ein Beispiel für eine unit die beim klicken auf Button1 Bild1 anzeigt und beim klick auf Button2 Bild2 :
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Bild1: TImage;
    Bild2: TImage;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Bild1laden;
    procedure Bild2laden;
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
{$R BILDER.RES}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Bild2.Picture:=nil//Bild zwei löschen
 Bild1laden;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Bild1.picture:=nil//Bild eins löschen
 Bild2laden;
end;

procedure TForm1.Bild1laden;
var Bild: TJPEGImage;
  resstream: TResourceStream;
begin
  Bild := TJPEGImage.Create;
  resstream := tresourceStream.Create(hInstance, 'BILD1', RT_RCDATA);
  Bild.LoadFromStream(resstream);
  Bild1.Picture.Assign(bild);
  bild.free;
  resstream.free;
end;

procedure TForm1.Bild2laden;
var Bild: TJPEGImage;
  resstream: TResourceStream;
begin
  Bild := TJPEGImage.Create;
  resstream := tresourceStream.Create(hInstance, 'BILD2', RT_RCDATA);
  Bild.LoadFromStream(resstream);
  Bild2.Picture.Assign(bild);
  bild.free;
  resstream.free;
end;


end.

im anhang ist ein kleines projekt das das anwendet (falls du es noch nicht verstanden hast)
Einloggen, um Attachments anzusehen!
Tobiklein Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 30.04.06 18:03 
Hey Danke schon mal für die Antworten!

Sind echt super Ideen und Vorschläge!!

ABER so richtig weis ich nicht wie ich die ganzen Sachen dann konkretisieren kann! Wisst ihr!

Mit INI Dateien und so kenn ich mich nähmlich überhaupt nicht ein!

Das Beispiel mit den 2 Bildern und Buttons is mir jetz klar! Hilft mir bestimmt auch weiter!

Ich wollte das Programm so machen: 1. Auf start drücken
2. So eine Art Memo-Feld erscheint wo das Bild des Komponisten erscheint und eine Info zu dem Komponisten drin steht
3. Wenn man es weis wer es ist, soll man den Namen in einem Edit-Feld eingeben, wenn nicht auf "weiter" oder so klicken damit man noch eine Info angezeigt bekommt und immer so weiter!!!!

Und das ist mein Problem, ich weis nicht wie ich diese einzelnen Sachen zu einem Programm zusammensetzen soll, das ist mir einfach zu hoch!!

Wäre coll wenn ihr mir helfen könntet!!!

MFG Tobi
DelphiAnfänger
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 112

Win XP, Firefox 2.0, IE6
Delphi 5 Prof., Delphi 2005 PE
BeitragVerfasst: So 30.04.06 18:07 
was hast du denn schon gemacht?