Ir ao conteúdo
  • Cadastre-se
Joséteixeira90

C Placar Jogo de Tênis

Recommended Posts

Olá Pessoal, tudo bom?

 

Tenho que criar um placar eletrônico de uma partida de tênis. Eu sei como funciona a contagem de pontos durante o jogo e as condições de vitória. O problema é que não estou conseguindo converter os pontos para games.

 

Por exemplo, quando um dos jogadores marcar 4 pontos ou seja 15, 30, 40, game, eu quero que marque 1 game no placar. Eu criei um contador de pontos para cada jogador, como pode ser visto no código, mas não consigo criar um contador para os games.

 

Os pontos são marcados corretamente no placar, o problema é a marcação dos games. Outro problema que tenho, é que quando um dos jogadores fechar um set, por exemplo o jogador 1 vence por 6 a 0, a contagem dos games do primeiro set ainda fica funcionando.

 

Estou super perdido, ficarei muito grato se alguém puder me dar uma luz por gentileza e esclarecer minha dúvida.

Um cordial abraço!

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int pontosj1, pontosj2,ponto1,ponto2;
int game1, game2,gamesj1,gamesj2;
int setj1, setj2;
int ponto;
int games2j1,games3j1,games2j2,games3j2;

void painel(){
	    printf("\n\n---------------------BEM VINDO A FINAL DO TORNEIO DE ROLAND GARROS 2018---------------------");//Criação do menu
}

void exibirplacar(){//função para exibir o placar durante a partida
	printf("\n\nPLACAR\n\n");
	printf("|Jogadores | Set 1| Set 2 | Set 3 | Pontos \n");
	printf("| jogador 1| %d    | %d     | %d     | %d  \n",gamesj1,games2j1,games3j1,ponto1);
	printf("| jogador 2| %d    | %d     | %d     | %d \n",gamesj2,games2j2,games3j2,ponto2);
}

void pontos(){//Função para contar os pontos da partida
	for(;;){
	printf("\n\nInforme para qual tenista voce quer dar o ponto: \n\n(1)- Jogador 1 \n(2)- Jogador 2\n\n");
	scanf("%d",&ponto);
	
	if(ponto==1){
		pontosj1++;
		break;
	}
	else if(ponto==2){
		pontosj2++;
		break;
	}
 }
 
}

void marcaponto(){//função para marcar os pontos no placar do jogo 

	if(pontosj1==1){//pontos jogador 1
		ponto1=15;
	}
	else if(pontosj1==2){
		ponto1=30;
	}
	else if(pontosj1==3){
		ponto1=40;
	}
	
	else if(pontosj1==4){
		ponto1=0;
		ponto2=0;
		pontosj1=0;
		pontosj2=0;
	}
	
	if(pontosj2==1){//pontos jogador 2
		ponto2=15;
	}
	else if(pontosj2==2){
		ponto2=30;
	}
	else if(pontosj2==3){
		ponto2=40;
	}
	else if(pontosj2==4){
		ponto2=0;
		ponto1=0;
		pontosj2=0;
		pontosj1=0;
	}
}
	
main(){
	painel();
	for(;;){
	 exibirplacar();
	 pontos();
	 marcaponto();
  } 
	return 0;
}

 

adicionado 23 minutos depois

Consegui criar o contador dos games pessoal, criei essa função para marcar os games do primeiro set

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int pontosj1, pontosj2,ponto1,ponto2;
int game1, game2,gamesj1,gamesj2;
int setj1, setj2;
int ponto;
int games2j1,games3j1,games2j2,games3j2;

void painel(){
printf("\n\n---------------------BEM VINDO A FINAL DO TORNEIO DE ROLAND GARROS 2018---------------------");//Criação do menu
}

void exibirplacar(){//função para exibir o placar durante a partida
	printf("\n\nPLACAR\n\n");
	printf("|Jogadores | Set 1| Set 2 | Set 3 | Pontos \n");
	printf("| jogador 1| %d    | %d     | %d     | %d  \n",gamesj1,games2j1,games3j1,ponto1);
	printf("| jogador 2| %d    | %d     | %d     | %d \n",gamesj2,games2j2,games3j2,ponto2);
}

void pontos(){//Função para contar os pontos da partida
	for(;;){
	printf("\n\nInforme para qual tenista voce quer dar o ponto: \n\n(1)- Jogador 1 \n(2)- Jogador 2\n\n");
	scanf("%d",&ponto);
	
	if(ponto==1){
		pontosj1++;
		break;
	}
	else if(ponto==2){
		pontosj2++;
		break;
   }
  } 
}

void marcaponto(){//função para marcar os pontos no placar do jogo 

	if(pontosj1==1){//pontos jogador 1
		ponto1=15;
	}
	else if(pontosj1==2){
		ponto1=30;
	}
	else if(pontosj1==3){
		ponto1=40;
	}
	
	else if(pontosj1==4){
		ponto1=0;
		ponto2=0;
		pontosj1=0;
		pontosj2=0;
		game1++;
	}
	
	if(pontosj2==1){//pontos jogador 2
		ponto2=15;
	}
	else if(pontosj2==2){
		ponto2=30;
	}
	else if(pontosj2==3){
		ponto2=40;
	}
	else if(pontosj2==4){
		ponto2=0;
		ponto1=0;
		pontosj2=0;
		pontosj1=0;
		game2++;
	}
}

void marcagset1(){//função para marcar os games do primeiro set
     if(game1==1){//games jogador 1
     	gamesj1=1;
	 }
	 else if(game1==2){
	 	gamesj1=2;
	 }
	 else if(game1==3){
	 	gamesj1=3;
	 }
	 else if(game1==4){
	 	gamesj1=4;
	 }
	 else if(game1==5){
	 	gamesj1=5;
	 }
	 else if(game1==6){
	 	gamesj1=6;
	 }
	 if(game2==1){//games jogador 2
     	gamesj2=1;
	 }
	 else if(game2==2){
	 	gamesj2=2;
	 }
	 else if(game2==3){
	 	gamesj2=3;
	 }
	 else if(game2==4){
	 	gamesj2=4;
	 }
	 else if(game2==5){
	 	gamesj2=5;
	 }
	 else if(game2==6){
	 	gamesj2=6;
	 }
	
}
	
main(){
	painel();
	for(;;){
	 exibirplacar();
	 pontos();
	 marcaponto();
	 marcagset1();
  } 
	return 0;
}

 

adicionado 29 minutos depois

Só que ainda não consegui fazer de parar a contagem dos games do primeiro set, quando um jogador marcar 6 games primeiro que o outro, como eu já tinha citado anteriormente.

 

Como eu poderia resolver isso pessoal?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema da marcação dos games do  primeiro set pessoal, mas agora não consigo criar uma condição para marcar os games do segundo set.

 

Até o momento o código está assim

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int pontosj1, pontosj2,ponto1,ponto2;
int game1, game2,gamesj1,gamesj2;
int setj1, setj2;
int ponto,ponto2,ps1,ps2;
int games2j1,games3j1,games2j2,games3j2;

void painel(){
	    printf("\n\n---------------------BEM VINDO A FINAL DO TORNEIO DE ROLAND GARROS 2018---------------------");//Criação do menu
}

void exibirplacar(){//função para exibir o placar durante a partida
	printf("\n\nPLACAR\n\n");
	printf("|Jogadores | Set 1| Set 2 | Set 3 | Pontos \n");
	printf("| jogador 1| %d    | %d     | %d     | %d  \n",gamesj1,games2j1,games3j1,ponto1);
	printf("| jogador 2| %d    | %d     | %d     | %d \n",gamesj2,games2j2,games3j2,ponto2);
}

void pontos(){//Função para contar os pontos da partida
	for(;;){
	printf("\n\nInforme para qual tenista voce quer dar o ponto: \n\n(1)- Jogador 1 \n(2)- Jogador 2\n\n");
	scanf("%d",&ponto);
	
	if(ponto==1){
		pontosj1++;
		break;
	}
	else if(ponto==2){
		pontosj2++;
		break;
	}
  } 
}

void marcaponto(){//função para marcar os pontos no placar do jogo 

	if(pontosj1==1){//pontos jogador 1
		ponto1=15;
	}
	else if(pontosj1==2){
		ponto1=30;
	}
	else if(pontosj1==3){
		ponto1=40;
	}
	
	else if(pontosj1==4){
      ponto1=0;
		ponto2=0;
		pontosj1=0;
		pontosj2=0;
		game1++;
	}
	
	if(pontosj2==1){//pontos jogador 2
		ponto2=15;
	}
	else if(pontosj2==2){
		ponto2=30;
	}
	else if(pontosj2==3){
		ponto2=40;
	}
	else if(pontosj2==4){
		ponto2=0;
		ponto1=0;
		pontosj2=0;
		pontosj1=0;
		game2++;
	}
}

void marcagset1(){//função para marcar os games do primeiro set
     if(game1==1){//games jogador 1
     	gamesj1=1;
	 }
	 else if(game1==2){
	 	gamesj1=2;
	 }
	 else if(game1==3){
	 	gamesj1=3;
	 }
	 else if(game1==4){
	 	gamesj1=4;
	 }
	 else if(game1==5){
       gamesj1=5;
	 }
	 else if(game1==6){
	 	gamesj1=6;
	 }
	 if(game2==1){//games jogador 2
     	gamesj2=1;
	 }
	 else if(game2==2){
	 	gamesj2=2;
	 }
	 else if(game2==3){
	 	gamesj2=3;
	 }
	 else if(game2==4){
	 	gamesj2=4;
	 }
	 else if(game2==5){
	 	gamesj2=5;
	 }
	 else if(game2==6){
	 	gamesj2=6;
	 }
	 if(gamesj1==6||gamesj2==6){//condição para interromper a contagem de pontos do jogador2
	 	game2=0;
	 	game1=0;
	 } 
	 if(gamesj2==6||gamesj1==6){//condição para interromper a contagem de pontos do jogador 1
	 	game1=0;
	 	game2=0;
	 }
}

main (){
	painel();
	for(;;){
	 exibirplacar();
	 pontos();
	 marcaponto();
	 marcagset1();
  } 
	return 0;
}

 

adicionado 0 minutos depois

Não sei mais o que fazer, será que um laço resolveria meu problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×