Fvirtman
très intéressantes les annexes ![]()
par contre y´a moyen de recréer le type bool en C en passant juste avec typedef ?
et qu´est ce que le registre EAX ?
didic10
tu dois sauter quelques lignes à la fin de ton code ![]()
ok merci mais je ne peux pas tester mon programme et en bas c´est écrit
Project : SDL Application
Compiler : GNU GCC Compiler (called directly)
Directory : C:\Projets C++\
--------------------------------------------------
------------------------------
Switching to target: default
Compiling: Untitled1.c
Linking console executable: SDLapp.exe
.objs\Untitled1.o:Untitled1.c:(.text+0x1fc): undefined reference to `pause´
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
si ´pause´ est une fonction t´as oublié le protoype, si c´est une variable t´as oublié de la déclarer
Pourtant je n´ai fait que copier coller le code du site du zero O.o que voici
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
SDL_Rect position;
int i = 0;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 256, 32, SDL_HWSURFACE);
for (i = 0 ; i <= 255 ; i++)
lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0);
SDL_WM_SetCaption("Mon de´grade´ en SDL !" , NULL);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
for (i = 0 ; i <= 255 ; i++)
{
position.x = 0;
position.y = i;
SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i));
SDL_BlitSurface(lignes[i], NULL, ecran, &position);
}
SDL_Flip(ecran);
pause();
for (i = 0 ; i <= 255 ; i++)
SDL_FreeSurface(lignes[i]);
SDL_Quit();
return EXIT_SUCCESS;
}
ou meme ici
http://www.siteduzero.com/tuto-3-5300-1-creation-d-une-fenetre-et-de-surfaces.html#ss_part_4
Ca me met la meme erreur avec d´autres codes aussi
il faut pas juste copier la fonction main, y´a aussi la fonction pause dont tu dois écrire le protoyype avant la fonction main.
ok merci Extra-terrestre sa marche j´avais oublié quelques lignes c´est sur que sa ne pouvait pas marcher -_-
"par contre y´a moyen de recréer le type bool en C en passant juste avec typedef ? "
Ca n´existe pas typedef en C.
"et qu´est ce que le registre EAX ? "
C´est le registre qui stocke la tete de pile
"C´est le registre qui stocke la tete de pile"
Heu, j´ai craqué c´est l´accumulateur. Quand la donnée renvoyé par une fonctin fait moins de 4 octets, elle est stocké dans l´accumulateur
question SDL pour moi
:
j´aimerais savoir comment on peut faire des collisions avec la balle su un mur ba gauche ou a droite parce que je fais un jeu de casse briques
voici mon code de la fonction jouer :
void Jouer(SDL_Surface* Ecran)
{
SDL_Surface *Barre[3] = {NULL};
SDL_Surface *Balle = NULL, *Brique = NULL, *Mur = NULL;
SDL_Rect PositionBarreG, PositionBarreD, PositionBarreC, PositionObjet;
SDL_Event Jouer;
int Continuer = 1;
int TempsPrecedent = 0, TempsActuel = 0;
PositionBarreG.x = 300;
PositionBarreG.y = 580;
PositionBarreC.x = 325;
PositionBarreC.y = 580;
PositionBarreD.x = 344;
PositionBarreD.y = 580;
PositionObjet.x = PositionBarreC.x;
PositionObjet.y = 570;
Barre[GAUCHE] = IMG_Load("raqGauche.png");
Barre[CENTRE] = IMG_Load("raqCentre.png");
Barre[DROITE] = IMG_Load("raqDroite.png");
Balle = IMG_Load("balle.png");
SDL_ShowCursor(SDL_DISABLE);
SDL_EnableKeyRepeat(1, 0);
while (Continuer)
{
SDL_PollEvent(&Jouer);
switch(Jouer.type)
{
case SDL_QUIT:
Continuer = 0;
break;
case SDL_KEYDOWN:
switch(Jouer.key.keysym.sym)
{
case SDLK_ESCAPE:
Continuer = 0;
break;
case SDLK_LEFT:
PositionBarreG.x--;
PositionBarreC.x--;
PositionBarreD.x--;
break;
case SDLK_RIGHT:
PositionBarreG.x++;
PositionBarreC.x++;
PositionBarreD.x++;
break;
}
break;
}
TempsActuel = SDL_GetTicks();
if (TempsActuel - TempsPrecedent > 30)
{
PositionObjet.x++;
PositionObjet.y--;
TempsPrecedent = TempsActuel;
}
else
{
SDL_Delay(30 - (TempsActuel - TempsPrecedent));
}
SDL_FillRect(Ecran, NULL, SDL_MapRGB(Ecran->format, 0, 0, 0));
SDL_BlitSurface(Barre[GAUCHE], NULL, Ecran, &PositionBarreG);
SDL_BlitSurface(Barre[CENTRE], NULL, Ecran, &PositionBarreC);
SDL_BlitSurface(Barre[DROITE], NULL, Ecran, &PositionBarreD);
SDL_BlitSurface(Balle, NULL, Ecran, &PositionObjet);
SDL_Flip(Ecran);
}
SDL_FreeSurface(Barre[GAUCHE]);
SDL_FreeSurface(Barre[CENTRE]);
SDL_FreeSurface(Barre[DROITE]);
SDL_FreeSurface(Balle);
SDL_FreeSurface(Brique);
SDL_FreeSurface(Mur);
}
Merci beaucoup ![]()
bowser, la FAQ donne une adresse ou coller son code histoire qu´il soit plus simple a lire...
Usuellement dans un jeu on sépare le rendu graphique de "la physique".
dans la physique les objets sont ramene a des point, des cercles, des rectangles, ou composition de ces formes. A chaque objet est associé une position et une vitesse. pour savoir si un objet O mobile de vecteur de deplacement V touche un un mur statique de X a Y on regarde si [ O;O+V ] inter [ X; Y ] est vide ou non.
Pour cela on trouve les équations des deux droites, on calcul le point d´intersection et l´on vérifie qu´il est bien sur les deux segments dont on veux tester la collision.
(je devrais ecrire un article la dessus etant donné le nombre de fois que l´on raconte ca ici)
Euh,
plus haut j´ai lu quelque chose au sujet de typedef. Ca sert à quoi exactement ?
a definir un nouveau type.
Et ça fonctionne comment ? On entre un nom et la taille qu´aura la variable ?
non tu dis par rapport a quel type est elle equivalente.
typedef toto int;
(ou l´inverse peut etre)
ouaip c´est l´inverse
typedef int toto;
"Ca n´existe pas typedef en C."
pourtant ça marche en C ![]()
ah ouais on dirait que j´ai craqué
Désolé de poster ca ici mais je veux seulement dire que je cherche des co-équipier dans la création d´un petit rpg en C avec SDL.
Si ca intéresse quelqu´un (je code mois meme en C et je pense avoir beaucoup de mal a coder ce jeu tout seul aussi simple soit il).
mon msn : sangohan42@hotmail.fr
Merci beaucoup et encore désolé
Salut
j´ai un petit probleme avec mon code :
char nom[100];
void Demander(const char* texte, long* pointeur);
void Demander(const char* texte,long* pointeur)
{
char entree;
printf("%s\n",texte);
scanf("%s", entree);
*pointeur = entree;
}
...
et quand j´appelle la fonction
Demander("Quel est votre nom ?" , &nom);
et ca me dit cannot convert "char[*][100]" to "long int"
merci d´avance
ok, merci ![]()
Archipel >
faut caster :
Demander("Quel est votre nom ?" , (long*)&nom);
ou alors, changer le prototype en pointeur générique :
void Demander(const char* texte, void* pointeur);