Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <locale.h>
- #include <time.h>
- /* querida professora como a senhora pediu, um jogo simples mas todo elaborado linha a linha por mim,
- vai dar para perceber pois os codigos são como sempre usei nas atividades logicas que fiz. */
- //-------------------------------------------------variavel global que representa o tabuleiro.
- char velha[3][3];
- int coluna, linha;
- int cont=0; //-------------------------------------controla as jogadas ate 9 vezes
- char nomejogador[50];
- struct dadosdojogo{
- char usuariox,cpu; //-------------------------JOGADORES X E O;
- int numero;
- }jogo;
- void print(){ //-------------------------------printa o tabuleiro apos o vencedor.
- for(int i =0; i < 3;i++){
- if(i > 0)
- printf("\t-----------\n");
- for(int j =0; j < 3;j++){
- if(j == 0)
- printf("\t");
- printf(" %c ",velha[i][j]);
- if(j<2)
- printf("|");
- }
- printf("\n");
- }
- }
- void velhalimpar(){ //--------------------------limpar o tabuleiro
- for(int i =0; i < 3;i++){
- for(int j =0; j < 3;j++){
- velha[i][j]=' ';
- }
- }
- }
- void velhaimagem(){ //-------------------------mostrar o tabuleiro preenchido
- for(int i =0; i < 3;i++){
- for(int j =0; j < 3;j++){
- if(j%2==0)
- velha[i][j]='O';
- else
- velha[i][j]='X';
- }
- }
- printf("\n\n \t\t%c | %c | %c\n",velha[0][0],velha[0][1],velha[0][2]);
- printf("\t\t---------\n");
- printf(" \t\t%c | %c | %c\n",velha[1][0],velha[1][1],velha[1][2]);
- printf("\t\t---------\n");
- printf(" \t\t%c | %c | %c\n",velha[2][0],velha[2][1],velha[2][2]);
- }
- int vencedor(int cont){ //---------------------------------------função verificar se há ganhador em cada jogada.
- int x=10;
- //----------------------------------------ver se existe ganhador na horizontal
- if((velha[0][0]==velha[0][1]) && (velha[0][1]==velha[0][2]) && (velha[0][0]!=' ')){
- system("CLS");
- print(); //--------------------------printa a ultima jogada.
- return x ;
- }
- else if((velha[1][0]==velha[1][1]) && (velha[1][1]==velha[1][2])&& (velha[1][0]!=' ')){
- system("CLS");
- print();
- return x ;
- }
- else if((velha[2][0]==velha[2][1]) && (velha[2][1]==velha[2][2]) && (velha[2][0]!=' ')){
- system("CLS");
- print();
- return x;
- ///--------------------------------------------ganhador vertical
- }
- else if((velha[0][0]==velha[1][0]) && (velha[1][0]==velha[2][0]) && (velha[0][0]!=' ')){
- system("cls");
- print();
- return x;
- }
- else if((velha[0][1]==velha[1][1]) && (velha[1][1]==velha[2][1])&& (velha[0][1]!=' ')){
- system("CLS");
- print();
- return x;
- }
- else if((velha[0][2]==velha[1][2]) && (velha[1][2]==velha[2][2]) && (velha[0][2]!=' ')){
- system("CLS");
- print();
- return x;
- }
- ///-------------------------------------------------ganhador diagonal
- if((velha[0][0]==velha[1][1]) && (velha[2][2]==velha[0][0]) && (velha[0][0]!=' ')){
- system("CLS");
- print();
- return x;
- }else if((velha[0][2]==velha[1][1]) && (velha[1][1]==velha[2][0]) && (velha[1][1]!=' ')){
- system("CLS");
- print();
- return x;
- }
- }
- void tabuleiro(char usuariox, char cpu){ //-------------------------------------------------------jogo em si codigo da função principal.
- srand(time(NULL));
- cont=0; //--------------------------------------contagem de jogadas/controle de jogador para jogadas.
- do{
- system("CLS");
- int coluna=1, linha=1;
- print();//------------------------------------------------printar o tabuleiro após a ultima jogada.
- if(linha >0 && coluna >0 && coluna <=3 && linha <=3){ //-------------------------------------------------condição para manterr as jogadas regulares
- if(cont%2==0){//--------------------------------------------------CONTROLA QUEM JOGA PAR JOGADOR o outro impar.
- //vez do nome do jogador ----------------------------se caso precisar mudar o rand para um jogador .
- //printf("vez de %s ",nomejogador);
- printf("digite a linha: "); //---------------------------jogada da pessoa que esta jogando.
- scanf("%d",&linha);
- printf("digite a coluna : ");
- scanf("%d",&coluna);
- if (velha[linha-1][coluna-1]==' '){ //--------------------------------------------------------------condição para não repetir as jogadas
- velha[linha-1][coluna-1]=usuariox;
- cont++;
- printf("jogada %d\n",cont);
- system("pause"); //----------------------------------------------------------------------------pausar apos cada jogada
- }
- vencedor(cont);
- int vet;
- vet=vencedor(cont);
- if(vet==10){
- printf("\n\n -------------- VENCEDOR! ---------------\n\n");
- if(cont%2!=0)
- printf(" \t %s!!!!!!! \n\n",nomejogador);
- else
- printf("COMPUTADOR!\n\n");
- system("pause");
- return;
- }
- }
- if(cont%2!=0)//--------------------------------------------------CONTROLA QUEM JOGA IMPAR CPU
- { //-----------------------------------------------------------cont controla a vez de quem é.
- printf("vez do computador ");
- //--------------------------------------------------------------------jogada da cpu.
- linha=rand()%3+1;
- srand(time(NULL));
- coluna=rand()%3+1;
- //---------------------------------------------------------------se quiser jogar por dois jogadores
- //printf("jogada do computador: ");
- //scanf("%d %d", &linha,&coluna);
- if(velha[linha-1][coluna-1]==' '){ //------------------------------------------------------------------- condição para não repetir as jogadas
- velha[linha-1][coluna-1]=cpu;
- cont++;
- }
- vencedor(cont);
- int vet; //----------------------------------------------------------------------------------------varaivel que recebe a saida do vencedor.
- vet=vencedor(cont); //------------------------------------------------------------------------aqui é o principio para imprimir quem ganhou
- if(vet==10){
- printf("\n\n -------------- VENCEDOR! ---------------\n\n");
- if(cont%2!=0)
- printf("\t %s !!!!!!!\n\n",nomejogador);
- else
- printf("COMPUTADOR!\n\n");
- system("pause");
- return;
- }
- }
- }
- //-----------------------------------------------------------------------MOSTRAR JOGADA INRREGULAR
- else if (linha > 4 || linha < 1 || coluna > 4 ||coluna < 1) {
- printf("jogada inrregular");
- system("PAUSE");
- }
- vencedor(cont);//---------------------função para ver se existe vencedor
- if(cont >8 ){
- printf("\n PARTIDA EMPATADA! :/ ");
- system("PAUSE");
- return;
- }
- }while(cont < 9);
- }
- //-----------------------------------case 2 xplicando as regras do jogo.
- void regras(){
- system("CLS");
- printf("\n REGRAS DO JOGO\n\n");
- printf(" 1 -O tabuleiro é uma matriz de três linhas por três colunas.\n");
- printf(" 2- Dois jogadores escolhem uma marcação cada um, geralmente um círculo (O) e um xis (X).\n");
- printf(" 3- Os jogadores jogam alternadamente, uma marcação por vez, numa lacuna que esteja vazia.\n");
- printf(" 4- O objectivo é conseguir três círculos ou três xis em linha, quer horizontal, vertical ou diagonal.\n");
- printf(" 5- Se os dois jogadores jogarem sempre da melhor forma, o jogo terminará sempre em empate.\n");
- printf(" 6- Em nenhum momento voçe pode jogar repetidamente na mesma casa do jogo\n");
- printf("\n\n INSTRUÇÕES PARA O JOGADOR.\n\n\n");
- printf(" Ganhar: Se você tem duas peças numa linha, ponha a terceira.\n");
- printf(" Bloquear: Se o oponente tiver duas peças em linha, ponha a terceira para bloqueá-lo.\n");
- printf(" Triângulo: Crie uma oportunidade em que você poderá ganhar de duas maneiras.\n");
- printf(" Bloquear o Triângulo do oponente.\n");
- printf(" Centro: Jogue no centro\n");
- printf("\n\n \t \t aproveite e divirta-se ^_^ ");
- system("pause");
- }
- int main ()
- {
- srand(time(NULL));
- //variavel do jogo escopo local
- int opcaomenu;
- setlocale(LC_ALL,"portuguese");
- do{
- //printando o menu;
- system("CLS");
- printf("-------------JOGO DA VELHA-------------");
- printf("\n\n ----------MENU-----------");
- printf("\n\n \t\t1-JOGAR \n\t\t2-INSTRUÇÕES \n\t\t3-SAIR");
- velhaimagem();
- printf("\n\ndigite o digito de opção: ");
- scanf("%d",&opcaomenu);
- //controle do menu principal.
- switch(opcaomenu){
- case 1:
- system("CLS");
- printf("digite seu nome: ");
- setbuf(stdin,NULL);
- fgets(nomejogador,50,stdin);
- system("CLS");
- printf("digite '1' se quer começar com O ou '2' se quer começar com X: ");
- scanf("%d",&jogo.numero);
- if(jogo.numero==1){
- jogo.usuariox='X';
- jogo.cpu='O';
- }
- else if(jogo.numero==2){
- jogo.usuariox='O';
- jogo.cpu='x';
- }
- else{
- printf("\n\n você vai iniciar com o X");
- jogo.usuariox='X';
- jogo.cpu='O';
- }
- printf("aperte qualquer tecla para começar: ");
- system("CLS");
- velhalimpar(); //-----------------------------------------limpar o tabuleiro
- tabuleiro(jogo.usuariox,jogo.cpu); //------------------- função recebe quem é x e O.
- system("CLS");
- break;
- case 2:
- regras();//------------------------------funçaõ para apenas printar as regras
- case 3:
- printf("\n VOCÊ SAIU DO JOGO! \n");
- if(opcaomenu > 3)
- printf("\n OPÇÃO INVALIDA! \n");
- }
- }while(opcaomenu!=3);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement