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

dnob700
dnob700
Niveau 10
22 février 2005 à 00:59:09

JYY : j´ai un bug avec ton tuto 2.1.2 ( le deuxième de sur la SDL).

quand j´utilise la deuxième procédure loadBMP ( celle qui charge inconditionnellement l´image en VRAM) la sortie est un mix entre l´image attendu et mon fond d´écran, et à chaque fois que je le lance c´est un peu différend.

je ne vois pas exactement d´ou est ce que ça pourrait venir.

c´est un bug de mon PC ou un problème connu avec la SDL ?
enfin voila, c´était pour le rapport de bug.

Tav
Tav
Niveau 5
22 février 2005 à 01:36:45

BONJOUR! Voila, j´essaye de faire un p´tit programme de carnet d´addresses... Au début, j´ai d´abord fait un programme qui marchait directement sur les fichiers : je modifiais et écrivait directement le fichier, je ne transferais rien en RAM... Après avoir eu des problemes pour faire une fonction pour modifier une fiche, quelqu´un m´a souffle que c´était plus simple avec des listes chaînées . .. Donc, je voudrais apprendre les listes chaînées...

J´ai compris que cela marchait avec une structure qui contenant un pointeur sur l´élément suivant ( liste simple, pas double) et l´element que l´on veut contenir. Perso, l´element suivant et l´element contenu sont pour moi des structures fiches déclarés comme suit ( avec le fichier d´implémentation):
[code]

  1. ifndef FICHE_H
  2. define FICHE_H

struct fiche
{
char nom[30], prenom[30], anniversaire[30], email[50];
};

  1. endif

[/code]

J´utilise dans ma structure des chaînes de caractères et nan des pointeurs de charactèeres ( char) car mon ordinateur me cause quelques problèmes si je fais un tel programme lors de l´éxécution...

Pouriiez-vous m´aidez, enfin m´expliquer comment créer et utiliser ces listes chaînées? Merci d´avance!

Infos: je boss en C++ et sous Dev-C++

jejej
jejej
Niveau 9
22 février 2005 à 09:01:19

ben . .. je crois qu´effectivement , il faut faire un pointeur comme ceci dans ta structure :

int *pnext; par exemple , et ensuite se débrouiller pour allouer de la mémoire a chaque nouvel élément de la liste . ..

si tu veux , j´avais trouve ca sur un tutoriel , mais vu que je l´avais recopie a la main , puis sur mon ordi en lisant le papier , j´ai du faire deux trois erreurs , car ca amrche pas comme il faut ( mais les grandes lignes sont la , c´est jsute que le programme est compliqué )

http://rafb.net/paste/results/330nXv65.html

JeanYvesYves
JeanYvesYves
Niveau 10
22 février 2005 à 09:03:22

dnob700 >
cela peut venir de plusieurs endroits, soit l´image a mal été chargée en VRAM ( aurais tu une vieille carte graphique ? ) mais c´est étrange, car dans ce cas, il ne devrait pas y avoir d´image du tout...
soit la résolution proposée fait également suffoquer la VRAM : essaie de baisser la résolution, voir de passer en 16 bbp au lieu de 32.

Soit sinon, peut etre que ça vient également du fait que les images ne sont pas noires par défaut : je m´explique :
en fait SDL crée donc 2 tampons de mémoires énormes, de la taille d´un écran. Quand tu flip(), ça en affiche un et te donne le controle de l´autre : finalement, ça change juste 2 pointeurs, quand tu reflipes, tu repasses de nouveau sur la premiere image, or, cette premiere image contient toujours le dessin que tu lui avais collé dedans : et oui, effacer l´image reviendrait a noircir un million de pixels, ce qui ralenti, c´est pour cela que l´image n´est pas effacé : ce que tu blitteras par dessus écrasera bien sur l´image d´avant.
Tu as donc 2 possibilités :
- soit tu noircis l´image en blittant des images noires, ou en faisant des acces directs en mémoire ( tres déconseillé)
- soit tu t´arranges pour blitter sur toute l´image ( c´est a ça que servent les images de décor :) ) et c´est ce qui est utilisé dans tous les jeux 2D :) Voila, je ne sais pas si j´ai répondu a ta question, précise si ce n´est pas le cas :)

Tav >
tu as 2 possibilités. Soit tu fais comme dit ton pote, qui a raison pour les listes chainées, a savoir que tu reprogrammes la structure toi meme.
Soit tu vas a la simplicité en utilisant une structure qui existe déja, et qui est connue par ton compilateur :) il s´agit de " list" des STL.
Jette un oeil sur mon tuto ( voir ma carte)
annexe D.

jejej
jejej
Niveau 9
22 février 2005 à 09:25:10

tiens JYY , j´ai trouve une idée pour ton tutorial sur la récursivite : ces fonctions qui s´appellent d´elles memes

je me rappelle plus trop , parceque je l´avais lu en diagonale , et peut etre que tu l´as change depuis , mais ton exemple sur le pgcd m´avait pas paru . .. essentiel

je m´etais dit : boah , encore un truc de plus qui sert a rien dans le cpp . ..

Mais , j´avais tort :)
En lisant un bouquin , hier , l´auteur parlait des arbres ( bon la g tjs pas compris ) et de la recursivite , et il prenait pour exemple la tour de hanoï
( en fait , c´est une sorte de pyramide d´anneau de tailles décroissantes , a faire passer un par un de l´autre cote . .. ca parait tres simple , mais c tellement chiant a faire qu´on abandonne vite )

Bon , alors je sais bien que tu ne m´as rien demandé , et si ca se trouve tu le sais deja , mais en fait , l´auteur crée une fonction de deux ( 2 ! ) lignes qui resout ce casse-tete , ce pour n´importe quel nombre d´anneaux . ..
et pour ca , il utilise la récursivité :)

Alors , je m´étais dit que c t peut etre un exemple plus parlant que le pgcd ?
enfin bon , en tout cas si ca interesse quelqu´un , je pourrais recopier le code ici . ..
parcequ´en fait , il apparait clairement que pour de nombreux cas d´intelligences artificielles , utiliser la récursivite est la seule solution , alors qu´on peut resoudre le pgcd a la maniere " troisieme" ?

JeanYvesYves
JeanYvesYves
Niveau 10
22 février 2005 à 09:52:44

je veux bien que tu le recopies s´il fait en effet 2 lignes, ça peut etre fort intéressant :)

En effet, la récursivité permet de faire des choses tres difficiles a faire en itérative ( souvent, on peut la remplacer par un while et une structure de pile mais bon...)

Tiens, si tu veux, j´ai un exemple également de récursivité, chapitre G.9 :)

jejej
jejej
Niveau 9
22 février 2005 à 10:09:10

void Hanoi( int n , int s , int d , int o )
{
if ( n>0 )
{
Hanoi( n-1 , s , o , d ) ;
cout<<"moving " << n < < " from " < < s < <" to " < < d < < endl;
hanoi( n-1 , o , d , s ) ;
}
}

int main()
{
int n;
cout<<"number of discs ? ";
cin>> n;

Hanoi( n , 1, 3 , 2 ) ;
/ * this says : move n discs from pillar 1 onto pillar 3 , where pillar 2 is empty */

cin.get();
return 0;
}

do not run this example with more than 16 discs ( blabla ) ( si j´ai bien compris , le nombre de mouvements necessaires double pour chaque disqe en plus ) . .. 131071 move to solve the probleme for 17 discs ( en fait , j´ai essaye avec 56 , mon ordi a failli planter . .. )

JeanYvesYves
JeanYvesYves
Niveau 10
22 février 2005 à 10:26:26

normal : ça fait péter la pile :)
c´est a dire que tu lui demandes d´empiler des dizaines de milliers d´appels de fonctions.
Au bout d´un moment, ton ordi rale :)

Tav
Tav
Niveau 5
22 février 2005 à 16:21:04

Lol... Faire peter un ordi avec un algo... C´est vraiment possible?

Bon, merci JY² ( je peux t´appeler comme ca plz?). Ton site est super, ton annexe est bien car elle s´addresse bien aux débutants :-) . Mais je n´ai qu´une remarque: il n´y a pas de liens pour aller voir la suite d´une annexe par exemple! Dommage, mais tes explications sont quand meme claires... Et une petite question: la fonction pour afficher une liste, est-elle déjà incluse dans la STL list? Ou c´est toi qui l´a rajoutée? Et dans les deux cas, comment mettre un ´system("PAUSE>nul");´ pour mettre une pause entre chaque affichage ( mon utilisateur doit pouvoir lire les infos? Merci d´avance. Tav´

Rikkuman4
Rikkuman4
Niveau 10
22 février 2005 à 16:49:43

salut, dois dois faire super gros boulet à posé des questions tout le temps arf, c´est comme sa et puit zute :-d

je n´est pas compris à quoi sa sere
typedef struct frac fraction;
typedef unsigned int uint;
dans le chapitre 1.12
1.12. Renommer un type. ( typedef)

pouvez-vous m´expliquer plus en detaille ? thx à vous :-)))

jejej
jejej
Niveau 9
22 février 2005 à 16:52:45

Si j´avais le temps et la documetation nécessaire, je serais p´t´etre Hacker, mais un bon, pas un mauvais lol

, et la , bah j´en ai pas assez c tout . ..mouais . .. en tout cas , espere pas faire peter un ordi avec cet algorythme hein ^^
je crois que c t une metaphore , la pile c juste de la mémoire

Tu peux plus faire de mal a un ordi ( je veux dire , cote hardware ) maintenant , y a trop de securites ( enfin j´espere )

MrGoTo
MrGoTo
Niveau 8
22 février 2005 à 17:01:31

Rikkuman4>>
Le mot clé typedef sert à definir ton propre type.
Tu sais pas exemple ce que fais ungined et short.
Maintenant les ecrire à chaque fois c´est embetant. On va se faire notre propre type. usint. Pour cela on ecrit la ligne suivante dans son source ( en general plutot dans un header).
typedef unsigned short int usint;
Ca s´utilise de la façon suivante:
typedef [blablabla] etiquette;
Et après tu as ton type.
Un exemple dans la bibliothèque standard est le type FILE. J´espère t´avoir aidé.

Quand au petage de pile ça ne fait evidemment pas une explosion.

MrGoTo
MrGoTo
Niveau 8
22 février 2005 à 17:02:08

Tu sais pas exemple ce que fais ungined et short.

> unsigned**

JeanYvesYves
JeanYvesYves
Niveau 10
22 février 2005 à 17:20:00

Tav >
ben dans le tuto, la fonction pour afficher la liste est juste au dessus, et oui, c´est moi qui l´ai faite et elle est sous tes yeux lol ! regarde bien tout le programme, :rire:
pour faire des system pause, a toi de modifier cette fonction :)

pour la page HTML elle meme, quand le tuto sera plus gros, je mettrai des < A HREF="#paragraphe"> qui permettront de sauter aux annexes :)

Evidmement, péter la pile est une expression, quand c´est trop, l´ordi te dit " stack overflow" et puis c´est tout :) --> message d´erreur tout simplement :)

[]king[]
[]king[]
Niveau 3
22 février 2005 à 18:29:52

Salut a tous !

J´ai un petit probleme avec Irrlicht!
Pour faire tourner mon pesonnage je fais ça :
r = perso->getRotation();
r.Y +=1;
perso->setRotation(r);

Mais quant je le deplace comme ceci :
v = perso->getPosition();
v.Z +=0.4;
perso->setPosition(v);
Il ne se deplace pas selon la direction de la rotation, donc je veux savoir comment faire pour qu´il avance devant lui ?

Merci d´avance :)

JeanYvesYves
JeanYvesYves
Niveau 10
22 février 2005 à 18:36:59

toute une histoire de matrices :)
regarde ce que te propose Irrlicht, esasie de te placer dans le repere de ton bonhomme
car la tu dois etre dans le repere global.

dnob700
dnob700
Niveau 10
22 février 2005 à 19:08:53

bon, puice qu´il le faut, je me suis mis à faire mon pong avec la SDL.

pour celà, je m´ispire de tes tuto jyy.

mais j´ai une question : dans le tuto 3, à chaque boucle, tu blit tout le firstscreen sur le screen.
Est ce que ça n´irait pas plus vite de ne blitter que la surfce qui était sous la balle ou alors est ce que c´est déjà gérer par la lib à la manière de BeginPaint() de l´API win32 ( c´est à dire qu´il désactive l´écriture là où les choses n´ont pas été modifiées) ?

jejej
jejej
Niveau 9
22 février 2005 à 19:20:43

Dnob700 : ouais , tu peux dire quel surface de l´ecran il faut reafficher

mettons que tu aies la surface BG en fond d´ecran

que ta balle soit a Xpos , Ypos , et qu´elle fasse 15*15 pixels

bah tu peut faire un
SDL_Rect Ecran;
Ecran.x = Xpos-1; / / on depasse un peu . ..
Ecran.y = Ypos-1;
Ecran.w = 15; / / taille de la balle
Ecran.h = 15;

et apres tu blittes
SDL_BlitSurface ( balle , & , screen , & )
avec balle la surface qui contient ton image
et B ta structure qui contient Xpos et Ypos . ..

jejej
jejej
Niveau 9
22 février 2005 à 19:22:16

mince désolé

SDL_BlitSurface ( BG , & , screen , & )
avec BG la surface qui contient ton image

et & la structure qui contient les coordonnées où afficher de ton image . ..

je m´embrouille un peu dsl :p)

jejej
jejej
Niveau 9
22 février 2005 à 19:25:23

tiens , si ca t´interesse j´avais trouve ca

void DrawIMG(SDL_Surface *img, int x, int y, int w, int h, int x2, int y2)
{
SDL_Rect dest;
dest.x = x;
dest.y = y;
SDL_Rect dest2;
dest2.x = x2;
dest2.y = y2;
dest2.w = w;
dest2.h = h;
SDL_BlitSurface(img, &2, screen, &);
}

tu lui fournit l´image a afficher , les coordonnees où l´afficher sur l´ecran , les coordonnees du coin haut / gauche de l´image que tu veux reafficher , et la largeur / hauteur du rectangle a reafficher . ..

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