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

Viktor

Alter Hase

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

11

09.06.2007, 22:43

Stimmt. Aber in diesem Fall bin ich von Spieleprogrammierung ausgegangen.

12

31.07.2014, 13:24

Hallo,

es tut mir leid, dass ich diesen alten Threat noch einmal ausgraben muss, aber leider bin ich selber grad an der Stelle im Buch und habe meine Probleme mit dem Listing 5.5.

Ich verstehe, was die for-Schleifen machen, verstehe aber nicht den Zusammenhang zwischen

Quellcode

1
2
const int Breite = 3;
const int Hoehe = 3;


dem Array:

Quellcode

1
int Karte[Breite][Hoehe]


und dem Schleifeninhalt:

Quellcode

1
Karte[x][y]


Wie kann ich mir das vorstellen? Wird mit der Erzeugung der Variablen "Breite" und "Hoehe" und der übergab dieser Werte ans Arry "Karte" ein 3x3 großes "Feld" erzeugt, in dem jede Position den Wert "3" hat, der dann in der Schleife mit dem Wert von Zaehler überschrieben wird oder habe ich da einen Denkfehler?

Visualisierung vor dem 1. Schleifendurchlauf (wie ich mir das denke)

3 3 3
3 3 3
3 3 3

Visualisierung nach dem 1. Schleifendurchlauf (wie ich mir das denke)

0 1 2
3 3 3
3 3 3

Visualisierung nach dem 2. Schleifendurchlauf (wie ich mir das denke)

0 1 2
4 5 6
3 3 3

usw.

Ist das alles totaler Quatsch oder hab ich das richtig verstanden?
Und wie kommen die Werte aus Karte[x][y] in Karte[Breite][Hoehe]?

Über Hilfe würde ich mich sehr freuen, da das Listing bereits einen Nachdenkknoten in meinem Kopf verursacht :)

13

31.07.2014, 13:29

  • Vor dem Schleifendurchlauf:

    Müll.

    Im Debug Modus von Visual Studio:
    -858993460 -858993460 -858993460
    -858993460 -858993460 -858993460
    -858993460 -858993460 -858993460

  • Nach dem Schleifendurchlauf:

    0 1 2
    3 4 5
    6 7 8

EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

31.07.2014, 13:32

Anders ausgedrückt: Vor der Schleife ist der Inhalt der einzelnen Felder nicht definiert. Da kann irgendwas drinstehen und wird im Normalfall chaotischen Müll enthalten.
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]

15

31.07.2014, 13:48

Ok, also bedeutet das, dass die Konstanten "Breite" und "Hoehe" nur zur Initialisierung des Arrays und dann als Vergleichsbedinung bei den Schleifen (x<Breite und y<Hoehe) benötigt werden und sonst keine weitere Bedeutung haben?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

31.07.2014, 13:51

Sie geben nur die Dimensionen an.
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]

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

17

31.07.2014, 14:20

Wie ist das ueberhaupt mit 4-D-Arrays? Was bringen die einem? 2Dimensionale fuer 2D Spiele und 3Dimensionale fuer 3D Spiele, und 1D Arrays zum Daten speichern. Aber 4? Fuer die Zeit oder wie soll ich das verstehen?

Schon was von der Raum-Zeit gehört?
Das ist wohl das am einfachsten zu verstehende Beispiel(aber mit Sicherheit nicht das Einzige).
Damit könnte man 3D-Koordinaten über die Zeit(vierte Dimension) abspeichern.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

18

31.07.2014, 17:03

Und ein Array allein definiert ja noch nicht was du damit vor hast. Es gibt auch da Unterschiede.
Es gibt wirkliche mehrdimensionale Arrays (nicht in jeder Sprache). Diese werden meist so angesprochen:

Quellcode

1
var wert = arrayName[4, 5];


Die Indizes werden durch Komma voneinander getrennt. Dabei hat das Array eine feste "höhe" und "breite" wenn wir es mal so nennen wollen. Anders gesagt hat das Array eine feste Größe.
Andererseits gibt es noch:

Quellcode

1
var wert = arrayName[4][5];

Hier handelt es sich normal um ein Array vom Typ Array. Du kannst Arrays ja auch einfach verschachteln. Das ist das was hier passiert. Das Array hat also an jeder Speicherstelle ein weiteres Array. Der Unterschied ist, in der unteren Version hat das äußere Array eine feste Größe und die inneren Arrays können alle unterschiedliche Größen haben. Zum Beispiel:

Quellcode

1
2
3
4
5
6
7
8
9
var array1 = new array(3);

var array2 = new array(2);
var array3 = new array(1);
var array4 = new array(7);

array1[0] = array2;
array1[1] = array3;
array1[2] = array4;


Ich benutze hier pseudo-Sprache. Array1 wäre dein äußeres Array und die anderen 3 sind die inneren wobei sie alle unterschiedliche Größen haben. Es gibt also feine Unterschiede dazwischen. Ich würde bei Fall 2 von mehrdimensionalen Arrays sprechen und bei Fall 1 eher von verschachtelten Arrays.
Wie tief du aber am Ende ein Array verschachtelst oder wie viele Dimensionen du dem Array gibst, das ist deine Sache. Arrays werden ja nicht immer nur für Karten in Spielen benutzt sondern können für alles mögliche gebraucht werden.
The only limit is yourself
„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.“

19

31.07.2014, 20:49

Hallo,

danke euch allen für eure Hilfe. Mein Knoten hat sich gelöst :) Vielen Dank nochmal.
Dachte schon mit meinen 32 Jahren raff ich das nicht mehr :D

Werbeanzeige