Você está aqui: Python ::: Pygame ::: Aplicações com código fonte completo |
|
Como desenhar grids no Pygame para a criação de jogos como Jogo da Velha, Damas, Xadrez, Campo Minado e SudokuQuantidade de visualizações: 1019 vezes |
|
Nesta dica mostrarei um código Pygame completo contendo a base inicial para a crição de jogos de tabuleiro, ou seja, jogos baseados em grades, tais como Jogo da Velha, Damas, Xadrez, Campo Minado e Sudoku. Embora baseado em códigos encontrados em livros de jogos em Python, o código que apresento está todo em português, com as variáveis em português e cheio de comentários. Basta mexer em algumas variáveis de configuração e você conseguirá montar o tabuleiro que você deseja e, o melhor, detectar eventos em cada uma das células da grade. Veja, por exemplo, uma grade para o Jogo da Velha: Note que a célula está colorida de azul. Se clicarmos nela novamente, a cor volta ao branco. Se clicar novamente ela fica azul mais uma vez. O mesmo acontece com todas as células da grade. Veja o código completo para este mini-projeto em Pygame e Python: # vamos importar a biblioteca Pygame import pygame, sys # vamos definir as variáveis de configuração preto = (0, 0, 0) branco = (255, 255, 255) azul = (0, 0, 255) # define a quantidade de linhas e colunas QUANT_LINHAS = 3 QUANT_COLUNAS = 3 # altura, largura e margem entre as celúlas LARGURA = 100 ALTURA = 100 MARGEM = 1 # tamanho da janela ALTURA_JANELA = 303 LARGURA_JANELA = 303 # matriz que representa o grid, ou seja, a grade da janela grade = [] # método principal def main(): # monta as linhas e colunas da matriz for linha in range(QUANT_LINHAS): grade.append([]) for coluna in range(QUANT_COLUNAS): grade[linha].append(0) #grid[1][5] = 1 # inicializa a biblioteca pygame.init() # obtém a superfície do jogo e define o tamanho da tela janela = pygame.display.set_mode((ALTURA_JANELA, LARGURA_JANELA)) # vamos definir o título da janela do jogo pygame.display.set_caption("Como desenhar um grid no Pygame") # quantidade de frames por segundo FPS = 30 # construímos o timer timer = pygame.time.Clock() # e aqui nós entramos no loop do game while True: # monitoramos os eventos for evento in pygame.event.get(): # se o evento foi um pedido para sair if evento.type == pygame.QUIT: # fechamos a tela do jogo pygame.quit() ...... |
|
Link para compartilhar na Internet ou com seus amigos: | |
Java ::: Dicas & Truques ::: Recursão (Recursividade) |
Java Avançado - Como listar o conteúdo de um diretório recursivamenteQuantidade de visualizações: 10703 vezes |
Nesta dica mostrarei como podemos usar recursividade (recursão) para listar todo o conteúdo de um diretório. Este é um exercício para melhorar o seu entendimento de funções recursivas em Java. Veja o código completo para o exemplo: package arquivodecodigos; import java.io.*; import java.util.*; public class Estudos { static int indentLevel = -1; public static void main(String[] args) { listPath(new File("c:\\estudos_c")); } static void listPath(File path) { File files[]; indentLevel++; files = path.listFiles(); Arrays.sort(files); ...... Ao executar este código nós teremos o seguinte resultado: DICA.txt estudos .vs estudos v16 .suo Browse.VC.db ipch AutoPCH 1dcb307edee5acf8 ORIGEM.ipch Debug estudos.exe estudos.exe.recipe estudos.ilk estudos.log estudos.pdb estudos.tlog CL.command.1.tlog CL.read.1.tlog CL.write.1.tlog estudos.lastbuildstate link.command.1.tlog link.read.1.tlog link.write.1.tlog estudos.vcxproj.FileListAbsolute.txt Origem.obj vc142.idb vc142.pdb estudos.sln estudos.vcxproj estudos.vcxproj.filters estudos.vcxproj.user Origem.cpp Estudos_C.dev Estudos_C.exe Estudos_C.layout main.c main.o Makefile.win |
C# ::: Coleções (Collections) ::: ArrayList |
Como escrever um método C# que retorna uma ArrayListQuantidade de visualizações: 17012 vezes |
Estudantes C# ficam um pouco confusos quando solicitados a escrever funções que retornam objetos de classes. E essa confusão é maior ainda quando precisam retornar uma ArrayList, mais precisamente um objeto da classe ArrayList. Esta dica mostra como isso pode ser feito. Veja que temos um método que define, em sua assinatura, que o tipo de retorno não é void (sem retorno) mas sim um objeto da classe ArrayList. No corpo deste método temos a criação da ArrayList propriamente dita, a adição de cinco inteiros e finalmente o uso da palavra-chave return para retornar o ArrayList já preenchido ao chamador do método. Note que o método Main é responsável por efetuar uma chamada ao método, obter o ArrayList resultante e em seguida usar o laço foreach para exibir seus valores: // método que retornará uma ArrayList static ArrayList obterLista(){ // Cria o ArrayList ArrayList lista = new ArrayList(); // Adiciona 5 inteiros lista.Add(1); lista.Add(2); lista.Add(3); lista.Add(4); lista.Add(5); // retorna o ArrayList preenchido return lista; } ...... |
Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a distância entre dois pontos no plano em Java - Java para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 5521 vezes |
Como calcular a Distância Euclidiana entre dois pontos usando Java. Em várias aplicações envolvendo geometria, principalmente no desenvolvimento de jogos em Java, é comum nos depararmos com a necessidade de calcular a distância entre dois pontos A e B. Nessa dica mostrarei como efetuar esse cálculo no R2, ou seja, no plano. Em outra dica eu abordo o cálculo no R3 (espaço). Comece analisando a imagem abaixo: Veja que temos um ponto A (x = 3; y = 6) e um ponto B (x = 9; y = 4). Para determinarmos a distância entre esses dois pontos no plano cartesiano, temos que realizar a análise tanto no sentido do eixo das abscissas (x) quanto no do eixo das ordenadas (y). Veja a fórmula: \[d_{AB} = \sqrt{\left(x_b - x_a\right)^2 + \left(y_b - y_a\right)^2}\] Agora, jogando os valores dos dois pontos da fórmula nós teremos: \[d_{AB} = \sqrt{\left(9 - 3\right)^2 + \left(6 - 4\right)^2}\] Que resulta em 6,32 (aproximadamente). E agora veja o código Java completo que lê as coordenadas dos dois pontos e mostra a distância entre eles: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String args[]){ Scanner entrada = new Scanner(System.in); // vamos ler os dados do primeiro ponto System.out.print("Informe o x do primeiro ponto: "); double x1 = Double.parseDouble(entrada.nextLine()); System.out.print("Informe o y do primeiro ponto: "); double y1 = Double.parseDouble(entrada.nextLine()); // vamos ler os dados do segundo ponto System.out.print("Informe o x do segundo ponto: "); double x2 = Double.parseDouble(entrada.nextLine()); System.out.print("Informe o y do segundo ponto: "); ...... Ao executarmos este código nós teremos o seguinte resultado: Informe o x do primeiro ponto: 3 Informe o y do primeiro ponto: 6 Informe o x do segundo ponto: 9 Informe o y do segundo ponto: 4 Distância entre os dois pontos: 6.324555320336759 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Um método recursivo que recebe uma String e retorna a quantidade de letras maiúsculas encontradasQuantidade de visualizações: 5479 vezes |
Pergunta/Tarefa: Escreva um método recursivo que recebe uma palavra ou frase e retorna a quantidade de caracteres (letras) maiúsculos. Seu método deverá possuir a seguinte assinatura: public static int contarMaiusculas(String frase){ // sua implementação aqui } Sua saída deverá ser parecida com: Digite uma palavra ou frase: Arquivo de Códigos A palavra ou frase contém 2 letras maiúsculas Veja a resolução comentada deste exercício usando Java console: Observação importante: Este código criará uma cadeia de chamadas recursivas. Cada chamada ao método contarMaiusculas() receberá uma cópia menor da palavra ou frase fornecida. Quando a última chamada recursiva do método receber uma string vazia, a cadeia começa a retornar. Note que os valores acumulados nas várias chamadas ao método vão sendo acumulados na variável quantidade. package exercicio; import java.util.Scanner; public class Exercicio { public static void main(String[] args) { // cria um novo objeto da classe Scanner Scanner entrada = new Scanner(System.in); // solicita uma palavra ou frase ao usuário System.out.print("Digite uma palavra ou frase: "); // lê a palavra ou frase String frase = entrada.nextLine(); int quantMaiusculas = contarMaiusculas(frase); System.out.println("A palavra ou frase contém " + quantMaiusculas + " letras maiúsculas"); } // método recursivo que recebe uma palavra ou frase e retorna // a quantidade de letras maiúsculas public static int contarMaiusculas(String frase){ /* Este código criará uma cadeia de chamadas recursivas. Cada ...... |
PHP ::: Design Patterns (Padrões de Projeto) ::: Singleton Pattern |
Como usar o padrão de projeto Singleton em suas aplicações PHPQuantidade de visualizações: 8686 vezes |
O padrão de projeto Singleton (ou Singleton Pattern) é um dos padrões de projeto mais conhecidos e implementados extensivamente nas linguagens Java e C#. Como o PHP, a partir de sua versão 5, suporta praticamente todos os recursos da programação orientada a objetos, este padrão pode ser implementado também nesta linguagem sem muitas dificuldades. Uma das situações nas quais usamos o padrão Singleton é quando queremos que somente uma instância de uma determinada classe seja criada e que esta esteja disponível para todas as demais classes do sistema. Um exemplo disso é uma classe responsável por registrar logs do sistema, uma classe responsável por obter conexões com o banco de dados, ou ainda uma classe que concentra dados de configuração da aplicação. Assim, a chave do padrão Singleton é um método estático, geralmente chamado de getInstance(), que retorna uma nova instância da classe se esta ainda não foi instanciada. Se a classe já tiver sido instanciada, o método getInstance() retorna a instância já existente. Vamos ver um exemplo deste padrão em PHP. Observe o código a seguir: <? // Uma classe Singleton responsável por gravar // logs no sistema class Logger{ // variável estática e privada que guarda a instância // atual da classe private static $instancia = NULL; // Método estático que retorna uma instância já existente, ou // cria uma nova instância public static function getInstance(){ if(self::$instancia == NULL){ self::$instancia = new Logger(); } return self::$instancia; } // Construtor privado para evitar que instâncias sejam ...... Ao executar este código teremos o seguinte resultado: Vou registrar o log: Novo usuário cadastrado. |
Desafios, Exercícios e Algoritmos Resolvidos de PHP |
Veja mais Dicas e truques de PHP |
Dicas e truques de outras linguagens |
R - R para Matemática e Estatística - Como calcular desvio padrão usando a função sd() da linguagem R |
Quem Somos |
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
|
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..
|
Linguagens Mais Populares |
1º lugar: Java |