| Autor |
Beitrag |
Yannick23
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 06.04.12 14:44
Hallo,
ich versuche schon seit Tagen eine Eingabe für eine Rangliste zu erstellen (WPF-Anwendung), die per Button die Eingabe (Name, Punkte) in einer .txt-Datei speichert.
Nur leider schaffe ich es nicht nach Punkten zu sortieren und den Spielern dann auch noch den Rang zuzuweisen.
Dazu kommt noch, dass ich Punkte öfters vergeben muss und ich dadurch die Punkte in der txt.-Datei ändern muss, die Spieler neu sortieren muss und wieder neue Ränge zuweisen.
Außerdem es soll bei gleicher Punkteanzahl zweier Spieler zwei 1. Plätze/Ränge geben.
So soll es in der txt.-Datei stehen:
Rang Name Punkte
1. Spieler1 12
2. Spieler2 9
3. Spieler3 1
.
.
.
usw.
Anwendungsoberflache:
Name: [textbox] Punkte: [textbox]
[Button] (Speichern)
Ich erwarte keine Tipps oder blöde Kommentare wie "Goolge hilft dir...". Ich brauche Code. Ich habe alles versucht und komm einfach nicht weiter.
BITTE HILFT MIR DANKE! 
|
|
daeve
      
Beiträge: 116
Erhaltene Danke: 3
Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
|
Verfasst: Fr 06.04.12 16:20
ja was stellst du dir vor ? das wir das für dich coden ? da bist du aber auf dem Holzweg...
was hast du bis jetzt an Code ? wo kommst du nicht weiter ?
|
|
Yannick23 
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 07.04.12 09:58
Ich bitte auch deßhalb um Hilfe, weil nicht wirklich gut programmieren kann...
Aber das große Problem ist:
Es gibt eine vorhandene Rangliste (Text-Datei) -
Rang Name Punkte
1 Spieler1 3
2 Spieler2 1
3 ....
.
.
.
- Wie kann z.B. Spieler2 Punkte dazuzählen, die Rangliste wieder neu sortieren und den Spielern neue Ränge zuweisen falls nötig.?
|
|
Cäptin Pommes
      
Beiträge: 142
Erhaltene Danke: 2
|
Verfasst: Sa 07.04.12 10:22
du hast doch bestimmt irgentwelche Spieler objekte oder? die sollten dann ne property für die Punkte haben ... dann kannste sie einfach ändern wie du willst und dann musst du nur noch die Punkte aller Spieler sortieren und speichern ...
wenn du nach nem sortier algorhytmus suchst, kannst du z.B mal nach Bubblesort gucken, der is nich sonderlich schnell aber sehr einfach für den anfang und für deine zwecke vollkommen ausreichend wie ich das sehe 
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 07.04.12 11:49
Hallo, Yannick23!
Ich wiederhole nochmal die Frage von oben: Was hast Du schon versucht und wo kommst Du nicht weiter?
Wir helfen Dir gerne, Dein Problem zu lösen. Aber wir werden es nicht für Dich lösen! Ich bitte Dich, etwas mehr Eigeninitiative zu zeigen, sonst kommen wir hier nicht weiter.
Grüße,
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Sa 07.04.12 13:05
Ich stell mal gerade eine Reihenfolge auf:
- Einlesen der Textdatei
- Auswertung der Textdatei (Sprich Zuweisung der Daten in der Textdatei zu Objekten im Programm)
- Den passenden Spieler aus den Objekten raussuchen (also ein Vergleich mit dem Namen in der GUI)
- Diesem dann die Punkte hinzuaddieren
- Berechnung der Platzierung(en) = Vergleich der Punkte jedes Spielers und dadurch Aufbau einer neuen Rangliste
- Die Spieler-Objekte wieder als Textdatei abspeichern
So, damit hätten wir schon mal einen groben Fahrplan für die nötigen Schritte. Kannst du allen Schritten folgen (wobei ich auch keine Garantie auf Vollständigkeit gebe)? Und dann: an welchem Schritt hängst du?
Grüße
Webo
_________________ Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
|
|
Yannick23 
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 07.04.12 15:34
Webo hat folgendes geschrieben : | Ich stell mal gerade eine Reihenfolge auf:
- Einlesen der Textdatei
- Auswertung der Textdatei (Sprich Zuweisung der Daten in der Textdatei zu Objekten im Programm)
- Den passenden Spieler aus den Objekten raussuchen (also ein Vergleich mit dem Namen in der GUI)
- Diesem dann die Punkte hinzuaddieren
- Berechnung der Platzierung(en) = Vergleich der Punkte jedes Spielers und dadurch Aufbau einer neuen Rangliste
- Die Spieler-Objekte wieder als Textdatei abspeichern
So, damit hätten wir schon mal einen groben Fahrplan für die nötigen Schritte. Kannst du allen Schritten folgen (wobei ich auch keine Garantie auf Vollständigkeit gebe)? Und dann: an welchem Schritt hängst du?
Grüße
Webo |
Hallo,
ja genau so passt die Reihenfolge. Ich hänge schon am Anfang. Soll ich 2 Arrays machen für Name und Punkte? Und in diese dann Namen und Punkte aus der Textdatei packen?
Dann das Array Name durchgehen und den Spieler raussuchen. Falls Spieler vorhanden - im Array Punkte die Punkte des Spielers raussuchen und Punkte dazuzählen.
(Falls nicht - Wie speichere ich den neuen Spieler + Punkte ab?)
Dann wieder Punkte vergleichen.
Abspeichern.
Wie gesagt ich bin erst eingetaucht in die Welt des Programmierns und tu mir noch etwas schwer. Aber so stell ich mir mal den Vorgang vor, wie ich zum Ziel kommen könnte...
|
|
Cäptin Pommes
      
Beiträge: 142
Erhaltene Danke: 2
|
Verfasst: Sa 07.04.12 15:57
kannst du mal deine Klasse für die Spieler posten?
|
|
Yannick23 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mi 11.04.12 11:31
Hallo,
was ich hier versuche ist in der Datei den Namen finden, im nächsten string stehen die Punkte. Diese ändern und das ganze wieder ausgeben.
In der Datei wird nichts verändert...
C#-Quelltext 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:
| string name = textBox1.Text; string punkte = textBox2.Text;
StreamReader datei = new StreamReader(@"C:/Users/Yannick/Desktop/rangliste.txt"); string rangliste = datei.ReadToEnd(); datei.Close();
if (rangliste.IndexOf(name) > 0) { StreamWriter YStream = new StreamWriter(@"C:/Users/Yannick/Desktop/rangliste.txt");
String s = rangliste; char[] seps = { '*' }; String[] strings = s.Split(seps);
for (int i = 0; i < strings.Length; i++) { if (strings[i] == name) { String st = strings[i + 1]; int x = Convert.ToInt32(st); x = x + Convert.ToInt32(punkte); strings[i + 1] = Convert.ToString(x); } YStream.Write(rangliste + strings[i] + "*"); } YStream.Close(); } |
Moderiert von Th69: Beitragsformatierung überarbeitet.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 11.04.12 14:47
Hm, irgendetwas sollte sich da eigentlich schon verändern. Hast du mit dem Debugger schon einmal nachgeschaut, ob Write auch tatsächlich ausgeführt wird? Bei so nichtsaussagenden Namen wie textBox1 könnte ich mir auch nicht merken, in welcher der Name steht  .
_________________ >λ=
|
|
Yannick23 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mi 11.04.12 15:19
Die Text-Datei schaut genau so aus wie davor...hm
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 11.04.12 16:05
Das war keine Antwort auf meine Frage  .
_________________ >λ=
|
|
Yannick23 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mi 11.04.12 19:17
Wie verwende ich den Debugger?
Was tun, wenn das Write nicht ausgeführt wird?
|
|