Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kleines Spiel in Delphi (https://www.delphipraxis.net/83690-kleines-spiel-delphi.html)

honkundich 5. Jan 2007 23:07


Kleines Spiel in Delphi
 
Hallo und Guten Tag.
Muss bis Sonntag Abend mit meinem kleinen spiel fertig sein und weis einfach nicht mehr weiter.
Ich poste mal den Quellcode ..vielleicht kann mir ja jemand helfen.
Delphi-Quellcode:
 // Einsameln der Images bzw. der Haselnüsse

procedure TForm1.Haselnuss1Click(Sender: TObject);
begin
Haselnuss1.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
end;


procedure TForm1.Haselnuss7Click(Sender: TObject);
begin
haselnuss7.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
end;

procedure TForm1.Haselnuss4Click(Sender: TObject);
begin
haselnuss4.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
end;

procedure TForm1.Haselnuss6Click(Sender: TObject);
begin
haselnuss6.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
end;

procedure TForm1.Haselnuss3Click(Sender: TObject);
begin
haselnuss3.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
end;

procedure TForm1.Haselnuss2Click(Sender: TObject);
begin
haselnuss2.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
end;

procedure TForm1.Haselnuss5Click(Sender: TObject);
begin
haselnuss5.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
end;
so und nun möchte ich das Spiel so programmieren, dass wenn alle 7 Images angeklickt wurden und visible:=false sind , dass dann das Spiel endet und man gewonnen hat.
Mein Problem ist das die proceduren ja alle von einander unabhängig sind und eine IF Struktur nicht funktioniert wenn ich sie jetzt anfügen würde.
Bitte helft mir!!!

Viele Grüße honkundich

EDatabaseError 5. Jan 2007 23:49

Re: Kleines Spiel in Delphi
 
Delphi-Quellcode:
 // Einsameln der Images bzw. der Haselnüsse

...
public
 procedure HaselnussCheck;
...


procedure TForm1.HaselnussCheck;
begin
 if (Haselnuss1.visible = false) and
    (Haselnuss2.visible = false) and
    (Haselnuss3.visible = false) and
    (Haselnuss4.visible = false) and
    (Haselnuss5.visible = false) and
    (Haselnuss6.visible = false) and
    (Haselnuss7.visible = false) then
 begin
  showmessage('gewonnen');
  close;
 end;
end;

procedure TForm1.Haselnuss1Click(Sender: TObject);
begin
Haselnuss1.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
HaselnussCheck;
end;


procedure TForm1.Haselnuss7Click(Sender: TObject);
begin
haselnuss7.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
HaselnussCheck;
end;

procedure TForm1.Haselnuss4Click(Sender: TObject);
begin
haselnuss4.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
HaselnussCheck;
end;

procedure TForm1.Haselnuss6Click(Sender: TObject);
begin
haselnuss6.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
HaselnussCheck;
end;

procedure TForm1.Haselnuss3Click(Sender: TObject);
begin
haselnuss3.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
HaselnussCheck;
end;

procedure TForm1.Haselnuss2Click(Sender: TObject);
begin
haselnuss2.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
HaselnussCheck;
end;

procedure TForm1.Haselnuss5Click(Sender: TObject);
begin
haselnuss5.visible:=false;
Mediaplayer1.filename:='misc1-22.wav';
MediaPlayer1.open;
MediaPlayer1.play;
HaselnussCheck;
end;
so müssts funktionieren und hallo in der dp!

du überprüfst bei jedem click ob alle unsichtbar sind wenn ja kommt eine Meldung.

mfg
tobi

Blackheart 6. Jan 2007 00:03

Re: Kleines Spiel in Delphi
 
Oder noch ne andere Variante
Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure SpieleLied; //hier ohne TForm1
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i:Integer;
implementation

{$R *.dfm}

procedure TForm1.SpieleLied; //Sparst Du Dir ein paar Zeilen unter private einfügen
begin
  Mediaplayer1.filename:='misc1-22.wav';
  MediaPlayer1.open;
  MediaPlayer1.play;
end;

procedure TForm1.Haselnuss1Click(Sender: TObject);
begin
  inc(i); // i um 1 erhöhen
  SpieleLied;
  if i=7 then Form1.Close;
end;


procedure TForm1.Haselnuss7Click(Sender: TObject);
begin
  inc(i);
  SpieleLied;
  if i=7 then Form1.Close;
end;

procedure TForm1.Haselnuss4Click(Sender: TObject);
begin
  inc(i);
  SpieleLied;
  if i=7 then Form1.Close;
end;

procedure TForm1.Haselnuss6Click(Sender: TObject);
begin
  inc(i);
  SpieleLied;
  if i=7 then Form1.Close;
end;

procedure TForm1.Haselnuss3Click(Sender: TObject);
begin
  inc(i);
  SpieleLied;
  if i=7 then Form1.Close;
end;

procedure TForm1.Haselnuss2Click(Sender: TObject);
begin
  inc(i);
  SpieleLied;
  if i=7 then Form1.Close;
end;

procedure TForm1.Haselnuss5Click(Sender: TObject);
begin
  inc(i);
  SpieleLied;
  if i=7 then Form1.Close;
end;

end.

EDatabaseError 6. Jan 2007 00:10

Re: Kleines Spiel in Delphi
 
Zitat:

Zitat von Blackheart
Oder noch ne andere Variante
Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure Spiel(Sender: TObject); //hier ohne TForm1
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i:Integer;
implementation

{$R *.dfm}

procedure TForm1.Spiel(Sender: TObject); //Sparst Du Dir ein paar Zeilen unter private einfügen
begin
  inc(i);

  Mediaplayer1.filename:='misc1-22.wav';
  MediaPlayer1.open;
  MediaPlayer1.play;

  (sender as timage).Visible := false;

  if i=7 then Form1.Close;
end;

procedure TForm1.Haselnuss1Click(Sender: TObject);
begin
  Spiel(sender);
end;


procedure TForm1.Haselnuss7Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss4Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss6Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss3Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss2Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss5Click(Sender: TObject);
begin
  Spiel(sender);
end;

end.


du vergisst das hide ;-)
Delphi-Quellcode:
(sender as timage).Visible := false;

--> edit so kann man noch mehr sparen ;-)

Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure Spiel(Sender: TObject); //hier ohne TForm1
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i:Integer;
implementation

{$R *.dfm}

procedure TForm1.Spiel(Sender: TObject); //Sparst Du Dir ein paar Zeilen unter private einfügen
begin
  inc(i);

  Mediaplayer1.filename:='misc1-22.wav';
  MediaPlayer1.open;
  MediaPlayer1.play;

  (sender as timage).Visible := false;

  if i=7 then Form1.Close;
end;

procedure TForm1.Haselnuss1Click(Sender: TObject);
begin
  Spiel(sender);
end;


procedure TForm1.Haselnuss7Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss4Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss6Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss3Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss2Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss5Click(Sender: TObject);
begin
  Spiel(sender);
end;

end.

Blackheart 6. Jan 2007 00:16

Re: Kleines Spiel in Delphi
 
Stimmt sorry. :wink:

Sunlight7 6. Jan 2007 00:27

Re: Kleines Spiel in Delphi
 
Zitat:

Zitat von EDatabaseError
Delphi-Quellcode:
procedure TForm1.Haselnuss1Click(Sender: TObject);
begin
  Spiel(sender);
end;


procedure TForm1.Haselnuss7Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss4Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss6Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss3Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss2Click(Sender: TObject);
begin
  Spiel(sender);
end;

procedure TForm1.Haselnuss5Click(Sender: TObject);
begin
  Spiel(sender);
end;

IMHO nur Zeilenverschwendung, verknüpf' gleich alles mit der procedure Spiel kannst Dir dann das alles sparen.

honkundich 6. Jan 2007 00:29

Re: Kleines Spiel in Delphi
 
WooooWWW Danke Danke!!! hätte niemals damit gerechnet so schnell eine Lösung für mein Problem zu erhalten, bzw. eine Antwort zu bekommen. :dancer: :hello:
werde dann gleich morgen mal versuchen mein Programm zu ändern und hoffe das ich es zum Laufen bekommen so das es funktioniert.

Bis morgen dann, ich melde mich wieder

honkundich 6. Jan 2007 00:56

Re: Kleines Spiel in Delphi
 
Hab es nun doch gleich ausprobiert und alles hat geklappt, hab aber die erste, längere Variante genommen damit ich nicht so viel ändern musste und weil ich sonst durcheinander gekommen wäre, die Hauptsache ist ja das es funktioniert.
Habe nun noch eine Frage zu dem Befehl showmessage.
Dabei steht bei mir immer als Überschrift in dem Fenster was ich dann öffnet Project.... irgendwas, kann man davon auch den Text ändern oder könnte mir jemand helfen wie man eine Gewinn oder Verlorenmeldung in einem Label ausgeben kann?!?

Des Weiteren hatte ich noch die Idee dass alle eingesammelten Images gezählt werden bzw aufaddiert werden. wie könnte ich eine solche amsprechende,grafische Ausgabe erstellen??

Nun wirklich bis morgen!!! Gute Nacht :-) :mrgreen: :mrgreen:

Sunlight7 6. Jan 2007 01:02

Re: Kleines Spiel in Delphi
 
Da hilft Hier im Forum suchenApplication.MessageBox weiter :wink:

Delphi-Quellcode:
Application.MessageBox('Dein Text', 'Die Überschrift', MB_OK or MB_ICONINFORMATION);
Edit: :shock: Alle vergessen... :shock:
Herzlich Willkommen in der DP !!! :dp:

EDatabaseError 6. Jan 2007 11:03

Re: Kleines Spiel in Delphi
 
Zitat:

Zitat von Sunlight7
Da hilft Hier im Forum suchenApplication.MessageBox weiter :wink:

Delphi-Quellcode:
Application.MessageBox('Dein Text', 'Die Überschrift', MB_OK or MB_ICONINFORMATION);
Edit: :shock: Alle vergessen... :shock:
Herzlich Willkommen in der DP !!! :dp:

ne hab ich nich vergessen schau dir mal meinen ersten beitrag hier an ;-)

honkundich 6. Jan 2007 12:30

Re: Kleines Spiel in Delphi
 
Delphi-Quellcode:
 begin
if (haselnuss1.visible=false)and
   (haselnuss2.visible=false)and
   (haselnuss3.visible=false)and
   (haselnuss4.visible=false)and
   (haselnuss5.visible=false)and
   (haselnuss6.visible=false)and
   (haselnuss7.visible=false)then
begin
timer1.enabled:=false;
timer2.enabled:=false;
progressbar1.visible:=false;
Counter_sec:=0;

//Soundtrack für das Spiel beenden
Mediaplayer2.filename:='Propellerheads - Spybreak! (Short One).mp3';
Mediaplayer2.close;
Button1.caption:='Neues Spiel starten';

// Gewinnmeldung inklusive Gewinnersoundtrack
Mediaplayer3.filename:='Queen - We Are The Champions.mp3';
MediaPlayer3.open;
MediaPlayer3.play;
end;
end;
So sieht jetzt das Ende aus und es klappt auch alles, schon mal großen Dank für eure Hilfe!!!!
Ich würde gerne noch ne Gewinnmeldung oder halt eben eine Meldung das man verloren hat über ein Label oder ähnliches ausgeben.

Und was ich noch fragen wollte, kann man einen Button vom Aussehen und farblich etwas auffrischen, die grauen Buttons gefallen mir nicht so ganz.

Viele Grüße

honkundich :wiejetzt: :wink:

EDatabaseError 6. Jan 2007 12:36

Re: Kleines Spiel in Delphi
 
Zitat:

Zitat von honkundich
Delphi-Quellcode:
 begin
if (haselnuss1.visible=false)and
   (haselnuss2.visible=false)and
   (haselnuss3.visible=false)and
   (haselnuss4.visible=false)and
   (haselnuss5.visible=false)and
   (haselnuss6.visible=false)and
   (haselnuss7.visible=false)then
begin
timer1.enabled:=false;
timer2.enabled:=false;
progressbar1.visible:=false;
Counter_sec:=0;

//Soundtrack für das Spiel beenden
Mediaplayer2.filename:='Propellerheads - Spybreak! (Short One).mp3';
Mediaplayer2.close;
Button1.caption:='Neues Spiel starten';

// Gewinnmeldung inklusive Gewinnersoundtrack
Mediaplayer3.filename:='Queen - We Are The Champions.mp3';
MediaPlayer3.open;
MediaPlayer3.play;
end;
end;
So sieht jetzt das Ende aus und es klappt auch alles, schon mal großen Dank für eure Hilfe!!!!
Ich würde gerne noch ne Gewinnmeldung oder halt eben eine Meldung das man verloren hat über ein Label oder ähnliches ausgeben.

Und was ich noch fragen wollte, kann man einen Button vom Aussehen und farblich etwas auffrischen, die grauen Buttons gefallen mir nicht so ganz.

Viele Grüße

honkundich :wiejetzt: :wink:

du kannst panels nehmen. die kann man farblich ändern. Delphi-Referenz durchsuchenTPanel

honkundich 6. Jan 2007 14:48

Re: Kleines Spiel in Delphi
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if button1.caption = 'Spiel abbrechen' then begin
timer1.enabled:=false;
timer2.enabled:=false;

button1.caption:='Neues Spiel beginnen';
Startbildschirm.visible:=true;
haselnuss1.visible:=false;
haselnuss2.visible:=false;
haselnuss3.visible:=false;
haselnuss4.visible:=false;
haselnuss5.visible:=false;
haselnuss6.visible:=false;
haselnuss7.visible:=false;
haselnuss8.visible:=false;
haselnuss9.visible:=false;
haselnuss10.visible:=false;
haselnuss11.visible:=false;
haselnuss12.visible:=false;
scrat.visible:=false;
progressbar1.visible:=false;
// Soundtrack ausschalten
Mediaplayer2.filename:='Propellerheads - Spybreak! (Short One).mp3';
MediaPlayer2.close;
end
else
if button1.caption = 'Neues Spiel starten' then begin
timer1.enabled:=true;
timer2.enabled:=true;
button1.caption:='Spiel abbrechen';
Startbildschirm.visible:=false;
haselnuss1.visible:=true;
haselnuss2.visible:=true;
haselnuss3.visible:=true;
haselnuss4.visible:=true;
haselnuss5.visible:=true;
haselnuss6.visible:=true;
haselnuss7.visible:=true;
haselnuss8.visible:=true;
haselnuss9.visible:=true;
haselnuss10.visible:=true;
haselnuss11.visible:=true;
haselnuss12.visible:=true;
scrat.visible:=true;
usw.......... Ich möchte nun durch 2 weitere Buttons..einer LEICHT der andere SCHWER die Schwierigkeit vom Benutzer auswählen lassen, und zwar so das ich einfach nur den interval vom Timer ändere.

Kann mir da jemand helfen???

Und wie kann ich eine Hintergrundgrafik einfügen bwz es verhinden das sie alle anderen Images überdeckt?!?

Und danke für eure Hilfe bisher..echt super..mein Programm ist fast fertig :-)

[edit=Admin]Delphi-Tag korrigiert. Mfg, Daniel[/edit]

Sunlight7 6. Jan 2007 16:21

Re: Kleines Spiel in Delphi
 
Das Image, was Du hinten haben möchtest klickst Du mit der rechten Maustaste an und wählst "Nach hinten schicken".
Du solltest dann auch Hier im Forum suchenDoubleBuffered des Form auf True setzen, damits net flimmert.

Delphi-Quellcode:
procedure TForm1.SchwerLeichtClick(Sender: TObject);
begin
  If Sender=Leicht1 then
    Timer1.Interval:=500 else
      Timer1.Interval:=250;
end;
Zitat:

Zitat von EDatabaseError
ne hab ich nich vergessen schau dir mal meinen ersten beitrag hier an

Sorry, bei so viel Quelltexten in dem Thread hab ich das gar net gesehen :mrgreen:

honkundich 6. Jan 2007 19:46

Re: Kleines Spiel in Delphi
 
fehlt da nicht irgendwo was? wenn ich das so einbaue kommt z.B undefinierter Bezeichner leicht1 usw.
Verstehe das nicht wirklich. :wiejetzt:

Brainstalker 6. Jan 2007 20:05

Re: Kleines Spiel in Delphi
 
Der Sender ist das Objekt das die Message sendet. In diesem Fall müsstest du 'Leicht1' durch den Namen deines Buttons für den Schwierigkeitsgrad Leich ändern. Außerdem musst du diese Procedure bei beiden Knöpfen beim OnClick eintragen.

Sunlight7 6. Jan 2007 20:18

Re: Kleines Spiel in Delphi
 
Du kannst auch beide Buttons einzeln verwenden.

Delphi-Quellcode:
procedure TForm1.Leicht1Click(Sender: TObject);
begin
  Timer1.Interval:=500;
end;

procedure TForm1.Schwer1Click(Sender: TObject);
begin
  Timer1.Interval:=250;
end;
Dazu zwei Buttons auf die Form setzen und mit Namen Licht1 und Schwer1 benennen, danach das OnClick setzen und den Quelltext rein setzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13: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