You are on page 1of 12

Colegiul Naional Vasile Alecsandri Galai

PROIECT
DE ATESTAT
PROFESIONAL
LA INFORMATIC

TITLUL LUCRRII:

Spnzurtoarea


Elev:
Iessensky Andrei Victor


Profesor ndrumtor
Voinea Mirela
CUPRINS

1. Motivatia

2. C++ Builder

3. Interfata

4. Algoritm

5. Implementari viitoare

6. Bibliografie









MOTIVATIA

Lucrarea de fata isi propune sa studieze functionalitatea, eficienta si utilitatea
limbajului de programare C++ prin compunerea unui cod si compilarea acestuia in practica.
Problema aleasa ca domeniu de studiu este jocul Spanzuratoarea, un joc emblematic pentru
utilizatorii de calculator din toate grupele de varsta, iar grafica pentru ilustrarea spanzuratorii
este realizata din caractere simple. In continuare va voi prezenta caracteristicile si regulile
jocului ilustrat:


Informatii utile:
Jocul Spanzuratoarea a fost adaptat pentru un singur utilizator al aplicatiei
Se poate ghici atat o litera, cat si un grump de litere (sir de caractere)


- Cuvntul ce trebuie ghicit este reprezentat de un ir de linii, fiecare linie reprezentnd o
liter a
cuvntului.

- Sunt oferite ca ajutor prima si ultima litera a cuvantului.

- Dac juctorul care ghicete sugereaz o liter ce se afl n cuvnt, programul completeaz
spatiile cu litera corespunzatoare n toate poziiile unde aceasta apare.

- Dac litera nu se afl n cuvnt, programul deseneaz un element din diagrama
spnzurtoarea.

- Limita de greseli este de: 8

Jocul se ncheie cnd:

Juctorul care ghicete completeaz tot cuvntul, sau l ghicete exact.
Este completata diagrama.




C++ BUILDER

C++Builder este un mediu de dezvoltare rapid a aplicaiilor produs de filiala CodeGear a
Embarcadero Technologies pentru scrierea programelor n limbajul de programare C++. C++Builder
combin biblioteca de componente vizuale i un IDE scris n Delphi, cu un compilator C++. Ciclul de dezvoltare
este n aa fel nct Delphi primete primul mbuntiri semnificative, urmat de C++Builder. Majoritatea
componentelor dezvoltate n Delphi pot fi folosite n C++Builder fr modificri, dar nu i invers.
C++Builder include unelte care permit dezvoltarea vizual bazat pe drag-and-drop, fcnd
programarea mai facil prin implementarea unui GUI builder WYSIWYG n IDE.
C++Builder a fost iniial lansat numai pentru platforma Microsoft Windows. Versiunile urmtoare includeau
Borland CLX, o librrie cross-platform bazat pe Qt, pentru dezvoltare vizual, care funcioneaz pe
platformele Windows i Linux.
n 2003, Borland a lansat C++BuilderX (CBX), scris pe acelai framework ca JBuilder i purta foarte puine
asemnri cu C++Builder sau Delphi. A fost conceput pentru dezvoltarea programelor de dimensiuni mari
pentru ntreprinderi. Cu toate acestea, nu a avut succes comercial. La sfritul anului 2004, Borland a anunat
c va continua s lucreze la clasicul C++Builder si l va distribui mpreuna cu Delphi, abandonnd C++BuilderX.
Dup aproximativ un an de la anun, Borland a lansat Borland Developer Studio 2006, un pachet robust care
include Delphi, C++Builder i C#Builder.
n 2007, Borland a lansat C++Builder 2007, cu suport complet API pentru Microsoft Vista, conformitate sporit
pentru ANSI C++, compilare prin IDE pn la 500% mai rapid, suport pentru MSBuild, arhitectura de baze de
date DBX4 i VCL pentru Web, care suport AJAX. API-ul pentru Vista include aplicaii cu teme i suport
VCL pentru Aero i spaiul de lucru Vista. CodeGear RAD Studio 2007 include C++Builder 2007 i Delphi. Tot n
2007, Borland a renviat brand-ul Turbo i a lansat dou ediii Turbo de C++Builder: Turbo C++
Professional i Turbo C++ Explorer (gratuit), bazat pe Borland C++Builder 2006.
C++Builder 2009 a fost lansat n august 2008, iar printre cele mai semnificative mbuntiri se numr suport
Unicode complet n VCL i RTL, implementare a standardului C++0x, suport complet ITE, componente native
Ribbon i includerea librriei Boost.
O versiune viitoare a CodeGear C++Builder (cu numele de cod Commodore) va avea suport pentru x86-64 i
va crea cod nativ x86-64.
C++Builder a fost iniial lansat numai pentru platforma Microsoft Windows. Versiunile urmtoare
includeau Borland CLX, o librrie cross-platform bazat pe Qt, pentru dezvoltare vizual, care funcioneaz
pe platformele Windows i Linux.
n 2003, Borland a lansat C++BuilderX (CBX), scris pe acelai framework ca JBuilder i purta foarte
puine asemnri cu C++Builder sau Delphi. A fost conceput pentru dezvoltarea programelor de dimensiuni
mari pentru ntreprinderi. Cu toate acestea, nu a avut succes comercial. La sfritul anului 2004, Borland a
anunat c va continua s lucreze la clasicul C++Builder si l va distribui mpreuna cu Delphi, abandonnd
C++BuilderX.
INTERFATA


Literele folosite pentru a ghici cuvantul


Click Start pentru a incepe jocul



//---------------------------------------------------------------------------------------------------------------------------

#include <vcl\vcl.h>
#pragma hdrstop

#include Spanzuratoarea.h

//---------------------------------------------------------------------------------------------------------------------------

#pragma resource *.dfm

using namespace std;

TForm1 *Form1;
//---------------------------------------------------------------------------------------------------------------------------
----------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)

//Declararea butoanelor si incarcarea primei imagini
(exemplu)

{
butoaneLitera[0] = ButtonA;
indexPoza = 1;
Image->Picture->LoadFromFile(img\\1.bmp);
}

//Generarea butoanelor(exemplu)

//---------------------------------------------------------------------------------------------------------------------------
----------------------------------
void __fastcall TForm1::ButtonAClick(TObject *Sender)
{
butonApasat(A);
}

//---------------------------------------------------------------------------------------------------------------------------

//Generarea interfetei jocului

void __fastcall TForm1::ButtonStartClick(TObject *Sender)
{
jocStartat = true;
indexPoza = 1;
vector<AnsiString> cuvinte;

LabelRezultat->Caption = ;
LabelCuvantVizibil->Caption = ;
LabelCuvant->Caption = ;

for(int index = 0; index < NUMAR_LITERE; index++)
{
butoaneLitera[index]->Enabled = true;
}

FILE *fr;
char linie[80];
fr = fopen (spanzuratoarea.txt, rt);
(fr != NULL) if
{
while(fgets(linie, 80, fr) != NULL)
{
cuvinte.push_back(linie);
}
fclose(fr);
}

if(cuvinte.size() == 0)
{
MessageBox(0, (LPSTR) Fisierul spanzuratoarea.txt este gol!, Error,
MB_ICONWARNING | MB_OK);
cuvant = ;
}
else
{
cuvant = cuvinte[random(cuvinte.size())].UpperCase().Trim();
}

if(cuvant.Length() > 0)
{
char* pCuvant = cuvant.c_str();
butoaneLitera[pCuvant[0] - ASCII_OFFSET]->Enabled = false;
butoaneLitera[pCuvant[strlen(pCuvant) - 1] - ASCII_OFFSET]->Enabled = false;
refreshLabelString();
}
else
{
jocStartat = false;
}
}

//---------------------------------------------------------------------------------------------------------------------------

void TForm1::refreshLabelString()
{
AnsiString labelString = ;
char* c = cuvant.c_str();
int litereCorecte = 0;





Pagina de pornire a jocului



Mesajul afisat dupa ghicirea cuvantului

Cuvantul ce trebuia ghicit


// formateaza cuvantul ce va fi afisat (C A _ C _ _ A _ _ R)

for (int index = 0; index < strlen(c); index++)
{
if(!butoaneLitera[c[index] - ASCII_OFFSET]->Enabled)
{
AppendStr(labelString, c[index]);
AppendStr(labelString, );
litereCorecte++;
}
else
{
AppendStr(labelString, _ );
}
}


// afiseaza cuvantul formatat

LabelCuvant->Caption = labelString;

// verifica daca a castigat

if(litereCorecte == strlen(c))
{
LabelRezultat->Caption = Ai castigat!;
jocStartat = false;
}
else
{






O incercare nereusita



// afiseaza poza corespunzatoare
statutului jocului

AnsiString fileName = img\\;
AppendStr(fileName, indexPoza);
AppendStr(fileName, .bmp);
Image->Picture->LoadFromFile(fileName);

// am ajuns la ultima poza, jocul e pierdut

if(indexPoza == NUMAR_POZE)
{
labelString = ;
LabelRezultat->Caption = Ai pierdut!;
for (int index = 0; index < strlen(c); index++)
{
AppendStr(labelString, c[index]);
AppendStr(labelString, );
}
LabelCuvantVizibil->Caption = labelString;
jocStartat = false;
}
}
}

//---------------------------------------------------------------------------------------------------------------------------

void TForm1::butonApasat(char litera)
{
if(jocStartat)
{
if(cuvant.Pos(litera) == 0)
{

// trece la urmatoarea poza

indexPoza++;
}

// dezactiveaza butonul

butoaneLitera[litera - ASCII_OFFSET]->Enabled=false;

// afiseaza interfata noua

refreshLabelString();
}
}

//---------------------------------------------------------------------------------------------------------------------------




ALGORITM













IMPLEMENTARI VIITOARE

Pe viitor, acest joc poate fi dezvoltat ca
aplicatie pentru tablete sau telefoane
inteligente.



BIBLIOGRAFIE

http://ro.wikipedia.org/wiki/Spnzurtoare_(joc)
http://dexonline.ro/moara
http://dexonline.ro/cuvantul-lunii
http://dexonline.ro/cuvantul-zilei
http://dexonline.ro/spanzuratoarea