iniciación al desarrollo de juegos con javascript

12
¿CÓMO CREAR NUESTRO PROYECTO? Paso a paso

Upload: mysd

Post on 03-Dec-2015

217 views

Category:

Documents


0 download

DESCRIPTION

En este documento semuestra una serie de pasos para crear un simple juego de ping pong, utilizarlo como introduccion a la programacion de juegos con HTML5, CSS y JS.

TRANSCRIPT

Page 1: Iniciación al desarrollo de juegos con Javascript

¿CÓMO CREAR NUESTRO PROYECTO? Paso a paso

Page 2: Iniciación al desarrollo de juegos con Javascript

¡Hola!

Crearemos nuestra Mesa de Ping Pong con HTML5 desde cero. Puede sonar como si

vamos a ser la preparación de todas las cosas nosotros mismos. Por suerte, podemos usar

una biblioteca Javascript para ayudarnos. Jquery es la biblioteca Javascript que está

diseñada para navegar por el DOM (no esntraremos en detalle) fácilmente. Vamos a usar

esta biblioteca en el proyecto para manipular elementos del DOM. Esto nos ayudará a

hacer las cosas más fáciles, comencemos:

1. Crea una nueva carpeta llamada “pingpong”.

2. Dentro de esta carpeta crearemos los siguientes archivos, con la siguiente

estructura:

a. Un archivo vacío llamado index.html (notar la extensión de archivo, es

decir, guardarlo en bloc de notas o sublime text con extensión *.html)

b. Crear una carpeta llamada js, y dentro de esta, un archivo en blanco

llamado pingpong.js (creado en bloc de notas o en SublimeText, guardado

con la extensión de javascript).

c. Crear otra carpeta llamada css. Y, dentro de la carpeta, un archivo vacío

llamado pingpong.css, de igual manera fijarse en la extensión con la que

deberá ser guardado.

3. Ahora descargaremos la librería que nos ayudará desde el siguiente link

http://jquery.com/, seleccionar Download jQuery y hacer clic en Download

compressed, production jQuery 2.1.3.

4. Guarda este archivo, después de descargarlo, en la carpeta js que crearon en el

paso dos.

5. Abre el archivo index.html en tu editor (bloc de notas o SublimeText) e introduce

el siguiente código para crear nuestra plantilla de una página web:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Ping Pong</title>

<link rel="stylesheet" href="css/pingpong.css">

</head>

<body>

<div class=”container”>

<center>

<header>

Page 3: Iniciación al desarrollo de juegos con Javascript

<h1>Mi mesa de Ping Pong</h1>

</header>

<div id="game">

<!—Aquí irán los elementos del juego -->

</div>

<footer>

<p>Este es un ejemplo sencillo de un juego en HTML5</p>

</footer>

</center>

<div>

<script src="js/jquery-2.1.3.min.js"></script>

<script src="js/pingpong.js"></script>

</body>

</html>

Deberás copiar el código tal cual, cualquier error, házmelo saber en la comunidad de

google plus. Guarda los cambios en tu archivo y ciérralo.

6. Por último, probaremos si la librería jQuery está funcionando en tu navegador, de

preferencia ten dos navegadores diferentes, menos IE. Ahora abre el archivo

pingpong.js y agrega el siguiente código:

(function($){

$(function(){

// alert a message

alert("Bienvenido al juego de Ping Pong.");

});

})(jQuery);

Con este código, llamamos una función de jQuery y lanzamos una alerta, por lo cual, si

la librería está trabajando en tu navegador al ejecutar el archivo index.html, debería

lanzarte una alerta con la oración “bienvenido al juego de ping pong”. Es momento para

probar que tal vamos. Ejecuta tu archivo index.html.

Ahora vamos a configurar los elementos de nuestro juego. Para eso prosigamos con los

pasos siguientes:

7. Vamos agregar los elementos de nuestro juego, volvemos a abrir nuestro archivo

index.html y en la sección donde nos indica que irán los elementos, es decir, entre

las etiquetas <div id=”game”>, agregaremos el siguiente código:

<div id="playground">

Page 4: Iniciación al desarrollo de juegos con Javascript

<div class="paddle-hand right"></div>

<div class="paddle-hand left"></div>

<div id="paddleA" class="paddle"></div>

<div id="paddleB" class="paddle"></div>

<div id="ball"></div>

</div>

8. Bien, es tiempo de aplicar estilos a nuestro juego, para eso, abriremos el archivo

pingpong.css y agregaremos el siguiente código:

body {

background: gray;

}

.container {

margin: 0 auto;

border: 2px solid #ddd;

border-radius: 15px;

box-shadow: 5px 5px #ccc;

background: #fff;

width: 500px;

height: 300px;

}

#game {

position: relative;

width: 400px;

height: 200px;

}

#playground{

background: #000;

background-size: contain;

width: 100%;

height: 100%;

position: absolute;

top: 0;

Page 5: Iniciación al desarrollo de juegos con Javascript

left: 0;

overflow: hidden;

cursor: pointer;

}

#ball {

background: #fbb;

position: absolute;

width: 20px;

height: 20px;

left: 150px;

top: 100px;

border-radius: 10px;

}

.paddle {

background-size: contain;

top: 70px;

position: absolute;

width: 30px;

height: 70px;

}

#paddleA {

left: 50px;

background: #fff;

border-radius: 3px;

}

#paddleB {

right: 50px;

background: #fff;

border-radius: 3px;

}

Aquí comienza tu trabajo, cambia los valores de background, puedes agregar el

nombre del color que desees pero en inglés, o bien usar la notación hexadecimal,

para eso busca en google como representar los colores hexadecimales, además

Page 6: Iniciación al desarrollo de juegos con Javascript

modifica las medidas de los paddles, del game, y de la ball, para eso solo cambia los

valores de width y height en todos los lugares donde los encuentres, como te

mencione anteriormente no tengas miedo a descomponerlo, siempre podrás volver

a comenzar.

Por ultimo agreguemos los detalles finales en nuestro estilos, volvemos al archivo

pingpong.css y añadimos el siguiente código:

.paddle-hand {

background: gray;

background-size: contain;

width: 10px;

height: 100%;

position: absolute;

top: 0;

}

.left.paddle-hand {

left: 60px;

}

.right.paddle-hand {

right: 60px;

}

Ahora agreguemos funcionalidad a nuestro juego modificando nuestro archivo

pingpong.js para eso utilizaremos el siguiente código de bajo del ya existente:

(function($){

// data definition

var pingpong = {

paddleA: {

x: 50,

y: 100,

width: 20,

height: 70

},

paddleB: {

Page 7: Iniciación al desarrollo de juegos con Javascript

x: 320,

y: 100,

width: 20,

height: 70

},

playground: {

offsetTop: $("#playground").offset().top,

height: parseInt($("#playground").height()),

width: parseInt($("#playground").width()),

},

ball: {

speed: 5,

x: 150,

y: 100,

radius: 20,

directionX: 1,

directionY: 1

}

};

// ball collision logic

function ballHitsTopBottom() {

var y = pingpong.ball.y + pingpong.ball.speed * pingpong.ball.directionY;

return y < 0 || y > pingpong.playground.height;

}

function ballHitsRightWall() {

return pingpong.ball.x + pingpong.ball.speed * pingpong.ball.directionX >

pingpong.playground.width;

}

function ballHitsLeftWall() {

return pingpong.ball.x + pingpong.ball.speed * pingpong.ball.directionX < 0;

}

Page 8: Iniciación al desarrollo de juegos con Javascript

// ball movement logic

function moveBall() {

// reference useful varaibles

var ball = pingpong.ball;

// check playground top/bottom boundary

if (ballHitsTopBottom()) {

// reverse direction

ball.directionY *= -1;

}

// check right

if (ballHitsRightWall()) {

playerAWin();

}

// check left

if (ballHitsLeftWall()) {

playerBWin();

}

// Variables for checking paddles

var ballX = ball.x + ball.speed * ball.directionX;

var ballY = ball.y + ball.speed * ball.directionY;

// check moving paddle here, later.

// check left paddle

if (ballX >= pingpong.paddleA.x && ballX < pingpong.paddleA.x +

pingpong.paddleA.width) {

if (ballY <= pingpong.paddleA.y + pingpong.paddleA.height && ballY >=

pingpong.paddleA.y) {

ball.directionX = 1;

}

}

Page 9: Iniciación al desarrollo de juegos con Javascript

// check right paddle

if (ballX + pingpong.ball.radius >= pingpong.paddleB.x && ballX <

pingpong.paddleB.x + pingpong.paddleB.width) {

if (ballY <= pingpong.paddleB.y + pingpong.paddleB.height && ballY >=

pingpong.paddleB.y) {

ball.directionX = -1;

}

}

// update the ball position data

ball.x += ball.speed * ball.directionX;

ball.y += ball.speed * ball.directionY;

}

// winning logic

function playerAWin() {

// reset the ball;

pingpong.ball.x = 250;

pingpong.ball.y = 100;

// update the ball location variables;

pingpong.ball.directionX = -1;

}

function playerBWin() {

// reset the ball;

pingpong.ball.x = 150;

pingpong.ball.y = 100;

// update the ball location variables;

pingpong.ball.directionX = 1;

}

Page 10: Iniciación al desarrollo de juegos con Javascript

function autoMovePaddleA() {

var speed = 4;

var direction = 1;

var paddleY = pingpong.paddleA.y + pingpong.paddleA.height/2;

if (paddleY > pingpong.ball.y) {

direction = -1;

}

pingpong.paddleA.y += speed * direction;

}

// view rendering

function renderPaddles() {

$("#paddleB").css("top", pingpong.paddleB.y);

$("#paddleA").css("top", pingpong.paddleA.y);

}

function renderBall() {

var ball = pingpong.ball;

$("#ball").css({

"left" : ball.x + ball.speed * ball.directionX,

"top" : ball.y + ball.speed * ball.directionY

});

}

// view inputs

function handleMouseInputs() {

// run the game when mouse moves in the playground.

$('#playground').mouseenter(function(){

pingpong.isPaused = false;

});

Page 11: Iniciación al desarrollo de juegos con Javascript

// pause the game when mouse moves out the playground.

$('#playground').mouseleave(function(){

pingpong.isPaused = true;

});

// calculate the paddle position by using the mouse position.

$('#playground').mousemove(function(e){

pingpong.paddleB.y = e.pageY - pingpong.playground.offsetTop;

});

}

// browser render loop

function render() {

renderBall();

renderPaddles();

window.requestAnimationFrame(render);

}

function gameloop() {

moveBall();

autoMovePaddleA();

}

// starting point of entire game

function init() {

// set interval to call gameloop logic in 30 FPS

pingpong.timer = setInterval(gameloop, 1000/30);

// view rendering

window.requestAnimationFrame(render);

Page 12: Iniciación al desarrollo de juegos con Javascript

// inputs

handleMouseInputs();

}

// Execute the starting point

init();

})(jQuery);

Vuelve a cargar tu sitio en un navegador y veras como en estos pocos pasos hemos

logrado crear nuestro juego de ping pong, el código utilizado para las funciones de nuestro

juego lo examinaremos pronto, en clase, lo importante hasta el momento es que te has

comenzado a involucrar con el desarrollo de software y haz creado tu primer aplicación.

En el transcurso de tu carrera, adquirirás las habilidades necesarias para generar

soluciones basadas en esta rama de las ciencias de la computación. Espero acompañarte

en tu camino y poder marcar una pequeña huella en este proceso de formación

profesional.

Por último, cabe mencionar que espero haber logrado captar tu atención y enamorarte del

desarrollo de software, si tienes alguna duda no dudes en comunicarte conmigo y a la

brevedad yo te responderé. Suerte y a modificar tu proyecto, recuerda que no debe ser

igual al de ninguno de tus compañeros, no olvides que lo único que debes hacer es

modificar tu archivo pingpong.css (lo que significa que modificaras tus estilos) y desde

luego el archivo index.html(puedes agregar texto o lo que desees), pero no modifiques el

archivo pingpong.js, eso lo aremos después cuando tengamos más experiencia.