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

Leonb

Frischling

  • »Leonb« ist der Autor dieses Themas

Beiträge: 29

Wohnort: Berlin

Beruf: Schüler (leider)

  • Private Nachricht senden

1

19.01.2005, 16:46

2D Arrays

Hallo an alle!
Ich wollte fragen, ob irgentwer interesse hätte, mir mal an Hand eines Beispiels die 2D-Arrays zu erklären!
Ich habe zwar das Buch "C++ für Spieleprogrammierer" aber irgentwie begreife ich das dort nicht ???








Per PN oder einfach in den Thread posten :angel:

2

19.01.2005, 17:13

Ich hab das Buch nicht, daher nur ne vermutung:
Bei dem Buch ist doch ne CD bei, oder?
Sind da nicht die Beispiele zu den einzellnen Kapitteln drauf?
Guck dir die mal an. :)

3

19.01.2005, 17:14

Beispiel eines 2D-Arrays anhand einer Dame-Belegung(um glecih beim Titel zu bleiben ;)):

C-/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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) 
{ 
    int belegung[8][8] = {1, 0, 1, 0, 1, 0, 1, 0,   // Belegungsarray für Damefeld

                          0, 1, 0, 1, 0, 1, 0, 1,   // 0: Nicht belegt

                          1, 0, 1, 0, 1, 0, 1, 0,   // 1: Weiß

                          0, 0, 0, 0, 0, 0, 0, 0,   // 2: Schwarz

                          0, 0, 0, 0, 0, 0, 0, 0,   // 

                          0, 2, 0, 2, 0, 2, 0, 2,   // Das Feld vorbelegen

                          2, 0, 2, 0, 2, 0, 2, 0,   
                          0, 2, 0, 2, 0, 2, 0, 2};  
    
    // Startbelegung ausgeben

    for(int i = 0; i < 8; i++)
    {
        for(int j = 0; j < 8; j++)
        {
            printf("%d ", belegung[i][j]);
        }

        printf("\n");
    }
    printf("\n");

    // Weiß ziehen lassen

    belegung[2][0] = 0; // Belegung:

                        // 1 0 1 0 1 0 1 0

                        // 0 1 0 1 0 1 0 1

                        // 0 0 1 0 1 0 1 0

                        // 0 0 0 0 0 0 0 0

                        // 0 0 0 0 0 0 0 0

                        // 0 2 0 2 0 2 0 2

                        // 2 0 2 0 2 0 2 0

                        // 0 2 0 2 0 2 0 2


    belegung[3][0] = 1; // Belegung:

                        // 1 0 1 0 1 0 1 0

                        // 0 1 0 1 0 1 0 1

                        // 0 0 1 0 1 0 1 0

                        // 1 0 0 0 0 0 0 0

                        // 0 0 0 0 0 0 0 0

                        // 0 2 0 2 0 2 0 2

                        // 2 0 2 0 2 0 2 0

                        // 0 2 0 2 0 2 0 2


    // Ausgeben

    for(int i = 0; i < 8; i++)
    {
        for(int j = 0; j < 8; j++)
        {
            printf("%d ", belegung[i][j]);
        }

        printf("\n");
    }
    printf("\n");
     
    return 0; 
}


Wie man sieht, fängt der Index auch bei 2D-Arrays bei 0 an, wobei {0, 0} das erste Element ist, {0, 1} das zweite usw.

Anonymous

unregistriert

4

19.01.2005, 19:07

Dancke für das Beispiel kaid, aber geht es noch etwas leichter? Dame ist vielleicht etwas zu kompliziert :rolleyes:

@Devil:
Da gibts ein Beispiel (auch auf der CD) aber wenn ichs dort verstanden hätte, würde es diesen Thread ja nicht geben :angel:

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

19.01.2005, 19:37

@kaid: hum entweder ich bin total deppert oder du hast die angaben vertauscht, denn eigentlich müsste der erste Index doch die x Achse beschreiben der 2. die y Achse(nach unten gerichtet) und die 3. die z Achse.....
@thema: kommst du mit normalen arrays zurecht? Wenn ja kannst du dir vorstellen, dass es eigentlich nur mehrere 1D arrays untereinandern sind(wobei der Index der Anzahl der Arrays entspricht), sodass eine Ebene entsteht.

6

19.01.2005, 19:44

@Nox: Nene, das ist schon korrekt. Habs ja auch probiert. 8)
@Leonb: Kannst du Schach? Wenn ja, könnt ich das auf Schach "portieren".

Leonb

Frischling

  • »Leonb« ist der Autor dieses Themas

Beiträge: 29

Wohnort: Berlin

Beruf: Schüler (leider)

  • Private Nachricht senden

7

20.01.2005, 15:25

@kaid:
also die Regel von Schach kann ich (spielen natürlich auch :) )
aber selber Schach programmieren net :crying:

@Nox:
also mit den Arrays hab ich irgentwie insgesammt schwierigkeiten
(also auch mit 1D) aber Schleifen, Variablen, Funktionen und so kann ich eigentlich :huhu:

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

20.01.2005, 16:22

Hmmm gut stell dir ein Haus vor. In diesem wohnt jetzt ne variable. Nun nehmen wir an wir wollen noch mehr Häuser/Var´s vom selben typ. Da es dämlich wäre sie alle verstreut in die gegend zu setzen, legen wir lieber eine Strasse an, wo alle Häuser dran stehen. Und damit wir zu jedem Haus einzeln hinkönnen, nummerieren wir sie von 0 bis n durch.
Dies wäre eine Analogie zu einem 1D Array.
Für ein 2D Array würde man an die schon bestehenden Häuser mit zusätzlichen Stockwerken, die man wiederum durchnummeriert, ausbauen. Um jetzt zu einem bestimmten Haus zu gelangen bräuchte man nur die Nummer des Hauses und eine 2. Nummer die uns sagt in welchen Stock wir müssen.
War das verständlich oder immernoch zu komplex oder gar an der Frage vorbei?

xtRm

Frischling

Beiträge: 6

Beruf: Schüler

  • Private Nachricht senden

9

20.01.2005, 16:55

Leute, ich warn euch vor. Der Typ ist auch im developia-Board unterwegs gewesen. Ich weiß, dass der Typ SEHR SEHR SEHR unselbstständig und faul ist. Wer nicht merkt, dass ein Code nicht geht, weil man statt "character.h" "caracter.h" geschrieben hat ... naja!
Signaturen braucht man erst, wenn man im Forum bekannt ist!

10

20.01.2005, 17:39

Also. xtRm, ich habe ihn extra hierhin geschickt, da er nicht wusste das es dieses Board gibt, und ich hier gehofft hatte das er besserre hilfe bekomme.

Bis jetzt gab es noch keine anzeichen hierdas er faul ist, oder ich habs übersehen. Also, du kannst dich beschweren wenn der wirklich faul ist, aber nicht jetzt.

@Leonb: Streng dich an und sein ein bissich angagiert, so das stRm dich nicht, anmeckern kann und vor allem sei es auch nach her och, denn das muss mans beim Programmieren schon mitbringen. Aber bis jetzt warst de ja noch nicht faul.

Werbeanzeige