Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Probleme baterie Samsung A54

Schema statie auto Renegade REN 1...

Magazine IT de incredere

Parere SKODA Octavia 3 2.0TDI 150CP
 Achizitie telefon 1000-1200lei

Unde gasesc o lampa buna pe gaz?

Consulta specialiștii... Und...

Fostul director al Frontex: Comis...
 Construire anexa lipita de casa

Ce folositi pentru urina mirosito...

Socializare in prezenta copiilor

Cont Samsung A32
 Hotarare definitiva a instantei, ...

Laptop office 2500 lei

un ceai bun

sugerarea bacsisului de catre pat...
 

TicTacToe in consola C++

- - - - -
  • Please log in to reply
6 replies to this topic

#1
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015
Salut!
Sunt curios ce parere aveti despre acest joculet facut in c++, mi-ar placea niste critici constructive.

Prima data am vrut sa folosesc o matrice pentru coordonate dar nu mi-a iesit asa ca am facut mai in noob style Posted Image.
Apropo am scris programul in engleza caci mi s-a parut mai ok.

#include <iostream>
using namespace std;
int main()
{
char tab11=' ',tab12=' ',tab13=' ',tab21=' ',tab22=' ',tab23=' ',tab31=' ',tab32=' ',tab33=' ';
string name1,name2;
int intrareTabel;
bool coordonateCorecte;
cout << "Welcome to TicTacToe!"<<endl;
cout << "Version 1.0\n";
cout << "Player 1's name: ";
cin >> name1;
cout << "Player 2's name: ";
cin >> name2;
cout << "Player 1 = X\nPlayer2 = O\n";
while(true){
	 cout << " 1 2 3"<<endl<<"1 "<<tab11<<' '<<tab12<<' '<<tab13<<endl<<"2 "<<tab21<<' '<<tab22<<' '<<tab23<<endl<<"3 "<<tab31<<' '<<tab32<<' '<<tab33<<endl<<endl;
	 cout << "______________________"<<endl;
	 cout << name1 << "'s turn!\n";
	 cout << "Coordonates are : ";
	 cin >> intrareTabel;
	 coordonateCorecte=false;
	 do{
	 if(intrareTabel==11 && tab11 ==' '){
		 tab11 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==12 && tab12 ==' '){
		 tab12 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel ==13 && tab13 ==' '){
		 tab13 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==21 && tab21 ==' '){
		 tab21 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==22 && tab22 ==' '){
		 tab22 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==23 && tab23 ==' '){
		 tab23 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==31 && tab31 ==' '){
		 tab31 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==32 && tab32 ==' '){
		 tab32 ='X';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==33 && tab33 ==' '){
		 tab33 ='X';
		 coordonateCorecte=true;
	 }else{
	 cout << "Invalid Option!\nPlease introduce the corect coordonates!\n";
	 cout << "Coordonates are: ";
	 cin >> intrareTabel;
	 }
	 }while(coordonateCorecte==false);
	 if(tab11=='X'&&tab12=='X'&&tab13=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab21=='X'&&tab22=='X'&&tab23=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab31=='X'&&tab32=='X'&&tab33=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab11=='X'&&tab21=='X'&&tab31=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab11=='X'&&tab21=='X'&&tab31=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab12=='X'&&tab22=='X'&&tab32=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab13=='X'&&tab23=='X'&&tab33=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab11=='X'&&tab22=='X'&&tab33=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }else
	 if(tab13=='X'&&tab22=='X'&&tab31=='X'){
		 cout << name1<<" wins the game!!";
		 break;
	 }
	 cout << "______________________"<<endl;
	 cout << " 1 2 3"<<endl<<"1 "<<tab11<<' '<<tab12<<' '<<tab13<<endl<<"2 "<<tab21<<' '<<tab22<<' '<<tab23<<endl<<"3 "<<tab31<<' '<<tab32<<' '<<tab33<<endl<<endl;
	 cout << "______________________"<<endl;
	 cout << name2 << "'s turn!\n";
	 cout << "Coordonates are : ";
	 cin >> intrareTabel;
	 coordonateCorecte=false;
	 do{
	 if(intrareTabel==11 && tab11 ==' '){
		 tab11 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==12 && tab12 ==' '){
		 tab12 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel ==13 && tab13 ==' '){
		 tab13 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==21 && tab21 ==' '){
		 tab21 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==22 && tab22 ==' '){
		 tab22 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==23 && tab23 ==' '){
		 tab23 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==31 && tab31 ==' '){
		 tab31 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==32 && tab32 ==' '){
		 tab32 ='O';
		 coordonateCorecte=true;
	 }else
	 if(intrareTabel==33 && tab33 ==' '){
		 tab33 ='O';
		 coordonateCorecte=true;
	 }else{
	 cout << "Invalid Option!\nPlease introduce the corect coordonates!\n";
	 cout << "Coordonates are: ";
	 cin >> intrareTabel;
	 }
	 }while(coordonateCorecte==false);
	 if(tab11=='O'&&tab12=='O'&&tab13=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab21=='O'&&tab22=='O'&&tab23=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab31=='O'&&tab32=='O'&&tab33=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab11=='O'&&tab21=='O'&&tab31=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab11=='O'&&tab21=='O'&&tab31=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab12=='O'&&tab22=='O'&&tab32=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab13=='O'&&tab23=='O'&&tab33=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab11=='O'&&tab22=='O'&&tab33=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }else
	 if(tab13=='O'&&tab22=='O'&&tab31=='O'){
		 cout << name2<<" wins the game!!";
		 break;
	 }
}
cin >> intrareTabel; ///This is just for sotoping the program automaticaly close
return 0;
}



Ma gandeam sa fac si o optiune pentru a juca contra calculatorului.
Am facut si o poza : http://prntscr.com/ijgias

Edited by GunMK, 25 February 2018 - 12:55.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,137
  • Înscris: 24.02.2007
Mult prea mult cod repetitiv :)

#3
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015

View Postdani.user, on 25 februarie 2018 - 13:00, said:

Mult prea mult cod repetitiv Posted Image
Stiu, ma gandeam sa transfer verificariele acelea cu ifuri in niste functii pe care sa le initializez dar ar fi cam aceeasi chesti din moment ce ar trebuii 2 functii diferite pentru fiecare player pentru ca nu stiu cum sa fac doar 2 si sa schimb X sau O si nume1 nume2 etc cand initializez functia la un anumit player

#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostGunMK, on 25 februarie 2018 - 13:05, said:

Stiu, ma gandeam sa transfer verificariele acelea cu ifuri in niste functii pe care sa le initializez dar ar fi cam aceeasi chesti din moment ce ar trebuii 2 functii diferite pentru fiecare player pentru ca nu stiu cum sa fac doar 2 si sa schimb X sau O si nume1 nume2 etc cand initializez functia la un anumit player
Ma dor ochii.

Reproduce ce vezi aici https://codereview.s...p-2/70998#70998 - inveti mai multe asa decat din scris de cod anapoda.

#5
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018

View PostGunMK, on 25 februarie 2018 - 12:52, said:

Salut!
Sunt curios ce parere aveti despre acest joculet facut in c++, mi-ar placea niste critici constructive.
Pai invata algorimtica si structuri de date si apoi modelarea datelor si tehnica OOP
O alta abordare:
jocul tau se petrece intr-o matrice si perechea de indecsi (i,j) descriu starea fiecuri element ai matricei.

Dpdv OOP, vei avea obiectele : Player, DesenareTablou, AlgoritmPrincipal.

Obiectul Player =  preia inputul , il prelucreaza si il livreaza  obiectului AlgoritmPrincipal
Obiectul AlgortimPrincipal =
primeste inputuri de la instante ale obiectelor de tip Player, le introduce in algortimul principal si le valideaza.
daca validarea se termina cu succes atunci  reconfigureaza matricea jocului si trimite aceasta matrice catre obiectul DesenareTablou

Obiectul DesenareTablou =  preia modelul informatic reprezentat de matricea jocului si o deseneaza catre consola (tinand cont de regulile necesare pt
acest obiectiv).Tot odata acest obiect printeaza si alte informatii aditionale, precum scor, mesaje , etc

Si toate asta intra o bucla while si gata.
Dar ca sa face ce ti-am spus mai sus iti trebuie sa inveti structuri de date si OOP si sa retranscrii programul de mai sus.
Apoi apucate de algoritmica si invata:
estimarea complexitatii algoritmilor
recursivitate
metodele de sortare
metode de cautare
tehnici de programare( Devide et Impera, Backtraking Iterativ/Recurisiv, Arbori binari, Programare Dinamica)

Edited by WinstonMontana, 25 February 2018 - 15:47.


#6
GunMK

GunMK

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 01.11.2015
Mersi o sa mai lucrez

#7
Ro_Probe

Ro_Probe

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 24.02.2008
1.    Observatii:
   1.   daca la coordonate introduc ceva gresit (ex. "w") consola o ia razna (la mine). Cred ca se impune o verificare si din acest punct de vedere.\
   2.   daca se ajunge la remiza ... Situatie neprevazuta (cred). Aplicatia nu se termine, intra in impas.
2.    Cum se poate transpune acest ... "motor de joc" pe o alta grafica mai ... estetica (eventual pentru Android)? ;)

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate