Gamoover

Vous êtes nostalgiques des jeux vidéos de votre enfance ? Vous désirez acquérir, ou construire une borne d'arcade ? Vous trouverez ici les réponses a vos questions et une communauté de joueurs passionnés.

Debuter la programmation en C

Démarré par 9uile, Lundi 29 Novembre 2010, 15:25:17 PM

KodeIn

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.
Atari 2600 | Spectravideo SV-328 :'( | Amiga 500 | NES - SNES - N64 - NGC - Wii - GBA - GBAsp - DSi | PS1 - PS2 - PS3 - PSP 2000 | MD - DC | XBox - 360 | MacBook | OpenPandora GHZ edition \o/
WIP [pause] : Borne Euro générique de chez Jeux COURTET
Tutos LaunchPad MSP430 001 - 002 - 003 - 004 en attente

keube

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.  ^-

pitufo

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...)

9uile

J'ai fini mon premier programme !!
Avec l'aide du site du zero mais sans tricher...



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;
}

Little_Rabbit

#36
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 !  <:)
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

BadGuigui

#37
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!



Promis je me présente bientôt ;)
[WIP] Cocktail mamecab Ubuntu

9uile

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 !!!  =:)) =:)))

dapsaille

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)

9uile

#40
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 ?

onaryc

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

Bal

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



pitufo

#43
pointeurs

Le moteur du site aime surement pas les liens avec des parenthéses, ça doit être codé en lisp :D

Sir Kayne

Citation de: pitufo le Mercredi 01 Décembre 2010, 19:16:58 PM
pointeurs
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.
Cherche : pédale d'accélération d'une Outrun Upright, Une Racingcab (outrunner ou Daytona), pcb RaveRacer, PCB Missile Command (he oui), une Spacegun et puis un flipper Raven (je l'aurais un jour...)
"Ne me dite pas que je ne peux pas faire quelque chose!" J.Locke

sahaathyva

#45
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  =:))

Bal

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.
^-^



ɐɹqoƆ‾ɥƃᴉH

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