Programmation

dcentrale Jr

Lion d'Argent
10 Février 2008
2 272
0
0
Voila, en vue de ma prochaine rentrée pour un DUT Informatique, j'ai commencé l'apprentissage du langage C d'après le Site du Zéro( http://www.siteduzero.com/index.html )
J'en suis au chapitre des fonctions et j'ai réalisé grâce au chapitre précedent (TP) un petit jeu de + ou -
Vous avez donc le choix entre un mode solo et un mode 2 joueurs, ainsi que 4 modes de difficultés.

Je vous mets en télechargement le programme ainsi que pour les programmeurs, le fichier source.(Jeu + ou - v2.0.exe ainsi que main.c et main.o)
j'ai conscience que mon code est un peu lourd pour les habitués de la programmation mais j'ai encore du mal à clarifier mes programmes.
J'invite les programmeurs à m'aider dans l'amélioration de mon code et d'y apporter de nouvelles fonctionnalités interessantes.
Si vous aussi vous faites des programmes vous pouvez les mettre en télechargement.

http://www.zshare.net/download/627540776f4e834c/
 

hop première correction v2.1
http://www.zshare.net/download/62793616f4250431/
correction apportée:
problème de cumul du nombre de coups entre deux parties corrigé
 

et c'est parti pour les versions qui vont se suivre jusque la v28.1.25.36. :lol:

sinon, pas pu le tester, mais bel effort ;)
 

oui bel effort

sauf que je peux pas le telecharger du taff..normal je dirais

j'essaierai chez moi.


" Access Denied (content_filter_denied)


You are not allowed to access to : "Freeware and Software Download;Productivity".


For assistance, contact your network support team. "
 

nan je pense pas ajouter de nouvelles fonctionnalités mais plutot optimiser le code et corriger les bugs que je n'aurai pas vu
 

HOP
Alors, c'est pas une mise à jour mais un code différent.
J'ai donc tenté de clarifier le code et j'ai remplacé certaines conditions else...if par des switch
_ ou -.RAR - 0.01MB
pour ceux qui ont pas de compileur et savent pas comment regarder le fichier source, ouvrez le simplement avec le bloc note
 

HOP
Alors, c'est pas une mise à jour mais un code différent.
J'ai donc tenté de clarifier le code et j'ai remplacé certaines conditions else...if par des switch
_ ou -.RAR - 0.01MB
pour ceux qui ont pas de compileur et savent pas comment regarder le fichier source, ouvrez le simplement avec le bloc note
Si le mec n'arrive pas à ouvrir un fichier C ce n'est même pas la peine d'aller plus loin :lol:
 


Je m'ennuyais un peu ce soir et je t'ai réorganisé un peu ça
http://proxima0.free.fr/fp/prjJr.rar

Ce n'est pas parfait (ça fait très longtemps que je n'avais pas fait de C) et tout n'est pas blindé (loin de la). Le but de ce code c'est d'avoir une approche fonctionnelle de ton projet, à savoir une fonction par fonctionnalité et par fichier. Ça peut paraitre bête et pas franchement justifié mais c'est bien plus clair et maintenable ainsi.

Sinon en vrac :
- pas de déclaration (int ..., char ....) ailleurs que dans les premières lignes d'une fonction, c'est à dire surtout pas en plein milieu d'un algo.
- découpe en fonction. En général une fonction ne doit pas faire plus de 20/25 lignes. Si une fonction est trop longue c'est qu'elle n'est pas assez atomique et qu'il faut créer des sous fonctions.
- découpe/simplifie tes lignes, elles ne doivent pas faire plus de 80 caractères environs.

Sinon c'est plutôt pas mal pour un début, si tu n'as pas trop copier/coller le tuto et bien compris ce que tu as fait c'est même très bien :) vivement les pointeurs que l'on se marre un peu :D
 

au moment où j'ai écrit le programme, je n'avais pas encore abordé suffisemment les fonctions.
Et non je n'ai même pas lu la correction du TP
 

d'ailleur je viens de tester ton code et rien que le menu bug.
"(tapez 666 pour quitter le jeu)"
ce que je fais immediatement et là:
choisissez la difficulté...
ba pourtant j'avais dit que je voulais arrêter moi :D

EDIT1: je choisis donc la difficulté avec laquelle je souhaite quitter le jeu :D
"Hardcore"
poum le programme se ferme xD
 


help.
je fais un programme de blackjack en C mais j'ai un prob, je vous envoi le source pour que vous me disiez pourquoi la banque pioche tout le temps la même carte. Bon y a aucun commentaire donc pas agréable à lire mais je peux vous dire que c'est dans le bas du programme.

[cpp]#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int piocheCarte = 0;
int piocheCarteBot = 0;
int unOuOnze = 0;
int interroPioche = 0;
int totalPioche = 0;
int totalPiocheBot = 0;
const int MAX = 12, MIN = 1;
int main()
{
//Joueur
srand(time(NULL));
piocheCarte = (rand() % (MAX - MIN + 1)) + MIN;
if ( piocheCarte >=10)
{
piocheCarte = 10;
}
printf("Vous avez pioche %d\n", piocheCarte);
if (piocheCarte == 1)
{
printf("1 ou 11?");
scanf("%d", &amp;unOuOnze);
if( unOuOnze == 1)
{
piocheCarte = 1;
}
else
{
piocheCarte = 11;
}
}
totalPioche = totalPioche + piocheCarte;
printf("TOTAL : %d\n", totalPioche);
printf("Voulez vous piocher? (1 pour OUI et 2 pour NON)\n");
scanf("%d", &amp;interroPioche);
while ( interroPioche != 2 )
{
srand(time(NULL));
piocheCarte = (rand() % (MAX - MIN + 1)) + MIN;
if ( piocheCarte >=10)
{
piocheCarte = 10;
}
printf("Vous avez pioche %d\n", piocheCarte);
if (piocheCarte == 1)
{
printf("1 ou 11?");
scanf("%d", &amp;unOuOnze);
if( unOuOnze == 1)
{
piocheCarte = 1;
}
else
{
piocheCarte = 11;
}
}
totalPioche = totalPioche + piocheCarte;
printf("TOTAL : %d\n", totalPioche);
printf("Voulez vous piocher? (1 pour OUI et 2 pour NON)\n");
scanf("%d", &amp;interroPioche);
}
//Banque
while ( totalPiocheBot <= 15)
{
srand(time(NULL));
piocheCarteBot = (rand() % (MAX - MIN + 1)) + MIN;
if ( piocheCarteBot >=10)
{
piocheCarteBot = 10;
}
printf("La banque a pioche : %d\n", piocheCarteBot);
totalPiocheBot = totalPiocheBot + piocheCarteBot;
printf("Pour un total de : %d\n", totalPiocheBot);
}
return 0;
}
[/cpp]
 

ça bloque à la génération de la carte du bot. il pioche sans arrêt la même carte mais comme c'est une boucle un nouveau chiffre devrait être généré, or ce n'est pas le cas
 

pas besoin de rappeler srand à chaque itération, en fait :
- srand choisi une liste de nb aléatoire
- rand te renvoi un nombre de la liste différent à chaque appel.

En gros ton probleme c'est que srand(time(null)) va donner par ex
srand(645463945345) sauf que l'éxécution de la boucle est très rapide et que l'appel system (time) n'aura pas le temps de se mettre à jour (tu régénérera toujours la meme liste) et comme tu rappels srand avant chaque rand, rand te renvoi toujours le meme nombre.
Enfait ce sont des nombres pseudo aléatoires, en gros ça marche comme ça :

srand(0) : 12,43,546,32,324 ....
1er appel de rand() renvoi 12
2eme appel de rand() renvoi 43
3eme appel de rand() renvoi 546

Si tu refaits srand(0) le prochain appel de rand() renvera 12, puis 43 ...

La solution est donc de n'appeler srand qu'une seule fois à l'initialisation de ton programme.
 



faut pas le dire. et en même temps j'ai pris cette fonction dans un tutorial C, donc je ne savais pas exactement comment ça marchait. Le prog est presque fini, me reste qu'a ajouter le système de mise
 



Bonne idée :D

5$ le conseil -> direct sur mon compte aux îles caïman, je suis bientôt riche :lol:
J'aurais plutôt vu un compte en Yen au Japon pour importer des caisses [:nono le bo] [:nono le bo]