Ir para conteúdo
Vinicius Azevedo

Sudoku muti play ( dois jogadores ) alguém me ajuda fazendo o código ficar para dois jogadores

Recommended Posts

<

#include<stdio.h>
#include<stdlib.h>
#define N 9
 
int op, numero ,linha, coluna;
 
 
 
int grade1[N][N] =
  {{ 0, 6, 0, 1, 0, 4, 0, 5,  0},
   { 0, 0, 8, 3, 0, 5, 6, 0, 0},
   { 2, 0, 0, 0, 0, 0, 0, 0, 1},
   { 8, 0, 0, 4, 0, 7, 0, 0, 6},
   { 0, 0, 6, 0, 0, 0, 3, 0, 0},
   { 7, 0, 0, 9, 0, 1, 0, 0, 4},
   { 5, 0, 0, 0, 0, 0, 0, 0, 2},
   { 0, 0, 7, 2, 0, 6, 9, 0, 0},
   { 0, 4, 0, 5, 0, 8, 0, 7, 0}};
 
 
void desenha_grade() {
  int i,j;
  printf("  1  2  3   4  5  6   7  8  9  \n");
  printf("+---------+---------+---------+\n");
  for (i = 0; i < N; i++) {
    printf("|");
    for (j = 0; j < N; j++) {
      if (grade1[j] != 0)
    printf(" %d ", grade1[j]);
      else
    printf("   ");
      if (j % 3 == 2) 
    printf("|");
    }
    if (i % 3 == 2)
      printf("\n+---------+---------+---------+");
    printf("\n");
  }
}
 
int checar(int linha, int coluna, int numero) {
     if (grade1[linha][coluna]==0)
         return 1;
     else
         return 0;  
}
 
int tenta_colocar(int i, int j, int k) {
  int c,l;
  for (l = 0; l < N; l++)
    if (grade1[l][j] == k)
      return 0;
  for (c = 0; c < N; c++)
    if (grade1[c] == k)
      return 0;
  for (l = i - i % 3; l < i - i % 3 +3; l++)
    for (c = j - j % 3; c < j - j % 3 + 3; c++)
      if (grade1[l][c] == k)
    return 0;
  grade1[j] = k;
  desenha_grade();
  return 1;
}
 
 
int coordenadavalida(int linha, int coluna) 
{
  if(linha>=0 && linha <9 && coluna>=0 && coluna <9)
      return 1;
   else
      return 0;
}
 
 
int numerovalido(int numero)
{
  if(numero>0 && numero <=9)
     return 1;
   else
      return 0;
 
}
 
 
int existenaColuna(int coluna, int numero)
 {
                        
      for (int i=0; i<9; i++)
       {
          if (grade1[coluna] == numero)
              return 1;
       }
}
 
 
int existenalinha(int linha, int numero) 
{
       for (int j=0; j<9; j++)
       {
           if (grade1[linha][j] == numero)
               return 1;
        }
}
 
void escreve(int linha, int coluna, int numero) {
     grade1[linha][coluna]=numero;
}
 
 
void jogo()
{
    printf("digite 0(ZERO) para sair");
    if (coordenadavalida(linha-1, coluna-1)==1)
    {
       printf("Coordenada Valida\n");
       if (numerovalido(numero)==1)
       {
          printf("Numero valido\n");
          if (checar(linha-1, coluna-1, numero)==1)
          {
              printf("Posicao vazia\n");
              if (tenta_colocar(linha-1, coluna-1, numero)==1)
              {
                  printf("Quadrante OK\n");
                    escreve(linha-1,coluna-1,numero);
                     printf("Gravado\n");
                     system("cls");
                   
               }   
               else
               {
                   printf("Nao foi possivel, ja existe na linha ou na coluna ou no mesmo quadrante\n");
               }
           }    
           else
           {
               printf("Posicao ja esta ocupada\n");
           }
        }   
        else
        {
            printf("Numero invalido\n");
        }   
    }
    else
    {
        printf("Coordenada invalida\n");
    }         
}
 
int terminar()
{
    for (int i=0;i<9;i++)
        for (int j=0;j<9;j++)
           if (grade1[j]==0) 
             return 1;
}
 
 
void geratela()
{
 
   desenha_grade(); 
    
   printf("Digite uma linha: ");
   scanf("%d", &linha);
  
   printf("Digite uma coluna: ");
   scanf("%d", &coluna);
    
   printf("Digite o numero: ");
   scanf("%d", &numero);  
    
   jogo();
}
 
 
int main() {
 
printf("LUSOKU\n\n\n");
 
 
 
printf("REGRAS DO JOGO\n");
printf("O objetivo do jogo e completar todos os quadrados utilizando\n");
printf("numeros de 1 a 9. Para completa-los, seguiremos a seguinte regra: \n"); 
printf("Nao podem haver numeros repetidos nas linhas horizontais e verticais, \n");
printf("assim como nos quadrados grandes.\n\n\n");
 
               
   while(terminar()!=0)
     {   
         geratela(); 
         terminar();                  
     }   
}

>

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

  • Conteúdo Similar

    • Por Saylander
      Estou elaborando um projeto de um carrinho que esta sendo feito utilizando energia potencial gravitacional e energia cinética. Ai preciso desenvolver um programa que simula esse carrinho. E eu gostaria de saber como faço para fazer a relação de energia potencial gravitacional/energia cinética?  
    • Por rtavix
      Minha Pagina que desenvolvi.
       
      <!DOCTYPE html> <html lang="pt-br"> <head> <title>Emissao de comprovantes</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div class="container form-group col-md-12"> <div class="row"> <div class="form-group col-md-3"></div> <div class="form-group col-md-5"> <div class="clearfix"></div> <div class="form-group"> </div> <div class="panel panel-danger"> <div class="panel-heading"><img src="http://internet.sefaz.es.gov.br/imagens/topo_brasao.png" class="img-responsive center-block" alt="Cinque Terre"><h4 class="text-center">BNES SA</h4></div> <h5 class="text-center"><strong>BNES CORPORATIVO</strong></h5> <h5 class="text-center"><strong>Pagamento e Transferencias Eletrônicas</strong></h5> <h5 class="text-center"><strong>PAGAMENTO: Deposito</strong></h5> <form class="form-horizontal" action="/action_page.php"> <div class="form-group"> <label class="control-label col-sm-3 text-align: left " style="font-weight: normal">Titular: </label> <div class="col-sm-10"> <input type="password" class="form-control" id="inputPassword" placeholder="Password"> </div> </div> <div class="form-group"> <label class="control-label col-sm-3 text-align: left " style="font-weight: normal">Codigo de Barras:</label> </div> <div class="form-group"> <label class="control-label col-sm-3 text-align: left " style="font-weight: normal">Data de Pagamento:</label> </div> <div class="form-group"> <label class="control-label col-sm-3 text-align: left " style="font-weight: normal">Valor Documento:</label> </div> <div class="form-group"> <label class="control-label col-sm-3 text-align: left " style="font-weight: normal">Protocolo:</label> </div> <div class="form-group"> <label class="control-label col-sm-3 text-align: left " style="font-weight: normal">Registro:</label> </div> <div class="form-group"> <label class="control-label col-sm-3 text-align: left " style="font-weight: normal">Emissao:</label> </div> </form> </div> <div class="pull-right"> <button class="btn btn-success" id="btnImprimir" type="button"><p>IMPRIMIR <span class="glyphicon glyphicon-print"></span></p></button> </div> </div> <div class="form-group col-md-3"></div> </div> </div> </body> </html>  
      A ideia é que  quando eu clicar no botão de imprimir dentro de uma gridview ele chama essa pagina que postei logo acima e exibir os dados via label trazendo do banco, mas até o momento eu estou agarrada na parte da modal.
       
       
      Classe do evento click do meu botão que chama a pagina de cima.
       
      protected void ImgImprimir_Click(object sender, EventArgs e) { Response.Redirect("frmImprimir.aspx"); } Meu html da minha pagina:
       
      meu html do botão referente ao metodo:
      <ItemTemplate> <asp:LinkButton ID="imgImprimir" runat="server" CausesValidation="false" CommandArgument='<%#Eval("Flag")%>' CommandName="Imprimir" CssClass="iconesTabelas icon_imprimir" OnClick="ImgImprimir_Click" ToolTip="Imprimir" /> </ItemTemplate>  
    • Por dudaperrut
      meu programa esta dando falha de segmentação nessa função. 
       
      Uma função que recebe dois vetores, o seu tamanho e uma variável ponteiro. A função deve achar o maior elemento do vetor v1 e o menor elemento do vetor v2. A função deve retornar o valor do maior elemento de v1.
      void *MaiorMenor (float *vet1, float *vet2, int tam, float *maior) { float *menor; int i; maior = (float*)malloc(tam * sizeof(float)); for(maior=0; maior<tam; maior++) { for(i=0; i<tam; i++) { if(*(vet1+(tam-i-1)) > *maior) { *maior = *(vet1+(tam-i-1)); } } } menor = (float*)malloc(tam * sizeof(float)); for(menor=0; menor<tam; menor++) { for(i=0; i<tam; i++) { if(*(vet2+(tam-i-1)) < *menor) { *menor = *(vet1+(tam-i-1)); } } } return (maior); }  
    • Por DarthNukku
      Algoritmo: Totobola 
        
      O algoritmo utiliza uma matriz de 13x3 para registar os resultados da jornada de futebol, na configuração 1X2, em que 1 ganhou a equipa da casa, X empataram e 2 ganhou a equipa visitante. 
      Desenvolva para uma casa de apostas a recolha das apostas de vários utilizadores e o cálculo dos resultados acertados. Sabendo que os prémios são atribuídos de acordo com a tabela seguinte, o algoritmo deve apresentar o número de premiados em 1º, 2º ou 3º lugar. 
        
        1º prémio 
      13 
      2º prémio 
      12 
      3º prémio 
      11
    • Por debora9230
      Ação
      Verifique se o grupo de Manoel ou de Joaquim conseguirá vencer essa batalha. Dado um vetor de números, os números ímpares representam os soldados e os números pares representam os rebeldes infiltrados. Some as forças e descubra qual dos dois grupos é mais forte.
       
      Entrada e Saída
      Entrada:
      1ª linha: tamanho do vetor (1 a 50)
      2ª linha: vetor de números, cada número entre 1 e 50.
      Saída:
      "soldados" se os soldados(impares) somados são mais fortes.
      "rebeldes" se os rebeldes(pares) somados são mais fortes.
      "empate" se ambas forças são iguais e todos morrerão.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.