Soyez le premier à donner votre avis sur cette source.
Vue 4 217 fois - Téléchargée 349 fois
le fichier Ufille.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Ufille.h" #include "Umenu.h" #include "Unit1.h" #include "Unom.h" #include "Uoptions.h" #include "Uscore.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TFchild *Fchild; //--------------------------------------------------------------------------- __fastcall TFchild::TFchild(TComponent* Owner) : TForm(Owner) { tabedit[0] = Edit1; tabedit[1] = Edit2; tabedit[2] = Edit3; tabedit[3] = Edit4; tabedit[4] = Edit5; tabedit[5] = Edit6; tabedit[6] = Edit7; tabedit[7] = Edit8; tabedit[8] = Edit9; tabedit[9] = Edit10; tablabel[0] = Label1; tablabel[1] = Label2; tablabel[2] = Label3; tablabel[3] = Label4; tablabel[4] = Label5; tablabel[5] = Label6; tablabel[6] = Label7; tablabel[7] = Label8; tablabel[8] = Label9; tablabel[9] = Label10; tablabel[10] = Label11; tablabel[11] = Label12; tablabel[12] = Label13; tablabel[13] = Label14; tablabel[14] = Label15; tablabel[15] = Label16; tablabel[16] = Label17; tablabel[17] = Label18; tablabel[18] = Label19; tablabel[19] = Label20; Label2->Visible = false; Label3->Visible = false; Label4->Visible = false; Label5->Visible = false; Label6->Visible = false; Label7->Visible = false; Label8->Visible = false; Label9->Visible = false; Label10->Visible = false; Edit2->Visible = false; Edit3->Visible = false; Edit4->Visible = false; Edit5->Visible = false; Edit6->Visible = false; Edit7->Visible = false; Edit8->Visible = false; Edit9->Visible = false; Edit10->Visible = false; cpt = 0; srand ((unsigned)time (&temps)); nb = rand()%(Foptions->MAX+1); t1 = time(0); } //--------------------------------------------------------------------------- void __fastcall TFchild::FormClose(TObject *Sender, TCloseAction &Action) { // ferme la fiche fille et libère toute la mémoire allouée à la fiche Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TFchild::BitBtnvaliderClick(TObject *Sender) { int nblu; // nombre proposé par le joueur test alex; if (alex.isnum(tabedit[cpt]->Text)==false) { Application->MessageBox("La saisie doit être des chiffres.", "Erreur", MB_ICONERROR); tabedit[cpt]->Clear(); return; } nblu = StrToInt(tabedit[cpt]->Text); if ((nblu<0) || (nblu>Foptions->MAX)) { AnsiString msga = "Le nombre doit être compris entre 0 et " + IntToStr(Foptions->MAX) + "."; Application->MessageBox (msga.c_str(), "Erreur", MB_ICONERROR); tabedit[cpt]->Clear(); return; } cpt++; if (nblu==nb && cpt<= Foptions->ESSAI) { t2=time(0); // prise du temps AnsiString msg = "Gagné en "; if (cpt==1) msg=msg + "1 coup et "; else msg = msg + IntToStr(cpt) + " coups et "; Fnom->Labelnom->Caption = msg + tempo(t2-t1) + " Vous entrez dans la liste des meilleurs. Veuillez saisir votre nom :"; Fnom->ShowModal(); // inscription dans le tableaux des scores if (cpt<10) { cptbis = "0" + IntToStr(cpt); // écrit 0x si le nombre de tentatives est < 10 } else cptbis = IntToStr(cpt); switch (Foptions->MAX) { case 1000 : // le jeu était à 1000 { Fscore->ListBox1->Items->Add(cptbis); Fscore->ListBox2->Items->Add(temposcore(t2-t1)); Fscore->ListBox3->Items->Add(strlwr(Fnom->Editnom->Text.c_str())); // convertit le nom entré en minuscule Fscore->ListBox4->Items->Add(IntToStr(Foptions->MAX)); Fscore->tricroissant (Fscore->ListBox1, Fscore->ListBox2, Fscore->ListBox3, Fscore->ListBox4, Fscore->ListBox1->Items->Count); // permet de ne garder que les 100 meilleurs if (Fscore->ListBox1->Items->Count > 100) Fscore->meilleur (Fscore->ListBox1, Fscore->ListBox2, Fscore->ListBox3, Fscore->ListBox4, Fscore->ListBox1->Items->Count); break; } case 100 : // le jeu était à 100 { Fscore->ListBox5->Items->Add(cptbis); Fscore->ListBox6->Items->Add(temposcore(t2-t1)); Fscore->ListBox7->Items->Add(strlwr(Fnom->Editnom->Text.c_str())); // convertit le nom entré en minuscule Fscore->ListBox8->Items->Add(IntToStr(Foptions->MAX)); Fscore->tricroissant (Fscore->ListBox5, Fscore->ListBox6, Fscore->ListBox7, Fscore->ListBox8, Fscore->ListBox5->Items->Count); // permet de ne garder que les 100 meilleurs if (Fscore->ListBox5->Items->Count > 100) Fscore->meilleur (Fscore->ListBox5, Fscore->ListBox6, Fscore->ListBox7, Fscore->ListBox8, Fscore->ListBox5->Items->Count); break; } case 10 : // le jeu était à 10 { Fscore->ListBox9->Items->Add(cptbis); Fscore->ListBox10->Items->Add(temposcore(t2-t1)); Fscore->ListBox11->Items->Add(strlwr(Fnom->Editnom->Text.c_str())); // convertit le nom entré en minuscule Fscore->ListBox12->Items->Add(IntToStr(Foptions->MAX)); Fscore->tricroissant (Fscore->ListBox9, Fscore->ListBox10, Fscore->ListBox11, Fscore->ListBox12, Fscore->ListBox9->Items->Count); // permet de ne garder que les 100 meilleurs if (Fscore->ListBox9->Items->Count > 100) Fscore->meilleur (Fscore->ListBox9, Fscore->ListBox10, Fscore->ListBox11, Fscore->ListBox12, Fscore->ListBox9->Items->Count); break; } } Fnom->Editnom->Clear(); BitBtnvalider->Enabled = false; BitBtnannuler->Enabled = false; return; } else { if (cpt!=Foptions->ESSAI) { tablabel[cpt]->Visible = true; tabedit[cpt]->Visible = true; tabedit[cpt]->SetFocus(); } if (nblu < nb) tablabel[9+cpt]->Caption = "Votre nombre est trop petit ..."; if (nblu > nb) tablabel[9+cpt]->Caption = "Votre nombre est trop grand ..."; if (cpt==Foptions->ESSAI) { AnsiString msgbis = "Le nombre était : " + IntToStr (nb); Application->MessageBox(msgbis.c_str(), "Perdu", 0); BitBtnvalider->Enabled = false; BitBtnannuler->Enabled = false; return; } } } //--------------------------------------------------------------------------- void __fastcall TFchild::BitBtnannulerClick(TObject *Sender) { if (cpt!=10) tabedit[cpt]->Clear(); } //--------------------------------------------------------------------------- void __fastcall TFchild::BitBtnaideClick(TObject *Sender) { Application->HelpCommand (HELP_FINDER, 0); } //--------------------------------------------------------------------------- AnsiString TFchild::tempo (long tps) { AnsiString retour; long mn, sec; sec = tps%60; mn = (tps-sec)/60; if (tps==0) { retour = IntToStr(sec) + " seconde !"; } else if (mn==0) retour = IntToStr(sec) + " secondes !"; else if (mn==1 && sec==0) retour = IntToStr(mn) + " minute !"; else if (mn==1 && sec==1) retour = IntToStr(mn) + " minute et " + IntToStr(sec) + " seconde !"; else if (mn==1 && sec>1) retour = IntToStr(mn) + " minute et " + IntToStr(sec) + " secondes !"; else if (mn>1 && sec==0) retour = IntToStr(mn) + " minutes !"; else if (mn>1 && sec==1) retour = IntToStr(mn) + " minutes et " + IntToStr(sec) + " seconde !"; else retour = IntToStr(mn) + " minutes et " + IntToStr(sec) + " secondes !"; return (retour); } //---------------------------------------------------------------------------- AnsiString TFchild::temposcore (long tpsscore) { // fonction qui convertit un nombre en un format de temps pour l'afficher dans les scores AnsiString retourscore, retourhscore, retourmnscore, retoursecscore; long hscore, mnscore, secscore, t; t = tpsscore%3600; // variable intermédiaire hscore = (tpsscore - t)/3600; // nb d'heures secscore = t%60; // nb de secondes mnscore = (t - secscore)/60; // nb de minutes if (hscore<10) { retourhscore = "0" + IntToStr(hscore); // écrit 0x si le nombre est < 10 } else retourhscore = IntToStr(hscore); if (mnscore<10) { retourmnscore = "0" + IntToStr(mnscore); // écrit 0x si le nombre est < 10 } else retourmnscore = IntToStr(mnscore); if (secscore<10) { retoursecscore = "0" + IntToStr(secscore); // écrit 0x si le nombre est < 10 } else retoursecscore = IntToStr(secscore); retourscore = retourhscore + " : " + retourmnscore + " : " + retoursecscore; return (retourscore); } //---------------------------------------------------------------------------- void __fastcall TFchild::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (Fmenu->MDIChildCount==0) { Fmenu->Fentre1->Enabled = false; Fmenu->Cascades1->Enabled = false; Fmenu->mosaques1->Enabled = false; } else { Fmenu->Fentre1->Enabled = true; Fmenu->Cascades1->Enabled = true; Fmenu->mosaques1->Enabled = true; } if (BitBtnvalider->Enabled==true && BitBtnannuler->Enabled==true) Fmenu->Options1->Enabled = false; else Fmenu->Options1->Enabled = true; } //---------------------------------------------------------------------------
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.