{"id":133,"date":"2024-06-07T08:58:26","date_gmt":"2024-06-07T11:58:26","guid":{"rendered":"http:\/\/pplay.local\/?page_id=133"},"modified":"2024-06-19T13:15:23","modified_gmt":"2024-06-19T16:15:23","slug":"manipulando-inputs-teclado-e-mouse","status":"publish","type":"page","link":"http:\/\/www2.ic.uff.br\/pplay\/tutoriais\/manipulando-inputs-teclado-e-mouse\/","title":{"rendered":"Manipulando Inputs (teclado e mouse)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introdu\u00e7\u00e3o: Input<\/h2>\n\n\n\n<p>Um&nbsp;<em>input<\/em>&nbsp;classifica uma entrada do teclado (pressionar uma tecla) ou do mouse (pressionar um bot\u00e3o).<\/p>\n\n\n\n<p>Para que funcione corretamente, \u00e9 necess\u00e1rio tamb\u00e9m estar dentro de um&nbsp;<em>loop<\/em>&nbsp;infinito que checa a cada frame se ocorreu algum evento (ou&nbsp;<em>input<\/em>).<\/p>\n\n\n\n<p>Cabe ressaltar que a\u00a0<strong><a href=\"http:\/\/www2.ic.uff.br\/pplay\/documentacao\/window\/\" data-type=\"page\" data-id=\"121\">Window<\/a><\/strong>\u00a0\u00e9 quem recebe os\u00a0<em>inputs<\/em>, logo, deve ser criada antes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Receber Inputs de Teclado<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># N\u00e3o precisamos importar o m\u00f3dulo keyboard pois ele j\u00e1 est\u00e1 contido em window.\nfrom PPlay.window import *\n\n# Cria a janela para receber inputs (PRIMEIRA COISA SEMPRE)\njanela = Window(200, 200)\n\n# Associar uma vari\u00e1vel \u00e0 inst\u00e2ncia de teclado contida em Window\nteclado = Window.get_keyboard()  # Fun\u00e7\u00e3o da CLASSE e n\u00e3o da inst\u00e2ncia! W mai\u00fasculo!\n\n# Loop que apenas checa se tem alguma tecla pressionada no frame atual\nwhile True:\n    if teclado.key_pressed(\"UP\"):  # Direcional ^\n        print(\"Cima!\")\n    if teclado.key_pressed(\"DOWN\"):  # Direcional \\\/\n        print(\"Baixo!\")\n    if teclado.key_pressed(\"LEFT\"):  # Direcional &lt;-\n        print(\"Direita!\")\n    if teclado.key_pressed(\"ESC\"):  # Esc, escape..\n        janela.close()  # Fecha o programa\n\n    # O janela.update() deve ser chamado TODO Loop incondicionalmente!\n    janela.update()\n<\/code><\/pre>\n\n\n\n<p>Para consultar os nomes das teclas mapeadas, veja a classe\u00a0<strong><a href=\"http:\/\/www2.ic.uff.br\/pplay\/documentacao\/keyboard\" data-type=\"page\" data-id=\"113\">Keyboard<\/a><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Receber Inputs do Mouse<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># A l\u00f3gica para o mouse \u00e9 muito parecida:\nfrom PPlay.window import *\n\n# Tamb\u00e9m j\u00e1 cont\u00e9m o m\u00f3dulo mouse nela\njanela = Window(200, 200)\nmouse = Window.get_mouse()\n\nwhile True:\n    if mouse.is_button_pressed(1):  # 1 \u00e9 o bot\u00e3o da esquerda\n        print(\"Esquerda!\")\n        print(mouse.get_position())  # fun\u00e7\u00e3o que retorna a posi\u00e7\u00e3o (X,Y) do mouse\n    if mouse.is_button_pressed(2):\n        print(\"Meio!\")\n    if mouse.is_button_pressed(3):\n        print(\"Direita!\")\n\n    janela.update()<\/code><\/pre>\n\n\n\n<p>Para consultar outras fun\u00e7\u00f5es do mouse (is_over_object(obj), por exemplo), veja a classe\u00a0<strong><a href=\"http:\/\/www2.ic.uff.br\/pplay\/documentacao\/mouse\" data-type=\"page\" data-id=\"115\">Mouse<\/a><\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><a href=\"http:\/\/www2.ic.uff.br\/downloads\/tutoriais\/3.0_Mouse_e_Keyboard_Input.rar\"><\/a><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Download do C\u00f3digo Completo<\/mark><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Cr\u00e9ditos do Tutorial<\/strong>: Gabriel Saldanha<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o: Input Um&nbsp;input&nbsp;classifica uma entrada do teclado (pressionar uma tecla) ou do mouse (pressionar um bot\u00e3o). Para que funcione corretamente, \u00e9 necess\u00e1rio tamb\u00e9m estar dentro de um&nbsp;loop&nbsp;infinito que checa a cada frame se ocorreu algum evento (ou&nbsp;input). Cabe ressaltar que a\u00a0Window\u00a0\u00e9 quem recebe os\u00a0inputs, logo, deve ser criada antes. Receber Inputs de Teclado Para consultar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":57,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"tutorial-template.php","meta":{"footnotes":""},"_links":{"self":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/133"}],"collection":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/comments?post=133"}],"version-history":[{"count":4,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/133\/revisions"}],"predecessor-version":[{"id":483,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/133\/revisions\/483"}],"up":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/57"}],"wp:attachment":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/media?parent=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}