{"id":6,"date":"2024-06-07T08:30:33","date_gmt":"2024-06-07T08:30:33","guid":{"rendered":"http:\/\/pplay.local\/?page_id=6"},"modified":"2026-09-14T23:10:37","modified_gmt":"2026-09-15T02:10:37","slug":"bem-vindo","status":"publish","type":"page","link":"http:\/\/www2.ic.uff.br\/pplay\/","title":{"rendered":"Home"},"content":{"rendered":"\n<section class=\"pp-hero pp-bleed\">\n<div class=\"pp-wrap pp-hero-in\">\n<div>\n<span class=\"pp-eyebrow\">Instituto de Computa\u00e7\u00e3o \u00b7 UFF<\/span>\n<h1 class=\"pp-h1\">Aprenda a programar <span class=\"pp-accent\">desenvolvendo jogos<\/span><\/h1>\n<p class=\"pp-lede\">A biblioteca Python que une a simplicidade did\u00e1tica \u00e0 performance de motores profissionais. Escreva seu primeiro jogo em menos de 20 linhas \u2014 e continue nela quando o projeto crescer.<\/p>\n<div class=\"pp-actions\">\n<a class=\"pp-btn pp-btn-primary\" href=\"\/pplay\/tutoriais\/\">Come\u00e7ar pelos tutoriais <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h13M13 6l6 6-6 6\"><\/path><\/svg><\/a>\n<a class=\"pp-btn pp-btn-ghost\" href=\"\/pplay\/download\/\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 4v11M7 11l5 5 5-5M5 20h14\"><\/path><\/svg> Baixar a engine<\/a>\n<\/div>\n<div class=\"pp-meta\">\n<span><b>Python<\/b> 3.8+ \u00b7 3.10 recomendado<\/span>\n<span><b>Pygame-CE<\/b> ou Pygame<\/span>\n<span><b>Jogos publicados<\/b> 30<\/span>\n<span><b>Instituto de Computa\u00e7\u00e3o<\/b> UFF<\/span>\n<\/div>\n<\/div>\n\n<div>\n<div class=\"pp-code\">\n<div class=\"pp-code-head\">\n<span class=\"pp-dot pp-dot-r\"><\/span>\n<span class=\"pp-dot pp-dot-y\"><\/span>\n<span class=\"pp-dot pp-dot-g\"><\/span>\n<span class=\"pp-code-file\">meu_primeiro_jogo.py<\/span>\n<\/div>\n<pre class=\"pp-code-body\"><code><span class=\"pp-k\">from<\/span> PPlay.window <span class=\"pp-k\">import<\/span> *\n<span class=\"pp-k\">from<\/span> PPlay.sprite <span class=\"pp-k\">import<\/span> *\n\njanela  = <span class=\"pp-cl\">Window<\/span>(<span class=\"pp-n\">800<\/span>, <span class=\"pp-n\">600<\/span>, <span class=\"pp-s\">\"Meu Primeiro Jogo\"<\/span>)\nnave    = <span class=\"pp-cl\">Sprite<\/span>(<span class=\"pp-s\">\"assets\/nave.png\"<\/span>)\nteclado = janela.<span class=\"pp-f\">get_keyboard<\/span>()\n\n<span class=\"pp-c\"># o game loop<\/span>\n<span class=\"pp-k\">while<\/span> <span class=\"pp-k\">True<\/span>:\n    janela.<span class=\"pp-f\">set_background_color<\/span>(<span class=\"pp-s\">\"darkblue\"<\/span>)\n    dt = janela.<span class=\"pp-f\">delta_time<\/span>()\n\n    <span class=\"pp-k\">if<\/span> teclado.<span class=\"pp-f\">key_pressed<\/span>(<span class=\"pp-s\">\"RIGHT\"<\/span>):\n        nave.x += <span class=\"pp-n\">260<\/span> * dt\n    <span class=\"pp-k\">if<\/span> teclado.<span class=\"pp-f\">key_pressed<\/span>(<span class=\"pp-s\">\"LEFT\"<\/span>):\n        nave.x -= <span class=\"pp-n\">260<\/span> * dt\n\n    nave.<span class=\"pp-f\">draw<\/span>()\n    janela.<span class=\"pp-f\">update<\/span>()<\/code><\/pre>\n<\/div>\n\n<div class=\"pp-stage\">\n<div class=\"pp-stage-top\">\n<span class=\"pp-live\"><i><\/i> RODANDO<\/span>\n<span>800 \u00d7 600 \u00b7 60 fps<\/span>\n<\/div>\n<canvas id=\"pp-stage\" aria-label=\"Demonstra\u00e7\u00e3o: uma nave se movendo na tela\"><\/canvas>\n<div class=\"pp-stage-hint\">Cena montada com a pr\u00f3pria engine: nave, asteroides que se partem, part\u00edculas e parallax \u2014 tudo com <code>delta_time()<\/code>.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n\n<section class=\"pp-section vit pp-bleed\">\n<div class=\"pp-wrap vit-in\">\n\n<div class=\"vit-marca\">\n<span class=\"vit-halo\" aria-hidden=\"true\"><\/span>\n<span class=\"vit-anel\" aria-hidden=\"true\"><\/span>\n<span class=\"vit-anel-2\" aria-hidden=\"true\"><\/span>\n<img class=\"vit-logo\" src=\"\/pplay\/wp-content\/uploads\/2026\/09\/pplay-logo.png\" alt=\"\" width=\"512\" height=\"549\" loading=\"lazy\" decoding=\"async\">\n<\/div>\n\n<div class=\"vit-txt\">\n<span class=\"pp-eyebrow\">A engine<\/span>\n<h2 class=\"vit-h2\">Feita para ensinar. <span class=\"vit-ac\">Pronta para escalar.<\/span><\/h2>\n<p>A serpente e o raio: Python com a performance de um motor de verdade. Cache de recursos, f\u00edsica cinem\u00e1tica de sub-pixel e resolu\u00e7\u00e3o virtual \u2014 tudo por tr\u00e1s de uma API que cabe na primeira aula.<\/p>\n\n<div class=\"vit-nums\">\n<div class=\"vit-num\"><b>24<\/b><span>m\u00f3dulos<\/span><\/div>\n<div class=\"vit-num\"><b>11<\/b><span>passos no tutorial<\/span><\/div>\n<div class=\"vit-num\"><b>30<\/b><span>jogos publicados<\/span><\/div>\n<\/div>\n\n<div class=\"pp-chips\">\n<span class=\"pp-chip\">Resource Caching<\/span>\n<span class=\"pp-chip\">F\u00edsica sub-pixel<\/span>\n<span class=\"pp-chip\">Resolu\u00e7\u00e3o virtual<\/span>\n<span class=\"pp-chip\">Cenas e parallax<\/span>\n<span class=\"pp-chip\">Part\u00edculas e efeitos<\/span>\n<span class=\"pp-chip\">Editor Architect<\/span>\n<\/div>\n\n<div class=\"vit-acoes\">\n<a class=\"pp-btn pp-btn-primary\" href=\"\/pplay\/download\/\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 4v11M7 11l5 5 5-5M5 20h14\"><\/path><\/svg> Baixar a engine<\/a>\n<a class=\"pp-btn pp-btn-ghost\" href=\"\/pplay\/tutoriais\/\">Ver a refer\u00eancia dos m\u00f3dulos<\/a>\n<\/div>\n<\/div>\n\n<\/div>\n<\/section>\n\n<section class=\"pp-section\">\n<div class=\"pp-section-head\">\n<span class=\"pp-eyebrow\">Quem constr\u00f3i a 2.0<\/span>\n<h2>Desenvolvimento<\/h2>\n<\/div>\n<div class=\"pp-lead\">\n<div class=\"pp-lead-in\">\n<div class=\"pp-mono\" aria-hidden=\"true\">KN<\/div>\n<div>\n<span class=\"pp-role\">Lead Developer \u00b7 Power PPlay 2.0<\/span>\n<h3 class=\"pp-name\">Kau\u00e3 <span class=\"pp-sur\">Neves<\/span><\/h3>\n<p>Respons\u00e1vel pela arquitetura e pelo desenvolvimento da Power PPlay 2.0. O projeto moderniza o ensino de jogos na UFF trazendo para a sala de aula sistemas que antes s\u00f3 existiam em motores comerciais.<\/p>\n<div class=\"pp-chips\">\n<span class=\"pp-chip\">Resource Caching<\/span>\n<span class=\"pp-chip\">Motor cinem\u00e1tico sub-pixel<\/span>\n<span class=\"pp-chip\">Resolu\u00e7\u00e3o virtual independente<\/span>\n<span class=\"pp-chip\">Editor Architect<\/span>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n\n<section class=\"pp-section\">\n<div class=\"pp-section-head\">\n<span class=\"pp-eyebrow\">Legado<\/span>\n<h2>Equipe PPlay original<\/h2>\n<p class=\"pp-lede\">A 2.0 \u00e9 constru\u00edda sobre o alicerce did\u00e1tico criado pelos pioneiros do projeto, no UFF Medialab.<\/p>\n<\/div>\n<div class=\"pp-team\">\n<div class=\"pp-person\"><span class=\"pp-av\">EC<\/span><div><div class=\"pp-pname\">Esteban Clua<\/div><div class=\"pp-prole\">Professor<\/div><\/div><\/div>\n<div class=\"pp-person\"><span class=\"pp-av\">AM<\/span><div><div class=\"pp-pname\">Anselmo Montenegro<\/div><div class=\"pp-prole\">Professor<\/div><\/div><\/div>\n<div class=\"pp-person\"><span class=\"pp-av\">GS<\/span><div><div class=\"pp-pname\">Gabriel Saldanha<\/div><div class=\"pp-prole\">PPlay original<\/div><\/div><\/div>\n<div class=\"pp-person\"><span class=\"pp-av\">AG<\/span><div><div class=\"pp-pname\">Ad\u00f4nis Gasiglia<\/div><div class=\"pp-prole\">PPlay original<\/div><\/div><\/div>\n<div class=\"pp-person\"><span class=\"pp-av\">YN<\/span><div><div class=\"pp-pname\">Yuri Nogueira<\/div><div class=\"pp-prole\">PPlay original<\/div><\/div><\/div>\n<div class=\"pp-person\"><span class=\"pp-av\">SH<\/span><div><div class=\"pp-pname\">Sergio Herman<\/div><div class=\"pp-prole\">Tema WordPress<\/div><\/div><\/div>\n<\/div>\n<\/section>\n\n\n<section class=\"pp-bleed\">\n    <section class=\"bn pp-bleed bn--faixa\">\n                    <div class=\"bn-fundo\" aria-hidden=\"true\">\n                <div class=\"bn-linha bn-linha--a\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2025\/07\/capa1.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/nikitiruncapa.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-06-30-18-01-20.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/prison-break-1.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/HellWorld-768x404.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-10-13-14-47-47-768x386.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-10-13-16-42-00.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-10-12-21-23-53.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/fundomenu-768x432.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2025\/07\/capa1.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/nikitiruncapa.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-06-30-18-01-20.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/prison-break-1.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/HellWorld-768x404.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-10-13-14-47-47-768x386.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-10-13-16-42-00.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/Captura-de-tela-de-2024-10-12-21-23-53.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/fundomenu-768x432.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/div>\n                <div class=\"bn-linha bn-linha--b\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/title-768x439.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/capa-1.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/ZYcWD5-768x539.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/10\/fmhLHU.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/alien_infiltration_title-768x432.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/multibeatsimg2-768x432.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/VOCE-GANHOU-768x432.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/image-12-768x431.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2025\/01\/WhatsApp-Image-2025-01-16-at-08.48.12-1-768x768.jpeg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/title-768x439.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/capa-1.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/ZYcWD5-768x539.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/10\/fmhLHU.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/alien_infiltration_title-768x432.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/multibeatsimg2-768x432.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/07\/VOCE-GANHOU-768x432.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/image-12-768x431.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"><img src=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2025\/01\/WhatsApp-Image-2025-01-16-at-08.48.12-1-768x768.jpeg\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/div>\n            <\/div>\n        \n        <div class=\"bn-veu\" aria-hidden=\"true\"><\/div>\n\n        <div class=\"pp-wrap bn-frente\">\n            \n<div class=\"bn-faixa-txt\">\n<span class=\"pp-eyebrow\">Feito com PPlay<\/span>\n<h2 class=\"bn-h2\">30 jogos publicados por alunos da UFF<\/h2>\n<p>Do primeiro Pong ao metroidvania \u2014 cada capa aqui \u00e9 um projeto da disciplina.<\/p>\n<a class=\"pp-btn pp-btn-primary\" href=\"\/pplay\/galeria\/\">Ver a biblioteca <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h13M13 6l6 6-6 6\"><\/path><\/svg><\/a>\n<\/div>\n        <\/div>\n    <\/section>\n    \n<\/section>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Instituto de Computa\u00e7\u00e3o \u00b7 UFF Aprenda a programar desenvolvendo jogos A biblioteca Python que une a simplicidade did\u00e1tica \u00e0 performance de motores profissionais. Escreva seu primeiro jogo em menos de 20 linhas \u2014 e continue nela quando o projeto crescer. Come\u00e7ar pelos tutoriais Baixar a engine Python 3.8+ \u00b7 3.10 recomendado Pygame-CE ou Pygame Jogos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"home-template-sem-sidebar-sem-divisoes.php","meta":{"footnotes":""},"_links":{"self":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/6"}],"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=6"}],"version-history":[{"count":16,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":1137,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/6\/revisions\/1137"}],"wp:attachment":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/media?parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}