• Nenhum resultado encontrado

Introdução à Engenharia ENG1000

N/A
N/A
Protected

Academic year: 2021

Share "Introdução à Engenharia ENG1000"

Copied!
24
0
0

Texto

(1)

Aula 10 – Estruturas Condicionais e Interação em Love2D

Introdução à Engenharia

ENG1000

2016.1

Prof. Augusto Baffa

<abaffa@inf.puc-rio.br>

(2)

De Volta ao “Hello World”

• Na última implementação do “Hello World” fizemos o texto se mover na tela

Problema: quando a posição do texto passava do limite da tela, o texto sumia (continuava se movendo para longe da tela)

• Com uma estrutura condicional podemos fazer o texto voltar para o inicio da tela.

• Como podemos fazer isso?

(3)

local px -- posição x do texto function love.load()

love.graphics.setColor(0, 0, 0)

love.graphics.setBackgroundColor(255, 255, 255) px = 0

end

function love.update(dt) px = px + (100 * dt) end

function love.draw()

love.graphics.print("Hello World", px, 300) end

De Volta ao “Hello World”

(4)

local px -- posição x do texto function love.load()

love.graphics.setColor(0, 0, 0)

love.graphics.setBackgroundColor(255, 255, 255) px = 0

end

function love.update(dt) px = px + (100 * dt)

if px > 800 then -- a largura da janela é 800 px = 0

end end

function love.draw()

love.graphics.print("Hello World", px, 300) end

(5)

local px -- posição x do texto function love.load()

love.graphics.setColor(0, 0, 0)

love.graphics.setBackgroundColor(255, 255, 255) px = 0

end

function love.update(dt) px = px + (100 * dt)

if px > love.window.getWidth() then px = 0

end end

function love.draw()

love.graphics.print("Hello World", px, 300) end

Uma forma mais geral de acessar a largura da janela.

Available since LÖVE 0.9.0 and removed in LÖVE 0.10.0

(6)

local px -- posição x do texto function love.load()

love.graphics.setColor(0, 0, 0)

love.graphics.setBackgroundColor(255, 255, 255) px = 0

end

function love.update(dt) px = px + (100 * dt)

if px > love.graphics.getWidth() then px = 0

end end

function love.draw()

love.graphics.print("Hello World", px, 300) end

Uma forma mais geral de acessar a largura da janela.

Available since LÖVE 0.10.0

(7)

Exercício 1

1. Estenda o programa do exercício da aula anterior criando uma animação que faça com que a nuvem se mova de um lado para o outro da tela. Se a nuvem estiver tampando o sol, então a cor de fundo do cenário deve ficar mais escura.

(8)

Módulo love.keyboard

• O módulo love.keyboard contem funções dedicadas a interação pelo teclado.

• É possível verificar se um determinada tecla foi pressionada usando o comando love.keyboard.isDown

• A função retorna verdadeiro se a tecla passada como parâmetro estiver pressionada.

love.keyboard.isDown(key)

(9)

Módulo love.keyboard

É necessário utilizar uma estrutura condicional para verificar se a tecla foi pressionada.

Exemplo:

• Lista de teclas: http://www.love2d.org/wiki/KeyConstant

if love.keyboard.isDown("right") then px = px + (100 * dt)

end

(10)

local px -- posição x do texto function love.load()

love.graphics.setColor(0, 0, 0)

love.graphics.setBackgroundColor(255, 255, 255) px = 0

end

function love.update(dt)

if love.keyboard.isDown("right") then px = px + (100 * dt)

end

end

function love.draw()

love.graphics.print("Hello World", px, 300) end

De Volta ao “Hello World”

(11)

Função love.keypressed

• A função love.keypressed é um callback chamado sempre que o usuário pressiona uma tecla no teclado. Permite fazer a

leitura do teclado de forma independente.

• Key – tecla pressionada

• Scancode – código da tecla pressionada

• Isrepeat – indica se a tecla é uma repetição

love.keypressed( key, scancode, isrepeat ) Available since LÖVE 0.10.0

love.keypressed( key, isrepeat ) Available since LÖVE 0.9.0and removed in LÖVE 0.10.0

(12)

Função love.keyreleased

• A função love.keyreleased é um callback chamado sempre que o usuário solta uma tecla no teclado. Permite fazer a leitura do teclado de forma independente.

• Key – tecla pressionada

• Scancode – código da tecla pressionada

love.keyreleased( key, scancode ) Available since LÖVE 0.10.0

love.keyreleased( key )

(13)

Exercício 2

2. Estenda o programa do exercício anterior para permitir que o usuário possa movimentar o sol no eixo X e Y usando as setas direcionais do teclado.

(14)

Módulo love.mouse

• O módulo love.mouse também permite acessa a posição do através dos comandos love.mouse.getX e love.mouse.getY

• As funções retornam a posição do mouse relativa a janela do programa nos eixos X e Y.

love.mouse.getY() love.mouse.getX()

mousex = love.mouse.getX() mousey = love.mouse.getY() ...

mousex, mousey = love.mouse.getPosition()

(15)

Módulo love.mouse

• O módulo love.mouse contem funções dedicadas a interação pelo mouse.

• É possível verificar se um determinado botão do mouse foi pressionada usando o comando love.mouse.isDown

• A função retorna verdadeiro se o botão passada como parâmetro estiver pressionado.

love.mouse.isDown(button)

(16)

Módulo love.mouse

É necessário utilizar uma estrutura condicional para verificar se o botão foi pressionado.

Exemplo:

• Lista de teclas: http://www.love2d.org/wiki/MouseConstant

if love.mouse.isDown("l") then texto = "Left! :)"

End

Removed in LÖVE 0.10.0

if love.mouse.isDown(1) then texto = "Left! :)"

End

Available since LÖVE 0.10.0

(17)

De Volta ao “Hello World”

• Utilizando as funções de interação pelo mouse, podemos modificar o “Hello World” para permitir que:

O usuário possa movimentar o texto com o mouse;

O texto seja modificado quando o usuário clicar com o mouse:

Botão da esquerda: “Left (l)” até o 0.10.0 e 1 atualmente

Botão da direita: “Right (r)” até o 0.10.0 e 2 atualmente

Botão do meio: “middle (m)” até o 0.10.0 e 3 atualmente

Nenhum botão: “Hello World!”

• Como podemos fazer isso?

(18)

local px -- posição x do texto local py -- posição y do texto local texto = "Hello World!"

function love.update(dt)

if love.mouse.isDown("l") then texto = "Left! :)"

elseif love.mouse.isDown("r") then texto = "Right! :)"

else

texto = "Hello World!"

end

px = love.mouse.getX() py = love.mouse.getY() end

function love.draw()

love.graphics.print(texto, px, py) end

De Volta ao “Hello World”

(19)

Função love.mousepressed

• A função love.mousepressed é um callback chamado sempre que o usuário pressiona um botão do mouse. Permite fazer a leitura dos botões de forma independente.

• x, y – posições do mouse no momento do clique

• button – botão pressionado

• Istouch – se a interface é touch

love.mousepressed( x, y, button, istouch ) Available since LÖVE 0.10.0

love.mousepressed( x, y, button) Available since LÖVE 0.9.0and removed in LÖVE 0.10.0

(20)

Função love.mousepressed

• A função love.mousepressed é um callback chamado sempre que o usuário pressiona um botão do mouse. Permite fazer a leitura dos botões de forma independente.

• x, y – posições do mouse no momento do clique

• button – botão pressionado

• Istouch – se a interface é touch

love.mousepressed( x, y, button, istouch ) Available since LÖVE 0.10.0

love.mousepressed( x, y, button) Available since LÖVE 0.9.0and removed in LÖVE 0.10.0

(21)

Função love.mousereleased

• A função love.mousereleased é um callback chamado sempre que o usuário solta um botão do mouse. Permite fazer a

leitura dos botões de forma independente.

• x, y – posições do mouse no momento do clique

• button – botão pressionado

• Istouch – se a interface é touch

love.mousereleased( x, y, button, istouch ) Available since LÖVE 0.10.0

love.mousereleased( x, y, button) Available since LÖVE 0.9.0and removed in LÖVE 0.10.0

(22)

Função love.mousemoved

• A função love.mousemoved é um callback chamado sempre que o usuário movimenta o mouse. Permite fazer a leitura dos movimentos de forma independente.

• x, y – posições do mouse no momento do clique

• dx, dy – quanto se movimentou desde a última posição

love.mousemoved ( x, y, dx, dy ) Available since LÖVE 0.9.2

(23)

Exercício 3

3. Modifique o programa do exercício anterior para permitir que o usuário possa movimentar o sol utilizando o mouse.

(24)

Exercícios

Lista de Exercícios 06 – Interação Teclado e Mouse

http://www.inf.puc-rio.br/~abaffa/eng1000/

Referências

Documentos relacionados

O conteúdo, inclusive, passou a ser, em alguns casos, produzido diretamente para a Internet e só depois publicado no papel, ou seja, essa inversão prova que o meio não pode ser

Diante disso, o Instituto de Pesquisa e Desenvolvimento do Comércio, ligado à Federação do Comércio de Bens, Serviços e Turismo do Rio Grande do Norte, realizou uma pesquisa

2.2 Para que o candidato tenha direito a optar pela isenção do pagamento de 02 (duas) semestralidades do curso, após análise do aproveitamento das disciplinas, o

Conclui-se que os catadores de caranguejo do município de Quatipuru-PA são, em sua maioria, do sexo feminino, concluintes do Ensino Fundamental, adultos, com casa própria e

Desse modo, identificar as investigações de Educação em Saúde e de temáticas de Saúde pesquisadas pela área de ensino de Ciências e Biologia pode indiretamente fornecer

Os frutos tratados com 1-MCP apresentaram, nos dois anos de observações, sensivelmente a mesma tendência em cada uma das grandezas analisadas, tanto à saída da câmara

Em contrapartida, outros autores não evidenciaram o mesmo, indicando que a elevada mortalidade esteve associada com intervalos de tempo maiores de espera, isto é,

Caracterizar o combustível, casca de arroz, fazendo as devidas análises da influência importantes para caracterização energética da biomassa como análise imediata, análise