» »

Iz C++ v Delphi

Iz C++ v Delphi

Terminator ::

Bi znal kdo to kodo pretvorit iz C++ v Delphi?

//Variable:-konec: oznacuje konec igre. Na zacetku ima vrednost 10, s vsako potezo
// pa se vrednost zmanjsa za 1. Ko deseze 1, je igre konec
// (neodloceno(ni vec prostih polj)) ali pa je nekdo zmagal).
// -poteza: oznacuje, da se igralec ali racunalnik ze naredil veljavno
// potezo (izbiro). 1=izbrana dovoljena poteza, 1!=ni bila izbrana
// dovoljena poteza, isti igralec izbira se enkrat.
// -in: vhod igralca (cloveka). Vrednosti: 1..9 =izbira polja,
// 0=prekinitev (igra se prekine in da moznost izhoda iz programa ali
// ponoven zacetek igre).
// -i1,i2: nosi rezultat igre oz. stevilo zmag posameznega igralca
// (i1=igralec, i2=racunalnik)
// -nav: oznacuje igralca, ki je na vrsti. Vredosti: 1=clovek, 0=racunalnik
// -t: nosi cas, ki je potreben za seme funckije srand().(le-ta je potrebna
// za nakljucno izbiro polja, ce racunalnik ni "v nevarnosti").
// -i: stevec
// -p[8]: igralno polje. Vrednosti: ' '=prazno,'X'=igralec,'O'=racunalnik
//
//Lastne funk.:-void kdo(int z,int& konec,int& i1,int& i2)
// ce se ugotovi, da je nekdo zmagal, potem ta funckija
// ugotovi kdo, mu da tocko in sporoci, da je trenutne igre
// konec.
// -void izberi(char p[],int& r,int& poteza,int& konec)
// oznaci polje, ki ga izbere racunalnik in pove, da
// je sedaj na vrsti clovek.
// -void pomoc()
// izpise nekaj podatkov o uporabi programa ob zagonu le-tega
//
//Tuje funk.:-srand(): seme za izbiro nakljucnega stevila
// -rand(): izbira nakljucnega stevila
//
//Komentar: IF stavke, katerim sledi le en stavek brez ELSE sem pisal v
// isti vrstici, saj je (po moje) program bolj pregleden - berljiv -
// krajsi po vrsticah.
//
#include < iostream.h >
#include< time.h > //za seme funkcije srand()
#include< stdlib.h > //za srand()

void kdo(int z,int& konec,int& i1,int& i2) //funkcija poisce zmagovalca in
{ //da znak za konec igre
if (z=='O')
{i2++;
konec=1;
}
if (z=='X')
{
i1++;
konec=1;
}
}

void izberi(char p[],int& r,int& poteza,int& konec)//funk. za racunal. izbiro in
{ //znak, da je rac. svoje opravil
p[r]='O';
poteza=1;
konec--;
}

void pomoc()//izpise prvo pomoc oz. navodila za uporabo
{
cout < < endl ;
cout < < " ------------------------------------------------- " < < endl;
cout < < " K R I Z C I - K R O Z C I " < < endl;
cout < < " ------------------------------------------------- "< < endl;
cout < < endl;
cout < < "Opis: Imate polje 3x3, v katero clovek in racunalnik " < < endl;
cout < < " izmenicno oznacujeta polje s svojim znakom " < < endl;
cout < < " (krizcem ali krozcem). Prvi, ki tako oznaci " < < endl;
cout < < " vrstico, stolpec ali diagonalo, je zmagal. " < < endl;
cout < < endl;
cout < < "Kontrole: ob napisu 'Poteza:' naj igralec vpise st." < < endl;
cout < < " polja, ki ga zeli oznaciti. St. polj so prikazane " < < endl;
cout < < " poleg igralne tabele. " < < endl;
cout < < endl;
cout < < " Ce vpisete za pozicijo st. 0 (nic), se trenutna " < < endl;
cout < < " igra prekine. Na koncu igre imate moznost igro " < < endl;
cout < < " koncati (2) ali pa poskusiti znova (1). " < < endl;
cout < < endl;
}

void main()
{
char p[8]; //spremenljivke
int i,konec,in,poteza;
int i1=0,i2=0,nav=1;
time_t t;
do
{
pomoc(); //izpisemo navodila za uporabo
for (i=0;i < 9;i++) //nastavitve
p[i]=' ';
konec=10;
do//---------------------------------------IGRA
{
if (nav==1) //igralec na potezi
{
nav=0;
cout < < endl < < endl;
for (i=0;i < 9;i++) //izpis
{
//if ((i==3)|(i==6)) cout < < endl < < " ----- " < < endl;
if(i==3) cout < < " 1|2|3"< < endl < < " ----- " < < " ----- " < < endl;
if(i==6) cout < < " 4|5|6 " < < endl < < " ----- " < < " ----- " < < endl;
cout < < p[i];
if ((i!=2)&(i!=5)&(i!=8)) cout< < " | ";
}
cout < < " 7|8|9"< < endl < < " Poteza: ";
cin > > in; //vprasamo po naslednji potezi
if (in==0) //ali je vhod poteza ali zelja po exit
konec=1;
else
{
if (p[in-1]==' ')
{
p[in-1]='X';
konec--;
}
else
{
cout< < "Zasedeno! "< < endl;
nav=1;
}
}
}
else //racunalik na potezi
{
nav=1;
poteza=0;
if (p[4]==' ') {int m=4; izberi(p,m,poteza,konec);} //logicni prvi napad
for(i=0;i < 9;i+=3) //ofenziva po vrsticah
{
if ((p[i]=='O')&&(p[i+1]=='O')&&(p[i+2]==' ')) izberi(p,i,poteza,konec);//p[i+2]='O';
if ((p[i]=='O')&&(p[i+2]=='O')&&(p[i+1]==' ')) izberi(p,i,poteza,konec);//p[i+1]='O';
if ((p[i+1]=='O')&&(p[i+2]=='O')&&(p[i]==' ')) izberi(p,i,poteza,konec);//p[i]='O';
}
if (poteza!=1)
for(i=0;i < 3;i++) //ofenziva po stolpcih
{
if ((p[i]=='O')&&(p[i+3]=='O')&&(p[i+6]==' ')) {int m=i+6; izberi(p,m,poteza,konec);}//p[i+6]='O';
if ((p[i]=='O')&&(p[i+6]=='O')&&(p[i+3]==' ')) {int m=i+3; izberi(p,m,poteza,konec);}//p[i+3]='O';
if ((p[i+3]=='O')&&(p[i+6]=='O')&&(p[i]==' ')) izberi(p,i,poteza,konec);//p[i]='O';
}
if(poteza!=1) //ofenzija po diagonalah
{
if ((p[0]=='O')&&(p[4]=='O')&&(p[8]==' ')) {int m=8; izberi(p,m,poteza,konec);}
if ((p[4]=='O')&&(p[8]=='O')&&(p[0]==' ')) {int m=0; izberi(p,m,poteza,konec);}
if ((p[2]=='O')&&(p[4]=='O')&&(p[6]==' ')) {int m=6; izberi(p,m,poteza,konec);}
if ((p[4]=='O')&&(p[6]=='O')&&(p[2]==' ')) {int m=2; izberi(p,m,poteza,konec);}
}
if (poteza!=1)
for(i=0;i < 9;i+=3) //defenziva po vrsticah
{
if ((p[i]=='X')&&(p[i+1]=='X')&&(p[i+2]==' ')) {int m=i+2; izberi(p,m,poteza,konec);}//p[i+2]='O';
if ((p[i]=='X')&&(p[i+2]=='X')&&(p[i+1]==' ')) {int m=i+1; izberi(p,m,poteza,konec);}//p[i+1]='O';
if ((p[i+1]=='X')&&(p[i+2]=='X')&&(p[i]==' ')) izberi(p,i,poteza,konec);//p[i]='O';
}
if (poteza!=1)
for(i=0;i < 3;i++) //defenziva po stolpcih
{
if ((p[i]=='X')&&(p[i+3]=='X')&&(p[i+6]==' ')) {int m=i+6; izberi(p,m,poteza,konec);}//p[i+6]='O';
if ((p[i]=='X')&&(p[i+6]=='X')&&(p[i+3]==' ')) {int m=i+3; izberi(p,m,poteza,konec);}//p[i+3]='O';
if ((p[i+3]=='X')&&(p[i+6]=='X')&&(p[i]==' ')) izberi(p,i,poteza,konec);//p[i]='O';
}
if(poteza!=1) //defenziva po diagonalah
{
if ((p[0]=='X')&&(p[4]=='X')&&(p[8]==' ')) {int m=8; izberi(p,m,poteza,konec);}
if ((p[4]=='X')&&(p[8]=='X')&&(p[0]==' ')) {int m=0; izberi(p,m,poteza,konec);}
if ((p[2]=='X')&&(p[4]=='X')&&(p[6]==' ')) {int m=6; izberi(p,m,poteza,konec);}
if ((p[4]=='X')&&(p[6]=='X')&&(p[2]==' ')) {int m=2; izberi(p,m,poteza,konec);}
}
if(poteza!=1) //nakljucna izbira polja
{
srand((unsigned) time(&t));
do
{
i=rand()%9;
if (p[i]==' ') izberi(p,i,poteza,konec);
}while(poteza!=1);

}
}
//----------------------------------------preverjanje
for (i=0;i < 3;i++) //po vrsticah
if ((p[i*3]==p[i*3+1])&&(p[i*3+1]==p[i*3+2]))
kdo(p[i*3],konec,i1,i2);
for (i=0;i < 3;i++) //po stolpcih
if ((p[i]==p[i+3])&&(p[i+3]==p[i+6]))
kdo(p[i],konec,i1,i2);
if ((p[0]==p[4])&&(p[4]==p[8])) //po diagonalah
kdo(p[0],konec,i1,i2);
if ((p[2]==p[4])&&(p[4]==p[6]))
kdo(p[2],konec,i1,i2);
}//----------------------------------------konec preverjanja
while (konec!=1);
cout < < endl < < endl;
for (i=0;i < 9;i++) //zadnji izpis
{
if ((i==3)|(i==6)) cout< < endl < < " ------ " < < endl;
cout < < p[i];
if ((i!=2)&(i!=5)&(i!=8)) cout < < " | ";
}
//--------------------------------------------konec igre
cout < < endl < < " Rezultat: Clovek:Racunalnik = "< < i1 < < " : "< < i2 < < endl;
cout < < " Se enkrat? (DA=1 Ne=2): "; //ce bi radi ponovili igro
cin > > konec;
}while(konec!=2);
}

//Dodano By MYTiX:
//Dodal sem variablo int m in sem jo zamenjal s stevili (ne z variablami) za v funkcijo:
// void izberi(char p[],int& r,int& poteza,int& konec)
//Razlog:
//Referenca ne more kazati na stevilo ampak samo na variablo(spremenljivko).

Gandalfar ::

lepo dokumentirano kodo imas.. kaj ti tocno ni vsec.. za kaj to sploh rabis? Naceloma, ce znas vsaj malo pascala ti to ne bi smelo bit problem pretvorit. Ce pa ne znas pascala pa si vzami en vikend in se ga bos lahko naucil.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo

[C#]polje znakov

Oddelek: Programiranje
112226 (2054) Ziga Dolhar
»

Program v C

Oddelek: Programiranje
51844 (1683) darkkk
»

[C++]Brisanje strukture

Oddelek: Programiranje
71363 (1294) jernejf
»

[C++]Strukture

Oddelek: Programiranje
53961 (3890) jernejf
»

c++ in linux/windows

Oddelek: Programiranje
121635 (1511) rapvirus

Več podobnih tem