Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-02-2013, 22:58   #1
jokers85
Member
 
Iscritto dal: Jun 2010
Messaggi: 48
[c++] Gioco del tris (correzione e\o suggerimenti)

ho scritto questo programmino per giocare a tris contro il pc, funziona sembra andare bene, ma volevo qualche consiglio su come cercare di migliorarlo

codice:

#include <stdlib.h>
#include <iostream>
#include<math.h>
#include <time.h>

using namespace std;


void campo(char mat[][3]);

void scelta_G(char mat[][3]);

void scelta_C(char mat[][3]);

void scelta_Crand(char mat[][3]);

void randScelta(int& i, int& j);

bool Tris(char mat[][3]);

bool pieno(char mat[][3]);

void tris(char mat[][3], bool& fatto);


int main()

{
system("color 02");
system("CLS");
char scelta;
do{
system("CLS");


char mat[3][3];
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
mat[i][j]=' ';
bool fatto=false;

campo(mat);

do{
scelta_G(mat);
if(Tris(mat)){
system("CLS");

campo(mat);
cout<<"Hai vinto!!!"<<endl;
break;
}
tris(mat,fatto);
if(!fatto)
scelta_C(mat);

if(Tris(mat))
{
system("CLS");

campo(mat);
cout<<"Hai perso..."<<endl;
break;
}
system("CLS");

campo(mat);

}while(!pieno(mat));

cout<<"Vuoi giocare ancora? (s/n)"<<endl;
do{
cin>>scelta;
}while(scelta!='s' && scelta!='n');

}while(scelta=='s');

//system("PAUSE");
return 0;

}



void campo(char mat[][3])

{

cout<<"1\t |2 \t |3 \n "<<mat[0][0]<<" \t | "
<<mat[0][1]<<" \t | "<<mat[0][2]<<" \n\t | \t | \n";


cout<<" ---------------------------\n";

cout<<"4\t |5 \t |6 \n "<<mat[1][0]<<" \t | "
<<mat[1][1]<<" \t | "<<mat[1][2]<<" \n\t | \t | \n";


cout<<" ---------------------------\n";

cout<<"7\t |8 \t |9 \n "<<mat[2][0]<<" \t | "
<<mat[2][1]<<" \t | "<<mat[2][2]<<" \n\t | \t | \n";



}



void scelta_G(char mat[][3])

{

int scelta;

cin>>scelta;

switch(scelta){

case 1: if(mat[0][0]==' ') mat[0][0]='X';
else return scelta_G(mat); break;


case 2: if(mat[0][1]==' ') mat[0][1]='X';
else return scelta_G(mat); break;


case 3: if(mat[0][2]==' ') mat[0][2]='X';
else return scelta_G(mat); break;


case 4: if(mat[1][0]==' ') mat[1][0]='X';
else return scelta_G(mat); break;


case 5: if(mat[1][1]==' ') mat[1][1]='X';
else return scelta_G(mat); break;


case 6: if(mat[1][2]==' ') mat[1][2]='X';
else return scelta_G(mat); break;


case 7: if(mat[2][0]==' ') mat[2][0]='X';
else return scelta_G(mat); break;


case 8: if(mat[2][1]==' ') mat[2][1]='X';
else return scelta_G(mat); break;


case 9: if(mat[2][2]==' ') mat[2][2]='X';
else return scelta_G(mat); break;

}

}



void scelta_Crand(char mat[][3])

{

int i=0;

int j=0;

randScelta(i,j);
while(mat[i][j]!= ' ' && !pieno(mat))

randScelta(i,j);



if(mat[i][j]==' ')

mat[i][j]='O';
}
void randScelta(int& i, int& j)
{
srand(time(NULL));
i=rand()%3;
j=rand()%3;
}
void scelta_C(char mat[][3])

{
bool fatto=false;
int countC=0;
int countL=0;
int countD1=0;
int countD2=0;
int count=0;
bool freeC=false;
bool freeL=false;
bool freeD1=false;
bool freeD2=false;
int cC,rC,cL,rL,cD1,rD1,cD2,rD2;

for(int i=0; i<3; i++){
countC=0;
countL=0;
count=0;
for(int j=0; j<3; j++){
//Controllo la diagonale principale
if(i==j){
if(mat[i][j]=='X')
countD1++;
else if(mat[i][j]==' '){
freeD1=true;
cD1=i;
rD1=j;
}
}

//Controllo la diagonale secondaria
if(mat[i][3-i-1]=='X' && count==0)
{
countD2++;
count++;
}
else if(mat[i][3-i-1]==' '){
freeD2=true;
cD2=i;
rD2=3-i-1;
}

//Controllo le colonne
if(mat[j][i]=='X')
countC++;
else if(mat[j][i]==' '){
freeC=true;
cC=j;
rC=i;
}

//Controllo le righe
if(mat[i][j]=='X')
countL++;
else if(mat[i][j]==' '){
freeL=true;
cL=i;
rL=j;
}
}

if(countD1==2 && freeD1){
mat[cD1][rD1]='O';
fatto=true;
break;
}
else if(countD2==2 && freeD2){
mat[cD2][rD2]='O';
fatto=true;
break;
}
else if(countC==2 && freeC){
mat[cC][rC]='O';
fatto=true;
break;
}
else if(countL==2 && freeL){
mat[cL][rL]='O';
fatto=true;
break;
}
}
if(!fatto)
scelta_Crand(mat);
}
bool Tris(char mat[][3])

{

int contX=0, contO=0;


for(int i=0; i<3; i++){
contX=0;
contO=0;
for(int j=0; j<3; j++){
if(mat[i][j]=='X')
contX++;

if(mat[i][j]=='O')
contO++;
}

if(contX==3)
return true;

if(contO==3)
return true;
}
contX=0; contO=0;

for(int i=0; i<3; i++){
contX=0;
contO=0;
for(int j=0; j<3; j++){
if(mat[j][i]=='X')
contX++;
if(mat[j][i]=='O')
contO++;

}
if(contX==3)
return true;

if(contO==3)
return true;
}

contX=0; contO=0;

for(int i=0; i<3; i++)
for(int j=0; j<3; j++){
if(i==j && mat[i][j]=='X')
contX++;
if(i==j && mat[i][j]=='O')
contO++;
}

if(contX==3)
return true;

if(contO==3)
return true;

contX=0; contO=0;

for(int i=0; i<3; i++){
if(mat[i][3-i-1]=='X')
contX++;

if(mat[i][3-i-1]=='O')
contO++;
}


if(contX==3)
return true;

if(contO==3)
return true;

return false;

}



bool pieno(char mat[][3])

{



for(int i=0; i<3; i++)

for(int j=0; j<3; j++)

if(mat[i][j]==' ')

return false;

return true;



}
void tris(char mat[][3], bool& fatto)
{

fatto=false;
int countC=0;
int countL=0;
int countD1=0;
int countD2=0;
int count=0;
bool freeC=false;
bool freeL=false;
bool freeD1=false;
bool freeD2=false;
int cC,rC,cL,rL,cD1,rD1,cD2,rD2;

for(int i=0; i<3; i++){
countC=0;
countL=0;
count=0;
for(int j=0; j<3; j++){

if(i==j){
if(mat[i][j]=='O')
countD1++;
else if(mat[i][j]==' '){
freeD1=true;
cD1=i;
rD1=j;
}
}

if(mat[i][3-i-1]=='O' && count==0){
countD2++;
count++;
}
else if(mat[i][3-i-1]==' '){
freeD2=true;
cD2=i;
rD2=3-i-1;
}

if(mat[j][i]=='O')
countC++;
else if(mat[j][i]==' '){
freeC=true;
cC=j;
rC=i;
}

if(mat[i][j]=='O')
countL++;
else if(mat[i][j]==' '){
freeL=true;
cL=i;
rL=j;
}
}

if(countD1==2 && freeD1){
mat[cD1][rD1]='O';
fatto=true;
break;
}
else if(countD2==2 && freeD2){
mat[cD2][rD2]='O';
fatto=true;
break;
}
else if(countC==2 && freeC){
mat[cC][rC]='O';
fatto=true;
break;
}
else if(countL==2 && freeL){
mat[cL][rL]='O';
fatto=true;
break;
}
}


}
jokers85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
QNAPTS-h966TX, il NAS per chi fa editing...
Il trucco semplicissimo per installare W...
Apple rinvia due novità di iOS 27...
Una memoria ferroelettrica raggiunge 10 ...
Honor Magic 9, Pro Max e Super Edition: ...
24 offerte Amazon da non perdere, dalla ...
Apple starebbe progettando i propri cont...
Niente borsa per OpenAI prima del 2027: ...
Meta potrebbe aver mostrato in anticipo ...
Bicicletta elettrica L26 a 474,05€: e-bi...
NVIDIA RTX PRO 5500 Blackwell: 84 GB di ...
Sei alla ricerca di un buon gruppo di co...
Blizzard annuncia un nuovo StarCraft: la...
Ecobonus al 65%: il governo valuta il ri...
Biscotti fatti con bottiglie di plastica...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v