CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Projet C++ simpliste VS RPG Maker

Musashi001
Musashi001
Niveau 10
26 février 2005 à 13:01:51

:up:

Vengeur41
Vengeur41
Niveau 10
26 février 2005 à 13:05:43

Pour gérer le clavier de manière efficace, tu crée un pointeur :
Uint8 *keys;

ensuite, dans la boucle de jeu :

keys = SDL_GetKeyState(NULL);

ca te génère un tableau de l´etat de chaque touche

par exemple

if ( keys[SDLK_UP]) si on a appuyé sur la touche du haut

Aussi simple que ca !

Tu le trouve comment mon editeur de map ?
Je compte creer une nouvelle version...

Musashi001
Musashi001
Niveau 10
26 février 2005 à 13:13:24

oki merci vengeur41, je v essayer ton truc si c´est ca c´est cool!
moi j´avais testé un truc assez cho

voila la source

--------------------------------------------------
-----------------------------------

  1. include < SDL/SDL.h>
  2. include < stdio.h>
  3. include < stdlib.h>

SDL_Surface* screen;
SDL_Event event;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_EnableUNICODE(1);

SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_D
EFAULT_REPEAT_INTERVAL+50);
SDL_ShowCursor(0);
}

SDL_Rect Rect(int x,int y,int w,int h)
{
SDL_Rect r;
r.x=x;
r.y=y;
r.w=w;
r.h=h;
return r;
}

SDL_Surface* LoadBMP(char* fichier,int vram=1)
{
SDL_Surface* f = SDL_LoadBMP(fichier);
SDL_Surface* r=NULL;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
if ( r==NULL) vram=0;
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&);
SDL_FreeSurface(f);
return r;
}

int main(int argc , char **argv)
{
int s=1;
int x=150;
int y=150;
SDL_Rect rect1;
init_SDL();
rect1.x = 0;
rect1.y = 0;
rect1.w = 640;
rect1.h = 480;
SDL_Surface* fullscreen;
SDL_Surface* droite[5];
fullscreen=LoadBMP("Data/Fonds/fond.bmp");
droite[0] = SDL_LoadBMP("Data/Hero/cronod1.bmp");
droite[1] = SDL_LoadBMP("Data/Hero/cronod2.bmp");
droite[2] = SDL_LoadBMP("Data/Hero/cronod3.bmp");
droite[3] = SDL_LoadBMP("Data/Hero/cronod4.bmp");
droite[4] = SDL_LoadBMP("Data/Hero/cronod5.bmp");
SDL_SetColorKey(droite[0],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[0]->format,255,0,255,0));
SDL_SetColorKey(droite[1],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[1]->format,255,0,255,0));
SDL_SetColorKey(droite[2],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[2]->format,255,0,255,0));
SDL_SetColorKey(droite[3],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[3]->format,255,0,255,0));
SDL_SetColorKey(droite[4],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[4]->format,255,0,255,0));
SDL_Surface* gauche[5];
gauche[0] = SDL_LoadBMP("Data/Hero/cronog1.bmp");
gauche[1] = SDL_LoadBMP("Data/Hero/cronog2.bmp");
gauche[2] = SDL_LoadBMP("Data/Hero/cronog3.bmp");
gauche[3] = SDL_LoadBMP("Data/Hero/cronog4.bmp");
gauche[4] = SDL_LoadBMP("Data/Hero/cronog5.bmp");
SDL_SetColorKey(gauche[0],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[0]->format,255,0,255,0));
SDL_SetColorKey(gauche[1],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[1]->format,255,0,255,0));
SDL_SetColorKey(gauche[2],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[2]->format,255,0,255,0));
SDL_SetColorKey(gauche[3],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[3]->format,255,0,255,0));
SDL_SetColorKey(gauche[4],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[4]->format,255,0,255,0));
SDL_Surface* bas[5];
bas[0] = SDL_LoadBMP("Data/Hero/cronob1.bmp");
bas[1] = SDL_LoadBMP("Data/Hero/cronob2.bmp");
bas[2] = SDL_LoadBMP("Data/Hero/cronob3.bmp");
bas[3] = SDL_LoadBMP("Data/Hero/cronob4.bmp");
bas[4] = SDL_LoadBMP("Data/Hero/cronob5.bmp");
SDL_SetColorKey(bas[0],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[0]->format,255,0,255,0));
SDL_SetColorKey(bas[1],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[1]->format,255,0,255,0));
SDL_SetColorKey(bas[2],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[2]->format,255,0,255,0));
SDL_SetColorKey(bas[3],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[3]->format,255,0,255,0));
SDL_SetColorKey(bas[4],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[4]->format,255,0,255,0));
SDL_Surface* haut[5];
haut[0] = SDL_LoadBMP("Data/Hero/cronoh1.bmp");
haut[1] = SDL_LoadBMP("Data/Hero/cronoh2.bmp");
haut[2] = SDL_LoadBMP("Data/Hero/cronoh3.bmp");
haut[3] = SDL_LoadBMP("Data/Hero/cronoh4.bmp");
haut[4] = SDL_LoadBMP("Data/Hero/cronoh5.bmp");
SDL_SetColorKey(haut[0],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[0]->format,255,0,255,0));
SDL_SetColorKey(haut[1],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[1]->format,255,0,255,0));
SDL_SetColorKey(haut[2],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[2]->format,255,0,255,0));
SDL_SetColorKey(haut[3],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[3]->format,255,0,255,0));
SDL_SetColorKey(haut[4],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[4]->format,255,0,255,0));
SDL_Surface* fixe[4];
fixe[0] = SDL_LoadBMP("Data/Hero/cronof1.bmp");
fixe[1] = SDL_LoadBMP("Data/Hero/cronof2.bmp");
fixe[2] = SDL_LoadBMP("Data/Hero/cronof3.bmp");
fixe[3] = SDL_LoadBMP("Data/Hero/cronof4.bmp");
SDL_SetColorKey(fixe[0],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[0]->format,255,0,255,0));
SDL_SetColorKey(fixe[1],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[1]->format,255,0,255,0));
SDL_SetColorKey(fixe[2],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[2]->format,255,0,255,0));
SDL_SetColorKey(fixe[3],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[3]->format,255,0,255,0));
SDL_BlitSurface(fullscreen,NULL,screen,NULL);
while(SDL_PollEvent(&);)
{
switch(event.type)
{
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
break;
case SDLK_RETURN:
break;
case SDLK_i: y-=3*s;
rect1.y=y;
SDL_BlitSurface(haut[(y/20)%5], NULL,screen,&1);
SDL_Flip(screen);
break;
case SDLK_k: y+=3*s;
rect1.y=y;
SDL_BlitSurface(bas[(y/20)%5], NULL,screen,&1);
SDL_Flip(screen);
break;
case SDLK_j: x-=3*s;
rect1.x=x;
SDL_BlitSurface(gauche[(x/20)%5], NULL,screen,&1);
SDL_Flip(screen);
break;
case SDLK_l: x+=3*s;
rect1.x=x;
SDL_BlitSurface(droite[(x/20)%5], NULL,screen,&1);
SDL_Flip(screen);
break;
default:break;
}
break;
case SDL_KEYUP: SDL_BlitSurface(fixe[0], NULL,screen,&1);
SDL_Flip(screen);
break;

default: break;
}
}
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

--------------------------------------------------
-----------------------------------
Le programme se lance, mais il se referme aussi tôt, mais je v essayer ta technique, sa ma l´air beaucoup plus raisonnable!

Vengeur41
Vengeur41
Niveau 10
26 février 2005 à 13:17:05

Attention !
Garde quand meme la event loop !

Musashi001
Musashi001
Niveau 10
26 février 2005 à 13:26:03

la event loop, c´est la boucle ou je demande mes keys? si je ne m´abuse

Vengeur41
Vengeur41
Niveau 10
26 février 2005 à 13:32:19

while(SDL_PollEvent(&);)
{
switch(event.type)
{
case SDL_QUIT:
. ..
break;
}
}

ca ca suffit comme eventloop

Musashi001
Musashi001
Niveau 10
26 février 2005 à 13:33:35

oki je v tester ca
merci

Vengeur41
Vengeur41
Niveau 10
26 février 2005 à 13:36:14

Et je propose de changer un peu ton programme parce que là ca va pas du tout :
ton while de eventloop tu le transforme en if que tu met dans une boucle while qui ne s´arrete que quand on quitte...

Musashi001
Musashi001
Niveau 10
26 février 2005 à 13:43:29

Ba pkoi pas le changer, dailleurs, j´ai pas mal de truc a réorganiser dedans, mais en attendant voici ma nouvelle source:

-------------------------------------------------

  1. include < SDL/SDL.h>
  2. include < stdio.h>
  3. include < stdlib.h>

Uint8 *keys;
SDL_Surface* screen;
SDL_Event event;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_EnableUNICODE(1);

SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_D
EFAULT_REPEAT_INTERVAL+50);
SDL_ShowCursor(0);
}

SDL_Rect Rect(int x,int y,int w,int h)
{
SDL_Rect r;
r.x=x;
r.y=y;
r.w=w;
r.h=h;
return r;
}

SDL_Surface* LoadBMP(char* fichier,int vram=1)
{
SDL_Surface* f = SDL_LoadBMP(fichier);
SDL_Surface* r=NULL;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
if ( r==NULL) vram=0;
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&);
SDL_FreeSurface(f);
return r;
}

int main(int argc , char **argv)
{
int s=1;
int x=150;
int y=150;
SDL_Rect rect1;
init_SDL();
rect1.x = 0;
rect1.y = 0;
rect1.w = 640;
rect1.h = 480;
SDL_Surface* fullscreen;
SDL_Surface* droite[5];
fullscreen=LoadBMP("Data/Fonds/fond.bmp");
droite[0] = SDL_LoadBMP("Data/Hero/cronod1.bmp");
droite[1] = SDL_LoadBMP("Data/Hero/cronod2.bmp");
droite[2] = SDL_LoadBMP("Data/Hero/cronod3.bmp");
droite[3] = SDL_LoadBMP("Data/Hero/cronod4.bmp");
droite[4] = SDL_LoadBMP("Data/Hero/cronod5.bmp");
SDL_SetColorKey(droite[0],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[0]->format,255,0,255,0));
SDL_SetColorKey(droite[1],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[1]->format,255,0,255,0));
SDL_SetColorKey(droite[2],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[2]->format,255,0,255,0));
SDL_SetColorKey(droite[3],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[3]->format,255,0,255,0));
SDL_SetColorKey(droite[4],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[4]->format,255,0,255,0));
SDL_Surface* gauche[5];
gauche[0] = SDL_LoadBMP("Data/Hero/cronog1.bmp");
gauche[1] = SDL_LoadBMP("Data/Hero/cronog2.bmp");
gauche[2] = SDL_LoadBMP("Data/Hero/cronog3.bmp");
gauche[3] = SDL_LoadBMP("Data/Hero/cronog4.bmp");
gauche[4] = SDL_LoadBMP("Data/Hero/cronog5.bmp");
SDL_SetColorKey(gauche[0],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[0]->format,255,0,255,0));
SDL_SetColorKey(gauche[1],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[1]->format,255,0,255,0));
SDL_SetColorKey(gauche[2],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[2]->format,255,0,255,0));
SDL_SetColorKey(gauche[3],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[3]->format,255,0,255,0));
SDL_SetColorKey(gauche[4],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[4]->format,255,0,255,0));
SDL_Surface* bas[5];
bas[0] = SDL_LoadBMP("Data/Hero/cronob1.bmp");
bas[1] = SDL_LoadBMP("Data/Hero/cronob2.bmp");
bas[2] = SDL_LoadBMP("Data/Hero/cronob3.bmp");
bas[3] = SDL_LoadBMP("Data/Hero/cronob4.bmp");
bas[4] = SDL_LoadBMP("Data/Hero/cronob5.bmp");
SDL_SetColorKey(bas[0],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[0]->format,255,0,255,0));
SDL_SetColorKey(bas[1],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[1]->format,255,0,255,0));
SDL_SetColorKey(bas[2],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[2]->format,255,0,255,0));
SDL_SetColorKey(bas[3],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[3]->format,255,0,255,0));
SDL_SetColorKey(bas[4],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[4]->format,255,0,255,0));
SDL_Surface* haut[5];
haut[0] = SDL_LoadBMP("Data/Hero/cronoh1.bmp");
haut[1] = SDL_LoadBMP("Data/Hero/cronoh2.bmp");
haut[2] = SDL_LoadBMP("Data/Hero/cronoh3.bmp");
haut[3] = SDL_LoadBMP("Data/Hero/cronoh4.bmp");
haut[4] = SDL_LoadBMP("Data/Hero/cronoh5.bmp");
SDL_SetColorKey(haut[0],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[0]->format,255,0,255,0));
SDL_SetColorKey(haut[1],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[1]->format,255,0,255,0));
SDL_SetColorKey(haut[2],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[2]->format,255,0,255,0));
SDL_SetColorKey(haut[3],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[3]->format,255,0,255,0));
SDL_SetColorKey(haut[4],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[4]->format,255,0,255,0));
SDL_Surface* fixe[4];
fixe[0] = SDL_LoadBMP("Data/Hero/cronof1.bmp");
fixe[1] = SDL_LoadBMP("Data/Hero/cronof2.bmp");
fixe[2] = SDL_LoadBMP("Data/Hero/cronof3.bmp");
fixe[3] = SDL_LoadBMP("Data/Hero/cronof4.bmp");
SDL_SetColorKey(fixe[0],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[0]->format,255,0,255,0));
SDL_SetColorKey(fixe[1],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[1]->format,255,0,255,0));
SDL_SetColorKey(fixe[2],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[2]->format,255,0,255,0));
SDL_SetColorKey(fixe[3],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[3]->format,255,0,255,0));
SDL_BlitSurface(fullscreen,NULL,screen,NULL);
while(SDL_PollEvent(&))
{
switch(event.type)
{
case SDL_QUIT:
keys = SDL_GetKeyState(NULL);
if ( keys[SDLK_UP])
{
y-=3*s;
rect1.y=y;
SDL_BlitSurface(haut[(y/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
if ( keys[SDLK_DOWN])
{
y+=3*s;
rect1.y=y;
SDL_BlitSurface(bas[(y/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
if ( keys[SDLK_LEFT])
{
x-=3*s;
rect1.x=x;
SDL_BlitSurface(gauche[(x/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
if ( keys[SDLK_RIGHT])
{
x+=3*s;
rect1.x=x;
SDL_BlitSurface(haut[(x/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
break;
}
}
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

-------------------------------------------------

Ca produit le même résultat que l´autre, ca se lance puis ssa se referme juste derriere

Musashi001
Musashi001
Niveau 10
26 février 2005 à 13:46:35

http://musashiarea.free.fr/screen/source.txt
on voit mieux ma source

gollumkawder
gollumkawder
Niveau 10
26 février 2005 à 13:48:15

utilise un wall, il gère les indentations
http://walljv.free.fr

Musashi001
Musashi001
Niveau 10
26 février 2005 à 13:51:32

bi voila
http://walljv.free.fr/index.php?to=view&id=69

jejej
jejej
Niveau 9
26 février 2005 à 14:00:22

j´ai pas teste ton code , mais generalement , quand le programme s´ouvre et se referme , c´est la faute a un seg fault

regarde bien si toutes tes images sont chargees , des trucs comme ca
ma derniere seg fault , je chargeais une image apres l´avoir utilisee . .. c peut etre la meme chose chez toi

par contre , ton code est bien trop compliquée
si j´ai bien compris , ca charge un perso , avec les vues droite gauche haut bas c bien ca ?
dans ce cas , tu devrais tout mettre dans UN SEUL bitmap , ca te ferait beaucoup moins de SDL_SetColorKey etc . ..

jejej
jejej
Niveau 9
26 février 2005 à 14:01:46

ah et autre chose

ta boucle while est bizarre

tu devrais switcher entre les differents cas , si tu veux , mais pas flip(screen) pour chaque cas

tu referme ton switch , et juste a la fin de ta boucle while , tu ecris flip(screen) ok ?

Musashi001
Musashi001
Niveau 10
26 février 2005 à 14:05:16

oki pour le filp, mais pour faire une seule bitmap, et que mon prog récupère plusieurs images dessus je vois pas comment faire

jejej
jejej
Niveau 9
26 février 2005 à 16:26:35

en fait , tu dessines toutes les positions de ton perso sur un seul sprite , mais " regulierement" je veux dire que si ton perso fait 50*50 pixels , tu les dessines vraiment tous les 50 pixels , de cette facon , tu obtiens un tileset

et il te suffit de faire une structure
SDL_Rect image;
image.x = coordonees de l´absicce du point haut gauche de l´image que tu souhaites afficher
image.y = coordonne de l´ordonee du haut de l´image que tu veux afficher
image.w = la largeur ( enl´occurence 50 pixels )
image.h = la hauteur ( 50 pixels aussi ? )

de cette facon , tu remarqueras qu´il te suffit de multiplier x par w pour passer a l´image suivante , et avoir ainsi une animation :)

Vengeur41
Vengeur41
Niveau 10
26 février 2005 à 18:05:08

Nan, c´est n´importe quoi ce code, ca se fait pas comme ca...

Voici le bon :

  1. include < SDL/SDL.h>
  2. include < stdio.h>
  3. include < stdlib.h>

Uint8 *keys;
SDL_Surface* screen;
SDL_Event event;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_EnableUNICODE(1);

SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_D

EFAULT_REPEAT_INTERVAL+50);
SDL_ShowCursor(0);
}

SDL_Rect Rect(int x,int y,int w,int h)
{
SDL_Rect r;
r.x=x;
r.y=y;
r.w=w;
r.h=h;
return r;
}

SDL_Surface* LoadBMP(char* fichier,int vram=1)
{
SDL_Surface* f = SDL_LoadBMP(fichier);
SDL_Surface* r=NULL;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
if ( r==NULL) vram=0;
if ( ! vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&);
SDL_FreeSurface(f);
return r;
}

int main(int argc , char **argv)
{
int s=1;
int x=150;
int y=150;
SDL_Rect rect1;
init_SDL();
rect1.x = 0;
rect1.y = 0;
rect1.w = 640;
rect1.h = 480;
SDL_Surface* fullscreen;
SDL_Surface* droite[5];
fullscreen=LoadBMP("Data/Fonds/fond.bmp");
droite[0] = SDL_LoadBMP("Data/Hero/cronod1.bmp");
droite[1] = SDL_LoadBMP("Data/Hero/cronod2.bmp");
droite[2] = SDL_LoadBMP("Data/Hero/cronod3.bmp");
droite[3] = SDL_LoadBMP("Data/Hero/cronod4.bmp");
droite[4] = SDL_LoadBMP("Data/Hero/cronod5.bmp");
SDL_SetColorKey(droite[0],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[0]->format,255,0,255,0));
SDL_SetColorKey(droite[1],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[1]->format,255,0,255,0));
SDL_SetColorKey(droite[2],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[2]->format,255,0,255,0));
SDL_SetColorKey(droite[3],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[3]->format,255,0,255,0));
SDL_SetColorKey(droite[4],SDL_SRCCOLORKEY , SDL_MapRGBA(droite[4]->format,255,0,255,0));
SDL_Surface* gauche[5];
gauche[0] = SDL_LoadBMP("Data/Hero/cronog1.bmp");
gauche[1] = SDL_LoadBMP("Data/Hero/cronog2.bmp");
gauche[2] = SDL_LoadBMP("Data/Hero/cronog3.bmp");
gauche[3] = SDL_LoadBMP("Data/Hero/cronog4.bmp");
gauche[4] = SDL_LoadBMP("Data/Hero/cronog5.bmp");
SDL_SetColorKey(gauche[0],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[0]->format,255,0,255,0));
SDL_SetColorKey(gauche[1],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[1]->format,255,0,255,0));
SDL_SetColorKey(gauche[2],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[2]->format,255,0,255,0));
SDL_SetColorKey(gauche[3],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[3]->format,255,0,255,0));
SDL_SetColorKey(gauche[4],SDL_SRCCOLORKEY , SDL_MapRGBA(gauche[4]->format,255,0,255,0));
SDL_Surface* bas[5];
bas[0] = SDL_LoadBMP("Data/Hero/cronob1.bmp");
bas[1] = SDL_LoadBMP("Data/Hero/cronob2.bmp");
bas[2] = SDL_LoadBMP("Data/Hero/cronob3.bmp");
bas[3] = SDL_LoadBMP("Data/Hero/cronob4.bmp");
bas[4] = SDL_LoadBMP("Data/Hero/cronob5.bmp");
SDL_SetColorKey(bas[0],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[0]->format,255,0,255,0));
SDL_SetColorKey(bas[1],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[1]->format,255,0,255,0));
SDL_SetColorKey(bas[2],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[2]->format,255,0,255,0));
SDL_SetColorKey(bas[3],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[3]->format,255,0,255,0));
SDL_SetColorKey(bas[4],SDL_SRCCOLORKEY , SDL_MapRGBA(bas[4]->format,255,0,255,0));
SDL_Surface* haut[5];
haut[0] = SDL_LoadBMP("Data/Hero/cronoh1.bmp");
haut[1] = SDL_LoadBMP("Data/Hero/cronoh2.bmp");
haut[2] = SDL_LoadBMP("Data/Hero/cronoh3.bmp");
haut[3] = SDL_LoadBMP("Data/Hero/cronoh4.bmp");
haut[4] = SDL_LoadBMP("Data/Hero/cronoh5.bmp");
SDL_SetColorKey(haut[0],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[0]->format,255,0,255,0));
SDL_SetColorKey(haut[1],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[1]->format,255,0,255,0));
SDL_SetColorKey(haut[2],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[2]->format,255,0,255,0));
SDL_SetColorKey(haut[3],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[3]->format,255,0,255,0));
SDL_SetColorKey(haut[4],SDL_SRCCOLORKEY , SDL_MapRGBA(haut[4]->format,255,0,255,0));
SDL_Surface* fixe[4];
fixe[0] = SDL_LoadBMP("Data/Hero/cronof1.bmp");
fixe[1] = SDL_LoadBMP("Data/Hero/cronof2.bmp");
fixe[2] = SDL_LoadBMP("Data/Hero/cronof3.bmp");
fixe[3] = SDL_LoadBMP("Data/Hero/cronof4.bmp");
SDL_SetColorKey(fixe[0],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[0]->format,255,0,255,0));
SDL_SetColorKey(fixe[1],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[1]->format,255,0,255,0));
SDL_SetColorKey(fixe[2],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[2]->format,255,0,255,0));
SDL_SetColorKey(fixe[3],SDL_SRCCOLORKEY , SDL_MapRGBA(fixe[3]->format,255,0,255,0));
SDL_BlitSurface(fullscreen,NULL,screen,NULL);
while ( !bQuit)
{
if(SDL_PollEvent(&))
{
switch(event.type)
{
case SDL_QUIT:

break;
}
}
keys = SDL_GetKeyState(NULL);
if ( keys[SDLK_UP])
{
y-=3*s;
rect1.y=y;
SDL_BlitSurface(haut[(y/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
if ( keys[SDLK_DOWN])
{
y+=3*s;
rect1.y=y;
SDL_BlitSurface(bas[(y/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
if ( keys[SDLK_LEFT])
{
x-=3*s;
rect1.x=x;
SDL_BlitSurface(gauche[(x/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
if ( keys[SDLK_RIGHT])
{
x+=3*s;
rect1.x=x;
SDL_BlitSurface(haut[(x/20)%5], NULL,screen,&1);
SDL_Flip(screen);
}
SDL_ShowCursor(1);
}
SDL_Quit();
return 0;
}

Ca marche ptet pas mais ton code est vraiment pourri. Tout est à refaire?. Pk tu me teste les touches au moment du quit ?

Vengeur41
Vengeur41
Niveau 10
26 février 2005 à 20:15:36

Ptit post juste pour vous avertir que j´ai fait une nouvelle version de mon renderer + editeur de map.

1- la map qui était jusque là un tableau à double dimention a été réduit à une dimention. On peut choisir la taille de la map en lancant l´exe de cette manière :
MapEdit largeur hauteur
Le programme se charge du reste. Mais pour revenir au tableau, pk supprimer une dimention ? Ben en gros je savais pas comment adapter proprement la table du tableau en fonction de la demande de l´utilisateur. Donc j´ai préféré faire une dimention pour allouer la mémoire ainsi :

tableau = ( unsigned int *)calloc(maph*mapw,sizeof(unsigned int));

2- Le renderer a suivi ; )

Vengeur41
Vengeur41
Niveau 10
26 février 2005 à 20:17:41

J´oubliais : si vous le voulez avec le code source, maillez moi, j´arrive plus à uploader -__-´ ( lycos + FileZilla).

Musashi001
Musashi001
Niveau 10
27 février 2005 à 00:51:07

Bon j´ai changé le flip, ainsi que la boucle
Maintenant mon perso bouge quand je veux
seul problème: lorsqu´il s´arette il disparait
c´est normal car je n´ai pas dit se qu´il se passait a ce moment la

Alors comment définir le moment ou mon pêrso s´arrete?
Je veux que lorsque qu´il soit arreter, selon son ancien déplacement, on voit une image qui lui corresponde.

Sinon, jeje, j´ai fait une seule bitmap ( selon les critères) sa taille est de 46x75 et j´ai essayé de l´utiliser, j´ai réussi mais je ne crois pas qu´utiliser une seule bitmap simplifiera mon code car lorsque ( par exemple) mon perso va a gauche, il y a 5 bmp qui se suivent et j´affiche tout sa grace à une seulement 2 lignes
rect1.x=x;

SDL_BlitSurface(gauche[(x/20)%5],NULL,screen,&
1);

alors qu´avec ta technique il en faudrait beaucoup plus ( même si je ne déclare qu´une seule ligne au départ)
x=2*w;
position.x=x; position.w=w; SDL_BlitSurface(crono,&,screen,&1);
x=2*h;
position.x=x; position.h=h; SDL_BlitSurface(crono,&,screen,&1);
x=3*h;
position.x=x; position.h=h; SDL_BlitSurface(crono,&,screen,&1);
x=4*h;
position.x=x; position.h=h; SDL_BlitSurface(crono,&,screen,&1);
x=5*h;
position.x=x; position.h=h; SDL_BlitSurface(crono,&,screen,&1);

c´est quand même plus long non?
Et si je veux quand même utiliser cette méthode, il faudrait que je sache comment on passe du temps, car sinon l´animation de mon perso sera bien trop rapide

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment