Bonjour à tous j'aimerais savoir si SDL_HWSURFACE ou SDL_DOUBLEBUF peuvent faire buguer certaines cartes graphiques parceque pour un programme tout simple programmé avec SDL j'ai deux personnes sur des pc différents qui reboot après écran bleu.
Ou sinon est ce que certains ordis ne supportent pas SDL ?
C'est vraiment un bout de code tout simple, il passe bien chez moi. Je comprends pas pourquoi l'exe saute sur les autres ordis.
Le vilain en question :
http://rafb.net/p/d0XLiu14.html
ajoute un peu de code pour verifier que les images sont bien chargée. Possible que le programme plante parcque les images sont pas la et que ca manipule ensuite des pointeurs nuls.
Ben si, les images sont présentes. Le programme marche sur mon ordi et ne fonctionne pas sur les ordis de ceux qui le telechargent (à quelques exceptions près). C'est un problème de carte graphique je crois donc ça se rapporte surement à la configuration de SDL.
Enfin je pense. J'en sais rien pour l'instant je patauge.
Voila je recherche un ou plusieurs programmeur (expérimente) a pour un projet de survival horror en 3d.nous somme deja une quinzaine dans notre team dont artiste 2d ,3d scénariste,chef de projet...mais on est en pénurie de programmeur.
Bonjour à tous!
Il y a peur j'ai décider d'essayer d'apprendre le langage c c++!
En me servant du tutoriel du site du zéro ! Je connais pour l'instant que les choses les plus simples uniquement sur les création de programme par la console d'appliation. Je connais donc les ligne simple comme "printf" "scanf" "les variables" "les conditions if else" etc
Donc j'essaye ici de faire un premier programme basique, un calculatrice J'ai rentrer toutes les lignes tu programme mais sa ne fonctionne pas comme je veux!
je vous montre le code:
int main(int argc, char *argv[])
{ long choix = 0 ;
long chiffre1 = 0;
long chiffre2 = 0;
long resultat = 0;
printf("====calculatrice==== \n");
printf(" quelle calucule voulez vous faire ?\n");
printf(" 1 une mutliplication\n");
printf(" 2 une soustraction \n");
printf(" 3 une addition ?\n");
printf(" 4 une division \n");
scanf("%ld", &choix);
switch (choix)
{
case 1:
resultat = (chiffre1 * chiffre2);
printf("une multiplication\n");
printf("rentrez le chiffres1!\n");
scanf("%ld", &chiffre1);
printf(" rentrez le chiffre 2\n");
scanf("%ld", &chiffre2);
printf("donc %ld multiplier par %ld est egal a %ld\n", chiffre1, chiffre2, resultat);
break;
case 2:
resultat = (chiffre1 - chiffre2);
printf(" 2 une soustraction \n");
printf("rentrez le chiffres1!\n");
scanf("%ld", &chiffre1);
printf(" rentrez le chiffre 2\n");
scanf("%ld", &chiffre2);
printf("donc %ld moin %ld est egal a %ld\n", chiffre1, chiffre2, resultat);
break;
case 3:
resultat = (chiffre1 + chiffre2);
printf(" une addition ?\n");
printf("rentrez le chiffres1!\n");
scanf("%ld", &chiffre1);
printf(" rentrez le chiffre 2\n");
scanf("%ld", &chiffre2);
printf("donc %ld plus %ld est egal a %ld\n",chiffre1, chiffre2, resultat);
break;
case 4:
resultat = (chiffre1 / chiffre2);
printf(" 4 une division \n");
printf("rentrez le chiffres1!\n");
scanf("%ld", &chiffre1);
printf(" rentrez le chiffre 2\n");
scanf("%ld", &chiffre2);
printf("donc %ld diviser par %ld est egal a %ld \n",chiffre1, chiffre2, resultat);
break;
default:
printf(" Comprend pas
\n");
break;
}
system("PAUSE");
return 0;
}
alors voila le premier probleme c'est que lorsque que je veux choisir la division (donc 4) le programme bug (envoyer ne pas envoyer)
mais ensuite c'est que peut importe les chiffre que je rentre le résultat sera toujours 0 ![]()
par exemple je choisi l'addition
je rentre 1 en chiffre 1, je rentre 2 en chiffre 2.
et la sa me met le resultat de 1 plus 2 est 0
je voix pourtant vraiment pas ou sa cloche si quelqu'un pourrait m'expliquer merci :D
tous tes problèmes viennent du meme endroit :
tu fais le calcul AVANT de récupérer les chiffres de l'utilisateur.
Au moment ou tu fais les calculs, c'est a dire les lignes suivantes :
resultat = (chiffre1 * chiffre2);
resultat = (chiffre1 + chiffre2);
resultat = (chiffre1 - chiffre2);
resultat = (chiffre1 / chiffre2);
chiffre1 et chiffre2 valent toutes les deux 0
Il faut donc que tu déplace ces lignes APRES les scanf.
Le bug de la division vient du fait qu'il est impossible de diviser par 0 -> bug
sinon pour le resultat qui est toujours 0 c'est parce que :
0*0 = 0+0 = 0-0 = 0
Bon courage pour la suite de ton apprentissage
J'ai enfin reçu le livre de K&R
![]()
Je ressuscite le topic pour savoir si quelqu'un a une idée de comment faire un nombre aléatoire en C, sur un long int ou un long long int (la fonction rand() n'allongeant que jusqu'à 32767) ?
Merci
!
Je ne sias pas de combien de bit de precision tu as besoin par ce que la taille de long int depend des machines et des compilateur.
la fonction drand48 (et derive, voir man 3 drand48 ) te rends 32 aleatoires.
si tu as besoin de 64 bits, tu peux combiner plusieurs appel a drand48 du genre:
u32 a = lrand48();
u32 b = lrand48();
u64 res = ((u64)a)<<32 & b;
Note, je ne pense pas que tu ais de garanti statistique sur res.
Merci de ta réponse.
Mais cette fonction est dans stdlib.h ?
Là je suis sous windows donc j'utilise le compilateur de Code::Blocks, et il ne la reconnaît pas ?
extrait de man drand48:
CONFORMING TO
SVr4, POSIX.1-2001.
NOTES
These functions are declared obsolete by SVID 3, which states that rand(3) should be used instead.
Tu peux hacker de la meme facon a partir de rand, verifie le nombre de bit aleatoire genere par rand.
Oui en fait le plus simple c'est de faire cette fonction :
long long int randl32 ()
{
long long int i,tmp,tot;
tot=rand()%2;
tmp=1;
for(i=0;i<31;i++)
{
tot+=(rand()%2 * (tmp *= 2));
}
return tot;
}
(génère 32 zéro ou un avec rand(), et les recolle en un décimal)
Pas sûr que ça ait le coût le plus faible mais pour le coup c'est pas grave.
Raaaah, cette fonction semble légèrement défectueuse...
Sur un panel de 1000 nombres (de 0 à 999), il en manque toujours une dizaine (jamais les mêmes) qui ne sont pas trouvés, que ce soit en appelant la fonction cent mille fois ou cent millions de fois, une dizaine ne seront pas retournées par " randl32()%1000 "
Autrement dit la distribution de ma fonction est tout sauf équitable :/
Curieux car j'ai fait un essai sur la répartition d'un rand()%2 et c'était très équitable.
Je vais voir ce que donne 1 000 000 appels à randl32()%2, voir si on a déjà du 500 000 zéro et 500 000 un, sinon ça sentirait vraiment le roussi...
Bon ben celle-ci a l'air correcte, à une dizaine près on est à 500 000 un et 500 000 zéro... du coup je sèche complètement ^^
Salut,
Je code en SDL/C++
Moi j'ai une fonction qui me permet de selectionner un rectangle et de faire un blit surface de façon à ce que ce rectangle après appuis de la souris en continue suive la souris, et lorsqu'on relache, que ça lache, du drag and drop en fait ...
Le soucis est que lorsque je déplace mon rectangle tous les blits associés à chaque nouvelles coordonnées s'additionnent sur mon jeux, et c'est horrible. Je n'arrive pas à trouver comment supprimer ces trainées de mon image ... Merci !
elywood01, c'est un probleme connu des generateurs a base de congruence lineaire. La generation de nombre est bien distribue mais la generation de pair ne l'est pas.
Il est preferable de ne pas utilsier l'operateur % sur ces generateur.
pour plus d'information, voir, les algo de generation aleatoire dans "the art of computer programming" et leurs empreintes spectrales.
Nvidia16, J'imagine que tu devrais invalider la position precedente du rectangle de facon a la redessiner.
quelqun peu m'aider je sais pas comment on mes dinamytes ou des pièges merci de m'aider
https://www.jeuxvideo.com/forums/1-31-8593230-1-0-1-0-nouveau.htm
![]()
J'ai une question simple et rapide :
SDL ou SFML ?
Je connais déjà la SDL mais je vois de plus en plus de gens passer à SFML
tout dépend de tes besoins, la SDL permet de faire des jeux en C tandis que la SFML serait apparament plus orientée objet
dans mon dernier projet, j'ai choisi la SDL pour une histoire de taille des fichiers exécutables, et parce que le rendu fait plus oldschool ![]()