Mein Weg zum ersten Snake

arayni

Grünschnabel
Hallo Programmierer,
ich bin leider erneut auf ein Problem gestoßen.
Ich habe ein Problem meine Snake zu intialisieren :(.
C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define YLENGTH 20
#define XLENGTH 20

#define SNAKE_MAX 20

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung,int length,int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],char snake_char);
void feld_print(char feld[YLENGTH][XLENGTH]);
void snake_reset(int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],int *px);


int main()
{
    char feld[YLENGTH][XLENGTH];
    int length;
    int snake_y[SNAKE_MAX];
    int snake_x[SNAKE_MAX];
    snake_reset(snake_y[SNAKE_MAX],snake_x[SNAKE_MAX],&length);
    feld_int(feld, ' ',length,snake_y[SNAKE_MAX],snake_x[SNAKE_MAX],'x');
    feld_print(feld);
    return 0;
}


void feld_int(char feld[YLENGTH][XLENGTH], char fuellung,int length,int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],char snake_char)
{
    int x, y, s;

    for(y = 0; y < YLENGTH; y++)
    {
        for(x = 0; x < XLENGTH; x++)
        {
            feld[y][x] = fuellung;
        }
    }
    for(s = 0; s < length; s++){

        feld[snake_y[s]][snake_x[s]]=snake_char;
    }

}

void feld_print(char feld[YLENGTH][XLENGTH])
{
    int x, y;
    for(y = 0; y < YLENGTH; y++)
    {
        for(x = 0; x < XLENGTH; x++)
        {
            printf("%c", feld[y][x]);
        }
        printf("\n");
    }
}

void snake_reset(int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],int *px){
    srand(time(NULL));

    snake_x[0]=rand() % XLENGTH-1;
    snake_y[0]=rand() % YLENGTH-1;

    *px=1;
}
 
Mein Programm crashed.. ich finde keinen fehler bzw kein compiler error..
...und was für ein Problem?
Habs jetzt so verändert aber es crashed beim intialisieren von der snake in feld_int()

C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define YLENGTH 20
#define XLENGTH 20

#define SNAKE_MAX 20

void feld_int(char feld[YLENGTH][XLENGTH], char fuellung,int length,int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],char snake_char);
void feld_print(char feld[YLENGTH][XLENGTH]);



int main()
{
    srand(time(NULL));
    char feld[YLENGTH][XLENGTH];

    int snake_y[SNAKE_MAX];
    int snake_x[SNAKE_MAX];
    snake_x[0]=rand() % XLENGTH-1;
    snake_y[0]=rand() % YLENGTH-1;

    int length=1;


    feld_int(feld, ' ',length,snake_y[SNAKE_MAX],snake_x[SNAKE_MAX],'x');
    feld_print(feld);
    return 0;
}


void feld_int(char feld[YLENGTH][XLENGTH], char fuellung,int length,int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],char snake_char)
{
    int x, y, s;

    for(y = 0; y < YLENGTH; y++)
    {
        for(x = 0; x < XLENGTH; x++)
        {
            feld[y][x] = fuellung;
        }
    }
    for(s = 0; s < length; s++){

        feld[snake_y[s]][snake_x[s]]=snake_char;
    }

}

void feld_print(char feld[YLENGTH][XLENGTH])
{
    int x, y;
    for(y = 0; y < YLENGTH; y++)
    {
        for(x = 0; x < XLENGTH; x++)
        {
            printf("%c", feld[y][x]);
        }
        printf("\n");
    }
}
 
kein compiler error..
Sorry, aber das glaub ich nicht. Für deinen Compiler (der übrigens GCC bzw. Mingw ist,
Codeblocks ist nur ein Schreibprogramm) schauen die Fehlermeldungen zB. so aus:

Code:
prog.cpp: In function 'int main()':
prog.cpp:28:48: error: invalid conversion from 'int' to 'int*' [-fpermissive]
     feld_int(feld, ' ',length,snake_y[SNAKE_MAX],snake_x[SNAKE_MAX],'x');
                                                ^
prog.cpp:10:6: note:   initializing argument 4 of 'void feld_int(char (*)[20], char, int, int*, int*, char)'
 void feld_int(char feld[YLENGTH][XLENGTH], char fuellung,int length,int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],char snake_char);
      ^
prog.cpp:28:67: error: invalid conversion from 'int' to 'int*' [-fpermissive]
     feld_int(feld, ' ',length,snake_y[SNAKE_MAX],snake_x[SNAKE_MAX],'x');
                                                                   ^
prog.cpp:10:6: note:   initializing argument 5 of 'void feld_int(char (*)[20], char, int, int*, int*, char)'
 void feld_int(char feld[YLENGTH][XLENGTH], char fuellung,int length,int snake_y[SNAKE_MAX],int snake_x[SNAKE_MAX],char snake_char);

Wenn das (und die Zugriffe auf ungültige Indizes, wie im anderen Thread beschrieben ist) behoben ist, das nächste Problem:
C++:
snake_x[0]=rand() % XLENGTH-1;
Was ist mit den anderen Werten außer [0] ? Du weist ihnen nichts zu, aber (lesend) verwendet werden sie dann später doch.
 

Neue Beiträge

Zurück