Exemple #1
0
Game* game_init(){

	Game* game = (Game*)malloc(sizeof(Game));
	game->maps = liste_init();
	game->size = 0;
	game->success = false;
	game->current_map_i = 1;
	char* ligne = (char*)malloc(MAX_TILE_W*sizeof(char));
	FILE* src = fopen("maps.txt","r");
	if(src==NULL){
		fprintf(stderr, "Erreur lors du chargement du fichier maps\n");
		return NULL;
	}

	while(fgets(ligne,MAX_TILE_W,src)!= NULL){
		if(ligne[strlen(ligne)-1] == '\n'){
			ligne[strlen(ligne)-1] = '\0';
		}
		char* game_map_src = (char*)malloc(sizeof(ligne));
		strcpy(game_map_src,ligne);
		liste_add_last(game->maps,(void*)game_map_src);
		game->size += 1;
	}
	game->jeu = jeu_init((char*)(game->maps->tete->object));
	return game;
}
Exemple #2
0
int setResult(Generator* gen, int number, char* result){
	/*TODO ameliorer le malloc*/
	int res=0;
	Elem* elem = liste_get(gen->runningList,number);
	if (elem){
		if(result[0]!='#'){
			printf("Solution pour \033[32m%d : %s\033[0m\n",number, result );
			liste_supprime(gen->runningList,elem);
			char* str = (char*)xmalloc(sizeof(char)*(strlen(result)+100));
			sprintf(str,"%d : %s\n",number,result);
			fputs(str,gen->output);
			fflush(gen->output);
			free(str);
			liste_add_last(gen->results,number,result);	
		}else{
			printf("Pas de solution pour %d\n",number );
		}
		res=1;
	}else{
		printf("Pas de calcul en attente sur %d\n", number);
	}
	return res;
}
Exemple #3
0
/* Fonction permettant d'initialiser la structure meta */
Meta* meta_init(char* path){

	/* on alloue meta une quantite d'espace en memoire */
	Meta* meta = (Meta*)leash_malloc(sizeof(Meta));
        /* on met le chemin approprie */
	char* metaPath = (char*)leash_malloc(sizeof(char)*strlen(path)+strlen("/meta")+strlen(".crypt")+1);
	strcpy(metaPath,path),
	strcat(metaPath,"/meta");

      
	meta->answer=(char*)NULL;
	meta->allowed = liste_init();
        
        /* on regarde si le fichier meta a ete crypte ou non */         
	int crypted=0;
	FILE* metaFile = fopen(metaPath,"r");
	if(metaFile==NULL){
		strcat(metaPath,".crypt");
		metaFile = fopen(metaPath,"r");
		if(metaFile==NULL){
			printf("Erreur ouverture fichier meta\n");
			exit(EXIT_FAILURE);
		}
		crypted=1;
	}
        
        /* on initialise notre ligne et la variable str */
	char line[1024];
	char* str;
	while (fgets(line, sizeof(line), metaFile)) {
                /* on regarde si meta est crypte */
		if(crypted){
			meta_decryptLine(line);
		}
		int i;
		for(i=0;i<strlen(line);i++){
			if(line[i]=='\n'){
				line[i]='\0';
				break;
			}
		}
                /* on reprends une deuxieme ligne qui sera cette fois un char* afin de la stocker dans les differents champs de meta */
		char* line2;
		if(strlen(line)>0){
			switch(line[0]){
                                /* on switch suivant le debut de la ligne */
				case '>':
					line2=trim(&line[1]);
					meta->answer=(char*)leash_malloc(sizeof(char)*(strlen(line2)+1));
					strcpy(meta->answer,line2);
					break;
				case '$':
					line2=trim(&line[1]);
					str=(char*)leash_malloc(sizeof(char)*(strlen(line2)+1));
					strcpy(str,line2);
					liste_add_last(meta->allowed,(void*)str);	
					break;
				case '#':
					break;
				default:
					printf("ERROR : '%s'\n",line);
					break;
			}
		}
	}


        /* On ajoute manuellement les commandes de bases que l'utilisateur pourra tout le temps faire, quelque soit le fichier meta */
	char* strexit = (char*)leash_malloc(sizeof(char) * 5);
	strcpy(strexit,"exit");
	char* strabout = (char*)leash_malloc(sizeof(char) * 6);
	strcpy(strabout,"about");
	/*char* strpwd = (char*)leash_malloc(sizeof(char) * 4);
	strcpy(strpwd,"pwd");
	char* strcd = (char*)leash_malloc(sizeof(char) * 3);
	strcpy(strcd,"cd");*/
	liste_add_last(meta->allowed,(void*)strexit);
	liste_add_last(meta->allowed,(void*)strabout);	
	/*liste_add_last(meta->allowed,(void*)strpwd);
	liste_add_last(meta->allowed,(void*)strcd);*/

	
        /* on close et on supprime meta, pour eviter la fraude et les fuites memoires */
        fclose(metaFile);
	remove(metaPath);
	free(metaPath);
	return meta;
        
	
}
Exemple #4
0
int getNumber(Generator* gen){
	/*printf("Actuel : %d\n",gen->number);*/
	gen->number++;
	liste_add_last(gen->runningList,gen->number,NULL);
	return gen->number;
}