Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Numbers! ist fertig, was kann noch ergänzt werden? (https://www.delphipraxis.net/182961-numbers-ist-fertig-kann-noch-ergaenzt-werden.html)

Nashy 29. Nov 2014 23:34

Numbers! ist fertig, was kann noch ergänzt werden?
 
Hallo,

habe meine erste kleine App fertig programmiert, und frage mich, was ich nun noch ergänzen kann. Die App ist sehr einfach: Beim Klick auf ''Go'' würfelt der Computer eine Zufallszahl. Diese wird in einem Editfeld für 3 Sekunden ausgegeben. Der Spieler muss sich diese Kombination merken und nachdem die 3 Sekunden vorbei sind in das Eingabe Feld eingeben.
Der Computer prüft die Eingabe. Ist sie Falsch, verliert man ein Leben. Bei 0 Leben ist das Spiel verloren.

Ich habe nun als Features einen Zähler für die Spiele, einen Zähler für die richtigen Antworten, eine Lebenanzeige, und einen Countdown.
Was kann ich noch ergänzen um das Programm zu erweitern? Ich wollte eigentlich gerne Töne einbauen bei Richtig/Falsch, jedoch gibt es bei mir die Funktion PlaySound nicht..

Dann hatte ich mir überlegt, einen TSwitch einzubauen, um zwischen Zahlen und Buchstaben hin und her schalten zu können, jedoch habe ich nirgendwo gefunden, wie ich einen TSwitch programmieren kann.. also bin ich auch hier über Hilfe sehr dankbar.
Habt ihr noch andere (möglichst relativ einfache) Vorschläge, wie ich meine App ergänzen kann?

Vielen Dank im Vorraus!

Nashy

Delphi XE7
FireMonkey

MondoShiva 30. Nov 2014 00:05

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
Hi,

ich denke das ist es was du suchst.

Code:
 Switch1.IsChecked
True oder False übergeben und entsprechend variable setzten für Zahlen oder Buchstaben.

humbuck 30. Nov 2014 09:56

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
Du müsstest allerdings dann den Namen deiner App überdenken... :roll:

Nashy 30. Nov 2014 19:39

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
Danke für die Antworten - Name wird noch überdacht!:)

Was ist denn das Gegenteil von ischecked?
Ich muss dem Programm sagen, wenn Eingabe=Ausgabe und Switch1.ischecked then... und natürlich auch, wenn Eingabe=Ausgabe aber der Switch ist nicht aktiv. (Versteht man was ich meine?)

himitsu 30. Nov 2014 19:52

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
Delphi-Quellcode:
not Switch1.IsChecked
? :roll:

jobo 30. Nov 2014 19:55

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
vermutlich liefert ischecked boolean zurück, also TRUE oder FALSE

not (xy.ischecked)

wäre dann, was Du brauchst.

Nashy 30. Nov 2014 20:27

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
jupp das stimmt, bringt mich aber vor das nächste Problem :wall:

Delphi-Quellcode:
procedure TForm1.ButtonDoneClick(Sender: TObject);
begin
TimerLeben.Enabled := true;
if (Editausgabe.text=EditEingabe.text) and switch1.IsChecked then
begin
  LabelAusgabe.Text := 'Richtig!';
  randomize;
  Zufallszahl:= random(9)+1;
  EditEingabe.Text := ''       ;
  ButtonGo.Enabled:= true;
  ButtonDone.Enabled:= false;
  EditAusgabe.Text := EditAusgabe.Text + inttostr(Zufallszahl);
  EditAusgabe.visible := true;
  TimerCountdown.Enabled := true;
  EditEingabe.ReadOnly:= true;
  ButtonGo.Enabled := false;
  ButtonDone.Enabled:= false;
  Buttondone.Visible:= true;
  Countdown:=3;
  Level:= Level + 1       ;
  Labelrichtig.Visible := true;
  Labelrichtig.Text := 'Du hast ' + IntToStr (Level) + ' richtige Antworten gegeben' ;
  end ;
  if (Editausgabe.Text=EditEingabe.Text) and not switch1.ischecked then
  begin
  LabelAusgabe.Text := 'Richtig!';
 randomize;
Zufallsbuchstabe := Chr (Random (26) + 64 + 1) ;                                  
EditAusgabe.Text := EditAusgabe.Text + Zufallsbuchstabe;
  EditEingabe.Text := ''       ;
  ButtonGo.Enabled:= true;
  ButtonDone.Enabled:= false;
  EditAusgabe.visible := true;
  TimerCountdown.Enabled := true;
  EditEingabe.ReadOnly:= true;
  ButtonGo.Enabled := false;
  ButtonDone.Enabled:= false;
  Buttondone.Visible:= true;
  Countdown:=3;
  Level:= Level + 1       ;
  Labelrichtig.Visible := true;
  Labelrichtig.Text := 'Du hast ' + IntToStr (Level) + ' richtige Antworten gegeben' ;
end ;
if not (Editausgabe.Text=EditEingabe.Text) then

begin
EditAusgabe.ReadOnly := true;
LabelAusgabe.Text := 'Falsch';
ButtonGo.Visible := false;
ButtonWeiter.Visible := true;
ButtonWeiter.Enabled := true;
EditAusgabe.Visible := true;
ButtonWeiter.Text := 'Weiter' ;
ButtonGo.Enabled:= false;
ButtonDone.Enabled:= false;
TimerLeben.Enabled:= true;
Loose := Loose +1;
EditEingabe.Text := '';


end;
end;
Führe ich das Programm jetzt aus, so kommen wenn ich den Switch 'Aktiviert' habe beim Klick auf Go (unten) eine Zahl und ein Buchstabe. Beim weiterspielen wird außerdem jede Eingabe als Falsch angezeigt.. (oben)


Edit:

Hab das Problem, mit dem Buchstaben und der Zahl gelöst indem ich Editausgabe.Text:= '' ; geschrieben habe.

Außerdem ist mir folgendes Aufgefallen: Der Text in LabelAusgabe 'Du hast x richtige Antworten gegeben.' Wird angezeigt und aktualisiert, gleichzeitg kommt Falsch und ein Leben verschwindet! Also wird irgendwie sowohl richtig als auch falsch abgespielt.. // aus Gründen der Übersichtlichkeit habe ich die Procedure von ButtonGo rausgenommen:)

DeddyH 1. Dez 2014 08:17

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
Ich hab mir mal erlaubt, den Code zu formatieren, das erleichtert die Übersichtlichkeit enorm und macht auch die Fehlersuche einfacher:
Delphi-Quellcode:
procedure TForm1.ButtonDoneClick(Sender: TObject);
begin
  TimerLeben.Enabled := true;
  if (Editausgabe.text = EditEingabe.text) and switch1.IsChecked then
    begin
      LabelAusgabe.text := 'Richtig!';
      randomize;
      Zufallszahl := random(9) + 1;
      EditEingabe.text := '';
      ButtonGo.Enabled := true;
      ButtonDone.Enabled := false;
      Editausgabe.text := Editausgabe.text + inttostr(Zufallszahl);
      Editausgabe.visible := true;
      TimerCountdown.Enabled := true;
      EditEingabe.ReadOnly := true;
      ButtonGo.Enabled := false;
      ButtonDone.Enabled := false;
      ButtonDone.visible := true;
      Countdown := 3;
      Level := Level + 1;
      Labelrichtig.visible := true;
      Labelrichtig.text := 'Du hast ' + inttostr(Level) +
        ' richtige Antworten gegeben';
    end;
  if (Editausgabe.text = EditEingabe.text) and not switch1.IsChecked then
    begin
      LabelAusgabe.text := 'Richtig!';
      randomize;
      Zufallsbuchstabe := Chr(random(26) + 64 + 1);
      Editausgabe.text := Editausgabe.text + Zufallsbuchstabe;
      EditEingabe.text := '';
      ButtonGo.Enabled := true;
      ButtonDone.Enabled := false;
      Editausgabe.visible := true;
      TimerCountdown.Enabled := true;
      EditEingabe.ReadOnly := true;
      ButtonGo.Enabled := false;
      ButtonDone.Enabled := false;
      ButtonDone.visible := true;
      Countdown := 3;
      Level := Level + 1;
      Labelrichtig.visible := true;
      Labelrichtig.text := 'Du hast ' + inttostr(Level) +
        ' richtige Antworten gegeben';
    end;
  if not(Editausgabe.text = EditEingabe.text) then
    begin
      Editausgabe.ReadOnly := true;
      LabelAusgabe.text := 'Falsch';
      ButtonGo.visible := false;
      ButtonWeiter.visible := true;
      ButtonWeiter.Enabled := true;
      Editausgabe.visible := true;
      ButtonWeiter.text := 'Weiter';
      ButtonGo.Enabled := false;
      ButtonDone.Enabled := false;
      TimerLeben.Enabled := true;
      Loose := Loose + 1;
      EditEingabe.text := '';
    end;
end;
Ist Dir schon aufgefallen, dass Du vieles mehrfach tust? Wie wäre es denn mit dieser Logik?
Delphi-Quellcode:
if Editausgabe.text = EditEingabe.text then
  begin
    if switch1.IsChecked then
      begin
        //Code für Fall "Zahlen"
      end
    else
      begin
        //Code für Fall "Buchstaben"
      end;
    //gemeinsamer Code
  end
else
  begin
    //Code für falsche Antwort inkl. Beschriftung von Labelrichtig
  end;

Headbucket 1. Dez 2014 08:48

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
Da muss ich DeddyH zustimmen: Wenn du viel ähnlichen Code hast ist das oft ein Indiz dafür, dass man hier etwas verbessern kann.

Eine Erweiterungsmöglichkeit wäre ein steigender Schwierigkeitsgrad, umso länger das Spiel läuft.
Du lässt also intern noch einen Zähler mitlaufen, der z.B. aller 5 Zahlen die Zufallszahl um eine Stelle verlängert. So wird das Spiel immer schwieriger und irgendwann ist es vorbei.

Grüße
Headbucket

AlexII 1. Dez 2014 08:53

AW: Numbers! ist fertig, was kann noch ergänzt werden?
 
In welchem Supermarkt kann man das Spiel kaufen, oder gibt es auch irgendwo zum Download?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 Uhr.
Seite 1 von 2  1 2      

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