AccueilFAQRechercherS’enregistrerConnexion
Poster un nouveau sujet   Répondre au sujet
 [C] petit problème dans un programmeVoir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
BiDuLoN




Inscrit le : 04 Juin 2007
Messages : 15

MessageSujet: [C] petit problème dans un programme   Jeu 10 Jan - 20:18

Bonjour bonjour,
Je voudrais demander de l'aide à tous les programeurs c du forum, si il y en a.

Voilà je code un mini-jeu avec la SDL, quelque chose du genre "Attaque des martiens, vous êtes le seul espoir de l'humanité etc... Hi hi "

Je vous préviens vous allez être déçus, c'est très moche parce que j'en suis qu'au début :



Interdit de se moquer ! Niark

Et voilà mon code :

Code:

#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>

int main(int argc, char *argv[])
{
   SDL_Surface *fenetre = NULL, *imageDeFond = NULL, *vaisseau = NULL;
   SDL_Rect positionFond, positionVaisseau;
   SDL_Event event;
   int continuer = 1, tirBool = 0;
   
   if(SDL_Init(SDL_INIT_VIDEO) == 1)
   {
      fprintf(stderr, "Erreur d'initialisation de la SDL : %s", SDL_GetError());
      exit(EXIT_FAILURE);
   }
   
   fenetre = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
   imageDeFond = IMG_Load("etoiles.jpg");
   vaisseau = IMG_Load("vaisseau_ecto.png");
   
   positionFond.x = 0;
   positionFond.y = 0;
   positionVaisseau.x = (fenetre->w / 2) - (vaisseau->w / 2);
   positionVaisseau.y = fenetre->h - vaisseau->h;
   
   if(fenetre == NULL)
   {
      fprintf(stderr, "Erreur durant le chargement de la fenêtre : %s", SDL_GetError());
      exit(EXIT_FAILURE);
   }
   
   SDL_WM_SetCaption("Dégommons les Martiens !", NULL);
   SDL_WM_SetIcon(IMG_Load("lightning.jpg"), NULL);
   
   SDL_BlitSurface(imageDeFond, NULL, fenetre, &positionFond);
   SDL_BlitSurface(vaisseau, NULL, fenetre, &positionVaisseau);
   
   SDL_Flip(fenetre);
   
   SDL_EnableKeyRepeat(10, 10);
   
   while(continuer)
   {
      SDL_WaitEvent(&event);
      
      switch(event.type)
      {
      case SDL_QUIT:
         continuer = 0;
      break;
      
      case SDL_KEYDOWN:
         switch(event.key.keysym.sym)
         {
            case SDLK_ESCAPE:
               continuer = 0;
            break;
            
            case SDLK_LEFT:
               positionVaisseau.x -= 10;
            break;
            
            case SDLK_RIGHT:
               positionVaisseau.x += 10;
            break;
         }
      break;
      }
      
      SDL_BlitSurface(imageDeFond, NULL, fenetre, &positionFond);
      SDL_BlitSurface(vaisseau, NULL, fenetre, &positionVaisseau);
      SDL_Flip(fenetre);
   }
   
   SDL_Quit();
   
   return EXIT_SUCCESS;
}


Ça fait peur hein ? Diable

Donc je peux déplacer mon vaisseau spatial ( Frime ) à droite et gauche avec les flèches du clavier, mais voila j'aimerais l'empêcher de sortir du cadre de la fenêtre.

Si vous pouvez m'aider, merci Bravo
_________________
C'est quoi ce bin's ?
Revenir en haut Aller en bas
Babilomax
Administrateur
Administrateur



Inscrit le : 18 Fév 2007
Messages : 67

MessageSujet: Re: [C] petit problème dans un programme   Jeu 10 Jan - 20:28

Je trouve que c'est un très bon code Bravo Avec de la motivation tu pourrais en faire un super jeu ! (si te le fais sous license libre tu pourras me le passer après ? Ahem )

Pour ton problème, je te propose de rajouter des conditions dans les options de déplacement du vaisseau :

Tu prends cette partie :

Code:

            case SDLK_LEFT:
              positionVaisseau.x -= 10;
            break;
           
            case SDLK_RIGHT:
              positionVaisseau.x += 10;
            break;


Et tu transformes en :

Code:

            case SDLK_LEFT:
               if(!positionVaisseau.x <= 0)
               {
                                        positionVaisseau.x -= 10;
               }
            break;
            
            case SDLK_RIGHT:
               if(!(positionVaisseau.x + vaisseau->w) >= fenetre->w)
               {
               positionVaisseau.x += 10;
               }
            break;


Magie magie !! Hi hi
Le vaisseau reste bien sagement dans sa fenêtre.

Bonne chance pour la suite de ton jeu.
_________________


Dernière édition par le Mar 15 Jan - 18:06, édité 1 fois
Revenir en haut Aller en bas
BiDuLoN




Inscrit le : 04 Juin 2007
Messages : 15

MessageSujet: Re: [C] petit problème dans un programme   Jeu 10 Jan - 20:34

merci beaucoup ça maarche !!
Bien sûr que oui, je le fais sous license libre Hi hi Mais pour l'instant c'est pas super-intéréssant... je me trompe ? Ahem
_________________
C'est quoi ce bin's ?
Revenir en haut Aller en bas
Apple and bubble gum




Age : 15
Inscrit le : 26 Oct 2007
Messages : 73

MessageSujet: Re: [C] petit problème dans un programme   Jeu 10 Jan - 20:43

Oui.
Je galere en C (aussi par manque de temps) et il est vachement beau.
bravo:bravo:
_________________
jo_lemaitre@hotmail.fr

http://info-net.forumpro.fr/portal.htm
Revenir en haut Aller en bas
Caelifer




Age : 17
Inscrit le : 30 Déc 2007
Messages : 50

MessageSujet: Re: [C] petit problème dans un programme   Jeu 10 Jan - 21:24

Si je peux te donner un petit conseil, pense à mettre des commentaires dans ton code Clin d'oeil
Pour un petit programme comme ça, ça ne gene pas, mais si tu comptes faire de plus gros codes, te faire aider, il vaut mieux qu'il sache ce que telle fonction fait ou ce que quelle boucle fait quoi.
Revenir en haut Aller en bas
[C] petit problème dans un programmeVoir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Informatic :: Programmation, site web :: C / C++-
Poster un nouveau sujet   Répondre au sujet