Logo elrincondelc.com
curso de programación en c
Foros de programación en C
Inicio :: Código fuente
Usuario: Clave: Regístrate

Valoración
1

3 en raya para 2 jugadores

codigo enviada por: skilltik (2009-07-03 15:18:33)
3 en raya para 2 jugadores
#include <iostream>
#include <iomanip>
#include<stdlib.h>
using namespace std;
//funciones
void marcax(char matrix[][12], int cuad, int minimatrix[][3]);
void marcao(char matrix[][12], int cuad, int minimatrix[][3]);
bool evalua_matrix(int minimatrix[][3], int cuad);
bool over_game(int minimatrix[][3], int &gana);
void muestra_matrix(char matrix[][12]);

int main(int argc, char *argv[]) {
	//declaracion variables
	char matrix[12][12]={"   |   |   ",
						"   |   |   ",	
						"   |   |   ",
						"-----------",
						"   |   |   ",
						"   |   |   ",
						"   |   |   ",
						"-----------",
						"   |   |   ",
						"   |   |   ",
						"   |   |   "};
	int minimatrix[3][3]={99,88,77,66,55,44,33,22,11};
	int cuad;
	bool over=false;
	int conta=0;
	int gana=0;
	char a[5];
	// fin declaracion variables
	while((over!=true)&&(conta<=8)&&(gana==0)){
		cout<<"jugador -1- ingrese cuadrante"<<endl;
		cin>>cuad;
		while (evalua_matrix(minimatrix, cuad)==false){
			cout<<"Cuadrante ocupado, ingrese otro."<<endl;
			cin>>cuad;
		}
		marcax(matrix, cuad, minimatrix);
		system("cls");
		muestra_matrix(matrix);
		over_game(minimatrix, gana);
		conta++;
		if ((gana==0)&&(conta<=8)){
			cout<<"jugador -2- ingrese cuadrante"<<endl;
			cin>>cuad;
			while (evalua_matrix(minimatrix, cuad)==false){
				cout<<"Cuadrante ocupado, ingrese otro."<<endl;
				cin>>cuad;
			}
			marcao(matrix, cuad, minimatrix);
			system("cls"); 
			muestra_matrix(matrix);
			conta++;
		}else{
			over=true;
		}
		over_game(minimatrix, gana);
	}
	cout<<"Game over"<<endl;
	cin.ignore();
	gets(a);
return 0;
}


//Funcion de rellenar cuadrantes con x
void marcax(char matrix[][12], int cuad, int minimatrix[][3]){
	switch (cuad){
	case 1:
		for (int i=0;i<3;i++){
			for(int j=0;j<3;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[0][0]=1;
		break;
	case 4:
		for (int i=4;i<7;i++){
			for(int j=0;j<3;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[1][0]=1;
		break;
	case 7:
		for (int i=8;i<11;i++){
			for(int j=0;j<3;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[2][0]=1;
		break;
		
	case 2:
		for (int i=0;i<3;i++){
			for(int j=4;j<7;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[0][1]=1;
		break;
		
	case 5:
		for (int i=4;i<7;i++){
			for(int j=4;j<7;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[1][1]=1;
		break;
	case 8:
		for (int i=8;i<11;i++){
			for(int j=4;j<7;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[2][1]=1;
		break;
	case 3:
		for (int i=0;i<3;i++){
			for(int j=8;j<11;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[0][2]=1;
		break;
	case 6:
		for (int i=4;i<7;i++){
			for(int j=8;j<11;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[1][2]=1;
		break;
	case 9:
		for (int i=8;i<11;i++){
			for(int j=8;j<11;j++){
				matrix[i][j]='x';
			}
		}
		minimatrix[2][2]=1;
		break;
	}
}

//Funcion de rellenar cuadrantes com O y con 2 en minimatrix
void marcao(char matrix[][12], int cuad, int minimatrix[][3]){
	switch (cuad){
	case 1:
		for (int i=0;i<3;i++){
			for(int j=0;j<3;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[0][0]=2;
		break;
	case 4:
		for (int i=4;i<7;i++){
			for(int j=0;j<3;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[1][0]=2;
		break;
		
	case 7:
		for (int i=8;i<11;i++){
			for(int j=0;j<3;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[2][0]=2;
		break;
		
	case 2:
		for (int i=0;i<3;i++){
			for(int j=4;j<7;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[0][1]=2;
		break;
		
	case 5:
		for (int i=4;i<7;i++){
			for(int j=4;j<7;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[1][1]=2;
		break;
	case 8:
		for (int i=8;i<11;i++){
			for(int j=4;j<7;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[2][1]=2;
		break;
	case 3:
		for (int i=0;i<3;i++){
			for(int j=8;j<11;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[0][2]=2;
		break;
	case 6:
		for (int i=4;i<7;i++){
			for(int j=8;j<11;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[1][2]=2;
		break;
	case 9:
		for (int i=8;i<11;i++){
			for(int j=8;j<11;j++){
				matrix[i][j]='o';
			}
		}
		minimatrix[2][2]=2;
		break;
	}
}
//Funcion evalua si un cuadrante ya esta ocupado
bool evalua_matrix(int minimatrix[][3], int cuad){
	bool evalua=false;
	int i,j;

	switch (cuad-1){
		case 0: 
			i=0;
			j=0;
			break;
	case 1: 
		i=0;
		j=1;
		break;
	case 2: 
		i=0;
		j=2;
		break;
	case 3: 
		i=1;
		j=0;
		break;
	case 4: 
		i=1;
		j=1;
		break;
	case 5: 
		i=1;
		j=2;
		break;
	case 6: 
		i=2;
		j=0;
		break;
	case 7: 
		i=2;
		j=1;
		break;
	case 8: 
		i=2;
		j=2;
		break;
	}
	if ((minimatrix[i][j]!=1)&&(minimatrix[i][j]!=2)){
		evalua=true;
	}
	return(evalua);
}
//Funcion que evalua si alguien gano el juego
bool over_game(int minimatrix[][3], int &gana){
	bool over=false;
	for (int g=0;g<3;g++){
	if ((minimatrix[g][0]==minimatrix[g][1])&&(minimatrix[g][1]==minimatrix[g][2])){
		over=true;
		gana=minimatrix[g][0];
	}
	if ((minimatrix[0][g]==minimatrix[1][g])&&(minimatrix[1][g]==minimatrix[2][g])){
		over=true;
		gana=minimatrix[0][g];
	}
	}
	if ((minimatrix[0][0]==minimatrix[1][1])&&(minimatrix[1][1]==minimatrix[2][2])){
	over=true;
	gana=minimatrix[0][0];
	}
	if ((minimatrix[0][2]==minimatrix[1][1])&&(minimatrix[1][1]==minimatrix[2][0])){
	over=true;
	gana=minimatrix[0][0];
	}
	return(over);
}
//funcion para mostrar la matrix
void muestra_matrix(char matrix[][12]){
	for (int i=0;i<12;i++){ 
		for(int j=0;j<12;j++){
			cout<<setw(3)<<matrix[i][j];
		}
		cout<<"nn";
	}
}
lo dejo aqui : http://rapidshare.com/files/251618803/3enraya_multiplayer.cpp.html la web le quita las barras
(skilltik 2009-07-03 15:19:18)

Para enviar comentarios debes estar registrado.

(c) ElRincondelC.com, 1999-2007

Un proyecto de Urlan Heat : proyectos de Internet y soporte para el comercio electrónico.