1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Roulette
{
class Program
{
// NOM_PROG et VERSION sont des éléments qu'on trouve dans le fichier généré automatiquement par Visual Studio "Assembly.cs".
// Il vaut mieux se servir de ce qui est offert en standard. Mais bon, après ça peut venir du prof donc on va pas chipoter.
const string NOM_PROG = "Roulette";
const string VERSION = "1.0.1";
// Là, y'a des jolies constantes... En général, ça sert à éviter les "MagicNumbers" dans le code...
const int NB_MIN = 0;
const int NB_MAX = 10;
const int SOLDE = 1000;
const int SOLDE_MIN = 1;
static void Main(string[] args)
{
// Alors il sort d'où ce MagicNumber ? Utilise la constante SOLDE à la place.
int iSolde = 1000, iSoldeMiser, iNombre, iNombreTire;
int compteur;
// Encore un MagicNumber, c'est quoi ce 50 ?
for (compteur = 0; compteur < 50; compteur++)
{
// Si tu redéclare Random() à chaque itération, tu vas générer toujours les mêmes séries de nombres aléatoires. Il y a mieux comme aléatoire...
Random r = new Random();
// Ok, et si NB_MIN passe à 1 ? Utilise r.Next(NB_MIN, NB_MAX + 1) à la place.
iNombreTire = r.Next(NB_MAX + 1);
Console.Write(" ----------------------------------------\n| Bienvenue dans {0} version {1} |\n ----------------------------------------\n", NOM_PROG, VERSION);
// Euh... Si j'ai une dette, la banque, non seulement me l'efface, mais m'offre la valeur absolue de ma dette ?
if (iSolde < 0)
{
iSolde *= -1;
}
// Accessoirement, pour gérer de la monnaie avec la bonne locale, on peut utiliser {0:C}
Console.WriteLine("Votre solde est de {0}.-", iSolde);
Console.WriteLine("Entrer un nombre entre {0} et {1}", NB_MIN, NB_MAX);
// Si je tapes "toto va à la plage", il se passe quoi ? Utilise plutôt int.TryParse()
iNombre = Convert.ToInt32(Console.ReadLine());
while (!(iNombre <= NB_MAX && iNombre >= NB_MIN))
{
// Euh... C'est quoi ce if ? Et ce MagicNumber ? Mauvais copier/coller de l'écran de ton voisin, non ? Accessoirement, le OU LOGIQUE c'est || pas | qui est le OU BINAIRE et qui fait pas trop la même chose...
if (iNombre >= NB_MAX | iNombre <= 0)
{
Console.WriteLine("Le nombre entré n'est pas valide");
// int.TryParse()
iNombre = Convert.ToInt32(Console.ReadLine());
}
}
Console.WriteLine("Entrer le montant que vous voulez miser entre 1 et {0}", iSolde);
// int.TryParse()
iSoldeMiser = Convert.ToInt32(Console.ReadLine());
while (!(iSoldeMiser <= iSolde && iSoldeMiser >= SOLDE_MIN))
{
// Et donc le if il sert à quoi ?
if (!(iSoldeMiser >= iSolde && iSoldeMiser <= SOLDE_MIN))
{
Console.WriteLine("Le nombre entré n'est pas valide");
// int.TryParse()
iSoldeMiser = Convert.ToInt32(Console.ReadLine());
}
}
// Juste comme ça, parce que moi j'aime bien faire les choses dans l'ordre : on choisi un nombre PUIS on lance la roulette. Pas l'inverse. Donc le r.Next(int, int) devrait ête lancé ici et non en début de boucle.
if (iNombre == iNombreTire)
{
// Pourquoi faire deux-fois le même calcul quand on peut passer par une variable intermédiaire "iGain" ?
Console.WriteLine("Bravo, vous avez gagné {0}.- !!", iSoldeMiser * 10);
iSolde = iSoldeMiser * 10 + iSolde - iSoldeMiser;
}
else
{
Console.WriteLine("Vous avez perdu {0}.- !!, le nombre était {1}", iSoldeMiser, iNombreTire);
// Ah, ok, j'ai compris le coup de la dette... t'as pas l'impression qu'elle est à l'envers ta soustraction ? et -= c'est pour les chèvres ?
iSolde = iSoldeMiser - iSolde;
}
// Perso, je préfère un test sur > 0 car on sait jamais... Mais bon, vu le bug 2 lignes plus haut, je comprends ton test...
if (iSolde != 0)
{
// Alors, je répond "n", et... bah faut jouer quand même ? Et si je tapes "x" ?
Console.WriteLine("Voulez-vous rejouer ? o/n");
Console.ReadKey();
Console.Clear();
}
else
{
Console.WriteLine("Vous avez tout perdu. Au revoir");
Console.WriteLine("\nPresser une touche pour terminer le programme ... ");
Console.ReadKey();
return;
}
}
}
}
} |
Partager