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

J´aide les personne en C/C++

Giga-Nova
Giga-Nova
Niveau 9
09 mars 2005 à 16:08:43

Comment fait on pour afficher plusieurs images
qui ne sont pas de fond
( ex: la raquette et la balle)

on fait plieurs rectangles

SDL_Rect rect1,(et le rect2 et 3 ici) ? ?

JeanYvesYves
JeanYvesYves
Niveau 10
09 mars 2005 à 16:10:02

il faut faire plusieurs SDL_Blit surtout :)

Giga-Nova
Giga-Nova
Niveau 9
09 mars 2005 à 16:12:56

sur la SDL ca ne me parait pas très clair tout ca

on a un code et on doit / copier/coller betement
sans comprendre...

thesuperbest
thesuperbest
Niveau 8
09 mars 2005 à 16:14:03

jejej > Mon jeu rame parce qu´il réactualise 300 rectangles par frame, ce qui est un peu beaucoup...
Ton astuce me semble bonne mais maintenant, au lieu que ce soit le perso qui laisse un tâche c´est ma texture d´herbe qui laisse une grosse trainée verte irrégulière.

sonic66
sonic66
Niveau 10
09 mars 2005 à 16:24:02

if ( event.type == SDL_KEYDOWN) / / on appuie sur une touche ?
{
if ( event.key.keysym.sym == SDLK_RETURN) return; / / c´est " RETURN" ?
}
donc si le type de cet event est une touche tapée au clavier , alors si cette touche c return , ben on quitte!

plus que 2 petites question : event.key.keysym.sym cest quoi tous ces . key.keysym.sym

et le return a la fin pourquoi il est placé a la fin d´une instruction et non pas comma ca :
r = . ..........;
return r;
ou encore
return a+b;

JeanYvesYves
JeanYvesYves
Niveau 10
09 mars 2005 à 16:25:06

Thesuperbest > 300 blit par seconde, c´est peu : ton ordi devrait gérer ça les doigts dans le nez
est ce que tu as bien mis tes tiles en VRAM ?

JeanYvesYves
JeanYvesYves
Niveau 10
09 mars 2005 à 16:28:10

sonic66 >

pour savoir pourquoi key.keysym.sym, c´est ainsi que sont faites les structures :
regarde la doc sur la structure event :
http://sdldoc.csn.ul.ie/sdlevent.php

et navigue :)

Sinon, pour le return, sans rien derriere, c´est parce que la fonction renvoie " void" donc c´est :
return RIENDUTOUT;

donc

return;

thesuperbest
thesuperbest
Niveau 8
09 mars 2005 à 16:28:51

Ce n´est pas 300 blit par secondes ! Mais par frame ! Mon ordi arrive à gérer ça avec 40 FPS soit 12000 Blit par secondes mais je connais quelqu´un chez qui c´est limité à 15 FPS soit 4500 Blit par secondes.

JeanYvesYves
JeanYvesYves
Niveau 10
09 mars 2005 à 16:33:12

ça devrait pourtant tourner ! !

essaie de voir et de compiler mon tuto " scrolling a la souris"
il doit faire autant de frame par seconde que toi, voir +, est ce que ça rame chez toi aussi ? ( ou alors chez ton pote ? )

sonic66
sonic66
Niveau 10
09 mars 2005 à 16:35:31

et pour moi sinon?

Giga-Nova
Giga-Nova
Niveau 9
09 mars 2005 à 16:36:03

bon, j´ai reussi a afficher mon fond et ma balle et 1 raquette pour mon pong, ( ce qui doit ette déja bien pour qqun qui porg depuis meme pas 1 semaine
je peut faire bouger ma raquette dans les 4 dierction avec
( event.key.keysym.sym == SDLK_

mais now je dois gérer les colisions c chaud non ? ?

sonic66
sonic66
Niveau 10
09 mars 2005 à 16:39:02

en fait celui qui a fait la sdl a utilisez des struct et donc nous pour certaines operation on doit utiliser des struct! merci

ps: moi et l´anglais ben ca fait 2

JeanYvesYves
JeanYvesYves
Niveau 10
09 mars 2005 à 16:41:44

pour un pong, c´est tout con :

tu regardes simplement si le x de ta balle est < 10 par exemple, ou alors > MAXRESOL-10
( tu vois ce que je veux dire)
si c´est le cas, tu regardes le sens :
si tu es < 10 et que tu vas a gauche, alors il faut tester la collision
si tu es > MAXRESOL-10 et que tu vas a droite, alors il faut tester la collision :

pour tester, dans ce cas, tu peux simplifier, tu regardes juste si :

yraquette<yballe<yraquette+hauteurraquette

voila, c´est tout ! si c´est bon, tu rebondis : tu inverses le sensx
sinon : perdu.

ensuite, pour faire rebondir en haut et en bas de l´écran :

si yballe<0 && ysens<0 --> ysens = -ysens;

( ysens est le sens de la balle)
( yballe est la position de la balle)

si yballe>MAXY && ysens>0 --> ysens = -ysens;

enjoy !

JeanYvesYves
JeanYvesYves
Niveau 10
09 mars 2005 à 16:43:35

sonic66 > voila, tu explores les structures internes de SDL.
le mec a appelé ses champs comme ça :) donc voila !

Giga-Nova
Giga-Nova
Niveau 9
09 mars 2005 à 16:44:24
  1. include < SDL/SDL.h>

SDL_Surface* screen; // l´ecran principale
SDL_Event event; // gestion d´evenement

void init_SDL() // initialise SDL
{
SDL_Init(SDL_INIT_VIDEO); // preapare SDL
screen = SDL_SetVideoMode(800, 600, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); / / mode graphique
SDL_ShowCursor(0); / / eneleve la souris
}

SDL_Rect Rect(int x,int y,int w=0,int h=0) // pour faire un rectangle plus vite
{
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) / / voir tutorial 2.1.2
{
SDL_Surface* f = SDL_LoadBMP(fichier); // charge l´image dans f en RAM
SDL_Surface* r=NULL;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);// cree une image en VRAM
if ( r==NULL) vram=0; // Si plus de place en VRAM, alors r= NULL.
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0); / / cree une image en VRAM
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&); // copie l´image f de la RAM vers firstscreen en VRAM
SDL_FreeSurface(f); / / supprime la surface f : inutile maintenant --> libere la mémoire
return r;
}

int main(int argc , char **argv)
{
int s=1; / / sera le sens de déplacement de l´image : 1 = droite, -1 = gauche
int sx=1,sy=1; / / sens de déplacement en x et en y
SDL_Rect rect1,rect2; // structure rectangle ( contiendra la position de la balle pour rect1.x et rect1.y
SDL_Surface* firstscreen; / / tampon temporaire
SDL_Surface* balle;
SDL_Surface* raquette;

int fini=0;
init_SDL(); // initialise ( plus haut)
/ / on dessine

rect1.x = 0;
rect1.y = 0;

rect2.x = 0;
rect2.y = 0;

firstscreen=LoadBMP("background.bmp");
balle=LoadBMP("balle.bmp");
raquette=LoadBMP("raquette.bmp");

SDL_SetColorKey(balle,SDL_SRCCOLORKEY , SDL_MapRGBA(balle->format,255,0,255,0));
SDL_SetAlpha(balle,SDL_SRCALPHA,128);
while(1)
{
SDL_PollEvent(&); / / récupere l´evenement suivant
if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_RETURN) / / si c´est l´appui d´une touche et que C return
break; / / on sort du while.

rect1.x+=3*sx;
rect1.y+=3*sy;

if ( rect1.x<0) sx=1;
if ( rect1.y<0) sy=1;
if ( rect1.x>770) sx=-1;
if ( rect1.y>570) sy=-1;

if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_UP) rect2.y-=3;
if ( event.key.keysym.sym == SDLK_DOWN) rect2.y+=3;
}

if ( rect2.x<0) sx=1;
if ( rect2.y<0) sy=1;
if ( rect2.x>770) sx=-1;
if ( rect2.y>570) sy=-1;

SDL_BlitSurface(firstscreen,NULL,screen,NULL); // colle l´image sur l´écran, a la position rect1, donc surtout a x pour la coordonnée x.
SDL_BlitSurface(balle,NULL,screen,&1);
SDL_BlitSurface(raquette,NULL,screen,&2);

SDL_Flip(screen); // affiche la prochaine frame
}
SDL_ShowCursor(1); // reactive la souris
SDL_Quit(); // quitte SDL
return 0; // quitte le programme
}

voila ca donne ca mais ma raquette ( rect2)
peut sortir du champ de vision et je ne trouve pas
comment interdire cette action

PS: non dsl jyy je comprend rien

JeanYvesYves
JeanYvesYves
Niveau 10
09 mars 2005 à 16:49:35

ben c´est pas dur :

tu places qq part un :

if ( rect1.x<10 && sx==-1)
{
if ( rect2.y<rect1.y && rect1.y<rect2.y+rect2.h)
{
sx=1;
}
else / / dernier if
{
/ / joueur perd
}
}

et pour la raquette qui reste, c´est simple :

avant de faire aveuglément rect2.y+=3;
tu la protege par un if :

if ( rect2.y>10) rect2.y+=3;

thesuperbest
thesuperbest
Niveau 8
09 mars 2005 à 16:54:51

JYY > Le tuto de scrolling à la souris tourne bien, il est fluide, je n´ai pas mesurer le nombre de FPS mais je pense qu´il est plus rapide.

Voici mon code :

http://forumftp1.site.voila.fr/tsRPG.rar

Je sais, c´est un peu long . ..

BigGamer95
BigGamer95
Niveau 10
09 mars 2005 à 17:05:50

JYY, tu as reflechi au probleme sur mon programe???

Giga-Nova
Giga-Nova
Niveau 9
09 mars 2005 à 17:39:01

les colisionq marche à merveille encore merci jyy

:merci: à toi ô programmeur professionnel

charlostm
charlostm
Niveau 3
09 mars 2005 à 17:55:56

je voulait savoir si pour créer un jeu(pong) il fallait que le logiciel c++ , ou il faut aussi paint shop , enfin des logiciel comme ça, c´est à dire que c++ n´est que pour l´IA , les bases , ce qui fait marché le jeu et paint shop pour les graphismes qui bougeront grace à C++
bye :ok:

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