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 Rafael_Ferreira
      O primeiro código abaixo o form "Login" é o que tem a string na qual planejo resgatar, a string "user", que é da primeira tela do programa na qual o usuário tem que digitar um nome para acesso simultâneo ao banco de dados. E o form "Cadastro_Cliente", que é o form na qual eu vou utilizar a string resgatada, segundo código digitado abaixo. Este form  é posterior na qual eu cadastro os dados dos clientes. O problema é que ele só resgata o public string "user" ele não pega o valor "user = textBox1.Text" lá embaixo.
      -----------------------------------------------------------------------------------
       public partial class Login : Form
          {

              public string user;

              public Login()
              {
                  InitializeComponent();

              }

              private void Login_Load(object sender, EventArgs e)
              {

              }

              public void button1_Click(object sender, EventArgs e)
              {
               user = textBox1.Text;

                  if (String.IsNullOrEmpty(user) == false)
                      {
                      Form1 F1 = new Form1();
                      this.Hide();
                      F1.ShowDialog();
                      this.Close();
                  }

              }
          }
      }
        -------------------------------------------------------------------------------------
         public Cadastro_Cliente(string valorIdSelecionado)
              {
                 InitializeComponent();
                 Login login = new Login();

                 usuario = login.user;

                 login.Dispose();
       
      -------------------------------------------------------------------------------------
      O problema é que ele resgata o valor declarado acima no caso o valor "vazio" nulo da "public string user" o sistema não passa e "pega" o valor  no código abaixo "user = textBox1.Text" só passando o valor da "string" em sua declaração.
    • Por Good
      Boa noite, então... eu criei funções manuais para adicionar e remover contatos da agenda do google, tudo ok..
      O problema é o access_token que fica expirando. A minha dúvida é como evitar isto?
       
      A duração do token tem validade de 3600, e como uso algumas vezes durante o dia, o token fica expirando, e quando vou renovar aparece: stdClass Object ( [error] => invalid_grant [error_description] => Token has been expired or revoked. ) 
       
      Tentei criar uma função para renovar quando estiver perto de expirar fazer a renovação. É o resultado da mensagem acima!
       
      Aí pra atualizar o token, tenho que "fazer login" novamente e aí vou obter um token novo. Mas isso é incômodo demais pro sistema, e meus clientes não vão gostar, com certeza. E já vi um OUTRO serviço que o uso é frequente e não há necessidade de mandar o usuário para a página do google fazer "login novamente".
       
      Deu para entender? Quero continuar acessando a API do google, sem necessidade de ficar mandando o usuário para a página de login do google.
    • Por rtavix
      Pessoal, estou com problemas no meu insert ao inserir no banco: Essa é meu método de inserir:
       
      private static bool InsereDadosBanco(string CodProcInter,string CodBarra,string DtAgendamento,string VlrDocumento,string Protocolo,string Registro,string Emissao) { bool insert = false; using (DB db = new DB()) { try { VlrDocumento = SomenteNumerosPontosVirgula(VlrDocumento).Replace(",00",""); string SQL; DateTime data = Convert.ToDateTime(DtAgendamento); DateTime dataEmissao = Convert.ToDateTime(Emissao); SQL = "INSERT INTO sdpj_comprovante(COD_COMP, COD_PROC_INTER, COD_BARRAS, DAT_AGENDAMENTO, VLR_DOCUMENTO, NUM_PROTOCOLO, DSC_REGISTRO,DAT_EMISSAO)"; SQL += string.Format(@"VALUES(SDPJ_COD_COMP_SEQ.NextVal, '{0}', '{1}', 'TO_DATE('{2}', 'DD/MM/YYYY')', '{3}', '{4}', '{5}', 'TO_DATE('{6}', 'DD/MM/YYYY HH:MI:SS'))", CodProcInter, CodBarra, Convert.ToDateTime(DtAgendamento), VlrDocumento, Protocolo, Registro, Convert.ToDateTime(Emissao)); db.ExecutaComando(SQL); insert = true; InsertLog("\n Inserido -> ProcInter: " + CodProcInter + " Cód. Barra: " + CodBarra); } catch (Exception ex) { insert = false; } } return insert; }  
      Classe Db.
      public void ExecutaComando(string strQuery) { var cmdComando = new OracleCommand { CommandText = strQuery, CommandType = CommandType.Text, Connection = conexao }; cmdComando.ExecuteNonQuery(); }  
      esta retornando o erro:
      {"ORA-00917: vírgula não encontrada"}
    • Por rtavix
      Pessoal, boa tarde!
       
      Estou com problemas para lê os arquivos de um diretório, apresenta erro como se estivesse passando o caminho errado, porém não enxergo essa falha, alguém poderia me orientar?
      Aqui é aonde eu verifico a extensão do arquivo e informo o caminho:
      public static class LeituraTxt { static Thread _ThreadVerificacao; static string PastaArquivosPendentes = @"D:\Pendrive\PENDENTES"; static string PastaArquivosImportados = @"D:\Pendrive\IMPORTADOS"; static string PastaArquivoLog = @"D:\Pendrive\LogImportaComprovante"; public static void Ler() { //criação da thread de verificação e sua execução _ThreadVerificacao = new Thread(VerificarHorario); _ThreadVerificacao.Start(); } //irá verificar se deve ou não executar o método a cada 1 hora private static void VerificarHorario() { while (true) { if (DateTime.Now.Hour == 16) //Se for 07:00:00 horas da manhã { InsertLog(""); InsertLog("\n INICIO :: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); try { DirectoryInfo dirPendentes = new DirectoryInfo(PastaArquivosPendentes); // lista arquivos do diretorio corrente foreach (FileInfo file in dirPendentes.GetFiles()) { if(file.Extension == ".cpv") { ProcessaArquivo(file.FullName, file.Name); } } } catch (Exception) { throw; } finally { InsertLog("\n FIM :: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); } } Thread.Sleep(3600000); //3.600.000 milisegundos equivalem a 1 hora (Parado) } } }  
      Método para mover o arquivo:
      private static void MoveFile(string FileName) { try { PastaArquivosImportados += "\\" + FileName; PastaArquivosPendentes += "\\" + FileName; File.Move(PastaArquivosPendentes, PastaArquivosImportados); } catch (Exception) { throw; } } Método de inserir o log:
      private static void InsertLog(string linha) { //Cria Pasta de Log, Caso não exista if (!Directory.Exists(PastaArquivoLog)) { Directory.CreateDirectory(PastaArquivoLog); } //Cria Arquivo de Log, Caso não exista string FullPath = PastaArquivoLog+ "\\LogTexto.txt"; if (!File.Exists(FullPath)) { using (File.Create(FullPath)) ; } //Escreve no arquivo de LOG using (StreamWriter file = new StreamWriter(FullPath,true)) { file.WriteLine(linha); file.Dispose(); } }  
      Erro:
      System.IO.FileNotFoundException: 'Não foi possível localizar o arquivo 'D:\Pendrive\PENDENTES\CGc0001.cpv\CGc0360.cpv'.'
      Isso acontece que toda vez vou ler o próximo arquivo.
    • Por Rafael_Ferreira
      C# Mysql delete para deletar só um usuário especificado pelo sistema. Qual o erro do código abaixo? 
       
      "DELETE FROM clientes_cadastrados WHERE Codigo = '" + codigo + "' AND User = '" + usuario + "'; 
×

Informação importante

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