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++

Ptival
Ptival
Niveau 10
11 mai 2005 à 21:40:00

Déjà types ton main sinon c´est pas propre :)

Ensuite c´est normal que la boucle interne ne se réalise pas, prenons l´exemple d´une entrée de l´utilisateur : 2 2

x == 2 -> Supérieur à 0
y == 2 -> Supérieur à 0
y--; -> y == 2
x == 2 -> Supérieur à 0
y == 1 -> Supérieur à 0
y--; -> y == 1
x == 2 -> Supérieur à 0
y == 0 -> Supérieur à 0
x--; -> x == 1
x == 1 -> Supérieur à 0
y == 0 -> Non supérieur à 0
x--; -> x == 0
x == 0 -> Non supérieur à 0

Fin

Tu peux voir ci-dessus le problème de ton code : Après la première boucle de x, y n´est pas remis à sa valeur d´entrée utilisateur, mais il vaut 0 :) Donc les ligens suivantes affichent 0 fois un " X"

Pour y remédier, tu peux passer par une autre variable qui gardera la valeur de y pendant qu´une seconde fera la valeur de la boucle.

Ensuite il serait plus...léger d´utiliser la boucle
for(initialisation;condition;incrémentation)
Enfin c´est juste une question de goût, mais ça te résumerait un peu l´écriture.

Ptival
Ptival
Niveau 10
11 mai 2005 à 21:45:20

x == 2 -> Supérieur à 0
y == 2 -> Supérieur à 0
y--; -> y == 1
x == 2 -> Supérieur à 0
y == 1 -> Supérieur à 0
y--; -> y == 0
x == 2 -> Supérieur à 0
y == 0 -> Supérieur à 0
x--; -> x == 1
x == 1 -> Supérieur à 0
y == 0 -> Non supérieur à 0
x--; -> x == 0
x == 0 -> Non supérieur à 0
Fin

( Petite correction :lol: )

Matbox2
Matbox2
Niveau 7
12 mai 2005 à 20:53:14

Ok merci j´ai compris mon erreur :)

dynoplasmma
dynoplasmma
Niveau 9
13 mai 2005 à 22:58:56

Bonjour pour les anglophobles, hello pour les anglophones,Dans le code que je vais mettre, il s´affiche une image 1 de fond,

une image 2 a gauche

une image 3 a droite

Tout s´affiche mais le probleme est que l´image 2 doit bouger, et q´elle ne bouge pas. Voici le code :

  1. include < SDL/SDL.h>

SDL_Surface *screen;
SDL_Surface *firstscreen;
SDL_Event event;
SDL_Rect rect1;
Uint8* keystate;
int x,y ;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_WM_SetCaption("Ma fenetre",NULL);
SDL_ShowCursor(0);
}

void waitkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_RETURN) return;
}
}
}
}

int main(int argc , char **argv)
{
SDL_Rect rect1;
init_SDL();
firstscreen = SDL_LoadBMP("aire.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;

SDL_BlitSurface(firstscreen,NULL,screen,&1);

firstscreen=SDL_LoadBMP("barre joueur 1.bmp");
rect1.x=0;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

rect1.x=x;
rect1.y=y;
keystate=SDL_GetKeyState(NULL);
if(keystate[SDLK_DOWN])y++;
if(keystate[SDLK_UP])y--;
SDL_FreeSurface(screen);

firstscreen = SDL_LoadBMP("barre joueur 2.bmp");
rect1.x=986;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

SDL_Flip(screen);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

Si quelqu´un pourrait m´aider, ce serai sympa, car quand je saurais ca, il me restera d´autres trucs, mais quand je saurais les autres trucs aussi, je voudrais faire plein de mode different pour le ti jeu fait, ce qui est facile si je connais tout, mais qui prend un petit peu de temps.Vous comprenez ?
:merci: d´avance et bonne route !

Ciao...

dnob700
dnob700
Niveau 10
13 mai 2005 à 23:10:52

et à quel endroit est ce que tu dit à l´image 2 de bouger ?

ton programme est absolument linéaire, pas la moindre boucle, etc...

Et puis tu as beaucoup trop de variables différentes, tu ne crois pas que tu auraios pu tout faire avec une seul variable ?
sérieusement, soit pas radin avec ta mémoire utilise unevariable firstscreen pour l´image 1 si tu veux mais ensuite utilise d´autre variable.

dynoplasmma
dynoplasmma
Niveau 9
13 mai 2005 à 23:14:53

En faait je debute, donc je ne suis pas doué, tu vois.

Sinon, c´est la que je lui dit de boger :
rect1.x=x;
rect1.y=y;
keystate=SDL_GetKeyState(NULL);
if(keystate[SDLK_DOWN])y++;
if(keystate[SDLK_UP])y--;
SDL_FreeSurface(screen);

Je vais donc essayer de mettre ce truc dans une boucle et je verrais si ca marche, :merci: pour ton poste, car avant, je parlais tout seul.

dynoplasmma
dynoplasmma
Niveau 9
15 mai 2005 à 11:16:39

Bijour, Es ce que c´est mieux d´utiliser une variable pour chaque image ? :question:
Sinon, j´ai changé mmon programme et j´ai mit l´action de bouger dans ne boucle, voyez par vous meme :

  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Surface* firstscreen;
SDL_Event event;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_ShowCursor(0);
}

void waitkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_RETURN) return;
}
}
}
}

int main(int argc , char **argv)
{
SDL_Rect rect1;
init_SDL();
firstscreen = SDL_LoadBMP("aire.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;

SDL_BlitSurface(firstscreen,NULL,screen,&1);

firstscreen=SDL_LoadBMP("barre joueur 1.bmp");
rect1.x=20;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

{
SDL_Event event;

SDL_WaitEvent(&);

switch ( event.type)
{
case SDLK_UP:
printf("La touche %s a été préssée!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
}
}

firstscreen=SDL_LoadBMP("barre joueur 2.bmp");
rect1.x=987;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;

SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY,SDL_Ma

pRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

SDL_Flip(screen);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

:merci: d´avance a ceux qui me repondront.

sonic66
sonic66
Niveau 10
16 mai 2005 à 16:44:35
  1. include < iostream>

using namespace std;

int main()
{
int i=0;
char t[100];
cout < < " voila , ecris une phrase qui finira par 0" < < " \n";
do
{
cin > > t[i];
}while(i++ ! = 0);
cout < < " voila la phrase que tu as tape jusqu´a 0 \n";
do
{
cout < < t[i];
}while(i++ ! = 0);
cout < < " \n";
system("pause");
return 0;
}

bon , ce petit prog ( pour faire un test ^^) est censé me faire ecrire une phrase et me la réecrire j´usqua l´endroit ou il y a un 0 , ok , caa buggue , jai essayé dans
}while(i++ ! = 0);

de mettre a la place

}while(i++ ! = " 0");

ou encore

}while(i++ ! = ´0´); ^^

sans resultat , jai aussi essayé de mettre

do
{
cin > > t[i];
i++;
}while(i++ ! = 0);

sans resultat..........

d´ou vient l´erreur?

sonic66
sonic66
Niveau 10
16 mai 2005 à 16:50:27

je croit que c du fait que g miit mon 0 comme ca , sans rien autour ( "0" par exemple) mais sinon , ca buggue

sonic66
sonic66
Niveau 10
16 mai 2005 à 16:56:24

g un peu arrangé , mais ca marche pas encore , quand je ecris la phrase avec un 0 a la fin , je met entré et y se passe rien :snif:

  1. include < iostream>

using namespace std;

int main()
{
int i=0;
char t[100];
cout < < " voila , ecris une phrase qui finira par un 0" < < " \n";
do
{
cin > > t[i];
}while(t[i++] ! = 0);
cout < < " voila la phrase que tu as tape jusqu´au 0 \n";
do
{
cout < < t[i];
}while(t[i++] ! = 0);
cout < < " \n";
system("pause");
return 0;
}

je me suis dit :
mais oui! c con car la ca ragardera dans le char qui est apres celui que jai tapé si ya pas un 0! :)
do
{
cin > > t[i];
}while(t[i++] ! = 0);

alors g mit ca :

do
{
cin > > t[i];
i++
}while(t[i--] ! = 0);

mais ca marche pas aussi :snif2:

sonic66
sonic66
Niveau 10
16 mai 2005 à 17:06:10

jai essayer de remplacer le 0 par un . , mais en fait , quand on met le . tout seul comme jai fait avc le zero , evidement ca compile pas , donc l´erreure vien de la ^^

dnob700
dnob700
Niveau 10
16 mai 2005 à 17:06:14

while ( t[i++] ! =0)
{
cin > > t[i];
};

Est 10 fois plus propre que cette horeur sans nom.

là ça ne peut pas marcher car a chaque boucle tu augmente i de 1 et tu le diminue de 1, en définitive il n´a pas bouger.
do
{
cin > > t[i];
i++
}while(t[i--] ! = 0);

Mais le bout de code en haut ne marchera pasnon plus, car tu as oublié de remettre i à 0 après avoir entrée la première chaine de caractère.

( il faudrait aussi que par endroit tu remplace les t[i++] par t[++i] mais bon, tant pis).
Et puis que tu fasse while t[i++]!=0 && i<100)
pour pas sortir du tableau.

dnob700
dnob700
Niveau 10
16 mai 2005 à 17:07:10

excuse moi, partout tu doit aussi remplacer 0 pars ´0´ ( entre apostrophe) pour dire que c´est un caractère.

sonic66
sonic66
Niveau 10
16 mai 2005 à 17:10:30

a! merci!

et pour le do , ta raison ^^ mais je voulais tester ^^

sonic66
sonic66
Niveau 10
16 mai 2005 à 17:14:23

eet merde!!!!

jai voulut enlever le do
mais voila :

  1. include < iostream>

using namespace std;

int main()
{
int i=0;
char t[100];
cout < < " voila , ecris une phrase qui finira par un 0" < < " \n";
while(t[i++] ! = ´0´);
{
cin > > t[i];
}
cout < < " voila la phrase que tu as tape jusqu´au 0 \n";
i=0;
while(t[i++] ! = ´0´);
{
cout < < t[i];
}
cout < < " \n";
system("pause");
return 0;
}

je marque une phrase , et c

sonic66
sonic66
Niveau 10
16 mai 2005 à 17:16:06

ca m´ecris que le premier caractere de celle ci!!
en faait , je comprend l´erreur mai je c pas l´arranger :snif: , je manque d´experience :snif:

sonic66
sonic66
Niveau 10
16 mai 2005 à 17:27:35

je vois pas

lalelale
lalelale
Niveau 5
16 mai 2005 à 19:59:14

Ben moi, j´ai un problème dans l´utilisation de la SDL. En effet, quand je bouge quelque chose, il y a une vieille traînée qui reste. Je fais comment pour l´enlever ?

Je vais regardert ton code Sonic ; ).

lalelale
lalelale
Niveau 5
16 mai 2005 à 20:16:12

Bon, alors sonic, pour ton code il y n´y a presque rien. Tout d´abord, au lieu de faire un tableau de caractère au début, je te conseille de faire un simple pointeur de caractère. Après, tu peux l´utiliser pareil qu´avant, mais ça a l´avantage de ne pas avoir à afficher lettre par lettre mais directement la cha^pine entière. Ensuite, après le wxhile nul besoin de mettre un ´;´.

En code, ça donne ça :

  1. include < iostream>

using namespace std;

int main()
{

char* t;
cout<<" voila , ecris une phrase qui finira par un 0"<<" \n";
while(t[i++]!=´0´)
{
cin>>t[i];
}
cout<<" voila la phrase que tu as tape jusqu´au 0 \n"<<t<<´\n´;

system("pause");
return 0;
}

Bon, j´ai pas compilé, mais je crois que ça peut marcher ; ).

sonic66
sonic66
Niveau 10
16 mai 2005 à 20:57:04

merci!
mais pour le coup du pointeur , jai pas trop comris ^^

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