begin process at 2012 05 30 08:36:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Base de données

 > 

Autre

 > 

SDL PB


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SDL PB

lundi 1 juin 2009 à 15:51:44 | SDL PB

asse63530



slt je suis en  train de faire un jeu en C sdl
voila j'ai un vaisseau et je dois tirer sur de smétéorite
des qu'une météorite touche le vaisseau une barre de vie s'enleve le probleme
il ya  4barre de vie et des que je touche une meteorite et ben il y en a deux qui s'enlev d'un seul coup
pouvez vous m'aider merci

/* jeu SPACE RAIN I
programmé par Sylvain
le 01/06/09
*/

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <FMOD/fmod.h>

#include "jeu.h"

   void jouer(SDL_Surface* ecran)
{  
   SDL_Surface *ecran1 = NULL, *vaisseau1 = NULL, *laser=NULL, *mm=NULL, *explo=NULL;
   SDL_Surface * barre =NULL, *barre1=NULL,*barre2=NULL,*barre3=NULL;
   SDL_Rect positionVaisseau1;
   SDL_Rect positionEcran1;
   SDL_Rect positionLaser;
   SDL_Rect positionMm;
   SDL_Rect positionBarre;
   SDL_Rect positionBarre1;
   SDL_Rect positionBarre2;
   SDL_Rect positionBarre3;
   SDL_Rect positionVie;
   SDL_Rect positionExplo;

   SDL_Event event;
   long jeu=0;
   int continuer = 1;
   int tempsPrecedent1 = 0, tempsActuel1 = 0;
   int tempsLaser1 =0, tempsLaser2=0;
   int tempsPrecedent2=0, tempsActuel2=0;


 

/* chargement de tous les sprites et des positions*/
   SDL_Init(SDL_INIT_VIDEO);
   ecran1 = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE  | SDL_DOUBLEBUF );
   SDL_WM_SetCaption("SPACE RAIN I", NULL);
   laser= SDL_LoadBMP("laser.bmp");
   mm=SDL_LoadBMP("mm.bmp");
   barre=SDL_LoadBMP("barre.bmp");
   barre1=SDL_LoadBMP("barre1.bmp");
   barre2=SDL_LoadBMP("barre2.bmp");
   barre3=SDL_LoadBMP("barre3.bmp");  
   explo=IMG_Load("explosion.jpg");
   vaisseau1= SDL_LoadBMP("vaisseau1.bmp");
  
 
 
SDL_SetColorKey(mm,SDL_SRCCOLORKEY, SDL_MapRGB(mm -> format,0,0,0));
positionMm.x=350;
positionMm.y=50;
SDL_SetColorKey(barre,SDL_SRCCOLORKEY, SDL_MapRGB(barre -> format,0,0,0));
positionBarre.x=600;
positionBarre.y=20;
SDL_SetColorKey(barre1,SDL_SRCCOLORKEY, SDL_MapRGB(barre1 -> format,0,0,0));
positionBarre1.x=800;
positionBarre1.y=800;
SDL_SetColorKey(barre2,SDL_SRCCOLORKEY, SDL_MapRGB(barre2 -> format,0,0,0));
positionBarre2.x=800;
positionBarre2.y=800;
SDL_SetColorKey(barre3,SDL_SRCCOLORKEY, SDL_MapRGB(barre3 -> format,0,0,0));
positionBarre3.x=800;
positionBarre3.y=800;
positionExplo.x=800;
positionExplo.y=800;
SDL_SetColorKey(vaisseau1, SDL_SRCCOLORKEY, SDL_MapRGB(vaisseau1->format, 0, 0, 0));
positionVaisseau1.x = ecran1->w / 2 - vaisseau1->w / 2;
positionVaisseau1.y = ecran1->h / 2 - vaisseau1->h / 2; 
positionLaser.x = positionVaisseau1.x;
positionLaser.y = positionVaisseau1.y;

SDL_Delay(500);//atente de 500ms

   SDL_EnableKeyRepeat(10, 10);//répétition des touches
   SDL_ShowCursor(SDL_DISABLE);//masquer le curseur
   while (continuer)//boucle principale
   {


      SDL_PollEvent(&event);
      switch(event.type)
      {
         case SDL_QUIT://quitter avec la croix rouge
            continuer = 0;
            break;

         case SDL_MOUSEMOTION://mouvement souris

            positionVaisseau1.x = event.motion.x;
            positionVaisseau1.y = event.motion.y;
                          
            break;
            case SDL_MOUSEBUTTONUP:
           case SDL_BUTTON_LEFT :    //tirer avec le laser
           positionLaser.y = positionVaisseau1.y-15;
           positionLaser.x = positionVaisseau1.x+40;
           break;
         
           break;
       
           }                                 
           //chargement de tous les blitte à leur nouvelle position
SDL_Flip(ecran);
SDL_FillRect(ecran1, NULL, SDL_MapRGB(ecran1->format, 0, 0, 0));
SDL_SetAlpha(ecran1, SDL_SRCALPHA, 0);
SDL_BlitSurface(ecran1, NULL, ecran, &positionEcran1); 
SDL_BlitSurface(vaisseau1, NULL, ecran, &positionVaisseau1);
SDL_BlitSurface(mm,NULL,ecran,&positionMm);
SDL_BlitSurface(barre,NULL,ecran,&positionBarre);
SDL_BlitSurface(barre1,NULL,ecran,&positionBarre1);
SDL_BlitSurface(barre2,NULL,ecran,&positionBarre2);
SDL_BlitSurface(barre3,NULL,ecran,&positionBarre3);
SDL_BlitSurface(explo,NULL,ecran,&positionExplo);
  
  
tempsLaser1=SDL_GetTicks();//fonction tirer laser
if(tempsLaser1-tempsLaser2 >30)
{
positionLaser.y--;//position laser y-- (remonte)
if (positionLaser.y > 0 && positionLaser.x > 0)
{
SDL_SetColorKey(laser, SDL_SRCCOLORKEY, SDL_MapRGB(laser->format, 0, 0, 0));
SDL_BlitSurface(laser,NULL,ecran,&positionLaser);//blitte laser a sa nouvelle posittion
}
}
 
  tempsActuel1 = SDL_GetTicks();
  if (tempsActuel1 - tempsPrecedent1 > 10) /* Si 10 ms se sont écoulées depuis le dernier tour de boucle */
  {
  positionMm.y++; /* On bouge la météroite */
  tempsPrecedent1 = tempsActuel1; /* Le temps "actuel" devient le temps "precedent" pour nos futurs calculs */         
}
         
if(positionMm.y>=650)
{
                              
const long MAXx = 600, MINx =1 ;// constante pour savoir quel sera la position de la météorite sur l'ecran en x
positionMm.x = (rand() % (MAXx - MINx + 1)) + MINx;//generation du nombre aléatoire
positionMm.y=0;     
}

if(positionVaisseau1.y==positionMm.y)
{                                 
positionBarre.x=800;
positionBarre.y=800;
positionBarre1.x=600;
positionBarre1.y=20; 
jeu=1;                       
}
if((jeu==1)&&(positionVaisseau1.y==positionMm.y))
{
positionBarre1.x=800;
positionBarre1.y=800;
positionBarre2.x=600;
positionBarre2.y=20;
}
                                                                                   
}
//libérer les mémoires de toutes les images
SDL_FreeSurface (vaisseau1);
SDL_FreeSurface(laser);
SDL_FreeSurface(barre);         
SDL_FreeSurface(barre1);   
SDL_FreeSurface(barre2); 
SDL_FreeSurface(barre3); 
SDL_FreeSurface (mm);
SDL_FreeSurface(explo);

  
   SDL_Quit();
}






Cette discussion est classée dans : ecran, rect, sdl, laser, positionvaisseau1


Répondre à ce message

Sujets en rapport avec ce message

SDL : comment rafraichir l'ecran? [ par smilandfly ] Bonsoir'je viens de mettre sous sdl (que je viens de decouvrir) mon awale programmé en C++ en mode texte.J'ai 2 problemes qui ne sont sans doute pas t Blit de surface avec SDL [problème d'affichage] [ par cyberlewis ] Bonjour,Voilà j'ai fait un code (jeu vidéo SDL),j'arrive à afficher la partie que je veux (tiles, tiles.bmp) dans screen qui est affichée à l'écran, p SDL : linker error [ par bigben89 ] Ca fais à peine quelques mois que j'fais de la programmation (en C) et j'aimerais faire un peu de 2d et de 3d avec SDL. Je regarde des tutoriaux sur probleme de compilation SDL [ par darmoor ] Je suis dsl , le sujet doit etre souvent demandé mais j'ai deja cherché sur google et j'ai pas encore trouvé ce qu'il faut. Bon alors j'ai commencé a Problème avec SDL_SetColorKey [ par The_Sin ] Voici mon code : #include SDL_Surface * sEcran ; SDL_Surface * sImage ; void init() {     SDL_Init(SDL_INIT_VIDEO) ;     sEcran = SDL_SetVideoM SDL : Gestion des mouvements dans une fonction [ par The_Sin ] Salut, j'ai un problème en SDL en C : J'ai déplacé ma boucle de gestion de mouvements dans une fonction de perso.c et là ça marche plus, le problème v [C/C++][SDL]affichage de plusieur ssprites [ par madink ] salut ,je sais pas vraiment si c' est le bon forum , ou si quelqun de gentil peut me répondre mais je poste quand memeAlors pour un projet info je fai probleme vitesse scrolling [ par gusdark ] bonjour , j'ai lu pas mal de topics sur le scrolling dans le forum, ce qui m'a permis de comprendre le principe.Mais j'ai cependant un problème que je aide moi dans la SDL [ par iliassh ] je veux vos aide pour cree mon jeux en SDL,et je suis trop charger pourque je le rend avant la fin du mois courantje vai l'aide de qq de votre part po programmation lecteur mp3 [ par dr971 ] Bonjour,je souhaite realiser un lecteur mp3 en c grace à la librairie fmod mais j'ai un probleme. En fait je souhaite qu'en appuyant sur la touche p d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales