/**************************************************************************/ /* MAIN (.cpp) */ /* */ /* Date : 27 Decembre 2000 */ /* Projet: RPG Auteur: Akhres Nader */ /* */ /* */ /* */ /**************************************************************************/ #include <malloc.h> #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include "Espace.hxx" #include "Vector.hxx" #include "GrafboxSDL.hxx" #include "Anim_dat.hxx" #include "List_dat.hxx" #include "InputKBSDL.hxx" #include "InputMOUSESDL.hxx" #include "TimerSDL.hxx" #include "Tile_Map.hxx" #include "PathGrav.hxx" //chemins #include "PathPoint.hxx" #include "Police.hxx" #include "Node.hxx" #include "DialogueU7.hxx" #include "RezzoBoxSDL.hxx" #include "PointeurMouse.hxx" #include "View.hxx" #include "PlayerCharacter.hxx" #include "songroku.hxx" //les sprites presents #include "mouton.hxx" #include "garde.hxx" #include "inventaire.hxx" #include "objet.hxx" #define ID_CLIENT1 1 #define LARGEUR 640 #define HAUTEUR 480 int main(int , char **) { Timer* my_timer = new TimerSDL() ; //timer ! my_timer->set_rate(60*50); //résolution temporelle 60*50 Hz //initialisation du contexte graphique Grafbox* my_Grafbox = new GrafboxSDL(LARGEUR,HAUTEUR); my_Grafbox->init_graf(); Police my_police("fonte.spr"); //chargement des mosaiques Tile_Map* my_Tile_map =new Tile_Map("map_rpg.tle",my_Grafbox); //chargement de la map du RPG my_Tile_map->ReadMap("map_rgb.map"); espace my_espace(my_Grafbox,my_timer,my_Tile_map); //déclaration de l'espace de //simulation et de son contexte graphique Actif::set_espace(&my_espace); // les actifs sont définis dans un espace donné //on charge les données graphiques en mémoire Liste_anim_data* SPRITE_SONGROKU = new Liste_anim_data("songroku.dat"); Liste_anim_data* SPRITE_GARDE = new Liste_anim_data("songroku.dat"); Liste_anim_data* SPRITE_MOUTON = new Liste_anim_data("mouton.dat"); Liste_anim_data* SPRITE_POINTEUR = new Liste_anim_data("pointeur.dat"); Liste_anim_data* SPRITE_DRAGOUROU = new Liste_anim_data("dragourou.dat"); Liste_anim_data* SPRITE_INVENTAIRE = new Liste_anim_data("inventaire.dat"); Liste_anim_data* SPRITE_EPEE = new Liste_anim_data("objet_epee.dat"); Liste_anim_data* SPRITE_ECU = new Liste_anim_data("objet_ecu.dat"); Liste_anim_data* SPRITE_AXE = new Liste_anim_data("objet_axe.dat"); Liste_anim_data* SPRITE_HAULME = new Liste_anim_data("objet_haulme.dat"); Liste_anim_data* SPRITE_FUTE = new Liste_anim_data("objet_fute.dat"); Liste_anim_data* SPRITE_GROLLES = new Liste_anim_data("objet_grolles.dat"); Liste_anim_data* SPRITE_ARMURE = new Liste_anim_data("objet_armure.dat"); Liste_anim_data* SPRITE_BUTTON_QUIT = new Liste_anim_data("button_quit.dat"); //initialise le mode graphique Actif * MySongroku; View * my_view = new View(ID_CLIENT1,&my_espace,my_espace.grafbox,0,0,0,0,LARGEUR/2,HAUTEUR); InputMOUSESDL* my_inputMouse = new InputMOUSESDL(&MySongroku,my_view); inventaire * mon_inventaire = new inventaire(50,50,1,SPRITE_INVENTAIRE,SPRITE_BUTTON_QUIT); MySongroku = new Songroku(320,200/2,1,SPRITE_SONGROKU,my_inputMouse,mon_inventaire); my_view->set_target(MySongroku); //on les ajoute dans le tableau d'actifs (x y vitesse) my_espace.add(MySongroku); Actif * MyGarde; MyGarde = new Garde(320*2,200*2,1,SPRITE_GARDE,new DialogueU7("mairpawn.dlg"),my_inputMouse,&my_police); my_espace.add(MyGarde); Actif * MyPointeur = new PointeurMouse(SPRITE_POINTEUR,my_inputMouse,my_view); my_espace.add(MyPointeur); PathPoint * my_path = new PathPoint("cercle.pat"); Actif * MonMoutonTournant = new Mouton(10+20+30,100,1,SPRITE_MOUTON,my_input2,my_path); my_espace.add(MonMoutonTournant); my_espace.add(my_view); my_espace.add(mon_inventaire); my_espace.transvase_public_to_private(mon_inventaire,my_view->get_id_client()); my_espace.transvase_public_to_private(mon_inventaire->button_quit_,my_view->get_id_client()); my_espace.transvase_public_to_private(MyPointeur,my_view->get_id_client()); objet * ecu = new objet(50,10,1,SPRITE_ECU,DOS); objet * fute = new objet(50,10,1,SPRITE_FUTE,JAMBES); objet * epee = new objet(50,10,1,SPRITE_EPEE,MAIN_DROITE); objet * axe = new objet(50,10,1,SPRITE_AXE,MAIN_GAUCHE); objet * grolles = new objet(50,10,1,SPRITE_GROLLES,PIEDS); objet * haulme = new objet(50,10,1,SPRITE_HAULME,TETE); objet * armure = new objet(50,10,1,SPRITE_ARMURE,TRONC); my_espace.add(ecu); my_espace.add(fute); my_espace.add(epee); my_espace.add(axe); my_espace.add(grolles); my_espace.add(haulme); my_espace.add(armure); my_espace.transvase_public_to_private(ecu,my_view->get_id_client()); my_espace.transvase_public_to_private(fute,my_view->get_id_client()); my_espace.transvase_public_to_private(epee,my_view->get_id_client()); my_espace.transvase_public_to_private(axe,my_view->get_id_client()); my_espace.transvase_public_to_private(grolles,my_view->get_id_client()); my_espace.transvase_public_to_private(haulme,my_view->get_id_client()); my_espace.transvase_public_to_private(armure,my_view->get_id_client()); ((PlayerCharacter *) MySongroku)->set_dos(ecu); ((PlayerCharacter *) MySongroku)->set_jambes(fute); ((PlayerCharacter *) MySongroku)->set_main_droite(epee); ((PlayerCharacter *) MySongroku)->set_main_gauche(axe); ((PlayerCharacter *) MySongroku)->set_pieds(grolles); ((PlayerCharacter *) MySongroku)->set_tete(haulme); ((PlayerCharacter *) MySongroku)->set_tronc(armure); /* boucle principale du jeu */ for(;;) { my_timer->set_reftime(); //debut du code sous controle du timer my_espace.step(); //active tous les actifs my_espace.grafbox->put_text(50+LARGEUR/2,HAUTEUR-50,"http://tdrgame.free.fr",&my_police,my_view->largeur_,my_view->hauteur_); my_espace.grafbox->copy_virtual_to_screen(); //recopie a l'ecran my_timer->wait_while(15);//attend de maniere a avoir 5 fps if (my_input->go_escape()) //je me barre du jeu ! break; } my_espace.grafbox->init_text(); //reviens au mode texte delete my_espace.tile_map; delete my_input; delete my_input2; delete my_espace.grafbox; delete my_espace.timer; return(0); } |