Você está aqui: Cards de Engenharia Civil - Fundações |
||
|
||
|
|
||
Java ::: Pacote java.awt.event ::: KeyEvent |
Java Swing para iniciantes - Como usar o método getKeyCode() da classe KeyEvent para detectar qual tecla de direção (setas) foi pressionadaQuantidade de visualizações: 3644 vezes |
Em algumas situações nós precisamos detectar qual das teclas de direção (setas) o usuário pressionou. Para isso podemos usar o método getKeyCode() da classe KeyEvent e testar se o código equivale a uma das constantes KeyEvent.VK_UP, KeyEvent.VK_DOWN, KeyEvent.VK_RIGHT ou KeyEvent.VK_LEFT. Veja o exemplo:
package estudos;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Janela extends JFrame implements KeyListener{
public Janela(){
super("Eventos do Teclado");
Container c = getContentPane();
FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
c.setLayout(layout);
// vamos adicionar o objeto listener
addKeyListener(this);
setSize(350, 250);
setVisible(true);
}
@Override
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
// seta para cima
case KeyEvent.VK_UP:
JOptionPane.showMessageDialog(null, "A seta para cima foi pressionada");
break;
// seta para baixo
case KeyEvent.VK_DOWN:
JOptionPane.showMessageDialog(null, "A seta para baixo foi pressionada");
break;
// seta para a direita
case KeyEvent.VK_RIGHT:
JOptionPane.showMessageDialog(null, "A seta para a direita foi pressionada");
break;
// seta para a esquerda
case KeyEvent.VK_LEFT:
JOptionPane.showMessageDialog(null, "A seta para a esquerda foi pressionada");
break;
default:
JOptionPane.showMessageDialog(null, "Nenhuma tecla de direção foi pressionada");
break;
}
}
@Override
public void keyReleased(KeyEvent e){
// sem implementação
}
@Override
public void keyTyped(KeyEvent e){
// sem implementação
}
public static void main(String args[]){
Janela j = new Janela();
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
É importante observar que as teclas de direção podem ser detectadas somente nos eventos keyPressed e keyReleased. |
PHP ::: Dicas & Truques ::: Gráficos e Cores |
Gráficos em PHP - Como verificar se a extensão GD está disponível na sua instalação do PHPQuantidade de visualizações: 10728 vezes |
|
Gráficos em PHP são gerados a partir da biblioteca (ou extensão) GD. É claro que você pode usar outras bibliotecas, mas esta é a mais comumente usada e disponível nas hospedagens compartilhadas. Antes de começar a gerar gráficos e imagens, porém, você precisa verificar se a GD está disponível no seu interpretador. A melhor forma de verificar isso é usar a página phpinfo() e procurar a seção "GD". Você deverá ter algo assim: GD Support enabled GD Version 2.0 or higher FreeType Support enabled FreeType Linkage with freetype JPG Support enabled PNG Support enabled WBMP Support enabled A partir da versão 4.3 do PHP, uma versão da GD (equivalente à GD 2.0 ou mais recente) já vem instalada por padrão. Isso dispensa a instalação da biblioteca. |
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como abrir e fechar um dispositivo de saída MIDI usando DelphiQuantidade de visualizações: 11648 vezes |
Quando queremos executar sons MIDI no Windows, a primeira tarefa a ser realizada é abrir o dispositivo de saída MIDI. Isso é feito com uma chamada à função midiOutOpen() da API do Windows. Veja sua assinatura (em C):MMRESULT midiOutOpen( LPHMIDIOUT lphmo, UINT_PTR uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwCallbackInstance, DWORD dwFlags ); Esta função está traduzida na unit MMSystem.pas do Delphi da seguinte forma: function midiOutOpen(lphMidiOut: PHMIDIOUT; uDeviceID: UINT; dwCallback, dwInstance, dwFlags: DWORD): MMRESULT; stdcall; Antes de continuarmos, vamos entender os parâmetros desta função: lphmo - Este é um ponteiro para um HMIDIOUT (que é simplemente um Integer). Este ponteiro é preenchido com um handle identificando o dispositivo de saída MIDI aberto. Este handle é usado para identificar o dispositivo nas demais chamadas de saída MIDI. uDeviceID - Identificador do dispositivo de saída MIDI a ser aberto. O valor 0 aqui é seguro, visto que este identifica o primeiro dispositivo na lista de dispositivos de saída. Veja minha dica "Como obter uma lista dos dispositivos de saída MIDI no sistema" para mais informações. dwCallback - Um ponteiro para uma função de callback, um handle de evento, um identificador de thread ou um handle para uma janela ou thread chamada durante o playback do MIDI para processar mensagens relacionadas ao processo de playback. Se não houver nada a ser processado, podemos definir o valor 0 para este parâmetro. Dê uma olhada na minha dica relacionada à função MidiOutProc(). dwCallbackInstance - Dados de instância do usuário passados para a função de callback. Este parâmetro não é usado em callbacks de janela e thread. É seguro manter seu valor como 0. dwFlags - Flag de callback para abrir o dispositivo. Por enquanto vamos manter seu valor como CALLBACK_NULL. Veja minhas outras dicas sobre o assunto para aprofundar mais neste parâmetro. Agora que aprendemos mais sobre os parâmetros da função midiOutOpen(), vamos ver como usá-la para abrir um dispositivo de saída MIDI e tocar a nota DÓ média (aquela no meio da escala de notas possíveis). Veja o código completo para a unit:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MMSystem;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
dispositivo: HMIDIOUT; // dispositivo de saída MIDI
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
erro: Word;
begin
erro := midiOutOpen(@dispositivo, 0, 0, 0, CALLBACK_NULL);
// houve erro na abertura do dispositivo de saída MIDI?
if (erro <> 0) then
begin
ShowMessage('Não foi possível abrir o dispositivo MIDI. Erro: ' + IntToStr(erro));
end
else
begin
ShowMessage('Dispositivo MIDI aberto com sucesso.');
// vamos tocar uma nota para nos certificarmos de que o dispositivo
// realmente foi aberto e está funcionando
// vamos tocar a nota DÓ média e com velocidade máxima
midiOutShortMsg(dispositivo, rgb($90, 60, 127));
// vamos deixar a nota soar um pouco
sleep(1000);
// vamos silenciar a nota
midiOutShortMsg(dispositivo, rgb($80, 60, 0));
// finalmente vamos fechar o dispositivo MIDI
midiOutClose(dispositivo);
end;
end;
end.
O primeiro passo foi declarar uma variável do tipo HMIDIOUT: dispositivo: HMIDIOUT; Este é o dispositivo de saída que será usado nas demais chamadas MIDI, incluindo a função midiOutClose(), usada para fechar o dispositivo: midiOutClose(dispositivo); Na API do Windows está função está declarada da seguinte forma: MMRESULT midiOutClose( HMIDIOUT hmo ); Na unit MMSystem.pas do Delphi está função está traduzida da seguinte forma: function midiOutClose(hMidiOut: HMIDIOUT): MMRESULT; stdcall; Veja que só precisamos fornecer o nome da variável representando o dispositivo de saída MIDI aberto no momento para que a função se encarregue de fechá-lo. |
Haskell ::: Desafios e Lista de Exercícios Resolvidos ::: Haskell Básico |
Exercícios Resolvidos de Haskell - Como escrever uma função que recebe dois números inteiros e retorna a sua somaQuantidade de visualizações: 943 vezes |
|
Pergunta/Tarefa: Escreva uma função Haskell que recebe dois números inteiros e retorne a sua soma. A função deverá ser chamada a partir da função main do programa. O usuário deverá informar os dois números a serem somados. Sua saída deverá ser parecida com: Informe o primeiro número: 8 Informe o segundo número: 3 A soma dos dois números é: 11 Veja a resolução comentada deste exercício usando Haskell: import System.IO import Text.Printf -- declaração da função somar somar :: Int->Int->Int -- definição da função somar -- recebe dois inteiros e retorna a -- soma como um inteiro somar a b = a + b -- função principal do programa main = do -- vamos desabilitar o buffer de quebra de linha hSetBuffering stdout NoBuffering -- vamos pedir para o usuário informar dois números -- inteiros putStr "Informe o primeiro número: " n1 <- readLn::IO Int putStr "Informe o segundo número: " n2 <- readLn::IO Int -- agora vamos chamar a função somar e obter -- a soma dos dois números fornecidos let soma = somar n1 n2 -- agora mostramos o resultado printf "A soma dos dois números é: %d" soma |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C - Como retornar o primeiro elemento de um vetor em CQuantidade de visualizações: 622 vezes |
|
Pergunta/Tarefa: Dado o vetor: [9, 5, 3, 2, 4, 8] Escreva um programa C que mostra como acessar e retornar o primeiro elemento de um vetor (array) em C. Sua saída deverá ser parecida com: O primeiro elemento do array é: 9 Veja a resolução comentada deste exercício usando C:
#include <stdio.h>
#include <stdlib.h>
// função principal do programa
int main(int argc, char *argv[]){
// vamos criar um array de inteiros
int valores[] = {9, 5, 3, 2, 4, 8};
// agora vamos retornar o primeiro elemento do vetor
int primeiro = valores[0];
// e mostramos o resultado
printf("O primeiro elemento do array é: %d", primeiro);
printf("\n\n");
system("PAUSE");
return 0;
}
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





