void GameScreen::createGame(int type){ genTerrain(type); m_width = m_height = 0; //Makes sure we are getting the first unit for (int i = 0; i < NBR_TEAMS; i++){ m_teams[i]->setCurrentUnit(0); } m_curTeam = 0; //Sets the overall width and height of the terrain for (int i = 0; i < m_land->size(); i++){ if (m_land->at(i).x > m_width){ m_width = m_land->at(i).x; } if (m_land->at(i).y > m_height){ m_height = m_land->at(i).y; } } BuildQuadTree(); for (int i = 0; i < NBR_TEAMS; i++){ for (int j = 0; j < NBR_UNITS; j++){ placeUnit(m_teams[i]->getUnit(j)); } } }
int main(int argc, char *argv[]) { boutons = malloc(7 * sizeof(SDL_Rect));//allocation /**Déclaration des options de jeu*/ Option opt; opt.nbJoueur = 1; opt.sprites = malloc(opt.nbJoueur * sizeof(Sprite));//allocation opt.sprites[0] = &araignee; opt.nbCaseX = 20; opt.nbCaseY = 15; opt.nbCaseLibre = (opt.nbCaseX*opt.nbCaseY)/3; opt.nbRessource = 3;//3 /**Déclaration des options d'affichage*/ OptionDAffichage optAffichage; optAffichage.origineMapX = 1; optAffichage.origineMapY = 1; optAffichage.contourAffichee = 1; optAffichage.automatique = 0; /**Déclaration des varables*/ Jeu jeu; SDL_Surface *ecran = NULL; //screen //attributs de l'écran int SCREEN_WIDTH; int SCREEN_HEIGHT; const int SCREEN_BPP = 32; char choix = choixNull; srand(time(NULL)); // initialisation de rand SDL_Init(SDL_INIT_VIDEO); /**Pré-load des images*/ araignee.image = IMG_Load(araignee.pathName); squelette.image = IMG_Load(squelette.pathName); farmer.image = IMG_Load(farmer.pathName); sprHerbe.image = IMG_Load(sprHerbe.pathName); sprTerre.image = IMG_Load(sprTerre.pathName); /**Load des sprites*/ caseHerbe.sprite = &sprHerbe; caseTerre.sprite = &sprTerre; do{ optAffichage.automatique = 0; /**Initialisation de la fenetre*/ SCREEN_WIDTH = (opt.nbCaseX + 2*optAffichage.origineMapX)*SPRITE_WIDTH; SCREEN_HEIGHT = (opt.nbCaseY + 2*optAffichage.origineMapY)*SPRITE_HEIGHT; SDL_WM_SetCaption("La cueillette", NULL); //titre de la fenetre SDL_WM_SetIcon(IMG_Load("Image/sac.png"), NULL); //icone de la fenetre ecran = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_HWSURFACE); //afficher fenetre SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 119, 181, 254)); //couleur de fond de la fenetre /**Initialisation du jeu*/ new_Game(&jeu, &opt);// allocation + initialisation genTerrain(&jeu,opt.nbCaseLibre); //creation du terrain genObjet(&jeu); genDepartArrivee(&jeu); char* anciennesPositions = malloc(2*jeu.nbPlayer * sizeof(char)); int i=0; Arrete** *arretes = malloc(jeu.nbPlayer*sizeof(Arrete**)); int* compteurArrete=malloc(jeu.nbPlayer*sizeof(int));; for (i=0 ; i < jeu.nbPlayer ; i++){ arretes[i] = malloc((jeu.nbRessource + 1) * sizeof(Arrete*)); } int cases[2] = {jeu.nbCaseX, jeu.nbCaseY}; for (i=0; i<jeu.nbPlayer; i++){ anciennesPositions[0+i*2] = jeu.players[i]->position[0]; anciennesPositions[1+i*2] = jeu.players[i]->position[1]; compteurArrete[i]=0; arretes[i] = algorithmeChemin(jeu.players[i], jeu.ressources, jeu.nbRessource, jeu.map, cases); } /**Affichage du jeu de départ*/ affichageInitial(&optAffichage, ecran, &jeu); int nbArrete = jeu.nbRessource + 1; do{ if(i+1<jeu.nbPlayer){i++;}else{i=0;} choix = gestionEvent(&optAffichage, ecran, &jeu, jeu.players[i], &opt); if (choix == play || choix == choixNull){ jeu.nbTourPassee++; if (compteurArrete[i] < nbArrete){ char result = jouerTour(&jeu, jeu.players[i], arretes[i][compteurArrete[i]]); if (result == 'F'){compteurArrete[i]++;} } ///Affichage/// char anciennePosition[2] = {anciennesPositions[0+i*2], anciennesPositions[1+i*2]}; afficherDpl(&optAffichage, ecran, &jeu, jeu.players[i],i, anciennePosition, 250); anciennesPositions[0+i*2] = jeu.players[i]->position[0]; anciennesPositions[1+i*2] = jeu.players[i]->position[1]; if (jeu.players[i]->position[0] == jeu.players[i]->arrivee[0] && jeu.players[i]->position[1] == jeu.players[i]->arrivee[1] && jeu.nbRessource == 0){ //ttes les ressources sont ramassees choix = victoire; } } }while(choix!=quitter && choix!=rejouer && choix!=victoire); //fin de partie if (choix==victoire){ SDL_Color gold = {255,215,0}; char affichageVictory[13] = "Victoire!"; if (jeu.nbPlayer>1){sprintf(affichageVictory, "Victoire J%d!", i+1);} //ajout du char joueur apply_text(ecran->w/2-96, 128, affichageVictory, ecran, "Fonts/OCRAStd.otf", 32, gold); choix = gestionMenu(&optAffichage, ecran, &jeu, &opt); } //fin de partie: voulez vous rejouer free_Jeu(&jeu); //désallocation }while (choix!=quitter); //rejouer SDL_Quit(); //Arrêt de la SDL // On libère les surface SDL_FreeSurface(araignee.image); SDL_FreeSurface(squelette.image); SDL_FreeSurface(farmer.image); SDL_FreeSurface(sprHerbe.image); SDL_FreeSurface(sprTerre.image); //liberation memoire free(opt.sprites); opt.sprites = NULL; free(boutons); boutons = NULL; return 0; }