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

jonnesen

Frischling

  • »jonnesen« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Brandenburg, Templin

Beruf: Schüler

  • Private Nachricht senden

1

12.06.2010, 15:15

Anfänger-Frage zu Code-Bespiel aus "C++ für SpieleProgrammierer"

hallo,

also ich habe das buch "C++ für SpieleProgrammierer" zu ostern gekriegt und bin jetzt ungefähr auf seite 130.
jetzt bin ich an einem Punkt angekommen wo ich meine nicht mehr weiter zu kommen.

der Code:

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
// Megrdemensonale arrays

#include <iostream>
using namespace std;

int main()
{
    const int Breite = 3; // Konstanten
    const int Hoehe = 3; //Konstanten

    int Karte [Breite][Hoehe]; //Zwiedemensionales array
    int x, y; //Schleifen zähler
    int Zaehler = 0; //zum füllen der karte

    for (y=0; y<Hoehe; y++) 
    {
        for (x=0; x<Breite; x++)
        {
            Karte[x][y] = Zaehler; <-------------------- Diese Zeile verstehe ich nicht
            Zaehler++;
        }
    }

    for (y=0; y<Hoehe; y++)
    {
        for (x=0; x<Breite; x++)
        {
            cout << Karte [x][y]; <---------------------Und diese Zeile verstehe ich auch nicht
        }
        cout << endl;
    }

    return 0;
}




Die beiden verschachtelten Schleifen verstehe ich im grißen und ganzen doch die beiden markierten Stellen eben nicht!

Ich hoffe ihr könnt mir vieleicht weiter helfen....wahrscheinlich ist die lösung garnicht so schwer aber ich bin am verzweifeln



GEUß Jonas

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fred« (12.06.2010, 15:23) aus folgendem Grund: Bitte Code-Tags verwenden


KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

2

12.06.2010, 15:20

Hiho!

Stell dir das ganze wie eine Art Tabelle vor, also bei einer Höhe von 3 und einer Breite von 3 sähe das ganze so aus

int Karte[3][3];

die "Tabelle", die das quasi darstellt sähe dann so aus:

[table] [tr][td]x[/td] [td]x[/td] [td]x[/td][/tr] [tr][td]x[/td] [td]x[/td] [td]x[/td][/tr] [tr][td]x[/td] [td]x[/td] [td]x[/td][/tr] [table] <<<--- Hier steht [ ... / ... table] ... funzt aber net O_O...

O.o funktioniert nicht, okay, dann halt so:
x x x
x x x
x x x

3 Spalten, 3 Zeilen.

Das oberste X sprichst du so an (merke dir einfach [x][y])

[1][1], das X aus der 2. Spalte, 1. Zeile sprichst du dann so an: [2][1].
Das wars eigentlich ^^
WIP Website: kevinheese.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »KeksX« (12.06.2010, 15:26)


Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

12.06.2010, 15:21

Naja stell die Kaarte doch als eine Karte vor, die eine bestimmte Breite und eine bestimmte Höhe hat.
Das sieht dann also in etwa so aus(hängtn nicht mit deinen Angaben zusammen, sondern einfach nur zur Vorstellung von y Zeilen und x Spalten):

x x x x x x x x x x
x x x x x x x x x x
x x x x x x x x x x
x x x x x x x x x x
x x x x x x x x x x

Und in den Zeilen, die du nicht verstehst wird nacheinander jedes Feld durchgegangen. Zuerst: y=0; x=0; dann y=0; x=1 dann y=0; x=2 und so weiter, bis man am rechten Ende des Feldes angekommen ist und dann springt man in die nächste Zeile(y wird um 1 erhöt) und es wird wieder jedes x-Feld in dieser Zeile durchgegangen.
In deinem Fall wird zuerst ein Wert für jedes Kartenfeld gesetzt, der dann anschließend ausgegeben wird.

jonnesen

Frischling

  • »jonnesen« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Brandenburg, Templin

Beruf: Schüler

  • Private Nachricht senden

4

12.06.2010, 15:53

Danke für die schnellen Antworten

ich habe es auch schon fast verstanden...nur eins noch nicht ganz

wofür brauche ich denn die variable int Zaehler wenn siwoieso nur mit den werten x und y gerechnet wird???

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

5

12.06.2010, 16:21

Danke für die schnellen Antworten

ich habe es auch schon fast verstanden...nur eins noch nicht ganz

wofür brauche ich denn die variable int Zaehler wenn siwoieso nur mit den werten x und y gerechnet wird???

Der Zähler repräsentiert (in derTabelle) die x-Werte. ist einfach nur der Wert, der eingefügt wird ^^
WIP Website: kevinheese.de

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

6

12.06.2010, 16:49

eigentlich brauchst du die variable zähler nicht. das kannst du auch mit Hoehe*y+x berechnen.
beweis

wie schon im buch steht ist sie nur zum füllen da. du kannst die karte auch mit nullen oder fünfen füllen. spiel ein bisschen mti dem code rum, das hilft dir bestimmt.

@KeksX: wie meinst du das mit dem x wert? Oo
"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?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

7

12.06.2010, 16:54


@KeksX: wie meinst du das mit dem x wert? Oo


Steht doch extra da. Das x hab ich als Platzfüller benutzt, und der Zähler füllt eben diese Werte...
WIP Website: kevinheese.de

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

8

12.06.2010, 17:46

achso du meinst deine x-werte sorry. ich dachte du meintest die in der schleife. bin halt wie nen computer, ich komm mit zweideutigkeiten net klar!
"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?

jonnesen

Frischling

  • »jonnesen« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Brandenburg, Templin

Beruf: Schüler

  • Private Nachricht senden

9

13.06.2010, 11:02

ok ich habs jetzt verstanden :thumbsup:

gut....jetzt werd ich mich mal daran machen ein kleines programm selber zu programmieren


Danke für eure Antworten!
Gruß Jonas

storage

Treue Seele

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

10

18.06.2010, 00:50

@Keks
Ich will dich damit nicht angreifen, aber bei deinem Beispiel hast du was falsch erklärt.

Quellcode

1
2
3
XXX <--- 1. Spalte, 1. Zeile -> Karte [0][0]
XXX <--- 2. Spalte, 2. Zeile -> Karte [1][1]
XXX <--- 3. Spalte, 3. Zeile -> Karte [2][2]


Du sagtest wenn er aus der 2.Spalte und 1.Zeile, den Wert von Zaehler auslesen
möchte müsste er Karte[2][1] ansprechen, meines Wissen nach ist dies aber falsch.

Ich denke gerade einem Anfänger sollte man es richtig erklären und dazu
sagen das ein Array bei dem Index 0 anfängt und dem zufolge müsste er
um die 2.Spalte und 1.Zeile ansprechen zu können diese Indexwerte nehmen
Karte [1][0].

Beispiel an einem 1.Dimensionalen Array:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>

int main()
{
    int aNumbers[5] = {1 , 2, 3, 4, 5 };

    for (int i = 0; i < sizeof(aNumbers) / sizeof(int); i++)
    {
        std::cout << "Durchlauf (i): " << i << std::endl;
        std::cout << "Zahl: " << aNumbers[i] << std::endl;
        std::cout << "---------------------" << std::endl;
    }

    return 0;
}


Wenn du dann genau darauf achtest welchen Wert die Zählervariable i hat siehst du das
beim ersten schleifendurchlauf dieser 0 ist und da i für den Index des Arrays innerhalb
der schleife eingesetzt wird steht dann dort aNumber[0] was dir die 1 zurückliefert also
die erste Zahl in dem Array.

Hier mal die Ausgabe meines Codes:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Durchlauf (i): 0
Zahl: 1
-----------------------------------
Durchlauf (i): 1
Zahl: 2
-----------------------------------
Durchlauf (i): 2
Zahl: 3
-----------------------------------
Durchlauf (i): 3
Zahl: 4
-----------------------------------
Durchlauf (i): 4
Zahl: 5
-----------------------------------

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »storage« (18.06.2010, 01:28)


Werbeanzeige