IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

[SDL/C]Projets Space Invaders


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par défaut [SDL/C]Projets Space Invaders
    Bonjour !

    Je suis actuellement en train de travailler sur un Space Invader en SDL, et il y a pas mal de chose pour lesquelles j'aurai besoin d'aide

    J'ai déjà fait le système de déplacement gauche et droite pour le joueur principale (presque rien me direz vous ^^), il me reste encore ces éléments a faire:

    - Le système de tir.
    - Les mouvements des Invaders
    - Le système de score. (Augmentation après avoir tué un Invaders.)

    Tout se que je vous demande c'est de m'indiquer des tutos qui pourront m'aider, ou alors, si vous vous sentez prêts a m'aider cela me ferait le plus grand plaisir

    Voila j'attends vos réponse et j'espère trouver de l'aide, merci d'avance !

    Je vous mets mon main.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>
    #include <fmod.h>
    #include <SDL/SDLP_Anim.h>
     
    int main(int argc, char *argv[])
    {
       //Variable
    	int continuer = 1;
       //Creation des variables SDL
    	SDL_Surface *ecran = NULL, *mainPlayer = NULL, *evilPizza = NULL, *score = NULL;
    	TTF_Font *police = NULL;
    	SDL_Color blanc = {255,255,255};
        SDL_Rect positionMainPlayer, positionevilPizza, positionScore;//Les positions
        SDL_Event event;
     
       //Initilistation de la SDL
       SDL_Init(SDL_INIT_VIDEO | SDL_DOUBLEBUF | SDL_INIT_AUDIO);
       TTF_Init();
       //Creation des surfaces
       ecran = SDL_SetVideoMode(482, 240, 32, SDL_SWSURFACE);
       //Remplissage de l'écran
       SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 1, 1, 1));
       //Chargement des images
       mainPlayer = SDL_LoadBMP("Sprites/zozor.bmp");
       evilPizza = SDL_LoadBMP("Sprites/Evilpizza.bmp");
       police = TTF_OpenFont("TECHNOID.TTF", 21);
       score = TTF_RenderText_Solid(police, "0000", blanc);
       //Reglage de la transparence
       SDL_SetColorKey(mainPlayer, SDL_SRCCOLORKEY, SDL_MapRGB(mainPlayer->format, 0, 255, 255));
       SDL_SetColorKey(evilPizza, SDL_SRCCOLORKEY, SDL_MapRGB(evilPizza->format, 0, 255, 255));
       //Positionnement initiale du mainPlayer
       positionMainPlayer.x = ecran->w / 2 - mainPlayer->w / 2;
       positionMainPlayer.y = 200;
       //Positionement de la pizza
       positionevilPizza.x = 95;
       positionevilPizza.y = 40;
       //Position du score
       positionScore.x = 10;
       positionScore.y = 220;
     
     
       //Boucle de mouvement
    	SDL_EnableKeyRepeat(5, 5);
    	SDL_ShowCursor(SDL_DISABLE);
     
     
    	while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
    	case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch (event.key.keysym.sym)
                {
                case SDLK_RIGHT: // Flèche droite
                    positionMainPlayer.x++;
                    break;
                case SDLK_LEFT: // Flèche gauche
                    positionMainPlayer.x--;
                    break;
    			case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
                        continuer = 0;
                        break;
                }
                break;
        }
            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); /* On efface l'écran */
            SDL_BlitSurface(mainPlayer, NULL, ecran, &positionMainPlayer);/* On place zozor à sa nouvelle position */
            SDL_BlitSurface(evilPizza, NULL, ecran, &positionevilPizza);/*On place la Pizza*/
    		SDL_BlitSurface(score, NULL, ecran, &positionScore);
    		SDL_Flip(ecran); /* On met à jour l'affichage */
        }
     
        TTF_CloseFont(police);
        TTF_Quit();
    	SDL_FreeSurface(mainPlayer);
    	SDL_FreeSurface(evilPizza);
    	SDL_FreeSurface(score);/*On libère de l'espace pour les surfaces*/
        SDL_Quit();
    }

  2. #2
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    J'ai déplacé le sujet de la rubrique Projet vers SDL car tu sembles ton topic correspond plus à des besoins en SDL que d'un réel besoin de recrutement pour un Projet.

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    a priori la première chose à faire serait de définir une struct 'Sprite' ou 'Enemy 'dans laquelle tu stockes un pointeur sur SDL_Surface et un pointeur sur SDL_Rect pour tes surfaces et positions. Tu stockes ensuite tes struct dans un tableau que tu pourras utiliser pour l'affichage/blitage/mouvements parce que là ton code va vite être énorme. Pour mieux découper le code tu peux te faire des fonctions draw() et moveSprites() auxquelles tu passeras un pointeur sur ta liste de sprites.
    (Je suis un peu rouillé en C mais l'idée est là )
    Bye

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par défaut
    Merci ^^ j'avoue que je me suis dit plusieurs fois que j'allais plus m'en sortir avec toute ces lignes Je voulais savoir, tu n'aurais pas un tuto pour animer les Invaders juste un petit mouvement a gauche et un autre a droite droite j'ai vu un tuto sur l'animation mais c'est pas vraiment se que je voudrais faire

  5. #5
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Par défaut
    Je pense que ce que tu veux faire est une simple boucle de déplacements automatique, je me trompe ?

    Selon le temps, tes Invaders vont aller à droite, puis à gauche et descendre au fur et à mesure qu'ils changent de direction (comme sur le jeu original).

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par défaut
    Oui c'est ça en faite mais je ne sait pas me servir de la fonction qui gère les déplacements Il est la le problème , j'ai trouvé un schéma en imaginant que je puisse les tuer grâce au canon ce serait donc:


    Je créé un booléen Invaders qui vaut vrai
    Si il y a collision avec le laser Invaders vaudra faux
    Sinon ne rien faire

    Ensuite la boucle:

    Tant que Invaders vaut vrai faire le déplacement

    Je pense que le schéma est le bon mais j'aimerais en être sûr voila merci pour votre aide

    P.S: Je me demande si je ne devrais pas me mettre au C++

Discussions similaires

  1. Petit projet de space invaders !
    Par alexg33 dans le forum Projets
    Réponses: 5
    Dernier message: 05/02/2011, 19h59
  2. {SDL} compilation projet SDL sous windows.
    Par LeFlou dans le forum SDL
    Réponses: 12
    Dernier message: 14/11/2007, 15h50
  3. Space Invader : pb plusieurs missiles à l'écran
    Par Bundy*Al dans le forum Développement 2D, 3D et Jeux
    Réponses: 11
    Dernier message: 19/10/2007, 08h33
  4. SDL et projet sous Dev-C++
    Par salif98 dans le forum SDL
    Réponses: 3
    Dernier message: 23/11/2006, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo