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

1

03.01.2007, 19:36

was zum teufel ist das?

hi,

ich verstehe irgendwie die welt nicht mehr. ich versuche grade mal dame für konsole zu programmieren. hab mir also eine globale variable für die nachrichtenschleife gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
bool won = false;
char* board[7][7];

int main()
{
Init();

while(!won)
{
        DisplayBoard();
}
}


ich hab die variable bisher in dem gesamten programm nicht einmal irgendwo verändert aber nach dem verlassen der Init() bzw. nach dem return 0 bekommt won den wert true O_o

als ob das nicht genug wäre rufe ich in der Init() folgendes auf:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
// Die Figuren von Spieler 2 werden auf dem Brett eingetragen

    for(int y = 5; y <= 7; y++)
    {
        for(int x = 0; x <= 7; x++)
        {
            if((x + y) % 2)
                board[x][y] = "2";
        }
    }


ich habe das ganze mit dem debugger überprüft, in dem moment, wo in dem array korrekterweise board[1][7] auf "2" gesetzt wird wird auch board[0][7] auf "2" gesetzt und das gilt für die ganze reihe. keine ahnung woran das liegt...

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

2

03.01.2007, 19:46

C-/C++-Quelltext

1
2
3
char* board[7][7]; 
//..

for(int x = 0; x <= 7; x++) 

Ueberleg mal wie gross dein Array ist.
Das Damespielfeld hat eine Groesse von 8, daher muss deine Deklaration auch board[8][8] heissen.

Ausserdem verwendest du ein mehrdimensionales Array von char*. Du speicherst also Zeiger auf Strings. Ich bin mir nicht sicher, aber vielleicht brauchst du ja nur einen Buchstaben. In dem Fall reicht char board[8][8];
[/cpp]
"Have you tried turning it off and on again?"

3

04.01.2007, 11:57

achja...mich verwirrt das immer mit dem anfang bei 0 und dann wieder bei 1. irgendwie bekommt mir das programmieren mit mehreren sprachen gleichzeitig nicht so...

und mit den chars hast du eigentlich auch recht :>

4

04.01.2007, 13:48

Ich weiss nicht ob du das brauchst oder nicht- aber um das nochmal ein wenig deutlicher zu machen mit dem Index hier ein Beispiel:

index: 0 1 2 3 4 5 6
Laenge:1 2 3 4 5 6 7

Also nehmen wir mal an, dass du einen Array mit 7 Elementen haben willst. Dann musst du bei der Laenge 7 angeben. Wenn du dann allerdings das letzte Element des Arrays haben willst, dann musst du 6 nehmen weil bei Arrays und meistens allen anderen Listen oder Datenketten das zaehlen bei 0 beginnt- das erste Element ist also 0. Ich hoffe diese Erklaerung konnte dir das ein wenig deutlicher machen!!

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

04.01.2007, 15:19

@Skip, einmal gibst du die Länge an - was soll bitte eine Länge von 0 bedeuten? Und einmal das Feld auf das du zugreifst. Die meisten Sprachen fangen dort bei 0 an (Java, C, Cpp) nur wenige bei 1.

6

04.01.2007, 23:12

ja aber genau das is mir irgendwie entfallen bzw. ich habe gedacht man gibt den letzten index an.

somit is übrigens auch die bool variable kaputt gemacht worden denn die hat er mir dann einfach auf true gesetzt obwohl ich nix mit ihr angestellt hab ;)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

7

04.01.2007, 23:14

ohne jetzt mir das oben genauer angeschaut zu haben, würd ich sagen das die einfach von deinem String irgendwie überschrieben wurde, da die Längen ja nicht gestimmt haben.

8

05.01.2007, 14:23

Ist ein Damefeld nicht 8x8 Felder groß?
Sprachen: C/C++, C#, Assembler (16-Bit), QuickBASIC

9

05.01.2007, 14:25

ja ist es, problem ist jetzt aber gelöst :>

Werbeanzeige