Sudoku código-fonte em C para baixar
- comtegapandude
- Aug 27, 2023
- 7 min read
Código fonte do Sudoku em linguagem C
Sudoku é um popular jogo de quebra-cabeça baseado em lógica que desafia seu cérebro e habilidades de raciocínio. O objetivo do sudoku é preencher uma grade 9x9 com números de 1 a 9, de forma que cada linha, coluna e subgrade 3x3 contenha cada número exatamente uma vez. Os quebra-cabeças de Sudoku vêm em diferentes níveis de dificuldade, do fácil ao mal, dependendo de quantos números são dados no início.
sudoku source code in c download
Neste artigo, mostraremos como criar seu próprio jogo de sudoku usando a linguagem C, uma linguagem de programação poderosa e eficiente que permite acesso de baixo nível à memória e ao hardware. A linguagem C é ideal para programação sudoku porque possui uma sintaxe simples, um conjunto rico de operadores e funções e uma velocidade de execução rápida. Usaremos o Code Blocks IDE, um ambiente de desenvolvimento integrado gratuito e de código aberto para programação C/C++.
Código do jogo Sudoku em linguagem C
Para criar um código de jogo sudoku em linguagem C, seguiremos os seguintes passos:
Como criar um novo projeto no Code Blocks IDE
Abra o Code Blocks IDE e clique em "Criar um novo projeto".
Selecione "Aplicativo de console" e clique em "Avançar".
Escolha "C" como idioma e clique em "Avançar".
Nomeie seu projeto como "Sudoku" e escolha um local para ele. Clique em "Avançar" e depois em "Concluir".
Um novo projeto com um arquivo main.c será criado.
Como preencher o tabuleiro com números aleatórios
Primeiro, precisamos declarar algumas variáveis e constantes para nosso programa. Usaremos um array bidimensional de inteiros para armazenar o tabuleiro de sudoku, uma constante N para representar o tamanho do tabuleiro (9) e algumas variáveis para loops e números aleatórios.
Também incluiremos alguns arquivos de cabeçalho para funções padrão de entrada/saída, funções de tempo e funções assert.
#include #include #include #include #define N 9 // tamanho da placa int board[N][N]; // tabuleiro de sudoku int i, j, k; // variáveis de loop int num; // número aleatório int linha, col; // coordenadas do tabuleiro int count; // número de células preenchidas srand(time(NULL)); // semente para gerador de números aleatórios
Em seguida, precisamos preencher o tabuleiro com números aleatórios de 1 a 9, de forma que cada número apareça apenas uma vez em cada linha, coluna e subgrade. Usaremos um loop aninhado para iterar sobre cada célula do quadro e um loop do-while para gerar um número aleatório até que seja válido para aquela célula.
Também usaremos uma função chamada checkvalid() para verificar se um determinado número é válido para uma determinada célula. Esta função retornará 1 se o número já estiver presente na mesma linha, coluna ou subgrade, ou 0 caso contrário.
// função para verificar se um número é válido para uma célula int checkvalid(int num, int row, int col) { // verifica a linha para (j = 0; j
// verifica a coluna para (i = 0; i
Como verificar se o quadro é válido e solucionável
Depois de preencher o tabuleiro com números aleatórios, precisamos verificar se o tabuleiro é válido e solucionável. Um tabuleiro válido é aquele que segue as regras do sudoku, e um tabuleiro solucionável é aquele que possui uma solução única.
Usaremos uma função chamada checksolvable() para verificar se o tabuleiro pode ser resolvido. Esta função usará um algoritmo de retrocesso para tentar todos os valores possíveis para cada célula vazia e retornará 1 se uma solução for encontrada ou 0 caso contrário.
Também usaremos uma função chamada removecell() para remover alguns números do quadro para criar células vazias. Essa função receberá um parâmetro k, que representa o número de células a serem removidas. Usaremos um gerador de números aleatórios para selecionar as células a serem removidas.
// função para verificar se o tabuleiro pode ser resolvido int checksolvable() int row, col; // encontra uma célula vazia for (row = 0; row 0) row = rand() % N; // gera um índice de linha aleatório col = rand() % N; // gera um índice de coluna aleatório if (board[row][col] != 0) // se a célula não estiver vazia, remova-a board[row][col] = 0; k--; // diminui o número de células a serem removidas
Como exibir a placa e a entrada do usuário
Em seguida, precisamos exibir a placa e a entrada do usuário. Usaremos uma função chamada displayboard() para imprimir a placa no console. Esta função usará alguns caracteres de formatação para criar uma aparência de grade.
// função para exibir o tabuleiro void displayboard() printf("\n"); for (i = 0; i N) printf("Entrada inválida. Insira números de 1 a 9.\n"); válido = 0; // define o sinalizador como inválido // valida a célula de entrada if (placa && válida[r - 1][c - 1] != 0) printf("Entrada inválida. A célula já está preenchida.\n"); válido = 0; // define o sinalizador como inválido // valida o valor de entrada if (valid && checkvalid(v, r - 1, c - 1)) printf("Entrada inválida. O valor está em conflito com os números existentes.\n"); válido = 0; // define sinalizador como inválido while (!valid); // repete até que a entrada seja válida // atribui valor de entrada à placa placa[r - 1][c - 1] = v;
Como resolver o tabuleiro usando o algoritmo de retrocesso
Finalmente, precisamos resolver o tabuleiro usando um algoritmo de retrocesso.Este algoritmo tentará todos os valores possíveis para cada célula vazia e retrocederá se um beco sem saída for alcançado.
Usaremos uma função chamada solveboard() para implementar esse algoritmo. Esta função será semelhante à função checksolvable(), exceto que também exibirá o quadro e as etapas da solução.
// função para resolver o tabuleiro int solveboard() int linha, col; // encontra uma célula vazia for (row = 0; row
Conclusão
números aleatórios, verifique se o tabuleiro é válido e solucionável, exiba o tabuleiro e a entrada do usuário e resolva o tabuleiro usando um algoritmo de retrocesso. Também fornecemos o código-fonte e a saída do programa.
O jogo Sudoku é uma maneira divertida e desafiadora de exercitar seu cérebro e melhorar suas habilidades lógicas. Você pode baixar o código-fonte neste link e executá-lo em seu computador.Você também pode modificar o código para criar diferentes níveis de dificuldade, adicionar gráficos e efeitos sonoros ou explorar outras aplicações da linguagem C.
Esperamos que você tenha gostado deste artigo e aprendido algo novo. Se você tiver alguma dúvida ou feedback, informe-nos nos comentários abaixo. Codificação feliz!
perguntas frequentes
Quais são as regras básicas do sudoku?
As regras básicas do sudoku são:
O tabuleiro é uma grade 9x9 dividida em 9 subgrades 3x3.
O objetivo é preencher o quadro com números de 1 a 9, de forma que cada linha, coluna e subgrade contenha todos os números exatamente uma vez.
Alguns números são dados no início como pistas. O nível de dificuldade depende de quantos números são dados e onde eles são colocados.
Você não pode alterar os números fornecidos. Você só pode preencher as células vazias com números válidos.
Você pode usar lógica e dedução para encontrar os números válidos para cada célula. Você não precisa adivinhar ou usar tentativa e erro.
Quais são algumas dicas e truques para resolver quebra-cabeças de sudoku?
Algumas dicas e truques para resolver quebra-cabeças de sudoku são:
Comece com as células fáceis. Procure linhas, colunas ou subgrades que tenham apenas uma célula vazia ou apenas um valor possível para uma célula vazia.
Eliminação de uso. Se um número já estiver presente em uma linha, coluna ou subgrade, você pode eliminar esse número das outras células nessa linha, coluna ou subgrade.
Use marcas de lápis. Você pode anotar os valores possíveis para cada célula em pequenos dígitos. Isso ajudará você a acompanhar os candidatos e eliminá-los à medida que avança.
Procure padrões. Você pode usar várias técnicas, como pares nus, solteiros ocultos, x-wing, peixe-espada, etc., para identificar padrões e eliminar candidatos. Você pode aprender mais sobre essas técnicas em tutoriais ou livros online.
Verifique seu trabalho. Você pode usar uma ferramenta de resolução ou um verificador online para verificar sua solução ou encontrar seus erros. No entanto, não confie muito nessas ferramentas, pois elas podem estragar a diversão e o desafio de resolver quebra-cabeças de sudoku.
Como posso modificar o código para gerar diferentes níveis de dificuldade?
Você pode modificar o código para gerar diferentes níveis de dificuldade alterando o parâmetro k na função removecell(). Este parâmetro representa o número de células a serem removidas do quadro. Quanto maior o valor de k, mais células são removidas e mais difícil se torna o quebra-cabeça.
Por exemplo, você pode alterar k para 20 para um nível fácil, 40 para um nível médio, 60 para um nível difícil ou 80 para um nível maligno. Você também pode experimentar diferentes valores de k para criar seus próprios níveis personalizados.
Como posso adicionar gráficos e efeitos sonoros ao jogo?
Você pode adicionar gráficos e efeitos sonoros ao jogo usando algumas bibliotecas ou frameworks que suportam a linguagem C. Por exemplo, você pode usar SDL (Simple DirectMedia Layer), uma biblioteca de desenvolvimento de plataforma cruzada que fornece acesso de baixo nível a áudio, teclado, mouse, joystick e hardware gráfico.
Você também pode usar o Allegro, uma biblioteca de programação de jogos que oferece funções para gráficos, som, dispositivos de entrada, temporizadores, etc. Outra opção é o SFML (Simple and Fast Multimedia Library), uma biblioteca multimídia moderna que fornece uma interface simples para vários componentes do seu PC.
Você precisará instalar essas bibliotecas ou estruturas em seu computador e vinculá-las ao seu projeto. Você também precisará modificar seu código para usar suas funções e recursos. Você pode encontrar tutoriais e exemplos sobre como usar essas bibliotecas ou estruturas online ou em livros.
Quais são algumas outras aplicações da linguagem C?
A linguagem C é uma das linguagens de programação mais utilizadas no mundo. Tem muitas aplicações em vários campos e domínios, tais como:
Sistemas operacionais: A linguagem C é usada para desenvolver sistemas operacionais como Windows, Linux, Unix, etc.
robôs, carros, eletrodomésticos, etc.
Desenvolvimento de software: A linguagem C é usada para criar aplicativos de software, como compiladores, editores, bancos de dados, jogos, etc.
Computação científica: A linguagem C é usada para realizar cálculos complexos e simulações para campos como física, química, biologia, engenharia, etc.
Desenvolvimento Web: A linguagem C é usada para criar servidores Web e aplicativos Web que lidam com solicitações e respostas pela Internet.
Segurança: A linguagem C é usada para implementar algoritmos de criptografia e descriptografia que protegem os dados e a comunicação contra acesso não autorizado.
A linguagem C também é a base para muitas outras linguagens de programação, como C++, Java, Python, etc. Aprender a linguagem C pode ajudá-lo a entender os fundamentos da programação e aprimorar suas habilidades e conhecimentos. 0517a86e26
Comments