Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Highscore bei Spiel (https://www.delphipraxis.net/180342-highscore-bei-spiel.html)

LlenaA 13. Mai 2014 11:47

Delphi-Version: XE5

Highscore bei Spiel
 
Hallo,

Ich bin gerade dabei das Spiel 'Snake' zu Programmieren. Als Vorlage hatte ich ein Tutorial dieser Seite.

Nun hab ich ein paar Fragen ob eine Erweiterung, so wie ich mir das Vorstelle, möglich ist.
Folgendes hätte ich vor:

-Der Highscore ist in einer anderen Unit, die mit der Hauptunit über die Unit Liste unter Implementation verknüpft ist.
-Der Highscore ist durch das MainMenü und nach Spielende zu erreichen bzw. öffnet sich.
-Der Highscore ist speicherbar, so dass man, wenn man das Spiel wieder mal öffnet den gleichen Highscore wieder hat.
-Highscore sollt den Namen und die Erreichten Punkte anzeigen
-Den Namen gibt man über ein Editorfeld in der Hauptunit ein.
-Punkte werden über ein Label in der Hauptunit sichtbar.

Wie löse ich das am besten mit dem Speichern? Ist die Lösung mit SaveDialog und speichern in einer *.txt Datei Sinnvoll?
Für die Sortierung beim Highscore ist da BubbleSort die einfachste Möglichkeit? Und wie lasse ich das ganze am besten in dem extra Fenster anzeigen?

Wär Super wenn ihr mir helfen könntet, da ich noch ein ziemlicher Anfänger in Sachen Programmieren bin, es aber für die Arbeit lernen muss.

Lg Lena

Sir Rufo 13. Mai 2014 12:01

AW: Highscore bei Spiel
 
Herzlich Willkommen in der DP!

Ist da Hier im Forum suchenHighscore nichts passendes dabei?

LlenaA 13. Mai 2014 12:14

AW: Highscore bei Spiel
 
Leider ist nur zum Teil etwas nützliches dabei. Auf einige meiner Fragen finde ich keine Antwort.:(

DeddyH 13. Mai 2014 12:22

AW: Highscore bei Spiel
 
Es wäre günstiger, je Thread nur eine Frage zu stellen, dann kann man auch zielgerichteter suchen. Welche Deiner Fragen sind denn noch offen?

Mavarik 13. Mai 2014 13:03

AW: Highscore bei Spiel
 
Soll der Highscore "nur" auf Deinem PC gespeichert werden oder von allen Nutzern?

Mavarik

PS.: kleine Anregung

LlenaA 13. Mai 2014 13:55

AW: Highscore bei Spiel
 
Der Highscore soll nur auf meinem PC gespeichert sein.

Offene Fragen:
Wie ich den Inhalt des Editorfeldes übergebe, denn bei mir geht das irgendwie nie.

DeddyH 13. Mai 2014 14:05

AW: Highscore bei Spiel
 
Was heißt "das geht nicht"? Angenommen, Du hast einen Record der Art
Delphi-Quellcode:
type
  THighscoreRec = record
    Name: Shortstring;
    Points: Cardinal;
  end;
dann sollte sich der doch auch befüllen lassen.
Delphi-Quellcode:
var HSRec: THighscoreRec;
begin
  HSRec.Name := EditPlayer.Text;
  HSRec.Points := Punkte;
end;
Es mus ja auch nicht unbedingt ein Record an, aber da die beiden Felder zusammengehören, bietet sich ein solcher an, wenn man nicht gleich eine Klasse schreiben will.

LlenaA 13. Mai 2014 14:15

AW: Highscore bei Spiel
 
Ich hätte das jetzt so gemacht, aber so bekomm ich die Fehlermeldung: Not enough actual parameters:

In der Unit mit dem Editorfeld:
Delphi-Quellcode:
procedure TForm1.NameÜbertragen(Sender: TObject);
begin
  SpielerName:= edit1.Text;
end;
In der Highscore Unit:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
 with ListView1.Items.Add do begin
   Caption := Form1.NameÜbertragen;
   Data:= Pointer(Versuche);
   SubItems.Add(IntToStr(Integer(Data)));
 end;
end;
Bei Form1.NameÜbertragen erscheint der Fehler.

DeddyH 13. Mai 2014 14:18

AW: Highscore bei Spiel
 
Caption ist ein String und NameÜbertragen eine Prozedur(-Methode), das passt ja auch nicht zusammen. Oder sollte das eigentlich eine Funktion werden?
Delphi-Quellcode:
function TForm1.NameÜbertragen: string;
begin
  Result := edit1.Text;
end;

LlenaA 13. Mai 2014 14:22

AW: Highscore bei Spiel
 
Super funktioniert! Danke! :-D

haentschman 14. Mai 2014 05:19

AW: Highscore bei Spiel
 
Moin...
:gruebel: Bin ich im Mittelaler stehen geblieben? Seit wann funktionieren Umlaute in Prozedurnamen. Ich verzichte lieber darauf um nicht mehr Probleme zu machen als ich schon habe... :zwinker:

DeddyH 14. Mai 2014 06:43

AW: Highscore bei Spiel
 
Ich glaub, seit Delphi 2009, allerdings vermeide ich solche Bezeichner auch lieber.

himitsu 14. Mai 2014 08:53

AW: Highscore bei Spiel
 
Jupp, seit Unicode (2009) werden Bezeichner als UTF-8 gespeichert und es sind immernoch die grundsätzlich vorwiegend nur die alten ASCII-Zeichen verboten (im kodierten UTF-8), womit sich der Zeichenumfang aber dennoch nach oben erweiterte.

Hey, endlich gibt es mehr Zeichen, um alle Variablen Bezeichner einbuchstabig zu lassen. :angel:
Aber statt ae finde ich ein richtiges ä dennoch schöner.

haentschman 14. Mai 2014 10:10

AW: Highscore bei Spiel
 
Zitat:

Aber statt ae finde ich ein richtiges ä dennoch schöner.
Wenn man nicht Denglisch schreibt, stellt sich diese Frage nicht...:P

Mavarik 15. Mai 2014 06:44

AW: Highscore bei Spiel
 
Zitat:

Zitat von haentschman (Beitrag 1258815)
Moin...
:gruebel: Bin ich im Mittelaler stehen geblieben? Seit wann funktionieren Umlaute in Prozedurnamen. Ich verzichte lieber darauf um nicht mehr Probleme zu machen als ich schon habe... :zwinker:

[OT]
LOL... Willkommen im Club... Wusste ich auch nicht...

Bin mir noch nicht so ganz sicher, ob ich das gut finden soll...:stupid:
[/OT]

Sherlock 15. Mai 2014 07:01

AW: Highscore bei Spiel
 
Zitat:

Zitat von Mavarik (Beitrag 1258950)
Zitat:

Zitat von haentschman (Beitrag 1258815)
Moin...
:gruebel: Bin ich im Mittelaler stehen geblieben? Seit wann funktionieren Umlaute in Prozedurnamen. Ich verzichte lieber darauf um nicht mehr Probleme zu machen als ich schon habe... :zwinker:

[OT]
LOL... Willkommen im Club... Wusste ich auch nicht...

Bin mir noch nicht so ganz sicher, ob ich das gut finden soll...:stupid:
[/OT]

[OT]Natürlich ist das nicht gut, weil der Code dadurch nicht abwärtskompatibel ist. Keine Ahnung was sich die Hampelmänner dabei gedacht haben. Aber Hauptsache mal ein sinnloses Feature implementiert, das man ganz oben auf die dürftige Liste setzen kann. Oh, hatte noch keinen Kaffee.
[/OT]

Sherlock

DeddyH 15. Mai 2014 07:09

AW: Highscore bei Spiel
 
Delphi-Quellcode:
procedure TFormDings.{$IFDEF UNICODE}DatenÜbertragen{$ELSE}DatenUebertragen{$ENDIF};
Wer's mag :roll:

himitsu 15. Mai 2014 07:44

AW: Highscore bei Spiel
 
Abwärtskompatibel ist sowieso nichts mehr, seit Jahren :wall:

FMX: Da wurde schon so oft was umgebaut und die alten Versionen sind so verbugt, daß dort kaum was läuft.
RTTI: Die ist auch total verbuggt und in älteren Versionen ist das nicht nutzbar. > http://www.delphipraxis.net/180247-r...ml#post1258569


Zitat:

Zitat von Mavarik (Beitrag 1258950)
Zitat:

Zitat von haentschman (Beitrag 1258815)
Moin...
:gruebel: Bin ich im Mittelaler stehen geblieben? Seit wann funktionieren Umlaute in Prozedurnamen. Ich verzichte lieber darauf um nicht mehr Probleme zu machen als ich schon habe... :zwinker:

[OT]
LOL... Willkommen im Club... Wusste ich auch nicht...

Bin mir noch nicht so ganz sicher, ob ich das gut finden soll...:stupid:
[/OT]

Nja, die Umlaute machen, nach meiner Erfahrung, eigentlich keine Probleme. (in Versionen der letzten 5 Jahre)
Was aber Probleme macht, sind die Generics, denn die Zeichen < und > sind oftmals in (Typ)Namen verboten.

So kann man nur schwer generische Klassen von VCL-Komponenten oder in deren Property verwenden.
(außer man fängt an den generishen Typ durch eine weitere Vererbungsebene zu verstecken)

Sowas nennt sich Gleichberechtigung: Amis können ihre Komponenten in der eigenen Sprache benennen, auch wir können das (bedingt), aber was war mit den Russen und Chinesen?

mleyen 17. Mai 2014 02:23

AW: Highscore bei Spiel
 
Zitat:

Zitat von DeddyH (Beitrag 1258953)
Delphi-Quellcode:
procedure TFormDings.{$IFDEF UNICODE}DatenÜbertragen{$ELSE}DatenUebertragen{$ENDIF};
Wer's mag :roll:

Lange nicht mehr so gelacht xD :thumb:
Fehlt nur noch das das beim unit einbinden überall steht.
Geht das jetzt auch? xD


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