qual o melhor pattern para executar uma ação quando uma tecla é pressionada?
quando eu fazia joguinhos era comum ter um switch-case ou uma série de if-elses para fazer alguma coisa quando aperta uma tecla. assim,<br /><br />se apertou x faz algo, se não, se apertou y, então
<p>oi,</p>
<p>acho que os patterns <code>command</code> e <code>observer</code> seriam os mais apropriados para esse caso.</p>
resumindo aqui a resposta que demos em aula: essas duas são mesmo as melhores opções e o uso depende muito de qual o seu objetivo. se você quiser capturar o erro e agir sobre ele, melhor a trycatch(); nas outras situações é melhor a possibly().

nossa única outra recomendação é evitar ao máximo o us… a função switch possui algumas diferenças em relação à função if, mas ambas são funções de comparação. e é correto afirmar que a diferença entre elas é a capacidade de apenas testar igualdades. a estrutura do switch pode ser melhor analisada a seguir:\switchem cada um dos cases, só é aceito um valor ou, até mesmo, uma string. a comparação sempre será uma comparação de igualdade entre o valor de referência e o valor de cada case. já a função if permite fazer comparações lógicas com uma lógica booleana. a estrutura do if pode ser melhor analisada a seguir:\if quando se trata de jogos o melhor seria passa os jogos pra verifica se alguém já conseguiu faze ele roda no linux ou no caso vocês pode pesquisar mesmo ai já pode aprende a como tira sua dúvida em jogos que queira joga. <p>a melhor ferramenta disponível é o fireworks. sou bastante avançado na maioria das suítes cs e devo dizer que, para o design de interface, nada supera o fireworks.</p> Olá
  

  
Verifique se ela não saiu do encaixe, se for isso encaixe-a novamente e também se não caiu sujeira debaixo da tecla. Limpe se for o caso. Caso não conseguir usar a tecla, leve o computador para um serviço autorizado.
  

  
Boa sorte <p>eu acho que a melhor implementação depende do tipo de diálogo e do modo de interação desejado.</p><p><strong>diálogos que requerem uma ação</strong> não devem ter um [x] para fechá-los, na minha opinião (nem devem ser fechados clicando em qualquer outro lugar que não seja nos botões de ação).<br> a maioria deles possui um conjunto de botões "salvar" e "cancelar", de modo que os usuários pensam (mesmo que por uma fração de segundo) se "fechar" significa "cancelar" ou não.</p><p><strong>caixas de diálogo de informações</strong> deve ter um botão "fechar" e um [x], na minha opinião.<br> se a informação é algo que o usuário pode querer <strong>interagir com</strong> (por exemplo, texto a ser selecionado e copiado), é claro que você não pode permitir que um clique dentro dela feche a caixa de diálogo.<br> se você deseja que o usuário <strong>preste atenção</strong> as informações, eu também proibiria que os cliques do lado de fora fossem descartados, pois isso aumenta a chance de o usuário focar na caixa de diálogo para fechá-la (e espero ler algo lá).</p> <p>existem boas soluções para mac e windows que eu conheço:</p><h2>windows 7</h2><p>este recurso é construído e é chamado <strong> aero snap </strong>. você pode usar os seguintes atalhos de teclado para obter o comportamento desejado:</p><ul> <li><kbd>win</kbd> + <kbd>&leftarrow;</kbd> move a janela atual para a metade esquerda da tela.</li> <li><kbd>win</kbd> + <kbd>&rightarrow;</kbd> move a janela atual para a metade direita da tela.</li> <li><kbd>win</kbd> + <kbd>&uparrow;</kbd> maximes a janela atual.</li> </ul><h2>windows xp e vista</h2><p> <a href="http://jgpaiva.dcmembers.com/gridmove.html">gridmove</a> permite que você configure regiões para encaixar janelas através de uma tecla de atalho. eu mapeei <kbd>win</kbd> + <kbd>1</kbd> para mover uma janela para a metade esquerda da tela e <kbd>win</kbd> + <kbd>2</kbd> para usar a metade direita.</p><p> <a href="http://www.aerosnap.de/index\_eng.htm">aerosnap</a> torna os atalhos de teclado nativos do windows 7 disponíveis no windows vista e no windows xp.</p><h2>mac os x</h2><p> <a href="http://www.irradiatedsoftware.com/cinch/">cinch</a> , <a href="http://www.irradiatedsoftware.com/sizeup/">sizeup</a> (ambos testes gratuitos ilimitados) e twoup (descontinuado - disponível <a href="http://download.cnet.com/twoup/3000-2346\_4-10907668.html">aqui</a> ) da irradiated software todos realizam essa tarefa perfeitamente. o sizeup adiciona alguns recursos extras, incluindo suporte a vários monitores.</p> Esta é a minha opinião, mas; assim como as classes de caso do, eu gostaria implementar um `copy`método de tipos na classe para fazer a modificação possível, mantendo a imutabilidade, mas existe alguns casos que eu não posso ajudar a tê-lo mutável; por exemplo, quando se espera algo para tornar a operação de cópia muito grande e lento para a classe; como quando a classe tem tantos membros freqüentemente modificados. E não se preocupe com milhares de casos flutuando na memória, porque eles são automaticamente GC'ed, então o problema mais real é o custo do tempo de copiar as instâncias da classe. Por favor, diga-me se minha opinião é de alguma forma errada :) vai no menu e pesquisa por “touchpad” lá vai ter um monte de opção e no meio vai ter a de habilitar o clique. <p>não acho que eles sejam mutuamente exclusivos, mas, nos casos em que são, você deve observar o que seus clientes desejam/precisam.</p><p>qualquer interface pode ser simplificada movendo funcionalidades complexas para outro local. eu acho que esse é o principal compromisso. para facilitar o uso para o usuário médio, você precisa torná-lo mais complicado para o usuário avançado. eles precisam fazer mais alguns cliques para obter suas coisas.</p><p>mas é claro que muitas vezes o software pode ser facilitado tanto para usuários avançados quanto para usuários casuais, sem sacrificar a usabilidade de nenhum deles. uma coisa importante é criar recursos ortogonais que possam ser combinados facilmente. muitas vezes, o software é complicado porque há muitos recursos sobrepostos. em vez disso, ao criar alguns recursos distintos que podem ser facilmente combinados, o software pode ser muito mais flexível e simples.</p><p>descobrir isso criando uma matriz de objeto/ação. liste o número de objetos diferentes no seu aplicativo ao longo de um eixo e as ações que você pode executar neles em outro eixo. a matriz não deve ser muito escassa.</p>