Gamoover

LA VIE DU SITE - LES NEWS => Le Bistrot de l'Arcade => Discussion démarrée par: 9uile le Lundi 29 Novembre 2010, 15:25:17 PM

Titre: Debuter la programmation en C
Posté par: 9uile le Lundi 29 Novembre 2010, 15:25:17 PM
Bonjour,

Je voudrais commencer à apprendre le C pour faire un remake de WOW sur game boy. =:)) ;D =:))

NAN je deconne !!! C'est pour mon plaisir personnel.
Je voudrais juste faire des trucs très simple genre le B.A.BA. Afficher,Déplacer et animer un sprite. Le faire interagir avec un décor. (avec une vue de haut)
Et petit à petit, rajouter des actions (taper, tirer sauter ...)Mettre des sons, une zic...

Y a t il ici des membres qui pourraient me servir de mentor et/ou m'orienter vers (la sortie !! :o) des tutos qui traite de la chose ...

Merci !!
Titre: Debuter la programmation en C
Posté par: BigPanik le Lundi 29 Novembre 2010, 15:53:41 PM
Quel langage connais tu déjà?

BP
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Lundi 29 Novembre 2010, 16:22:47 PM
Pourquoi du C ? Sur quelle plateforme ? Faudrait quelques infos supplémentaires pour pouvoir te répondre...
Titre: Debuter la programmation en C
Posté par: pierre512 le Lundi 29 Novembre 2010, 16:40:52 PM
Je suis du même avis que les autres: as-tu une expérience de développement? Pourquoi du C? Pour quelle plate-forme?

Si tu veux développer un jeu, je pense que tu aurais intérêt à utiliser un moteur tout fait (http://en.wikipedia.org/wiki/List_of_game_engines). Ça t'évitera de réinventer la roue, tu partiras sur des bases saines, tu trouveras de la doc, etc... Et ne crois pas qu'avec un moteur tu n'auras plus rien à faire.  :D
Titre: Debuter la programmation en C
Posté par: KodeIn le Lundi 29 Novembre 2010, 17:13:36 PM
Citation de: pierre512 le Lundi 29 Novembre 2010, 16:40:52 PM[...]
Si tu veux développer un jeu, je pense que tu aurais intérêt à utiliser un moteur tout fait (http://en.wikipedia.org/wiki/List_of_game_engines).
[...]
Ou la bonne vieille librairie SDL (http://www.libsdl.org/) qui lui donnera de bonnes bases de départ.  ;)
Qui est portée sur plein de plateformes et fonctionne avec un grand nombre de langages.
Et pour laquelle il existe un moteur qui s'appelle Penjin (http://projectinfinity.org.uk/doku.php?id=homebrew:engines:penjin), le développeur de ce moteur s'en sert pour faire un remaque de Joust sous le nom PanJoust (http://www.markoez.com/panjoust/).

Perso, j'ai commencé par le basic, il y a plus de 15 ans. Puis récemment, le C, C++, C# et java.
Les 2 grandes étapes laborieuses ont été les pointeurs du C et pour la POO, les classes.
Pas facile de passer à l'orienté objet quand on est habitué à la programmation procédurale  :o
Titre: Debuter la programmation en C
Posté par: Sir Kayne le Lundi 29 Novembre 2010, 17:15:41 PM
9uile ne veut pas se lancer dans de la grande programmation je pense.
Choisir le C, c'est bien. 8)
Bien sur le vb est plus simple, mais s'il veut gérer des application graphique en 2D, autant utiliser le C (C++ ou C#), j'ai eu de sales surprises en vb pour l'animation graphique... :?

Il existe plein de très bon tuto pour debuter, s'il a déjà quelques bases de prog il peut attaquer avec de l'opengl ou du directX pour gerer des sprites (là aussi de nombreux exemples trainent sur la toiles).
Titre: Debuter la programmation en C
Posté par: 9uile le Lundi 29 Novembre 2010, 17:16:32 PM
plateforme : windows
pourquoi c ?? bah oui pourquoi d'abord !
C'est un peu la base en programmation je crois.

Rien n'empeche d'utiliser ulterieurement un moteur de jeu mais pour l'instant je ne veux pas faire un jeu mais coder des fonctions de base. (comme dans les demos de demo makers. Les basiques : 1scrolling, faire bouger un sprite...)
Pour comprendre les codes plus evolués, connaitre les fonctionnements de base peut être utile au moins pour 'lire' le code.

Sinon, en programmation, je connais le vbs et l'asp. (et le html aussi mais c pas sorcier comme dirait jamy !!)

Et vous, connaissez vous un peu le C ?
Titre: Debuter la programmation en C
Posté par: funkycochise le Lundi 29 Novembre 2010, 18:35:58 PM
Citation de: 9uile le Lundi 29 Novembre 2010, 17:16:32 PM
plateforme : windows
pourquoi c ?? bah oui pourquoi d'abord !
C'est un peu la base en programmation je crois.

Rien n'empeche d'utiliser ulterieurement un moteur de jeu mais pour l'instant je ne veux pas faire un jeu mais coder des fonctions de base. (comme dans les demos de demo makers. Les basiques : 1scrolling, faire bouger un sprite...)
Pour comprendre les codes plus evolués, connaitre les fonctionnements de base peut être utile au moins pour 'lire' le code.

Sinon, en programmation, je connais le vbs et l'asp. (et le html aussi mais c pas sorcier comme dirait jamy !!)

Et vous, connaissez vous un peu le C ?
yes sir, tu sais ya beaucoup d'informaticiens par ici :)
le c c'est très bien je trouve

Titre: Debuter la programmation en C
Posté par: onaryc le Lundi 29 Novembre 2010, 19:18:41 PM
Citation de: 9uile le Lundi 29 Novembre 2010, 17:16:32 PM
plateforme : windows
pourquoi c ?? bah oui pourquoi d'abord !
C'est un peu la base en programmation je crois.

Je dirais pas que c'est la base en programmation, mais c'est, amha, un passage obligé pour les informaticiens...

Maintenant il est très important que tu saches ce que tu veux faire, à chaque langage/bibliothèque son champ application. Dans le C, il n'y a pas de notion de sprite, il faut lui coller une bibliothèque (genre la sdl précédemment citée). Il faut donc apprendre le langage (la syntaxe, son utilisation, ...) et la bibliothèque...

Par exemple, pour les jeux 2D, perso, je fais du lua avec le moteur love  :-* (http://love2d.org/). C'est relativement simple d'accès, tu as assez rapidement des résultat,...

Et petite remarque, le c, avec ses pointeurs, même pour les développeurs confirmés ça peut être la chienlit. C'est pas vraiment un langage d'apprentissage je trouve...
Titre: Debuter la programmation en C
Posté par: DaBeast le Lundi 29 Novembre 2010, 19:37:59 PM
Tu as bien raison de vouloir apprendre le c, ca te permet d'avoir de bonnes bases. Au moin tu sais ce qu'il se passe avec la memoire, ce qui te pousseras a tjs ameliorer ton code !

Perso j'ai commencer par le turbo pascal.

Sinon si tu veux te prendre la tete, n'hesite pas a jetter un coup d'oeuil a l'assembleur, c'est fun ;-)
Titre: Debuter la programmation en C
Posté par: keube le Lundi 29 Novembre 2010, 20:01:40 PM
Je trouve que c'est un bon choix de commencer par le C. Quand tu auras acquis les bases, jette un coup d'œil au développement sur des consoles 16 bits: pas encore de 3D compliqué à gérer et tu peux tout écrire toi même, faire joujou avec les différents registres du micro de la console. Perso je me suis bien amusé avec la GBA, pleins de docs, tutoriels et codes sources dispos. Tu peux tester tout ce que tu écris sur émulateur voire directement sur la GBA si tu es équipé d'une cartouche flashable. Par contre prévois un peu de temps et de galère avant d'arriver à faire quelque chose en C si tu n'as jamais appris à programmer et gare au mauvaises habitudes!
Titre: Debuter la programmation en C
Posté par: sahaathyva le Lundi 29 Novembre 2010, 20:25:59 PM
Citation de: 9uile le Lundi 29 Novembre 2010, 17:16:32 PM
plateforme : windows
pourquoi c ?? bah oui pourquoi d'abord !
C'est un peu la base en programmation je crois.

Rien n'empeche d'utiliser ulterieurement un moteur de jeu mais pour l'instant je ne veux pas faire un jeu mais coder des fonctions de base. (comme dans les demos de demo makers. Les basiques : 1scrolling, faire bouger un sprite...)
Pour comprendre les codes plus evolués, connaitre les fonctionnements de base peut être utile au moins pour 'lire' le code.

Sinon, en programmation, je connais le vbs et l'asp. (et le html aussi mais c pas sorcier comme dirait jamy !!)

Et vous, connaissez vous un peu le C ?



Le c c'est très puissant déjà comme langage ;)

j'en ai fait pour mes études mais çà date, mon souvenir ultime de programmation à cette époque fut l'assembleur motorola, de la bombe  ce langage  ^-



donc voici un truc de débutant  :

Citation#include stdio.h
:D :D
Titre: Debuter la programmation en C
Posté par: 9uile le Lundi 29 Novembre 2010, 20:49:52 PM
merci a tous pour vos conseils...

Je suis en train de lire le tutorial C sur le site du zero (je suis au début !) et j'ai trouvé ce tutorial qui a l'air pas mal pour commencer. (http://lazyfoo.net/SDL_tutorials/index.php). Je comptais effectivement me servir eventuellement de la bibliotheque sdl qui a l'air conçue pour la 2D.

En fait, puisque certains d'entres vous ont l'air de connaitre 'la voie' :), je vais vous confier ce que je voudrais faire dans un premier temps.

En 1 :

1. Faire un scrolling aléatoire (fluide) avec une texture répétée (genre mosaique fond d'ecran windows).

2. Rajouter un logo qui semblerait être a 2cm plus haut avec projetion d'une ombre sur le scrolling du dessous

3. Afficher sous le logo du texte qui arrive et part en fondu.

4. Avec une petite musique en fond

Bon, c'est une peu une demo oldschool en fait. Si déjà j'arrive a faire tout ça correctement, je peux envisager de faire un ecran titre.

En 2 :

Imaginez bomberman. enlevez tout  :'( et ne gardez que l'aire de jeu avec les contours et un perso qui bouge sur 4 axes.
Dans mes rêves les plus fous, j'aimerai que le personage poursuive legerement sa course quand on arrete de lui indiquer une direction. Un peu comme mario bros mais vu de haut.

Après c'est vrai que en C ou dans un autre language, ca n'est pas trop important mais je ne voulais pas être trop assisté par des outils wizardeux (rpg maker). J'ai fait il y a des années sur Atari st des demos avec DCK (Demo Construction Kit). C'etait génial car toutes les fonctions était déjà codées et il suffisait que de s'en servir mais du coup j'ai jamais pu apprendre le C. Bah oui a l'epoque, pas d'internet ni de grand frère pour m'initier...

J'espere avoir été plus clair.  =:))



Titre: Debuter la programmation en C
Posté par: keube le Lundi 29 Novembre 2010, 21:23:05 PM
Citation de: 9uile le Lundi 29 Novembre 2010, 20:49:52 PM
En 2 :

Imaginez bomberman. enlevez tout  :'( et ne gardez que l'aire de jeu avec les contours et un perso qui bouge sur 4 axes.
Dans mes rêves les plus fous, j'aimerai que le personage poursuive legerement sa course quand on arrete de lui indiquer une direction. Un peu comme mario bros mais vu de haut.

Après c'est vrai que en C ou dans un autre language, ca n'est pas trop important mais je ne voulais pas être trop assisté par des outils wizardeux (rpg maker). J'ai fait il y a des années sur Atari st des demos avec DCK (Demo Construction Kit). C'etait génial car toutes les fonctions était déjà codées et il suffisait que de s'en servir mais du coup j'ai jamais pu apprendre le C. Bah oui a l'epoque, pas d'internet ni de grand frère pour m'initier...

J'espere avoir été plus clair.  =:))


Si tu te mets à la GBA je peux t'aider pour le bomberman, à chaque je veux programmer un truc je finis par refaire du bomberman  =:)). Un jeu assez simple à programmer et dont on trouve les sprites sur le net ^-
Titre: Debuter la programmation en C
Posté par: 9uile le Lundi 29 Novembre 2010, 21:30:24 PM
c'est pas possible d'en faire un sous windows ?
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Lundi 29 Novembre 2010, 21:59:15 PM
Fait le en Flash sinon :D :D







:felche: déjà dehors...
Titre: Debuter la programmation en C
Posté par: AsPiC le Lundi 29 Novembre 2010, 22:44:01 PM
Ouep pi le flash c'est bien, c'est portable le flash môssieur !

:fleche: :fleche: :fleche: [Dehors]

=:)) :ang:
Titre: Debuter la programmation en C
Posté par: KodeIn le Mardi 30 Novembre 2010, 03:26:27 AM
Et ce qui est génial avec le Flash, c'est les performances toujours à la pointe...


:fleche: :fleche: :fleche: suis la file de "sorteurs"
Titre: Debuter la programmation en C
Posté par: th_vador le Mardi 30 Novembre 2010, 09:56:51 AM
popopo, le flash, c'est pas un truc pour programmer, pour ça, on fait du flex (http://www.adobe.com/fr/products/flex/?sdid=GYTVO)!
:fleche: hop, avec les autres

Sinon, je plussoie pour la GBA, il y a des trucs pas mal pour aider comme ici (http://edorul.ifrance.com/french/sommaire.htm) par exemple.
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 30 Novembre 2010, 10:20:03 AM
La GBA c'est bien mais moi je veux faire ça sous windows...
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 30 Novembre 2010, 13:20:03 PM
Tiens apparemment le XNA a l'air d'être un bon compromis ...
Titre: Debuter la programmation en C
Posté par: Bal le Mardi 30 Novembre 2010, 13:29:28 PM
bah, tu sais, tu va sur googoole et tu tapes "game editor" et t'as pas mal de liens vers des box tout prêts ^^
Titre: Debuter la programmation en C
Posté par: Monstercrunch le Mardi 30 Novembre 2010, 13:53:08 PM
Tu peux aller voir sur le site du zéro (http://www.siteduzero.com/) pour les tutoriel.

Pour le langage, j'ai commencé par le basic ( sur ma calculatrice ) puis j'ai essayé le C. Je trouvais ça trè sympa jusqu'à ce que je bloque sur un tp où je ne trouvais pas de solution à mes erreurs. Là je commence le python, qui assez simple et associé à Pygame (http://www.pygame.org/news.html) ou Pysfml (http://www.sfml-dev.org/tutorials/1.5/start-python-fr.php) peut donner des trucs sympa (doc surtout en anglais).

A+
Titre: Debuter la programmation en C
Posté par: KodeIn le Mardi 30 Novembre 2010, 14:02:09 PM
Citation de: 9uile le Mardi 30 Novembre 2010, 13:20:03 PM
Tiens apparemment le XNA a l'air d'être un bon compromis ...
Bah, si tu veux vraiment apprendre à tout faire à la main, évite le XNA.
C'est un tas de librairies dédiées au développement de jeux.
La plupart du temps, tu ne feras qu'utiliser des librairies sans vraiment ce qui se passe dans le code de ces librairies.
En plus, tu ne pourras développer que pour pc sous windows, xbox360 et windows phone 7, il me semble.
Alors qu'avec SDL ou du C "pur" tu couvriras la plupart des plateformes. (j'ai un macbook comme ordi principal, je peux te dire que je maudis la mention "windows only")

Titre: Debuter la programmation en C
Posté par: Little_Rabbit le Mardi 30 Novembre 2010, 14:38:11 PM
Salut 9uile,

Allez, viens sur mes genoux, papy Lapin va te raconter une histoire !  8)

Bon OK, j'arrête de déconner.  :D

Personnellement j'ai commencé en autodidacte par le Basic, puis l'assembleur 6502. Durant mes études du Pascal, l'assembleur d'autres processeurs (Z80, 6809, 68000), puis le C et même un peu de Lisp et d'autres trucs.

Et après j'ai commencé à bosser. Dans quoi ? Le développement de jeux video  :D (ça tombe bien non ?). C'était chez Delphine Software : Flashback, Shaq Fu, Fade to Black, Moto Racer, pour ceux qui connaîtraient... Et pour tout ces jeux, on a bossé soit en assembleur, soit en C et C++. Ton choix du langage C est donc très sensé.

Je ne dirais pas comme tu l'énonçais que le C est la base de la programmation. C'est plutôt à mon avis un langage très bien structuré, avec des types de données évolués et avec lequel on peut tout faire. Il est aussi très "concret", très proche de la machine avec un contrôle de tout ce qui se passe. Mais en contrepartie c'est aussi un langage qui nécessite une bonne maîtrise car s'il te permet de tout faire, il te permet aussi de faire n'importe quoi, et donc d'aller dans le mur sans rien te dire ;).

Par conséquent, commencer à apprendre le C avec pour objectif immédiat de faire un jeu me semble un peu ambitieux. Il serait dommage que tu te décourages parce que l'objectif initial était mis trop haut. Personnellement je procéderais par étape.

- apprendre le C, avec des travaux par forcément très drôles mais formateurs. De sorte que tu t'inities à toutes les types de données (simples, tableaux, structure, dynamiques avec des pointeurs, etc.), toutes les formes itératives et les bonnes méthodes de structuration d'un programme pour ne pas prendre de mauvaises habitudes comme le conseillaient déjà d'autres personnes.
- se concentrer sur la mécanique du jeu et son gameplay (la présentation, le scroling de l'écran titre et tout ce qui va avec, quelque part on s'en fout, ce n'est pas ce qui te fera un jeu et en plus ce n'est pas forcément trivial sur une machine comme le PC).
- ton jeu "à la Bomberman", tu peux très bien le faire entièrement en mode texte pour commencer. Tu fais les murs de ton labyrinthe avec des - et des |, tes personnages seront des M et de A (ou ce que tu veux).
- je vais peut-être me faire mal voir mais un bon démomaker ne fait pas forcément un bon programmeur de jeux (ne me faites pas dire ce que je n'ai pas dit : je connais aussi des demomakers qui sont devenus dans le jeux des programmeurs encore meilleurs qu'ils ne l'étaient en démo ;)).

Donc en résumer :
- procéder par étape
- commencer par les fondamentaux de la programmation
- se concentrer sur la logique du jeu plus que sur sa présentation
- ensuite seulement aborder l'aspect graphique via les librairies appropriées
- finir par l'écran titre et toutes les fioritures qui vont autour

J'espère ne pas te décourager en te donnant mon avis ! :)

Amicalement,

Thierry
Titre: Debuter la programmation en C
Posté par: pierre512 le Mardi 30 Novembre 2010, 15:17:34 PM
// Attention, détournement de topic
Si y'en a qui connaissent Flashback?!  Je m'en voudrais d'être passé à côté! Pareil pour Moto Racer quelques années plus tard. Et avant tout ça, chez Delphine également, les Voyageurs du Temps m'avaient donné du fil à retordre sur mon pauvre PC en CGA...

^-^

// Fin du détournement, vous pouvez reprendre votre conversation
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 30 Novembre 2010, 15:42:57 PM
Merci papy lapin !! euh je peux descendre de tes genoux ? :P

Si tu peux me guider ca serait sympa car j'ai beau y réfléchir, je ne sais même pas par quoi commencer. Je suis assez courageux mais j'ai pas envie de me farcir moults tutoriaux qui ne me servirons pas pour ce que je veux faire.

Je suis plutôt partisant du : "bébé fait un pas..." :)

Donc mon premier objectif :

afficher un logo (image) et avoir un menu simple :
start -> ...le néant (pour l'instant)
quitter -> le néant aussi.

Peux tu me guider vers cet objectif allucinant ?
Titre: Debuter la programmation en C
Posté par: jcp le Mardi 30 Novembre 2010, 16:08:29 PM
9uile : tu voudrais écrire un roman sans connaître l'alphabet ?
Ça ne va pas être facile ! (quoique le Visual Basic ...)
Titre: Debuter la programmation en C
Posté par: dapsaille le Mardi 30 Novembre 2010, 17:21:25 PM
Citation de: 9uile le Mardi 30 Novembre 2010, 15:42:57 PM
Merci papy lapin !! euh je peux descendre de tes genoux ? :P

Si tu peux me guider ca serait sympa car j'ai beau y réfléchir, je ne sais même pas par quoi commencer. Je suis assez courageux mais j'ai pas envie de me farcir moults tutoriaux qui ne me servirons pas pour ce que je veux faire.

Je suis plutôt partisant du : "bébé fait un pas..." :)

Donc mon premier objectif :

afficher un logo (image) et avoir un menu simple :
start -> ...le néant (pour l'instant)
quitter -> le néant aussi.

Peux tu me guider vers cet objectif allucinant ?

Mes 2 cents (avec ma délicatesse habituelle hein ^^)


Tu restes bloqué sur l'aspect graphique du bouzin ... bizarre comme approche ..

Comme indiqué par notre papa rabbit (ouaiss flashback miammmmm... humm pardon) tentes déja d'apprendre les bases du C et une fois ces bases comprises, codes ton jeu en ascii ... tu auras déja fait 40% du boulot..

vouloir commencer par la fin vas te foutre dans le mur j'en ai peur  ;)
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 30 Novembre 2010, 17:39:29 PM
Euh désolé mais je répète que je ne veux pas faire un jeu. :ang:
Je souhaite juste apprendre a faire ce que j'ai écris dans le post un peu plus haut et si j'y arrive je verrai pour ajouter une fonctionnalité à la fois.
Je ne vois pas en quoi ça vous perturbe d'afficher une image (immobile) à l'écran. =?= =?= =?=
Titre: Debuter la programmation en C
Posté par: Sir Kayne le Mardi 30 Novembre 2010, 18:14:49 PM
Hehe, il te lâche pas 9uile les membres, il te dise que faire un jeux c'est compliqué  :D
J'ai bien compris ce que tu cherches, afficher un bitmap, puis le faire bouger etc... par étape bien sur.

Je te conseil de commencer à prendre un programme en C du style "Hello World" et de le modifier pour faire apparaitre ton menus, tu verras déjà la philosophie du C (surtout si tu n'as que "scripter" en vbs).
Ensuite tu pourras chercher comment afficher une image, là aussi des exemples partout, ensuite comme faire bouger cette image, etc...
C'est pas compliquer, mais un peu dur à comprendre au debut.
Titre: Debuter la programmation en C
Posté par: Little_Rabbit le Mardi 30 Novembre 2010, 18:28:15 PM
Ben ce qui me perturbe c'est que ce n'est pas faire les choses dans l'ordre. Même pour afficher une image fixe il va te falloir initialiser une douzaine de bibliothèques, ouvrir un fichier, initialiser des structure de données, etc.

Il est fini le temps des machines où pour passer dans tel mode graphique tu tapais :
10 GRAPHIC 0,8,24
20 CLS

Sous Windows, tu devras te taper pas mal de chose avant d'arriver à un écran graphique vide. Tu auras déclaré et manipulé des structures de donnée, des pointeurs, fait moult appels, etc. Et si tu n'as pas pris le temps avant de savoir comment allouer une zone de mémoire dynamique, stocké sa valeur dans une variable de type pointeur, etc, tout te semblera du chinois et tu n'avanceras à rien.

Donc je renouvelle mes conseils : commencer par apprendre le minimum de la programmation en C, d'autant que la syntaxe du C peut-être assez subtile dès que tu commences à jouer avec des pointeurs, qu'il te faut passer des arguments par valeur ou par adresse => tu vas nager si tu ne connais pas ces rudiments. Je ne dis pas qu'il faut que tu apprennes pendant 6 mois le C, juste qu'il te faut connaître le minimum.

Vu que tu vises un dev sous Windows, le plus simple sera comme l'a déjà dit quelqu'un de passer par DirectX. Il faut donc que tu te trouves un environnement de développement C (c'est généralement Visual C de Crosoft qui est utilisé... peut-être y en a-t-il pour gcc ?). Installe-toi Visual Studio, le development kit de Direct X. Ensuite il y a plein de petits exemples fournis avec DirectX. Pour la partie dessin 2D qui t'intéresse pour l'instant, c'est Direct Draw qui répondra à tes attentes => récupère les exemples Direct Draw. Pour les entrées clavier ou joystick, je crois me souvenir que c'est Direct Input. Amuse-toi avec tout ça et cela devrait répondre à tes attentes.

Dernière précision : cela fait plus de 10 ans que je ne développe plus. Mes conseils en resteront donc au stade "générique", je serais bien incapable de te pondre une ligne de code pour DirextX, ni même de t'expliquer comment on installe Visual Studio ! ;-)

Bon courage.

Amicalement,

Thierry

Titre: Debuter la programmation en C
Posté par: KodeIn le Mardi 30 Novembre 2010, 19:44:02 PM
Citation de: Little_Rabbit le Mardi 30 Novembre 2010, 14:38:11 PM[...]
Et après j'ai commencé à bosser. Dans quoi ? Le développement de jeux video  :D (ça tombe bien non ?). C'était chez Delphine Software : Flashback, Shaq Fu, Fade to Black, Moto Racer, pour ceux qui connaîtraient... Et pour tout ces jeux, on a bossé soit en assembleur, soit en C et C++. Ton choix du langage C est donc très sensé.
[...]
:-X Crénom, mais c'est qu'il y a des pointures sur ce forum!
Merci pour les longues heures de jeux que ton travail m'a procuré et me procure encore, principalement Moto Racer et Flashback  :-*

Sinon, j'aurais tendance à être d'accord avec Little_Rabbit.
Avant que "bébé" ne fasse un pas, il faut qu'il apprenne à se mettre assis, puis à se déplacer à 4 pattes, à se lever et c'est seulement là qu'il va faire ses premiers pas  ;)
Parce que c'est clair qu'avec SDL ou XNA, afficher une image à l'écran et la faire pivoter dans tous les sens, ça va TRES vite (y a même un tas de tuto pour faire ce genre de choses).
Mais ça ne t'aidera pas à comprendre comment ces deux librairies se débrouillent pour le faire.
Titre: Debuter la programmation en C
Posté par: keube le Mardi 30 Novembre 2010, 20:31:15 PM
C'est bien pour ça qu'avec la GBA c'est assez facile en apprenant le C (je lâche pas l'affaire >:D): tu initialises 2/3 registres, une copie du bitmap en mémoire et roule ma poule. En prime tu vois comment est géré le hard sans passer par des bibliothèques.  ^-
Titre: Debuter la programmation en C
Posté par: pitufo le Mardi 30 Novembre 2010, 21:47:19 PM
Citation de: keube le Mardi 30 Novembre 2010, 20:31:15 PM
C'est bien pour ça qu'avec la GBA c'est assez facile en apprenant le C (je lâche pas l'affaire >:D): tu initialises 2/3 registres, une copie du bitmap en mémoire et roule ma poule. En prime tu vois comment est géré le hard sans passer par des bibliothèques.  ^-

Le dev gba ou nds c'est sympa seulement quand on a un linker je trouve,
la c'est assez jouissif de voire tourner ses bouses perso sur le vrai
matos et pas l'émulateur.

Ce qui est formateur aussi c'est de réussir à faire quelque chose avec
les possibilités limitées (par rapport à un ordi) de la console.

Mais à mon avis pour apprendre le C tu devrais commencer par faire
ce genre d'exo : http://membres.multimania.fr/epitechbert/Cours/jour03.html (jour04,05,etc...)
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 30 Novembre 2010, 21:55:16 PM
J'ai fini mon premier programme !!
Avec l'aide du site du zero mais sans tricher...

(http://9uile.free.fr/mu/45.jpg)

enseignements :

1. declarations de variables (const int, int)
2. Condition if, else if, else
3. Utilisation de while (tant que)
4. Affichage de texte et variable a l'ecran : printf
5. Demande a l'utilisateur de saisir une valeur : scanf
6. Utilisation de la fonction srand (generation d'un chiffre aléatoire)
7. Incrementation d'une variable (tentatives)

^-^

le code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>




int main()
{
    const int MAX = 100, MIN = 1;
    int nombreMystere = 0, nombreEntre = 0, tentatives = 0;

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    //printf("%d", nombreMystere);
    printf("Devinez le chiffre secret ! (entre 1 et 100)\n");

   do
{
    printf("Tapez un chiffre\n");
    scanf("%d", &nombreEntre);
    tentatives++;
        if (nombreEntre < nombreMystere)
            {
                printf("C'est plus !\n");
            }
        else if (nombreEntre == nombreMystere)
            {
                printf("BRAVO ! Vous avez trouve en %d tentatives\n",tentatives);
            }
        else
            {
                printf("C'est moins !\n");
            }

} while (nombreEntre != nombreMystere);
printf("Le chiffre mystere etait %d", nombreMystere);


    return 0;
}
Titre: Debuter la programmation en C
Posté par: Little_Rabbit le Mercredi 01 Décembre 2010, 09:45:22 AM
Salut 9uile,

Bravo ! C'est exactement ce genre de pratique que je te recommandais :) ! Faire des petits exercices progressifs pour se familiariser pas à pas avec tous les types de données et la syntaxe du C.

Continue comme ça.

Je ne l'ai pas dit plus haut mais quand je terminais mes études, j'ai aussi durant une année scolaire été prof d'informatique dans un Greta, pour des BTS en Informatique Industrielle. Je donnais donc des cours de C ;).

Si tu le veux, je peux te proposer pas à pas de nouveaux exercices.

Par exemple, pour poursuivre celui que tu as fait, nous pouvons introduire 2 notions supplémentaires : les tableaux, et les fonctions. Transforme alors ton programme pour y rajouter deux choses :
1) un menu qui te demandera à quoi tu veux joueur( 1-LE NOMBRE MYSTÈRE 2-LE JEUX DE LA VIE 3-etc; et 0-Quitter). Ta fonction main() devient le menu et tu déportes le nombre mystère dans une fonction

2) Ton jeu mystère va à présent mémoriser toutes les propositions que tu lui aura faites durant une partie. A la fin, tu réaffiches toutes ces propositions dans l'ordre ou elles ont été faites, puis triée de la plus petite à la plus grande

Le 1) t'initiera aux fonctions et le 2) aux tableaux et à des tris rudimentaires.

Tout ça va te paraître très simple. Normal, ça l'est :). Souvent les gens décrochent quand on commence à aborder les tableaux de pointeurs ou les listes chaînées... C'est pour ça qu'il est important d'y aller progressivement et ne louper aucune étapes. Les pointeurs, les allocation mémoires dynamiques sont essentiels à une bonne programmation en C.

Bonne continuation!

A+  Thierry

PS: un grand merci à ceux qui ont eu un petit mot sympa pour les jeux Delphine !  <:)
Titre: Debuter la programmation en C
Posté par: BadGuigui le Mercredi 01 Décembre 2010, 09:49:03 AM
Oui c'est un bon début, mais les bases sont importantes mais le plus compliqué c'est quand tu vas intégrer les pointeurs dans tes programmes, attention aux fuites mémoires!!!

Sinon deux petits conseils pour la suite :
- Lorsque tu fais du conditionnel (if) il est judicieux de différencier ta condition de succès à celle d'échec et de la mettre en première position dans ton code, tu verras tu liras plus facilement ton code plus tard.

Par exemple :

if (a==b){ //SUCCÈS
   //Code succès
}
else if (a<b){  //ÉCHEC
   //Code erreur 1
}
else{ //ÉCHEC
   //Code erreur 2
}

Je dis cela car il est logique de mettre en premier ce que le programme doit faire dans le meilleur des cas, et ensuite de gérer les erreurs.

-Le deuxième conseil est de mettre des commentaires dans ton code, cela peut paraître ennuyeux et inutile, surtout dans le cas d'un petit programme comme celui-là, mais lorsque le programme devient plus important, et que par exemple tu reviens dans ton code après plusieurs semaines ou mois pour corriger un bug, ou que quelqu'un reprend ton travail, les commentaires vont t'aider à comprendre rapidement ce que fait ta fonction en deux secondes au lieu de décortiquer ton code ligne par ligne.

En tout cas bonne continuation dans ton apprentissage!



Titre: Debuter la programmation en C
Posté par: 9uile le Mercredi 01 Décembre 2010, 10:14:54 AM
Ah, je suis sur la bonne voie !!

Merci !

En fait, c'est vrai que je n'ai pas encore mis de commentaires et un peu été vite sur la boucle if,else.. mais j'en étais conscient.

Je comptais rajouter :

1. un menu pour le niveau de difficulté : mettra Max a 100 1000 ou 10000
(je viens de tester 10000 -> réussi en 17 tentatives !)
Oui je sais, il faudra que MAX devienne un int plutôt qu'un const int !!! ^-

2. a la fin du code, la question rejouer ? O/N

3. Gérer les erreurs quand on tape q<dgsdfg au lieu d'un chiffre (mais j'ai pas encore vu les chaines texte)

4. Gérer un highscore avec : nom, niveau de difficulté, tentatives (et peut être le chrono...)

5. et externaliser la fonction nombreMystere de la fonction main... :D
6. Afficher une image (non je deconne !!!  =:)) =:)))
Titre: Debuter la programmation en C
Posté par: dapsaille le Mercredi 01 Décembre 2010, 10:34:47 AM
Bravo en tout cas car vu le pourrissage que l'on t'as mis tu persistes tout de même ^^


Tu es sur la bonne voie, pour sur ^^

(et moi je verrais bien une image dans ton menu  :D)
Titre: Debuter la programmation en C
Posté par: 9uile le Mercredi 01 Décembre 2010, 10:52:26 AM
Citation de: dapsaille le Mercredi 01 Décembre 2010, 10:34:47 AM
Bravo en tout cas car vu le pourrissage que l'on t'as mis tu persistes tout de même ^^

J'ai failli me desincrire du site !!!  =:))

c'est quoi des pointeurs ?
Titre: Debuter la programmation en C
Posté par: onaryc le Mercredi 01 Décembre 2010, 11:58:38 AM
Citation de: dapsaille le Mercredi 01 Décembre 2010, 10:34:47 AM
Bravo en tout cas car vu le pourrissage que l'on t'as mis tu persistes tout de même ^^

Ca fait partie de l'apprentissage du C ;) , pask'arrivé au pointeur, faut une certaine dose de motivation (c'est pas insurmontable non plus).

Le pointeur c'est l'adresse d'une zone mémoire (ça peut représenter une fonction, une variable). C'est générateur de prise de tête, faut être rigoureux et patient... (j'ai pas lu toute la définition mais ça doit pas être trop faux  :D : http://fr.wikipedia.org/wiki/Pointeur_(programmation))

Autrement, tu peux faire un peu de c++ (sans utiliser l'approche objet, mais en utilisant ses fonctions) et profiter du passage par adresse, de la généricité des fonction cout (un printf, mais mieux), cin, ... Tout dépend du compilo que t'utilises...
Titre: Debuter la programmation en C
Posté par: Bal le Mercredi 01 Décembre 2010, 18:41:26 PM
Wikipédia ne possède pas d'article avec ce nom.   ^-

Rhalala les pointeurs, quelle saleté, mais bon, faut y passer, y'a pas à tortiller du croupion ^^
Titre: Debuter la programmation en C
Posté par: pitufo le Mercredi 01 Décembre 2010, 19:16:58 PM
pointeurs (http://fr.wikipedia.org/wiki/Pointeur_(programmation))

Le moteur du site aime surement pas les liens avec des parenthéses, ça doit être codé en lisp :D
Titre: Debuter la programmation en C
Posté par: Sir Kayne le Mercredi 01 Décembre 2010, 20:13:19 PM
Citation de: pitufo le Mercredi 01 Décembre 2010, 19:16:58 PM
pointeurs (http://fr.wikipedia.org/wiki/Pointeur_(programmation))
Le moteur du site aime surement pas les liens avec des parenthéses, ça doit être codé en lisp :D
Hehe, pas faux,
Real programmers don't use LISP. Only effeminate programmers use more parentheses than actual code.  :D

Quand au pointeur, pas de soucis il faut bien assimilé l'idée. En approfondissant ton programme tu va aborder les pointeurs en "douceur" je dirais.
Titre: Debuter la programmation en C
Posté par: sahaathyva le Mercredi 01 Décembre 2010, 22:16:34 PM
Citation de: Little_Rabbit le Mercredi 01 Décembre 2010, 09:45:22 AM
Salut 9uile,

Bravo !

Je ne l'ai pas dit plus haut mais quand je terminais mes études, j'ai aussi durant une année scolaire été prof d'informatique dans un Greta, pour des BTS en Informatique Industrielle. Je donnais donc des cours de C ;).

Si tu le veux, je peux te proposer pas à pas de nouveaux exercices.

Par exemple, pour poursuivre celui que tu as fait, nous pouvons introduire 2 notions supplémentaires : les tableaux, et les fonctions. Transforme alors ton programme pour y rajouter deux choses :
1) un menu qui te demandera à quoi tu veux joueur( 1-LE NOMBRE MYSTÈRE 2-LE JEUX DE LA VIE 3-etc; et 0-Quitter). Ta fonction main() devient le menu et tu déportes le nombre mystère dans une fonction

2) Ton jeu mystère va à présent mémoriser toutes les propositions que tu lui aura faites durant une partie. A la fin, tu réaffiches toutes ces propositions dans l'ordre ou elles ont été faites, puis triée de la plus petite à la plus grande

Le 1) t'initiera aux fonctions et le 2) aux tableaux et à des tris rudimentaires.

Tout ça va te paraître très simple. Normal, ça l'est :). Souvent les gens décrochent quand on commence à aborder les tableaux de pointeurs ou les listes chaînées... C'est pour ça qu'il est important d'y aller progressivement et ne louper aucune étapes. Les pointeurs, les allocation mémoires dynamiques sont essentiels à une bonne programmation en C.

Bonne continuation!

A+  Thierry

PS: un grand merci à ceux qui ont eu un petit mot sympa pour les jeux Delphine !  <:)



j'ai appris le c en iut d'info indus ;) , tes exercices sont cohérents je trouve pour corser le tout et apprendre sans se dégouter  .




Citation de: 9uile le Mercredi 01 Décembre 2010, 10:52:26 AM
J'ai failli me desincrire du site !!!  =:))

c'est quoi des pointeurs ?


pffffiou , tu verras ils te donneront un peu de fil à retordre au début, tu te casseras sans doute un peu la tête dessus mais c'est indispensable dès que tu feras des progs un peu plus évolués ;)


tu es sur la bonne voie en tout cas  ^-






Citation de: Bal le Mercredi 01 Décembre 2010, 18:41:26 PM
Wikipédia ne possède pas d'article avec ce nom.   ^-

Rhalala les pointeurs, quelle saleté, mais bon, faut y passer, y'a pas à tortiller du croupion ^^


http://fr.wikipedia.org/wiki/Pointeur_%28programmation%29

bal tu t'es pas foulé la dessus  =:))
Titre: Debuter la programmation en C
Posté par: Bal le Jeudi 02 Décembre 2010, 10:43:37 AM
Citation de: Little_Rabbit le Mercredi 01 Décembre 2010, 09:45:22 AM
PS: un grand merci à ceux qui ont eu un petit mot sympa pour les jeux Delphine !  <:)

Mais pas de quoi, un grand merci à vous tous de nous avoir fait passer autant de bons moments :)

Rhaaaa Fade to black, flashback et j'en oublies ^^ que de bons jeux !!!

BAL.
^-^
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Jeudi 02 Décembre 2010, 11:16:34 AM
Citation de: pitufo le Mercredi 01 Décembre 2010, 19:16:58 PM
Le moteur du site aime surement pas les liens avec des parenthéses, ça doit être codé en lisp :D

Il existe des balises [url] [/url]

autant s'en servir...
Titre: Debuter la programmation en C
Posté par: Shoryu le Jeudi 02 Décembre 2010, 11:22:25 AM
J'ai aussi commencé le C avec le Site du Zér0 :)

Par contre, les pointeurs, c'est une vraie plaie, d'ailleurs, Little_Lapinou, tu proposais des exercices, si tu en as sous le coude pour pratiquer du pointeur, je suis preneur...

A mon avis, c'est la seule méthode pour intégrer les différences entre variable, *variable, etc.
Faut en bouffer ! ^-^
Titre: Debuter la programmation en C
Posté par: pitufo le Jeudi 02 Décembre 2010, 11:28:16 AM
Citation de: High_Cobra le Jeudi 02 Décembre 2010, 11:16:34 AM
Il existe des balises [url] [/url]

autant s'en servir...

c'est ce que j'ai fait.........................................
Titre: Debuter la programmation en C
Posté par: Little_Rabbit le Jeudi 02 Décembre 2010, 14:05:11 PM
Citation de: Shoryu le Jeudi 02 Décembre 2010, 11:22:25 AM
Par contre, les pointeurs, c'est une vraie plaie, d'ailleurs, Little_Lapinou, tu proposais des exercices, si tu en as sous le coude pour pratiquer du pointeur, je suis preneur...
Ben volontiers, mais on va attendre encore un peu, histoire d'aborder d'autres notions (tableaux, structures, etc.) avant de voir les pointeurs ! :)

Et puis je n'ai pas touché à un compilateur C depuis... heu... genre 1997 ou 1998 ! Il va falloir que je m'y remette pour me rafraîchir la mémoire !...  :-\
Titre: Debuter la programmation en C
Posté par: 9uile le Jeudi 02 Décembre 2010, 14:42:50 PM
j'ai trouvé un 'bug ???' dans la partie qui genere le chiffre aléatoire.
Si je mets MIN=0 et MAX=1000000 (c'est un ex...) les chiffres retournés sont souvent plus proche de 1 que de 1000000 !!!

Et ca c'est pas vraiment le fait du HASARD !! !

Du coup, je developpe une fonction qui va faire des vrais chiffres au pif.
(sachant que le hasard n'existe pas en informatique !)
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Jeudi 02 Décembre 2010, 15:01:52 PM
Attention, c'est très dur de faire de la vrai génération de nombres aléatoires... Il existe des systèmes très complexes (et très cher) pour faire ça... Et pas sur que ta fonction perso soit plus performante qu'un rand( )...
Titre: Debuter la programmation en C
Posté par: Zorg le Jeudi 02 Décembre 2010, 15:09:59 PM
Citation de: Sir Kayne le Mercredi 01 Décembre 2010, 20:13:19 PM
Real programmers don't use LISP. Only effeminate programmers use more parentheses than actual code.  :D

excellent langage pour apprendre bon nombre des concepts de base.
Titre: Debuter la programmation en C
Posté par: BigPanik le Jeudi 02 Décembre 2010, 15:15:06 PM
Citation de: 9uile le Jeudi 02 Décembre 2010, 14:42:50 PM
(sachant que le hasard n'existe pas en informatique !)

Pourtant le nombre de fois que mes PCB ont lâché "par hasard"...

BP
Titre: Debuter la programmation en C
Posté par: 9uile le Jeudi 02 Décembre 2010, 15:23:22 PM
Citation de: High_Cobra le Jeudi 02 Décembre 2010, 15:01:52 PM
Attention, c'est très dur de faire de la vrai génération de nombres aléatoires... Il existe des systèmes très complexes (et très cher) pour faire ça... Et pas sur que ta fonction perso soit plus performante qu'un rand( )...

Euh, je ne compte pas révolutionner les jeux de loteries !!!
C'est juste que les résultats doivent être un minimum credible.

J'expliquerai ça quand j'aurai fini ma fonction...

edit : j'utilise quand même rand() dans ma fonction  ;)
Titre: Debuter la programmation en C
Posté par: BigPanik le Jeudi 02 Décembre 2010, 15:40:53 PM
rand() utilise la constante RAND_MAX définit dans stdlib.h comme valeur maxi.

Tu as augmenté cette valeur (par défaut 32767)?

BP
Titre: Debuter la programmation en C
Posté par: 9uile le Jeudi 02 Décembre 2010, 15:47:18 PM
 :D

Pas du tout je suis monté à 1 000 000 000 !!

=:)) =:)) =:))

C'était pour tester si ça marchait bien. Bah ça marcho pô  :P
Du coup j'ai trouvé un autre moyen nickel. Il faut que je finisse la fonction.
Je vous montrerai les résultats renvoyés pour pas que vous soyez influencés par le code.

Vous pouvez d'ailleurs me demander de generer une suite de nb aléatoire, pour voir  ;D

Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Jeudi 02 Décembre 2010, 15:59:50 PM
Tout dépends ce que tu fais dans ta fonction, ça ne sera pas forcément mieux que rand, et sans doute pire même... rand est tout à fait adapté pour faire des nombres aléatoires... Prends un très gros échantillon et vérifie la répartition, tu verras...
Titre: Debuter la programmation en C
Posté par: 9uile le Jeudi 02 Décembre 2010, 16:00:42 PM
Vas-y dit pour voir... =:))
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Jeudi 02 Décembre 2010, 16:07:08 PM
vas-y, génère 500.000 nombres compris entre 1 et 1000 avec les 2 méthodes et on étudiera la répartition... Et encore, ça ne sera pas forcement représentatif :D :D
Titre: Debuter la programmation en C
Posté par: 9uile le Jeudi 02 Décembre 2010, 16:14:34 PM
Bon j'suis désolé mais vu que la sortie n'est pas copiable/collable en état, j'ai fait uniquement 50 chiffres sur 3 digits (de 0 a 999)


(http://9uile.free.fr/mu/46.jpg)

:-)= :-)= :-)=
Titre: Debuter la programmation en C
Posté par: dapsaille le Jeudi 02 Décembre 2010, 16:45:44 PM
programme.exe > sortie.txt  ^-
Titre: Debuter la programmation en C
Posté par: Little_Rabbit le Jeudi 02 Décembre 2010, 18:20:37 PM
Citation de: BigPanik le Jeudi 02 Décembre 2010, 15:40:53 PM
rand() utilise la constante RAND_MAX définit dans stdlib.h comme valeur maxi.

Tu as augmenté cette valeur (par défaut 32767)?

BP

Effectivement, comme le dit BP, il faut voir dans quel champ elle travaille cette fonction. Si par exemple ce RAND_MAX est prévu pour être un 16 bits signé, c'est un peu normal que 1 million ne lui fasse ni chaud ni froid ! Si tu mets un argument plus long (en bits) que celui attendu, il va être tronqué...

Avant de tirer des conclusions hâtives, vérifie bien la nature et la taille des arguments et celui du résultat. Pour ta graine, utilise un truc qui varie, genre le nombre de millisecondes écoulées dans la seconde courante, ou quelques chose en rapport avec la température du proc...
Titre: Debuter la programmation en C
Posté par: 9uile le Vendredi 03 Décembre 2010, 16:00:50 PM
Citation de: dapsaille le Jeudi 02 Décembre 2010, 16:45:44 PM
programme.exe > sortie.txt  ^-

C'est sympa, ca marche aussi en .xls !

J'ai fait 3 tests et voici le résultat :
Vous avez 231 exemples (77*3 :)  ) sous les yeux pour vous faire un avis mais pour moi c'est concluant !

(http://9uile.free.fr/mu/47.png)
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Vendredi 03 Décembre 2010, 16:10:30 PM
La moyenne est en aucun cas synonyme de bonne répartition...

Sur un échantillon de 100 nombres tirés de 1 à 100, si tu tires 50 fois 25 et 50 fois 75, ta moyenne est bien de 50, mais ta répartition est foireuse... Mon exemple est extrême mais montre bien que la moyenne ne veut rien dire...

Au pire, file ton fichier excel avec les nombre... Et 77 échantillons pour un tirage de 1 à 1000, c'est très peu :D
Titre: Debuter la programmation en C
Posté par: Little_Rabbit le Vendredi 03 Décembre 2010, 17:30:26 PM
salut 9uile,

OK mais je ne suis pas sur d'avoir tout suivi :

les chiffres que tu nous files, c'est ceux issus de ta fonction rnd modifiée ou ceux de la fonction standard que tu penses être buggée ?

Ce qui serait intéressant, c'est que tu fasses des tirages avec celle de base et avec la tienne, histoire qu'on compare :).

A+  Thierry
Titre: Debuter la programmation en C
Posté par: pierre512 le Vendredi 03 Décembre 2010, 17:54:56 PM
Pour qualifier ton générateur de nombres aléatoires, tu peux utiliser le test du khi2 (http://fr.wikipedia.org/wiki/Test_du_%CF%87%C2%B2). En très gros ça te donne une note t'indiquant si tes nombres aléatoires sont répartis comme il faut.
Titre: Debuter la programmation en C
Posté par: 9uile le Vendredi 03 Décembre 2010, 19:10:22 PM
Citation de: High_Cobra le Vendredi 03 Décembre 2010, 16:10:30 PM
La moyenne est en aucun cas synonyme de bonne répartition...

Sur un échantillon de 100 nombres tirés de 1 à 100, si tu tires 50 fois 25 et 50 fois 75, ta moyenne est bien de 50, mais ta répartition est foireuse... Mon exemple est extrême mais montre bien que la moyenne ne veut rien dire...

Au pire, file ton fichier excel avec les nombre... Et 77 échantillons pour un tirage de 1 à 1000, c'est très peu :D

Le tirage est de 50000 chiffres de 3digits (3fois).
Je n'ai mis que 77 lignes dans mon print screen pour des soucis de performances sur le site... Imagine la taille de l'image.

Concernant la moyenne,je pense que tu te trompe, j'essaierai de l'expliquer plus bas. (sponsorisé par WIKIPEDIA !!)

Citation de: Little_Rabbit le Vendredi 03 Décembre 2010, 17:30:26 PM
salut 9uile,

OK mais je ne suis pas sur d'avoir tout suivi :

les chiffres que tu nous files, c'est ceux issus de ta fonction rnd modifiée ou ceux de la fonction standard que tu penses être buggée ?

Ce qui serait intéressant, c'est que tu fasses des tirages avec celle de base et avec la tienne, histoire qu'on compare :).

A+  Thierry

Les résultats proviennent de la version que j'ai modifiée.

Ci-dessous une définition trouvée sur wiki permettant d'étoffer le résultat concernant la moyenne des tirages.

http://fr.wikipedia.org/wiki/Probabilite


"La probabilité (du latin probabilitas) est une évaluation du caractère probable d'un évènement. En mathématiques, l'étude des probabilités est un sujet de grande importance donnant lieu à de nombreuses applications.

La probabilité d'un événement est un nombre réel compris entre 0 et 1. Plus ce nombre est grand, plus le risque (ou la chance, selon le point de vue) que l'événement se produise est grand. Si on considère que la probabilité qu'un lancer de pièce donne pile est égale à 1/2, cela signifie que, si on lance un très grand nombre de fois cette pièce, la fréquence des piles va tendre vers 1/2, sans préjuger de la régularité de leur répartition."

DONC, si je lance une piece un l'air (pile =1, face =2)

nb lancés
1
probabilité pile
0,5 chance que le chiffre soit égal a 1

probabilité face
0,5 chance que le chiffre soit égal a 2

(1/2 * 1)+(1/2*2)=(0,5*1)+(0,5*2)=0,5+1=1,5
Soit le milieu de l'ecart entre 1 et 2.

A noter que le nombre de lancés importe peu vu qu'on a toujours une chance sur 2.

La vache j'ai mal aux neurones !! :o
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Vendredi 03 Décembre 2010, 20:57:43 PM
Prends le raisonnement par l'absurde que j'ai fait au dessus, si ton truc est moisi, doit tirer un nombre entre 1 et 100 et tire toujours 25 ou 75... T'as une moyenne parfaite, alors que ton truc est moisi...

Si c'était aussi simple que ça de faire du vrai aléatoire, les systèmes dédiés à ça ne coûteraient pas une couille comme c'est le cas actuellement...
Titre: Debuter la programmation en C
Posté par: 9uile le Vendredi 03 Décembre 2010, 21:18:26 PM
C'est sur que si tu compares mes dix lignes de codes avec des programmes développés par des mathématiciens/scientifiques qui bossent depuis des années sur le sujet, il y a de grande chances que mon truc soit moisi.

L'essentiel pour moi, c'est que les chiffres retournés apparaissent bien comme des chiffres tirés au hasard. Ayant fait le test comme tu me l'as proposé (50000 chiffres de 0 a 999) trois fois de suite, les chiffres retournés ne semblent pas souffrir d'un formatage quelconque.

Maintenant si je te dis "627" qu'est ce qui peut te dire que ce chiffre n'est pas le fruit du hasard? Il figure bien dans la plage de chiffre demandé. J'aurais aussi bien pu dire "000" ou "123". Bien que ces chiffres paraissent improbables, il sont également possibles.









Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Vendredi 03 Décembre 2010, 21:31:10 PM
Je suis d'accord, mais je met en doute le fait que ta fonction soit mieux que le rand fourni de base, c'est tout, en trafiquant le résultat, tu peux très bien piper la fonction qui ne l'était pas à la base...

Après, si ça te convient, c'est très bien :D
Titre: Debuter la programmation en C
Posté par: Sir Kayne le Vendredi 03 Décembre 2010, 22:11:03 PM
Bah les proba c'est pas des maths, c'est une science inexact, elle se base sur des incertitudes  :D
Le hasard n'est que la somme de nos ignorances...
Il existe effectivement des methodes plus "imprévisible" qui permette de sortir des suites de nombres plus "aléatoires". (je pense que High_Cobra fait référence à des méthodes quantiques, etc...?!)

Je serais curieux de voit ta fonction quand même, mais surtout ce que tu comptes en faire, ce n'est pas simplement pour fabriquer un jeux "devinez un nombre" ?  :?
Titre: Debuter la programmation en C
Posté par: 9uile le Vendredi 03 Décembre 2010, 22:22:50 PM
Citation de: Sir Kayne le Vendredi 03 Décembre 2010, 22:11:03 PM
ce n'est pas simplement pour fabriquer un jeux "devinez un nombre" ?  :?

Non, c'est juste le premier exercice du tutorial que je suis en train de lire ... ;D
Titre: Debuter la programmation en C
Posté par: Little_Rabbit le Lundi 06 Décembre 2010, 23:58:05 PM
Salut,

Au fait, quel compilateur et IDE as-tu retenu pour tes exercices ? Visual Express C++ ou Code::Blocks ?

A+  Thierry
Titre: Debuter la programmation en C
Posté par: Bal le Mardi 07 Décembre 2010, 07:46:51 AM
Code::blocks +1 !

Simple, léger, efficace, what else ?

Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 07 Décembre 2010, 08:43:18 AM
Pour l'instant code blocks étant donné que c'est le soft utilisé pour les exemples sur le site du zero...
Titre: Debuter la programmation en C
Posté par: BadGuigui le Mardi 07 Décembre 2010, 09:55:01 AM
Pour revenir au probabilité, la moyenne est une chose mais est loin de vérifier si ta fonction correspond à ce que tu attends.

Par la fonction rand que tu cherches à faire, c'est à dire trouver un nombre entier entre 0 et n, il faut suivre une loi Uniforme discrète (http://fr.wikipedia.org/wiki/Loi_uniforme_discr%C3%A8te) U(0,n), avec pour moyenne n/2, mais le plus important est de vérifier la densité de probabilité qui doit être de 1/n dans ton cas.

Plus concrètement, fait un graphique du nombre de fois que tu as eu chaque valeurs comprises entre 0 et n. Par exemple tu appelles K fois ta fonction, alors il faut que ton graphique soit le plus proche de K/n.

La façon de vérifier la plus optimale et de faire la somme  des valeurs absolues de la différence entre K/n et le nombre fois que tu as eu chaque valeurs comprise entre 0 et n. Ta loi est bonne quand cette valeur est proche de zéro, et doit tendre vers 0 quand K tend vers l'infini.

Tu as maintenant une bonne manière de vérifier que ta fonction est meilleure que celle de base.

Et sinon après cela si quelqu'un ose dire que les probabilités ne sont pas des maths...  :-(( >:D )::( :(< je rigole
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 07 Décembre 2010, 10:02:39 AM
Si je te met un fichier a dispo, tu peux faire le test ?
De combien as tu besoin d'enregistrements et sur quelle plage (1 a 100 ou plus !)

Attention ! j'ai jamais dis que je voulais faire mieux que ce qui existe !!
(ni pire ...) :o
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Mardi 07 Décembre 2010, 10:10:57 AM
Je t'avais demandé un fichier quelques pages plus tot déjà... Pour justement faire ce genre de test de répartition...

500.000 enregistrements sur une plage de 1 à 100 est pas mal...
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 07 Décembre 2010, 10:17:23 AM
 ;D
500000 !!!
et pour trier ca tu vas utiliser quel soft ?
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Mardi 07 Décembre 2010, 10:23:48 AM
Tires-en 10 fois moins si tu veux... Pour le tri derrière, je sais pas, sans doute un petit bout de code pour trier tout ça et faire les calculs qui vont bien dessus...
Titre: Debuter la programmation en C
Posté par: BadGuigui le Mardi 07 Décembre 2010, 10:37:10 AM
Oui tu fais un tableau de n entiers avec que des zéros au début, puis tu incrémentes de 1 l'entier de ton tableau ayant pour index le nombre que tu as eu aléatoirement. Cela 100*n (si rand de 0 à n, fait 10 000 fois la fonction) pour avoir un résultat intéressant. Ton tableau d'entiers correspondra à ta densité de probabilité.

Désolé le C c'est pas mon truc, je suis beaucoup plus php et java donc je vais pas pouvoir te donner le code mais c'est l'occasion pour toi de faire un nouvel exercice. Par contre montre moi ton code au final je le comprendrais et pourrais te dire si cela semble bon ou non.

Bon courage
Titre: Debuter la programmation en C
Posté par: 9uile le Mardi 07 Décembre 2010, 22:46:59 PM
Bon j'ai fini...

Le tirage en fichier txt : RandomNumbers.txt (http://9uile.free.fr/mu/RandomNumbers.txt)

La répartion :

(http://9uile.free.fr/mu/48.png)

Ca n'a pas l'air pas si mal que ça  ^-^
Titre: Debuter la programmation en C
Posté par: BadGuigui le Mercredi 08 Décembre 2010, 09:34:15 AM
Je trouve que ton graphique ressemble plus à une loi Normale qu'à une loi Uniforme. As tu fait la comparaison avec la fonction rand standard. Et moi je voudrais un graphique point par point et non par ensemble de point (ce qui pourrait expliquer le changement de loi de probabilités (cf transformée de Fourier d'une porte en  triangle si mes souvenirs sont bons...).

Et si tu fais de 1 à 1000, alors il faut 100 000 points minimum.
Titre: Debuter la programmation en C
Posté par: 9uile le Mercredi 08 Décembre 2010, 10:26:44 AM
50 000 de 1 a 20, ca le fait ?
(PS: apres j'arrête je passe a autre chose...) :ang:
Titre: Debuter la programmation en C
Posté par: ɐɹqoƆ‾ɥƃᴉH le Mercredi 08 Décembre 2010, 10:34:04 AM
50 000 de 1 à 100, comme demandé avant...
Titre: Debuter la programmation en C
Posté par: 9uile le Mercredi 08 Décembre 2010, 12:41:14 PM
(http://9uile.free.fr/mu/49.png)
Titre: Debuter la programmation en C
Posté par: BadGuigui le Mercredi 08 Décembre 2010, 14:20:04 PM
Voila ça c'est un beau graphique (constate la différence dans ton ancien graphique on avait l'impression qu'il y avait plus de valeur dans le milieu alors que point par point tu vois que tout cela est homogène), là tu peux dire que ta fonction de tirage aléatoire est bonne (car elle est très proche d'une loi Uniforme discrète). Tu vois qu'aucun point n'est oublié. N'oublie pas qu'en probabilité la moyenne est loin d'être un moyen de vérifier qu'une fonction est bonne, il faut principalement vérifier sa loi de probabilité ou sa densité.

Bref j'arrête de t'embêter avec tout cela et bonne continuation dans apprentissage du C.