Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

41

06.09.2012, 21:13

Wenn dann so:
spieler.Punkte = new int[125];

Das ist aber komplett gegen das Konzept von Klassen. Klassen sind eigenständige, sich und ihre Daten selbst kontrollierende Einheiten. Du verwendest sie als reine Datenkontainer und fummelst von außen mit irgendeiner Funktion oder Methode auf ihren Daten rum. Das ist schlecht. Die Allokation und Belegung der Basis-Punkte obliegt nicht der Außenwelt, sondern dem Spieler. Wobei, wohl eher einer Highscore-Liste. Ein Spieler an sich hat eigentlich selbst ja keine Punkte, sondern höchtens der/sein Punktezettel. Also wenn ich z.B. an typische Kartenspiele wie Rommé denke, da habe ich als Spieler ja keine Punkte. Ich habe einen Pullover, Hände, Augen. Und es *gibt* einen Spieler, der ist der Schreiber. Der Schreiber besitzt einen Zettel. Auf dem Zettel stehen die Punkte. So würde realistische, Objekt-Orientierte Modellierung funktionieren. Wahlweise ok wäre auch alles nur normale Spieler und eine von denen unabhängige Punkte-Liste.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

42

06.09.2012, 21:37

Für so grundlegende Dinge ist das Openbook vielleicht auch nicht die richtige Wahl. Ich selbst benutze es meist nur als Referenzwerk. Ein vernünftiges Einsteigerbuch wäre vielleicht besser. Dort wird meist Schritt für Schritt aufeinander aufgebaut und die Einzelheiten werden vernünftig erklärt und angesprochen. In dem Openbook stehen zwar viele Informationen und es erklärt die Mechaniken gut, aber an totale Einsteiger ist es wohl eher weniger gerichtet.
Ich selbst habe C# erst gelernt, nachdem ich schon länger mit anderen Sprachen gearbeitet habe. Von daher habe ich wenig Ahnung, welche Bücher in dem Bereich gut sind. Hier gibt es aber sicherlich ein paar Threads im Forum dazu, bzw Jemand anderes kann dir da besser helfen. Ansonsten durchforste mal Amazon und guck dir die Bewertungen an. Danach kannst du ja fragen, ob Jemand die Bücher hier kennt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

43

09.09.2012, 10:55

Wenn dann so:
spieler.Punkte = new int[125];
Sehr gut, so funktioniert es jetzt. Danke!


Werde natürlich trotzdem in nächster Zeit mal ein C# Buch lesen...

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

44

09.09.2012, 19:28

Mh, schon wieder habe ich ein Code-Verständnissproblem.

Mein Code:

do
{
for (int i = 0; i < 15; )
{
i++;
Spieler = new Spieler();
Spieler[i].iPunkte = new int[125];[/i]
Spieler[i].iLeben = new int[125];[/i]

Spieler[i].iPunkte[iAktuellerTag] = 0;[/i]
Spieler[i].iLeben[iAktuellerTag] = 3;[/i]
}
iAltuellerTag++;
} while (iAktuellerTag < 10);
Aber wenn ich mir nun die Werte der beiden Variablen im Überwachen-Fenster anschaue, sehe ich, das nur Spieler[1] seine Werte zugewiesen bekommen hat.
Die Abfrage "Spieler[2].iPunkte[3]" ergiebt den Wert 0.

Weiß jemand woran das liegen könnte, oder habe ich einfach nur schon wieder ein Verständinisproblem?
Danke schon mal.

Edit: Ja, die Klasse ist eigentlich unnötig, besser wäre es mit einem Mehrdimensionalenarray gewesen, aber es sollte doch trotzdem so in der Art möglich sein, oder etwa nicht?


Edit2: iAktuellerTag ist am Anfang 0
Und ja, schon wieder vergessen die "i"´s wegzulassen...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MitgliedXYZ« (09.09.2012, 19:56)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

45

09.09.2012, 21:02

Wirklich, lies ein Buch. Die Fragen bringen im Moment nichts. Ein grober Fehler nach dem nächsten.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

46

09.09.2012, 21:45

Wieso will jeder gleich ein Spiel programmieren wenn er noch solche Schwächen hat?
(Ich interpretiere mal den Namen "Spieler" als Indiz dafür)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

47

10.09.2012, 01:37

Was willst du da überhaupt machen? Sind iPunkte und iLeben wirklich Arrays mit 125 Feldern? Mir kommt das alles sehr Merkwürdig vor. Wirklich. Guck in ein Buch.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

48

10.09.2012, 09:52

Konnte der Abschnitt denn überhaupt kompiliert werden?

Quellcode

1
2
3
4
5
Spieler = new Spieler();Spieler[i].iPunkte = new int[125];[/i]
Spieler[i].iLeben = new int[125];[/i]

Spieler[i].iPunkte[iAktuellerTag] = 0;[/i]
Spieler[i].iLeben[iAktuellerTag] = 3;[/i]



Sehr zu bezweifeln jedenfalls.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

49

10.09.2012, 09:54

Da er ebenfalls "iAltuellerTag" schrieb, zweifel ich an, dass das direkt kopierter Code ist. Ich bin jedenfalls mehr als erschreckt, dass er die "125" aus meinem Beispiel einfach so direkt übernommen hat. Von dem ganzen Rest mal ganz abgesehen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige