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

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

31

06.09.2012, 16:38

oder du nimmst ein normales Array, dessen Index die Nummer des Spielers ist... (oder eine andere Art von Liste)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

32

06.09.2012, 17:19

Aber so mit diesen Klassen gibt es keine bessere Methode?
Da versucht man mit Klassen zu arbeiten und dann bieten die mir bis jetzt nur nachteile :hmm:

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

33

06.09.2012, 17:43

Ähm dafür gibt es doch arrays und schleifen !?

C#-Quelltext

1
2
3
4
5
6
Spieler[] spieler = new Spieler[15];
for( int i=0; i<15; ++i )
{
   spieler[i] = new Spieler();
   spieler[i].Punkte = 0;
}

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

34

06.09.2012, 18:12

Da hab ich wohl was überlesen, ich dachte Arrays wären nicht in eigenen Klassen möglich, sondern nur für Datentypen wie String, Integer, etc.

Danke für deinen Codeschinpsel, ich glaube nun sollte es klappen.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

35

06.09.2012, 18:13

Klassen sind Datentypen ;)

Das auf 0 setzen der Punkte ist aber natürlich noch besser im Konstruktor der Klasse aufgehoben

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

36

06.09.2012, 18:25

Ähm dafür gibt es doch arrays und schleifen !?

C#-Quelltext

1
2
3
4
5
6
Spieler[] spieler = new Spieler[15];
for( int i=0; i<15; ++i )
{
   spieler[i] = new Spieler();
   spieler[i].Punkte = 0;
}
Hab gerade einen kleinen Schönheitsfehler an deinem Codeschnipsel entdeckt, du verschenkst doch somit etwas Arbeitsspeicher, da ich nur 15 Spieler benötige, du aber für 16 reservierst. Man vergisst immer, dass das Zählen bei 0 beginnt...

Kann jetzt aber dank diesem Code meine Codedatei um die Hälfte reduzieren, da ich jetzt nicht alles 100x schreiben muss.

Edit: Wiso eigentlich in der Schleife noch einmal "spieler[i] = new Spieler();", die Spieler wurden doch schon erzeugt, oder?

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

37

06.09.2012, 18:31

Nein wenn ich ein Array [15] deklariere, dann hat das Platz für 15 Elemente...

Das new in der Schleife: Weil durch das "new Spieler[15]" nur ein Array mit 15 Plätzen erstellt wird wo aber 15 mal "null" drinsteht.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

38

06.09.2012, 18:47

Ok, aber jetzt habe ich ein neues Problem:
Punkte ist bei mir wiederum ein Array, bei der ich die Punkte jeweils für den Aktuellen Tag speicher.
Spieler[] spieler = new Spieler[15];
for( int i=0; i<15; ++i )
{
spieler = new Spieler();
spieler[i].Punkte[iAktuellerTag] = 0;
}

[/i]

C#-Quelltext

1
Class Spieler {public int[] iPunkte;}


Fehlermeldung:

NullRefernceExeption: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Was mache ich jetzt falsch?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

39

06.09.2012, 19:38

Ja, fang endlich an ein Buch zu lesen;) Du musst Instanzen erst erzeugen bevor du sie benutzen kannst. Das Array in der Klasse wird nirgendwo erstellt. Lass das i beim Arraynamen weg. Vor allem handelt es sich ja nicht mal um einen Integer sondern um ein Integer Array.
Guck in ein Buch. Lern von Anfang an wie es richtig geht. Die Fragen die du hier stellst klären sich eigentlich von selbst wenn man mit einem vernünftigen Buch lernt.
„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

40

06.09.2012, 21:01

Na gut, werde ich mir mal das komplette OpenBook durchlesen...

So was würde nicht helfen, oder:
spieler.Punkte[] = new Spieler.Punkte();

Werbeanzeige