Bonjour, voilà j'ai un petit problème j'essaye de faire un jeu avec un petit vaisseau se déplacant au bas de l'écran à l'horizontale et capable de tirer sur un vaisseau en haut de l'écran (jeu ultra connu).
Le problème c'est que en théorie quand on fait ESPACE ca renvoi sur la fonction tir que j'ai créée dans un fichier tir.c à part, et qu'on atteint depuis la fonction jouer.c, elle aussi dans un fichier à part.
Le problème vient du fait que à la compilation il ne reconnait pas ma fonction tir en tant que fonction et me met le message d'erreur: "error : called object is not a function".
Voici le code source qui vous parlera peut-etre mieux que moi:
jouer.c :
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> /* Inclusion du header de SDL_image */ #include "constantes.h" #include "jeu.h"
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_RIGHT: // Flèche droite
positionJoueur.x = positionJoueur.x + 5; break; case SDLK_LEFT: // Flèche gauche
positionJoueur.x = positionJoueur.x - 5; break; case SDLK_BACKSPACE:
tir(ecran, positionJoueur); break;
} break; }
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(fond, NULL, ecran, &positionFond);
SDL_BlitSurface(cle, NULL, ecran, &positionJoueur); /* On place cle à sa nouvelle position */
while(continuer) {
SDL_PollEvent(&event); /* On utilise PollEvent et non WaitEvent pour ne pas bloquer le programme */
tempsActuel = SDL_GetTicks(); if(tempsActuel - tempsPrecedent > 30)/* Si 30 ms se sont écoulées depuis le dernier tour de boucle */ {
positionDeDepart.y--; /* On bouge Zozor */
tempsPrecedent = tempsActuel; /* Le temps "actuel" devient le temps "precedent" pour nos futurs calculs */ } else/* Si ça fait moins de 30ms depuis le dernier tour de boucle, on endort le programme le temps qu'il faut */ {
SDL_Delay(30 - (tempsActuel - tempsPrecedent)); }
} }
P.S: cle signifie chasseur léger dans le code ca correspond au vaisseaux du joueur qui doit tirer.
Merci d'avance de votre aide
EDIT: c'est bon j'ai trouver. Juste au moment ou j'ai poster le message j'a eu un flash. C'est parce que j'avais déja défini "tir" comme une surface au début.
Par contre le tir ne part pas mais bon ca m'aurait étonner que ca marche du premier coups
Désolé pour le topic qui sert à rien
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.