-
Notifications
You must be signed in to change notification settings - Fork 0
/
randomSpawn.c
111 lines (94 loc) · 3.17 KB
/
randomSpawn.c
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "randomSpawn.h"
char *getMapHoles(int index) {
//initialise la chaine qui contient l'extension
char ext[] = ".txt";
//intialise la variable qui contient l'index en chaine de caractère
int temp;
if (index >= 10) {
temp = 3;
} else {
temp = 2;
}
char charIndex[temp];
//transforme l'index en chaine de caractères
sprintf(charIndex, "%d", index);
// Allouer de la mémoire pour stocker la chaîne résultante
char *mapHoles = malloc(23 * sizeof(char)); // "map" + chiffre + ".txt" + terminateur nul
if (index < 10) {
strcpy(mapHoles, "assets/mapholes0");
} else {
strcpy(mapHoles, "assets/mapholes");
}
//concatène toutes les chaines
strcat(mapHoles, charIndex);
strcat(mapHoles, ext);
return mapHoles;
}
int *convertirFichierEnTableau(const char *nomFichier, int *taille) {
FILE *fichier = fopen(nomFichier, "r");
if (fichier == NULL) {
fprintf(stderr, "Impossible d'ouvrir le fichier %s\n", nomFichier);
exit(1);
}
// Obtention de la taille du fichier
fseek(fichier, 0, SEEK_END);
long tailleFichier = ftell(fichier);
fseek(fichier, 0, SEEK_SET);
// Allocation de mémoire pour stocker le contenu du fichier
char *contenu = (char *)malloc(tailleFichier * sizeof(char));
if (contenu == NULL) {
fprintf(stderr, "Erreur d'allocation de mémoire\n");
exit(1);
}
// Lecture du contenu du fichier dans une chaîne de caractères
fread(contenu, sizeof(char), tailleFichier, fichier);
fclose(fichier);
// Création d'une copie de la chaîne de caractères lue à partir du fichier
char *copie = (char *)malloc((tailleFichier + 1) * sizeof(char));
if (copie == NULL) {
fprintf(stderr, "Erreur d'allocation de mémoire\n");
exit(1);
}
strncpy(copie, contenu, tailleFichier);
copie[tailleFichier] = '\0';
// Libération de la mémoire allouée pour la variable contenu
free(contenu);
// Comptons le nombre de nombres dans la chaîne de caractères
*taille = 0;
for (int i = 0; i < tailleFichier; i++) {
if (copie[i] >= '0' && copie[i] <= '9') {
(*taille)++;
while (copie[i] >= '0' && copie[i] <= '9') {
i++;
}
}
}
// Allocation de mémoire pour le tableau d'entiers
int *tableau = (int *)malloc(*taille *sizeof(int));
if (tableau == NULL) {
fprintf(stderr, "Erreur d'allocation de mémoire\n");
exit(1);
}
// Lecture des nombres depuis la chaîne de caractères et stockage dans le tableau
int index = 0;
char *nombre = strtok(copie, " ,[]");
while (nombre != NULL) {
tableau[index++] = atoi(nombre);
nombre = strtok(NULL, " ,[]");
}
// Libération de la mémoire allouée pour la copie de la chaîne de caractères
free(copie);
return tableau;
}
void getCoordFromTiles(int tileNumber, int *xTile, int *yTile) {
*xTile = tileNumber%16;
*yTile = tileNumber/16;
}
int randomInt(int max) {
srand(time(NULL));
return rand()%max;
}