ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
672
672
EMPFEHLEN
-
29.09.11 14:05 #1
- Registriert seit
- May 2007
- Beiträge
- 18
Hi ich versuche eine Highscore Klasse zu schreiben die meinen Highscore vom spiel hält da die scores von den levels an sich verwaltet werden und beim übergang zum nächsten level auf 0 gesetzt werden.
Ich versuch verzweifelt seit 2 tagen eine klasse zu schreiben die meinen highscore hält, und ich ihn zurückgeben kann und punkte hinzufügen.
das eigendliche problem ist das punkte in verschiedenen klassen berechnet und addiert werden. und ich in jeder dieser klassen ein neues Object bzw. Instanz davon erstellen muss.
Highscore highscore = new Highscore();
machen muss und somit jede klasse ihren eigenen highscore hat und nicht einen einzigen für alle.
Alle Klassen sollten auf den highscore zugreifen können damit es nur ein einziges objekt davon gibt und nich 2-3.
wie lässt sich das bewerkstelligen? ich hoffe ihr konntet verstehen was ich meine.
meine momentane Highscore Klasse:
Code :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
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Mlp_Fim_2D { public class Highscore { int highScore; public int HighScore { get { return highScore; } set { highScore = value; } } public void AddScoreToHighscore(int ScoreToAdd) { HighScore = ScoreToAdd + HighScore; } public int GetHighScore() { return HighScore; } public Highscore() { } } }Geändert von BlackPsycho (29.09.11 um 14:43 Uhr)
-
Hi
C# gehört nich hier zu C/C++ rein, sondern zu .NET.
Ich habs mal verschoben.
Zum Thema:
Du brauchst genau eine Highscore-Variable, die von überall erreichbar ist:
zB. ein static Highscore in Highscore selber.
Schau dir mal das Singleton-Pattern an.
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
29.09.11 15:02 #3
- Registriert seit
- May 2007
- Beiträge
- 18
-
Poste mal Code. Die Lösung als Singelton funktioniert sicher.
-
29.09.11 15:22 #5
- Registriert seit
- May 2007
- Beiträge
- 18
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Mlp_Fim_2D { public static class Highscore { static int _highScore; public static int HighScoreValue { get { return _highScore; } set { _highScore = value; } } } }
Ich bekomm immer "Mlp_Fim_2D.Highscore.HighScoreValue ist eine Eigenschaft, wird aber wie ein Typ verwendet.
wenn ich das mache: Highscore.HighScoreValue = 30;
-
Hallo,
Du musst _highScore initialisieren. Der Getter muss irgendwie so ausschauen:
Code csharp:1 2 3 4 5 6 7
get { if (_highScore == null) _highScore = new Highscore(); return _highScore; }
-
29.09.11 15:34 #7
- Registriert seit
- May 2007
- Beiträge
- 18
es kann keine instanz einer statischen klasse erstellt werden oO.
ich flipp bald aus -.-
trotzdem danke für den versuch
sollte jetz funktionieren danke euch alle
Geändert von BlackPsycho (29.09.11 um 15:49 Uhr)
-
Dann mach die Klasse nicht statisch. Du hast schließlich auch nicht-statische Membervariablen. Wenn du bei google "C# Singleton" eingibst ist zumindest der erste Link eine funktionierende Version.
-
Die Klasse ist nicht statisch. Du erzeugst lediglich eine statische Instanz dieser Klasse.
Code csharp:1 2 3 4 5 6 7 8 9
public class Highscore { public static readonly Highscore Instance = new Highscore(); public int HighScoreValue { get; set; } } // Verwendung Highscore.Instance.HighScoreValue = 100;
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
An der Stelle würde mich mal interessieren was für das Singleton Pattern spricht.
Es ist keine Vererbung / Interfaces im Spiel oder ähnliches von daher wäre es doch wesentlich einfacher die Klasse static zu machen und gut ist.In order to understand recursion, one must first understand recursion.
-
-
Ganz einfach: Weil es unnötig ist und den Code unleserlicher macht.
Ich gehe davon aus das ein dritter den Code wesentlich schneller verstehen würde wenn er eine static Klasse vor sich hat als wenn er sich durch eine Implementierung des Singleton Pattern kämpfen muss.
Desweiteren ist der gemeine Programmierer eher schreibfaul. Nicht nur das die Implementation des Singleton Patterns schon wesentlich mehr Code verlangt, auch die Verwendung (getInstance etc.) erfordert mehr Schreibaufwand.
Das sehe ich anders. Ich würde Patterns nur Implementieren wenn es wirklich Notwendig ist.Der Einsatz von Patterns ist prinzipiell nie verkehrt
Beispielsweise könnte ich in einer "Mini-Anwendung" selbstverständlich das MVC Pattern verwenden aber solange dafür keine Notwendigkeit besteht spar ich mir doch den völlig unnötigen Overhead.
Bzgl. des Singleton Pattern gibts hier noch einen mMn interessanten Blog Eintrag:
http://sites.google.com/site/steveye...sidered-stupidIn order to understand recursion, one must first understand recursion.
-
Ich hab nicht behauptet, dass das Singleton die einzige Lösung ist;
nur eine von mehreren.
Persönlich bin ich auch eher für den Patterneinsatz, auch bei Minianwendungen.
Zum verlinkten Artikel: Irgendwie kann ich den nicht ganz ernst nehmen.
Das einzig Schlechte laut dem Autor ist, dass ein Pattern bekannter ist als andere.
Deswegen macht er sich über alles und jeden lustig, zieht die gesamte OOP in den Dreck, dazu ein paar Seitenhiebe auf Bjarne Stroustroup und seine "komische" Sprache...
Alles mit Argumenten, die beim Nachdenken darüber eigentlich keine Argumente sind.
Und nächstes Mal: "Staying Up Too Late Considered Harmful.". Alles ist stupid und harmful.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Und ich habe nicht behauptet das du das behauptet hättest.Ich hab nicht behauptet, dass das Singleton die einzige Lösung ist

Die Ausgangsfrage war warum speziell in diesem Fall ein Singleton Pattern Sinnvoll sein soll.
Zugegeben der Artikel ist schon ziemlich sarkastisch geschrieben aber der Bekanntheitsgrad ist nicht das worum es geht.Irgendwie kann ich den nicht ganz ernst nehmen.Das einzig Schlechte laut dem Autor ist, dass ein Pattern bekannter ist als andere.
Es geht vielmehr darum das (speziell das Singleton Pattern) geradezu inflationär verwendet wird.
Und das nicht selten in Fällen (wie diesem hier) wo es völlig unnötig ist.
Desweiteren kritisiert er eben auch :
Unnötigen Schreibaufwand, Memory Leaks, Äquivalenz zu globalen Variablen ( die nichts mit OOP zu tun haben ) etc.In order to understand recursion, one must first understand recursion.
Ähnliche Themen
-
Polymorphe Liste erstellen, die Objekte der gleichen Basis-Klasse hält?
Von Pain-maker im Forum C/C++Antworten: 5Letzter Beitrag: 03.06.10, 12:26 -
Highscore erstellen in TXT-Datei (Java, Netbeans IDE)
Von Zadek im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 15Letzter Beitrag: 24.06.09, 11:03 -
Highscore-liste erstellen
Von moe_joe im Forum JavaAntworten: 57Letzter Beitrag: 18.10.07, 14:13 -
textdatei mit highscore erstellen
Von NiceOne im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 14.07.04, 14:58 -
Highscore?
Von ICEWeasel im Forum C/C++Antworten: 6Letzter Beitrag: 25.10.03, 00:39





Zitieren



Login





