Forum Pplware

Versão Completa: [C#] Traduzir código C++ para C#
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boas,

é o seguinte a uns dias coloquei aqui um tópico sobre o jogo "4 em linha", mas acabei por conseguir arranjar o código do jogo, o problema é que a pessoa que me explicou como se fazia, fez o jogo em C++ .

Precisava de saber se alguém aqui no fórum me poderia tentar trocar os comandos do código, para C#.

É que preciso urgentemente disto... desde de já agradeço a quem me poder ajudar...o meu Obrigado

Vou deixar o ficheiro do código em anexo, para o caso de ser mais pratico.

Código:

Citar:#include <cstdlib>
#include <iostream>
#define LINHAS 6
#define COLUNAS 7
using namespace std;
//******************************************************************************
void inicializar(unsigned int *opcao, unsigned int *tabela){
*opcao = 0;
for(int i=0; i<3; i++)
*(tabela+i) = 0;
return;
}
//******************************************************************************
unsigned int menu(){
unsigned int opcao;
cout << "*******************************************************" << endl;
cout << "***************** 4 EM LINHA **************************" << endl;
cout << "*******************************************************" << endl << endl;
cout << "1.\tJogar" << endl;
cout << "2.\tVer Classificacao" << endl;
cout << "3.\tRepor Classificacao" << endl;
cout << "4.\tSair" << endl << endl;
cout << "Escolha uma opcao:" << endl;
cin >> opcao;
return opcao;
}
//******************************************************************************
void classif(unsigned int tabela[2], char *nome1, char *nome2){
system("CLS");
cout << "*************** CLASSIFICACAO *********************" << endl << endl;
cout << nome1 << ": " << tabela[1] << endl;
cout << nome2 << ": " << tabela[2] << endl;
cout << "Empates: " << tabela[0] << endl << endl;
cout << "Prima qualquer tecla para voltar ao menu..." << endl;
getchar(); getchar();
}
//******************************************************************************
void imprimir(unsigned int matriz[LINHAS][COLUNAS]){
cout << "CONFIGURACAO DO TABULEIRO" << endl;
for(int i=0; i<LINHAS; i++){
for(int j=0; j<COLUNAS; j++){
cout << matriz[i][j];
if(j<COLUNAS-1) cout << "|";
}
cout << endl << "-------------" << endl;
}
cout << endl << endl;
return;
}
//******************************************************************************
unsigned int jogar(char *nome1, char *nome2){
unsigned int matriz[LINHAS][COLUNAS];
unsigned int winner = 0, pos, name=1;
int cont[COLUNAS];
bool vrf = false, hlp;

//INICIALIZAOES DA MATRIZ DE JOGO:
for(int i=0; i<LINHAS; i++)
for(int j=0; j<COLUNAS; j++)
matriz[i][j] = 0;
for(int i=0; i<COLUNAS; i++)
cont[i] = LINHAS-1;
//*********************************
system("CLS");
do{
imprimir(matriz);
do{
if(name==1) cout << nome1;
else cout << nome2;
cout << " - Introduza a coluna em que deseja colocar a peca:" << endl;
cin >> pos;
if((pos<1 || pos>7) || cont[pos-1]<0) cout << "Posicao invalida!" << endl;
}while((pos<1 || pos>7) || cont[pos-1]<0);
pos --;
matriz[cont[pos]][pos] = name;
cont[pos] --;
//*****************************
//VER SE EXISTE ALGUM VENCEDOR:
//Horizontal:
for(int i=1; i<3; i++){
for(int j=0; j<LINHAS; j++){
for(int l=0; l<COLUNAS-3; l++){
if(matriz[j][l]==i){
hlp = true;
for(int k=l; k<l+4; k++){
if(matriz[j][k]!=i){
hlp = false;
}
}
if(hlp==true){
winner = i;
}
}
}
}
}
//Vertical:
for(int i=1; i<3; i++){
for(int j=0; j<COLUNAS; j++){
for(int l=0; l<LINHAS-3; l++){
if(matriz[l][j]==i){
hlp = true;
for(int k=l; k<l+4; k++){
if(matriz[k][j]!=i){
hlp = false;
}
}
if(hlp==true){
winner = i;
}
}
}
}
}
//Diagonal 1:
for(int i=1; i<3; i++){
for(int j=0; j<LINHAS-3; j++){
for(int l=0; l<COLUNAS-3; l++){
if(matriz[j][l]==i){
hlp = true;
for(int k=j, m=l; k<j+4; k++, m++){
if(matriz[k][m]!=i){
hlp = false;
}
}
if(hlp==true){
winner = i;
}
}
}
}
}
//Diagonal 2:
for(int i=1; i<3; i++){
for(int j=0; j<LINHAS-3; j++){
for(int l=3; l<COLUNAS; l++){
if(matriz[j][l]==i){
hlp = true;
for(int k=j, m=l; k<j+4; k++, m--){
if(matriz[k][m]!=i){
hlp = false;
}
}
if(hlp==true){
winner = i;
}
}
}
}
}
//*******************************************
//VER SE A TABELA ESTA TOTALMENTE PREENCHIDA:
vrf = true;
for(int i=0; i<COLUNAS; i++){
if(cont[i]>=0){
vrf = false;
}
}
//********************************************
system("CLS");

if(name==1){
name = 2;
}
else{
name = 1;
}
}while(vrf==false && winner==0);
system("CLS");
switch(winner){
case 1: cout << "Jogador 1 ganhou!" << endl; break;
case 2: cout << "Jogador 2 ganhou!" << endl; break;
case 0: cout << "Empate!" << endl; break;
}
getchar();
return winner;
}
//******************************************************************************
int main()
{
unsigned int *opcao = new unsigned int;
unsigned int *tabela = new unsigned int[3];
char nome[2][51];

inicializar(opcao, tabela);

cout << "Introduza o nome do primeiro jogador:" << endl;
cin >> nome[0];
system("CLS");
cout << "Introduza o nome do segundo jogador:" << endl;
cin >> nome[1];
system("CLS");

do{
system("CLS");
*opcao = menu();
switch(*opcao){
case 1: tabela[jogar(nome[0], nome[1])]++; break;
case 2: classif(tabela, nome[0], nome[1]); break;
case 3: inicializar(opcao, tabela); system("CLS"); cout << "Classificacao reiniciada com sucesso" << endl; getchar(); getchar(); break;
case 4: system("CLS"); cout << "Adeus!" << endl; break;
default: cout << "Opcao invalida! Tente de novo..." << endl; getchar(); system("CLS"); break;
}
}while(*opcao!=4);

getchar(); getchar();
delete opcao, tabela;
return 0;
}
Olá Bruno,

Espero que compreendas que aqui ninguém vai fazer o trabalho por ti de graça, podemos esclarecer dúvidas gratuitamente, pelo simples prazer de ajudar, mas não fazemos trabalhos profissionais gratuitamente nem trabalhos de casa em que o objectivo é tu aprenderes algo.

É uma questão de ética, certo?

Como tal, o ideal será colocares a tua dúvida e não um pedido genérico para te fazerem o trabalho.
sim, mas não é para ninguém me fazer o trabalho, só quero é que quem souber e me puder ajudar, me diga o equivalente das funções de c++ em c# .

por exemplo, "cout << "Classificacao reiniciada com sucesso" << endl;"

o "cout <<" e o "<< endl" equivalem a que comandos em c# ?

é só este género de ajuda que pretendia :/
Não tem problema. Só te estava a esclarecer, visto que o que disseste efectivamente não foi isso ( relembro: "Precisava de saber se alguém aqui no fórum me poderia tentar trocar os comandos do código, para C#." ).
É verdade, não especifiquei correctamente a ajuda que precisava.
Basta olhares para o código para perceberes que o cout é onde dás output(dai o nome).

O endl como o nome indica é endline.. coisa que também com o google e/ou manual de c++ terias percebido.

cumps
URL's de Referência