Você está aqui: Python ::: Pygame ::: Mouse e Teclado |
Como detectar o pressionamento de uma tecla no Pygame do Python usando o evento pygame.KEYDOWNQuantidade de visualizações: 1091 vezes |
Podemos testar se uma tecla foi pressionada na janela de desenho do Pygame verificando se o evento.type é igual a pygame.KEYDOWN. Este evento é disparado sempre que uma tecla é pressionada (sem necessariamente ser solta). Para detectar quando a tecla foi liberada, devemos usar o evento pygame.KEYUP. Na aplicação a seguir nós criamos uma janela de jogo no Pygame, definimos o seu tamanho, o título, a cor de fundo e, no loop de eventos, nós detectamos o pressionamento de uma tecla e enviamos uma mensagem para a janela de comandos. Veja o código Pygame completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- # vamos importar as bibliotecas necessárias import pygame, sys from pygame.locals import * # inicializa a biblioteca pygame.init() # obtém a superfície do jogo e define o tamanho da tela DISPLAYSURF = pygame.display.set_mode((600, 450)) # vamos definir o título da janela do jogo pygame.display.set_caption("Meu Jogo de Cartas") # vamos definir a cor de fundo para a tela do jogo do Pyagem BRANCO = (255, 255, 255) DISPLAYSURF.fill(BRANCO) # e definimos a cor para a superfície da janela # 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 == QUIT: # fechamos a tela do jogo pygame.quit() # e saimos do programa sys.exit() # vamos verificar se o evento pygame.KEYDOWN foi disparado if evento.type == pygame.KEYDOWN: print("Uma tela foi pressionada na janela de desenho") # redesenha a tela continuamente pygame.display.update() Ao executar a aplicação Pygame nós teremos o seguinte resultado (mostrado na janela de comando): Uma tela foi pressionada na janela de desenho |
Link para compartilhar na Internet ou com seus amigos: |
C# ::: Coleções (Collections) ::: ArrayList |
Como percorrer os elementos de uma ArrayList do C# usando um objeto da interface IEnumeratorQuantidade de visualizações: 8314 vezes |
Um objeto da interface IEnumerator (no namespace System.Collections) pode ser usado para percorrer os elementos de uma coleção não-genérica, como é o caso da classe ArrayList. Podemos usar um enumerador para acessar os itens da lista individualmente, mas estes não poderão sofrer modificações por meio do enumerador. Um enumerador para uma ArrayList é obtido por meio do método GetEnumerator(). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // vamos obter um enumerador para a lista IEnumerator enumerador = lista.GetEnumerator(); Observe agora um trecho de código no qual temos uma lista contendo 5 inteiros. Note o uso de um IEnumerator para percorrer os elementos e exibir o valor contido no elemento atual: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- static void Main(string[] args){ // não se esqueça // using System.Collections; // Cria o ArrayList ArrayList lista = new ArrayList(); // Adiciona 5 inteiros lista.Add(65); lista.Add(2); lista.Add(13); lista.Add(97); lista.Add(4); // vamos obter um enumerador para a lista IEnumerator enumerador = lista.GetEnumerator(); // vamos percorrer a lista usando o enumerador while(enumerador.MoveNext()){ Console.WriteLine(enumerador.Current); } Console.Write("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } Para saber mais sobre os enumeradores, consulte minhas dicas sobre a interface IEnumerator. |
Java ::: Fundamentos da Linguagem ::: Modificadores |
Programação Orientada a Objetos em Java - Como usar o modificador de acesso public da linguagem JavaQuantidade de visualizações: 9660 vezes |
O modificador de acesso public é aquele que permite o maior grau de acesso a um recurso Java (um recurso é uma classe, um método ou uma variável). O único modificador de acesso permitido a uma classe não interna é public. Não é permitido usar outro modificador. Na ausência do modificador public, o acesso à classe será de pacote (package). Quando usamos este modificador, as classes, métodos e variáveis podem ser acessadas a partir de qualquer outra classe sem qualquer restrição. Além disso, um método public pode ser sobrescrito (sofrer override) por qualquer subclasse da classe que o declara. O método main() da aplicação é declarado public para que o ambiente de execução Java tenha acesso a ele. Declará-lo de outra forma fará com que a execução da aplicação se torne impossível. Veja um exemplo de uma classe Java pública, com uma variável de instância pública e um método também público: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; // uma classe pública public class Cliente { // uma variável pública public int codigo; // um construtor público public Cliente(){ this.codigo = 532; } // um método público public int obterCodigoCliente(){ return this.codigo; } } |
C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como excluir arquivos em C usando a função remove()Quantidade de visualizações: 18968 vezes |
A função remove(), disponível no header stdio.h, pode ser usada para excluir arquivos. Veja sua assinatura:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int remove(const char *filename); Veja que esta função recebe o caminho e nome do arquivo a ser excluído e retorna um valor inteiro. Se o arquivo for excluído com sucesso, o valor 0 será retornado. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // nome do arquivo a ser excluído char *arquivo = "c:\\testes.txt"; // vamos excluir if(remove(arquivo) == 0) printf("Arquivo foi excluido com sucesso."); else printf("Nao foi possivel excluir o arquivo."); printf("\n\n"); system("PAUSE"); return 0; } |
Java ::: Dicas & Truques ::: Threads |
Java Threads - Como interromper a execução de uma thread em suas aplicações JavaQuantidade de visualizações: 15066 vezes |
A classe Thread fornece um método chamado interrupt() que serve para interrompermos a execução de uma determinada thread. Os métodos sleep() e yield() transferem a thread sendo executada no momento do estado "executando" para o estado "pronta". O método interrupt(), por sua vez, faz com que uma thread vá para o estado "finalizada", ou seja, ela não voltará mais a ser executada. O problema é que, nem sempre, o método interrupt() parece surtir o efeito desejado, ou seja, fazer com que a thread pare de executar imediatamente. Por esta razão, a forma mais fácil de "matar" uma thread é forçar a saída de seu método run(). Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // criamos uma classe que servirá como thread class MinhaThread extends Thread{ private String nome; public MinhaThread(String nome){ this.nome = nome; } public void run(){ for(int i = 1; i <= 20; i++){ System.out.println(nome + ": " + i); if((i >= 3) && (nome.equals("Thread 1"))){ try{ System.out.println(nome + " foi eliminada"); return; // interrompe a execução do método run() } catch(SecurityException e){ System.out.println(e.getMessage()); } } } } } public class Estudos{ public static void main(String[] args){ // vamos criar duas threads MinhaThread t1 = new MinhaThread("Thread 1"); t1.start(); MinhaThread t2 = new MinhaThread("Thread 2"); t2.start(); } } Ao usar a instrução return nós forçamos a saída do método run() e consequentemente, o fim da tarefa sendo realizada pela thread. |
Revit C# ::: Dicas & Truques ::: Tratamento de Erros |
Como corrigir o erro OperationCanceledException em macros e add-ins do Revit C# APIQuantidade de visualizações: 100 vezes |
Nesta dica mostrarei como podemos tratar a exceção OperationCanceledException em macros e plug-ins feitos para o Revit usando a Revit C# API. Esta exceção está no namespace Autodesk.Revit.Exceptions e deve ser declarada por seu nome completo, para não ser confundida com System.OperationCanceledException. O erro OperationCanceledException ocorre quando uma operação é cancelada de forma inesperada. Por exemplo, no código abaixo nós pedimos para o usuário selecionar um grupo e, em seguida, informar um ponto na área de desenho do Revit para que o grupo seja copiado e colocado no ponto indicado. Se o usuário clicar com o botão direito ou pressionar Esc, a operação é cancelada automaticamente. O tratamento da exceção OperationCanceledException nos permite reagir a isso, indicando ao usuário o melhor caminho a ser seguido. O código apresentado aqui já foi visto em dicas e truques sobre a criação e manipulação de grupos de elementos no Revit usando a Revit C# API. No entanto, no código apresentado eu não fiz o tratamento de exceções. Veja o código Revit C# API completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Structure; using Autodesk.Revit.UI.Selection; using System.Collections.Generic; using System.Linq; namespace Estudos { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes. TransactionMode.Manual)] [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")] public partial class ThisApplication { private void Module_Startup(object sender, EventArgs e) { // vamos obter uma referência ao Document ativo Document doc = this.ActiveUIDocument.Document; // Vamos definir um objeto Reference para guardar // o elemento selecionado pelo usuário Reference ref_selecionado = null; // pedimos para o usuário selecionar um grupo Selection selecao = this.ActiveUIDocument.Selection; try { ref_selecionado = selecao.PickObject(ObjectType.Element, "Selecione um grupo"); Element elem = doc.GetElement(ref_selecionado); Group group = elem as Group; // vamos pedir para o usuário selecionar um ponto na área de // desenho do Revit XYZ ponto = selecao.PickPoint( "Selecione um ponto para posicionar o grupo"); // criamos uma nova transação e posicionamos a cópia do // grupo nas coordenadas indicadas pelo usuário Transaction transacao = new Transaction(doc); transacao.Start("Copiar Grupo no Revit"); doc.Create.PlaceGroup(ponto, group.GroupType); transacao.Commit(); // mostramos o resultado TaskDialog.Show("Aviso", "O grupo foi copiado com sucesso."); } // Se o usuário clicar com o botão direito ou pressionar Esc catch (Autodesk.Revit.Exceptions.OperationCanceledException ex) { TaskDialog.Show("Aviso", "Erro: Operação cancelada pelo usuário"); } catch (Exception ex) { TaskDialog.Show("Aviso", "Erro: " + ex.Message); } } private void Module_Shutdown(object sender, EventArgs e) { // para fazer alguma limpeza de memória ou algo assim } #region Revit Macros generated code private void InternalStartup() { this.Startup += new System.EventHandler(Module_Startup); this.Shutdown += new System.EventHandler(Module_Shutdown); } #endregion } } Se o usuário cancelar a operação, ou seja, não selecionar nenhum grupo (talvez pressionando a tecla Esc), o código reagirá e mostrará a mensagem: Erro: The user aborted the pick operation. Se, em vez de selecionar um grupo, o usuário selecionar um outro elemento, então a mensagem de erro será: Erro: Referência de objeto não definida para uma instância de um objeto. |
Veja mais Dicas e truques de Revit C# |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |