Errore di inzializzazione di array bidimensionale

di il
2 risposte

Errore di inzializzazione di array bidimensionale

So che è un po' lungo come programma da immettere qui, però so già dove si trova il problema.
Il programma fa un campo 8x8 in cui c'è un 1 che si muove semplicemente.
il campo è un array bidimensionale, che contiene un singolo 1 e poi zeri, e qui sta il problema:
non so perché l'inizializzazione dell'array è sbagliato e quindi appaiono numeri enormi invece di 1 e 0.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#ifdef _WIN32
#include <windows.h>
#else
#include <unistd.h>
#endif

void display(int array[8][8]);
void newlocation(int *x, int *y);
int initialLocation();

int main(void){
  int location = 0;
  unsigned int campo[8][8];
  for(int i = 0; i < 8; i++){
    for(int j = 0; j < 8; j++){
      campo[i][j] = 0;
    }
    }
  int x, y;
  int initial = initialLocation();
  x = initial / 10;
  y = initial % 10;
  campo[x][y] = 1;
  while(1){
    newlocation(&x, &y);
    campo[x][y] = 1;
    display(campo[8][8]);
    for(int i = 0; i < 8; i++){
    for(int j = 0; j < 8; j++){
      campo[i][j] = 0;
    }
    }
    sleep(10);
  }
}

void display(int array[8][8]){
  int i, j;
  for(i = 0; i < 8; i++){
    for(j = 0; j < 8; j++){
      printf("[%u]", array[i][j]);
    }
    puts("");
  }
}

void newlocation(int *x, int *y){
  srand(time(NULL));
  int new = 0;
  new = (rand() % 4) + 1;
  switch(new){
    case 1:
    *x += 1;
    break;
    case 2:
    *y += 1;
    break;
    case 3:
    *x -= 1;
    break;
    case 4:
    *y -= 1;
    break;
  }
}

int initialLocation(){
  int location = 0;
  srand(time(NULL));
  location = rand() % 8;
  location = location + (rand() % 8) * 10;
  return location;
}

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte