![]() |
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 |
AW: Numbers! ist fertig, was kann noch ergänzt werden?
Hi,
ich denke das ist es was du suchst.
Code:
True oder False übergeben und entsprechend variable setzten für Zahlen oder Buchstaben.
Switch1.IsChecked
|
AW: Numbers! ist fertig, was kann noch ergänzt werden?
Du müsstest allerdings dann den Namen deiner App überdenken... :roll:
|
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?) |
AW: Numbers! ist fertig, was kann noch ergänzt werden?
Delphi-Quellcode:
? :roll:
not Switch1.IsChecked
|
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. |
AW: Numbers! ist fertig, was kann noch ergänzt werden?
jupp das stimmt, bringt mich aber vor das nächste Problem :wall:
Delphi-Quellcode:
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)
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; 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:) |
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:
Ist Dir schon aufgefallen, dass Du vieles mehrfach tust? Wie wäre es denn mit dieser Logik?
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;
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; |
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 |
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 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz