begin process at 2010 03 19 11:44:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > JEU MASTERMIND

JEU MASTERMIND


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Débutant Date de création :26/01/2005 Date de mise à jour :27/01/2005 09:04:22 Vu / téléchargé :4 148 / 428

Auteur : lapucedu88

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Il s'agit du jeu du mastermind.
L'ordinateur choisit 5 couleur au hasard parmi 18.
Il peut y avoir deux couleurs identiques.
A vous de découvrir le code de couleur choisit par l'ordinateur


 Conclusion

Le code est un peu lourd.
Il faut obligatoirement faire Nouvelle Partie avant de pouvoir commercer à jouer.
Toutes remarques sur ce code sont les bienvenues.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 janvier 2005 16:20:59 :
J'ai essayer d'optimiser le plus possible mon code (mais je suis sûr que l'on peut encore un peu). Je n'ais pas encore intégré la notion de tableau de TShape proposé par Kenavo mais je compte le faire par la suite
27 janvier 2005 09:04:22 :
J'ai effectuer les dernières modifications qui m'ont été proposées

 Sources du même auteur

Source avec Zip GESTION DES FILMS
Source avec Zip PETIT REPERTOIRE
Source avec Zip Source avec une capture JEU DU PENDU
Source avec Zip Source avec une capture COMPOSANT HORLOGE ET PROGRAMME DE DEMO

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DE DÉS ZORG6 par dubois77
Source avec Zip Source avec une capture JOUEZ : LIGHTS 1.4 par JulioDelphi
Source avec Zip Source avec une capture JEU DE DAME DELPHI 7 par aom333
Source avec Zip JEU RAMI DES CHIFFRES SOLITAIRE par Toidil
Source avec Zip JEU DE TAQUIN par JCLESAGE

Commentaires et avis

Commentaire de Kenavo le 26/01/2005 11:36:31

"Le code est un peu lourd."

Non, sans blagues !

18 fois la procédure  TForm1.Couleur_MouseDown !!!
Il eut été plus élégant de n'en écrire qu'une qui s'occupât des 18 Tshapes concernés :

Procedure TForm1.CouleursMouseDown( Sender : TObject; Button : TMouseButton;
  Shift : TShiftState; X, Y : Integer );
Begin
  CouleurChoisi := (Sender as TShape).Brush.Color;
  cour.Brush.Color := CouleurChoisi ;
End;

...et pareil pour Choix_MouseDown

Procedure TForm1.ChoixMouseDown( Sender : TObject; Button : TMouseButton;
  Shift : TShiftState; X, Y : Integer );
Begin
  (Sender as TShape).Brush.Color := CouleurChoisi;
End;

Et vu le paquet de TShape, un creation dynamique de deux tableaux de Tshape à deux dimensions (un pour la zone l'affichage [27x5] et un pous la zone de résultat [27x3]) aurait encore allégé le code. Juste un compteur de coups réalisés pour pointer la bonne ligne, une fonction pour afficher le coup, une fonction pour afficher le résultat.

Allez, au boulot !

Ken@vo

Commentaire de JulioDelphi le 26/01/2005 12:56:56 administrateur CS

lourd oui c'est peu dire, FireFox n'a meme pas voulu me montrer la totalité du .pas !! "PLANTAGE" lol

C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!

C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!

C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!

C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!

=)

ps : MasterMind is ®

Commentaire de lapucedu88 le 26/01/2005 14:36:43

Ok, je savais qu'il était lourd, néanmoins je suis la pour apprendre et je demande que ça.
Dis moi Kenavo, je vois pas trop comment faire pour réaliser des tableaux de TShape.
Et si je veux utiliser (Senter as TShape).Brush.color:=clwhite dans l'événement OnClick de nouvelle partie sa met une erreur pourquoi

Commentaire de MAURICIO le 26/01/2005 15:13:44

C' est primitif comme code. Le principal etant que ça marche. Maintenant, si tu as besoin dans 1 mois de changer le programme, ça va te donner un mal de crane pas possible. Quand on dis de simplifier, ça veut dire:
-faciliter la compréhension du code.
-eviter d' ecrire du code répétitif remplaçable par une fonction.

Sender est la parametre passé dans l' event OnClick.
En fait, Sender est l' object qui a provoqué le onClick.
Si tu as 4 TSpeedButtons et que tu attribues le meme event BoutonClick par exemple, en faisant click sur un des 4 TSpeedButtons, tu sauras lequel gràce à Sender genre:

If Sender = SpeedButton1 Then ...
else
If Sender = SpeedButton2 Then ...

Commentaire de Kenavo le 26/01/2005 15:21:30

Salut la puce,

Déclarer un tableau de TShape n'est pas un gros problème, quoiqu'il y ait quelques règles à respecter.
Dans ton cas ça peut s'écrire comme suit :

dans les propriétés de la form (privées ou publiques selon l'usage extérieur qui peut en être fait) tu déclares :

  TabCoups : Array[0..26,0..4] of TShape;

... et dans FormCreate :

procedure TForm1.FormCreate(Sender: TObject);
var
  i, j : Integer;
begin
for i:= 0 to 26 do
  for j:= 0 to 4 do
  begin
    TabCoups[i,j]:=TShape.Create(self);
    With TabCoups[i,j] do
    begin
      Parent := Self; //faut pas oublier
      Width := 25;
      Height := 25;
      Left := 8 + j*24;
      Top :=  640 - i*24;
      Shape := stCircle;
      Brush.Color := clWhite;
    end;
  end;
end;

... et après, pour changer la couleur : TabCoups[i,j].Brush.Color := NewColor;

----------------------------
Attention à Sender!

Sender qui est passé par paramètre à l'évènement identifie l'émetteur de l'évènement.
Par exemple, quand on clique sur un bouton, dans la procédure déclenchée par l'évènement, sender (TObjet) est le bouton (TButton).
Pour accéder aux propriétés propres au bouton (comme Caption) on dit que l'objet sur lequel on a cliqué est un bouton (Sender as TButton) et on regarde ou modifie une propriété.
Mais, si c'est pas un bouton, il y a problème ! Et dans ton cas, le "sender" n'est pas un TShape mais un TButton ("nouvelle partie"): il y a erreur ! On peut vérifier le type en faisant : If Sender is TShape (ou TButton).

Commentaire de lapucedu88 le 26/01/2005 16:22:33

Ok, je te remercie Kenavo, je vais essayer de regarder ça pour demain.

Commentaire de lapucedu88 le 27/01/2005 09:09:34

Sa y est j'ai essayer de vraiment optimiser mon code (peut être encore deux ou trois retouches),
J'ai créé des procedure dans certains cas et, kenavo, tes tableaux marche super bien, en plus il me simplifie mon code.
Merci à vous tous et si vous avez d'autre remarques à faire, je les attends avec impatiences
Bisous à vous tous.

Commentaire de JulioDelphi le 27/01/2005 11:16:24 administrateur CS

ha bah ça c de l'optimisation ! tu te sens pas plus legere ? plus simple  ala lecture le code tt de meme !
bien joué =)

Commentaire de lapucedu88 le 27/01/2005 12:06:00

Merci JulioDelphi. Il est vrai que je pense toujours à utiliser des procédures. De plus les tableaux que Kenavo m'a fait utiliser permette d'allèger le code.
Je vous remercie, car depuis que j'utilise ce site j'apprend beaucoup plus vite et cet apprentissage je le dois à vous tous.
Bisous

Commentaire de Kenavo le 27/01/2005 14:28:43

Moi, ce que jaime, c'est quand remarques et conseils sont aussi vite et bien compris et mis en pratique !
Bravo !

Ken@vo

Commentaire de lapucedu88 le 27/01/2005 15:45:13

Merci kenavo, mais je suis la pour ça, écouter les remarques que l'on me fait afin d'amèliorer ma façon de programmer.
D'ailleur je viens de laisser un message sur le forum afin de l'amèliorer encore un peu.

Commentaire de barbichette le 11/04/2005 11:59:59

Salut,
un peu en retard par rapport aux autres,

Il n'y a pas besoin de faire un FORMACTIVATE pour initialiser le tableau CouleurPossible.

Pour les déclarations en dehors des procedures et fonctions, il est possible d'attribuer directement les valeurs.

Ainsi pour la déclaration de CouleurPossible, écrire

CouleurPossible : Array[ 1..28 ] Of TColor=
(clred, clblack, clgreen, clblue, clteal, clgray,
cllime, clyellow, clfuchsia, claqua, clmaroon, clolive,
clnavy, clpurple, clsilver, clmoneygreen, clskyblue, clinfobk);

Et voilà, quelques lignes de gagnées et un code plus clair...

Commentaire de lapucedu88 le 12/04/2005 10:11:53

c'est vrai barbichette, c'est une chose à laquelle je ne pense jamais.
Depuis le temps j'en ai fait un autre, mais je le met sur le réseaux car je l'ai pas fait toute seul.
Je changerais ce défault à l'occasion, pour l'instant je suis sur un autre projet.
Bisous à vous tous.

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales