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;
}