Beruflich Dokumente
Kultur Dokumente
Liberar Android Imprescindibles Accesorios Programacin Redeslibre Para Principiantes Otros android Contacta con EAL
Seguir +1
ESPECIAL: LAS MEJORES OFERTAS ANDROID DEL WOLDER MISMART WAVE 8: ANLISIS Y PUEDES ESPIAR UN TELFONO ANDROID, PERO
BLACK FRIDAY 2014 EXPERIENCIA DE USO ES DELITO Y ES PELIGROSO
El Androide Libre
Escrito el 4/03/2014 - 23:00
El listado 1 contiene el cdigo bsico para denir un Canvas. LOS MEJORES JUEGOS ANDROID
20 APLICACIONES DE FOTOGRAFIA
<body onload=spaceShipGame()>
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 1/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
<h1>SpaceShipGame</h1>
LIMPIA Y OPTIMIZA TU ANDROID
<canvas id=spaceCanvas width=300 height=300>
</canvas> MEJORES NAVEGADORES ANDROID
</body>
Esto es muy similar a como se dene una imagen con el emeneto <img>, con la
diferencia de que no tiene los atributos src y alt. El elemento <canvas> solamente tiene
dos atributos: width (ancho) y height (alto), ambos tienen un valor default de 300 pixeles.
El valor del id se utiliza para interactuar con el Canvas por medio de Javascript.
Para crear las estrellas utilizamos la funcin arc, que se utiliza para crear crculos
(parciales o completos). En este caso estamos creando crculos en las coordenadas x, y
con un radio de 3 pixeles, comenzando el trazo en el ngulo 0 y terminando en el ngulo
2Pi (es decir que es una circunferencia completa).
Notarn que los valores de nuestras coordenadas deben ser mayores a 20,20. Esto es
para dejar espacio para nuestra nave espacial, que iniciar en la esquina superior
izquierda.
Para pintar nuestra nave utilizaremos curvas de bezier por medio de la funcin
bezierCurveTo. Esta funcin recibe 6 valores como parmetro, que en realidad son 3
pares de coordenadas: los primeros 2 pares de coordenadas son puntos de control y el
ltimo par es el punto nal. El listado 3 muestra el cdigo para dibujar nuestra nave.
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 2/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
function nave() {
// Dibujemos la nave usando curbas de bezier.
// Primero pintemos el fuselaje en azul
ctx.llStyle = rgb(0, 0, 255);
ctx.beginPath();
ctx.moveTo(28.4, 16.9);
ctx.bezierCurveTo(28.4, 19.7, 22.9, 22.0, 16.0, 22.0);
ctx.bezierCurveTo(9.1, 22.0, 3.6, 19.7, 3.6, 16.9);
ctx.bezierCurveTo(3.6, 14.1, 9.1, 11.8, 16.0, 11.8);
ctx.bezierCurveTo(22.9, 11.8, 28.4, 14.1, 28.4, 16.9);
ctx.closePath();
ctx.ll();
Agrega comportamiento
Ahora vamos a mover la nave espacial usando Javascript. Cada movimiento se hace en dos
pasos:
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 3/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
1. Borramos la nave de su posicin actual (reestableciendo el fondo que haba en el lugar donde dibujamos la nave).
2. Dibujamos la nave en su nueva posicin.
Estas sern las dos actividades que realizaremos de manera continua para estar redibujando la
nave. El listado 4 muestra como lo implementamos.
function gameLoop()
{
ctx.putImageData(oldBackground, oldX, oldY);
ctx.putImageData(ship, newX, newY);
}
Como podrn ver, en el listado 4 aparecen variables que no habamos denido. Estas son
variables que utilizamos para almacenar: las coordenadas anteriores de la nave, las
coordenadas nuevas, un objeto con la imagen de la nave, y un objeto con la imagen de fondo
anterior (para reestablecerlo cuando movamos a la nave a otro lugar). Ms adelante veremos
como se inicializan y actualizan dichas variables.
Para denir que queremos que nuestra funcin gameLoop se est ejecutando de manera
continua utilizamos el mtodo setInterval() de esta forma:
setInterval(gameLoop, 20);
A continuacin vamos a capturar el evento cuando alguien toca la pantalla y moveremos la nave
a dicho lugar. Para ello, registramos el evento touchstart y denimos una funcin que realice
las acciones correspondientes. El listado 5 muestra el cdigo:
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 4/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
Es importante notar que en realidad en esta funcin no estamos dibujando la nave, solo
actualizamos las coordenadas. Como ya vimos, la funcin que se encarga de estar
redibujando la nave es gameLoop, usando la informacin de las coordenadas
almacenadas.
El listado 6 contiene el cdigo completo de este ejercicio. Puedes salvarlo como html, y
accederlo desde el navegador web de tu dispositivo mvil para probarlo.
Si quieres continuar, te dejamos como ejercicio que modiques el cdigo para hacer que
tu nave se mueva poco a poco con una trayectoria, y puedas alterar dicha trayectoria al
tocar la pantalla.
<!DOCTYPE html>
<html>
<head>
<title>Nave espacial</title>
</head>
<body>
<h1>Juego de nave espacial</h1>
<canvas id=spaceCanvas width=300 height=300>
</canvas>
</body>
</html>
<script>
canvas = document.getElementById(spaceCanvas);
ctx = canvas.getContext(2d);
fondo();
nave();
setInterval(gameLoop, 20);
document.addEventListener(touchstart, moverNave, true);
function fondo() {
// Primero lo pintamos negro
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 5/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
ctx.llStyle = black;
ctx.rect(0, 0, 300, 300);
ctx.ll();
// Dibujamos la estrella
ctx.beginPath();
ctx.arc(x, y, 3, 0, Math.PI * 2);
ctx.closePath();
ctx.ll();
}
// inicializamos la imagen de fondo con el estado inicial
newBackground = ctx.getImageData(0, 0, 30, 30);
oldBackground = newBackground;
}
function nave() {
// Dibujemos la nave usando curbas de bezier.
// Primero pintemos el fuselaje en azul
ctx.llStyle = rgb(0, 0, 255);
ctx.beginPath();
ctx.moveTo(28.4, 16.9);
ctx.bezierCurveTo(28.4, 19.7, 22.9, 22.0, 16.0, 22.0);
ctx.bezierCurveTo(9.1, 22.0, 3.6, 19.7, 3.6, 16.9);
ctx.bezierCurveTo(3.6, 14.1, 9.1, 11.8, 16.0, 11.8);
ctx.bezierCurveTo(22.9, 11.8, 28.4, 14.1, 28.4, 16.9);
ctx.closePath();
ctx.ll();
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 6/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
function gameLoop()
{
ctx.putImageData(oldBackground, oldX, oldY);
ctx.putImageData(ship, newX, newY);
}
Conclusin
En este artculo hemos visto a grandes rasgos como crear y manipular elementos de un
Canvas en HTML5. Tambin hemos conocido elementos esenciales de cualquier videojuego,
tales como registrar eventos y manipular objetos grcos.
Para aprender ms acerca de herramientas y tecnologas para crear aplicaciones para Android,
te recomendamos visitar la Zona para desarrolladores de Intel.
Noticias y Novedades
PUBLICIDAD
Las cookies son necesarias para el funcionamiento del sitio. Al acceder a El Androide Libre,
Artculos relacionados
acepta el uso de ellas. Aceptar Ms informacin
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 7/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
netealadiscusin...
SergioFernndez hace9meses
Voyaserelprimerlistilloqueabralabocaparadecirqueestonoesas,peroesquedista
bastantedeloqueseconsideraunvideojuegoparaandroid.
Enprimerlugar,sivaacorrerenundispositivomvil,yaseadesdeelnavegadorouna
instanciadeesteenunaaplicacinnativa,tienequeserescalable.Nopuedespretendercargar
uncanvasenunhtmlconunfondoblancoyabrirlodesdeelmvilporquevasavernada.
Ensegundolugar,loquedecadeinstanciarelnavegador.Sisequiereconstruirunvideojuego
comotallomsprcticoestenerunaplantilladeunaappenjava,lacualcorraunainstancia
delnavegadorydentrodeesainstanciaelarchivohtml.Amiveres"mscreble"quecargarlo
desdeelnavegadordirectamente,apartedequedeesamanerasepodrapublicarenlastore
(supongo).
Entercerlugarestnlosfps(fotogramasoframesporsegundo).LasfuncionesdesetIntervalo
setTimeoutestnbien,perotienenmalasdiferenciasentredistintosdispositivosypiensoqueel
pintadodelcanvasconmtodosalestilodelostimersacabanpesandoalnavegador.Paraello
losnavegadores(versionesdemediasamsnuevas)incluyeronrequestAnimationFrame,que
vieneaserlomismoqueesosotrosdosmtodosperocreadoexpresamenteparaesoyl
solitoseocupadeaclimatarseaundispositivoyotro.Queyosepatodosocasitodoslos
navegadorestienensoporteactualmenteparaello.
Encuartolugaryentrandoenmateriadeprogramacin...Paradesarrollarjuegoses
verms
20 Responder Compartir
Jam>SergioFernndez hace9meses
Elpostvalilapenaparaleerunosaspectosimportantesquethascomentado
ampliamente.Gracias.
1 Responder Compartir
dsgrfg>SergioFernndez hace9meses
QueopinasdeUnity3D?
Responder Compartir
SergioFernndez>dsgrfg hace9meses
Megusta
1 Responder Compartir
PauSanchezFernandez>SergioFernndez hace9meses
Todalarazncompaeroysobretodolavelocidad,hacerunjuegoconunaWebApp
estamuylejosdeloqueseriaunjuegoenpuroJava.
YoheintentadohacercosasconPhoneGapypffparaaplicacionesbasicasvasque
tirasperoparaunjuegodemasiadopesadoparaelnavegadordeunmovilsenotaque
elmovimientodelosobjetosnoesfluido.
Responder Compartir
GustavoCanameroPalomares>PauSanchezFernandez hace9meses
holahacesaplicacionesparamoviles?porqueestoymontandounanueva
empresaybuscogentequemeayudeosiconocesalgunprogramadorjavao
androidoIOS.Salu2
Responder Compartir
BlackgemVindicare>GustavoCanameroPalomares hace9meses
Programadoressalendedebajodelaspiedras,cuidadoconbuscar
genteentrecomentariosdeunforooblogs...porquequeabundeno
significaqueseadecalidadXD.
Simontasunanuevaempresanonecesitasunaaplicacinespecifica
paraelloenprincipio,hazteunawebresponsivedesignenhtml5con
plantillascomobootstraposemejanteyteseramejor:).
Queademas,sinomeequivocoentuempresaeltemadediseowebsi
quelotrataiseinclusopodeisembeberunaenunaaplicacionpara
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 8/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
quelotrataiseinclusopodeisembeberunaenunaaplicacionpara
androidsilodeseismuyfacilmente:),esloquesellamanappshtml5.
Sino,contactamediantelosperfilesdeDisqusdondemuchosponemos
perfilessocialespordondepuedescontactar.
2 Responder Compartir
MarKav hace9meses
Amigo,copieelcdigofinalyloguardecomoHTML,perosoloapareceelTitulo,nohacenada.
PodrascolgarelHTMLlistopararevisarlo,meinteresotuarticulo.
Deantemanogracias.
8 Responder Compartir
Tuxerito hace9meses
Buenapublicacin.
OjalaponganmasdeHTML5ycosasasi.
Gracias.
4 Responder Compartir
BlackgemVindicare hace9meses
Llegaunmomentoenelcualunblogdebesabercuandoenlazaracontenidosdetercerosen
vezdeintentargenerarcontenidopropiodedudosacalidad.
Existenmultituddecursosygratuitosdondepodriaisenlazaragenteenvezdeintentardar
unaclaseexpresssobrealgoqueinclusoyovoyhedesistidodeleeralcompleto.
2 Responder Compartir
sergio hace9meses
jajaja,facilisimooiga,maanamismopongoamispadresahacerjuegosXD
siesquehoyendia,yasepublicacualquiercosa....
encima,elcodigonoestamuybienquedigamos....
1 Responder Compartir
XerXeselPandaRojo hace3meses
hola
Responder Compartir
LUDWIGVILLASIS hace6meses
Kepedooo.
Responder Compartir
LUDWIGVILLASIS hace6meses
AmmOkigraamdiosojaastamisawelosloariammgenealokidoki
Responder Compartir
JeronimoAlderete hace8meses
sepublicaloquecomentoaca?
Responder Compartir
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 9/10
27/11/2014 CreatuprimervideojuegoparaAndroidconHTML5ElAndroideLibre
http://www.elandroidelibre.com/2014/03/creatuprimervideojuegoparaandroidconhtml5.html 10/10