Vous êtes sur la page 1sur 20

Consejo rpido: seleccionar color cambiar la luminosidad/brillo del color.

Vas a probarlo en el
siguiente desafo!
Google ClassroomFacebookTwitterCorreo electrnico
Realiza una pregunta
En la gua paso a paso pasada, exploramos cmo usar el
selector de color para, fcilmente, encontrar un color. Como no
puedes ver el selector de color en accin en nuestras guas
paso a paso, aqu hay un GIF que muestra cmo se usa:

Preguntas

Sugerencias y agradecimientos
Los mejores Recientes

como se cuando es el color correcto

21 votos

1 comentario Marcael comentario de josue antony


hace un ao de Ver el perfil de:josue antony

solo tienes que seleccionarlo y ver si correcto :)


4 votos

1 comentario Marcael comentario de cesar


hace un ao de Ver el perfil de:cesar

Mostrar todas las 2 respuestas a la pregunta de josue


antony Responde esta pregunta
quien invento este programa
0 votos
Grabacin del selector de color siendo usado para cambiar el
color de fondo. 1 comentario Marcael comentario de carlosceballos28
hace un ao de Ver el perfil de:carlosceballos28
Haz clic en cualquier lugar en los nmeros para hacer que el
selector de color aparezca. Despus, haz clic en la barra de
colores del lado derecho para cambiar el color general que No es invento de una persona. hay varias personas que
ests seleccionando y haz clic en el lado izquierdo para crearon los cdigos, ha llevado mucho tiempo, es la evolucin
del trabajo colaborativo de mucha gente de las universidades
y colegios de EEUU. -Aqu en KhanAcademy tambin estn Los nombres de las variables pueden empezar con
haciendo que estas herramientas y lenguajes sea mas fciles letras, o los smbolos $ o _. Solo pueden contener letras,
de aprender y de usar. no es un programa, sino codigos para nmeros, $ y _. No pueden empezar con un nmero.
crear programas. y todo lo que ves aqu es "la magia del "myVariable", "leaf_1" y "$money3" son todos ejemplos vlidos
cdigo" que fue programado para que aprendas a programar de nombres de variables.
mejor. (Son llamados "desarrollos" (leermsde este Los nombres de las variables distinguen entre
comentario) maysculas y minsculas, lo que significa que "xPos" es
diferente de "xpos", as que asegrate de ser consistente.
Los nombres de las variables no pueden ser los mismos
Repaso: variables que los nombres de las variables existentes, y hay muchas en
nuestro entorno de programacin de ProcessingJS. Si alguna
Google ClassroomFacebookTwitterCorreo electrnico vez te sale un error como "Read only!", trata de cambiar el
nombre de tu variable.
Aqu est lo que cubrimos en esta leccin sobre variables. Los nombres de las variables deben ser claros y con
sentido; por ejemplo, en vez de "ts", usa "toothSize".
Una variable es una manera de almacenar valores. Para usar Los nombres de las variables deben usar el formato
una variable, debemos tanto declararla (para hacerle saber al mayscula y minscula (camelCase) para varias palabras,
programa acerca de la variable) como luego asignarla (para como "toothSize" en vez de "toothsize" o "tooth_size".
hacerle saber al programa qu valor estamos almacenando en Vamos a usar mucho las variables cuando aprendamos
la variable). animacin en la siguiente leccin, as que haz preguntas aqu
Aqu est cmo declararamos una variable llamada "xPos": si no entiendes algo acerca de ellas.

varxPos; Qu son las animaciones?


Ahora, podemos asignarle a xPos que tenga el valor 10:
Google ClassroomFacebookTwitterCorreo electrnico
xPos=10;
Si queremos (y amenudo lo queremos!) podemos declarar y
Felicidades por aprender cmo hacer dibujos con tus
asignar en una sola declaracin:
habilidades de programacin! Ahora vas a aprender cmo
varxPos=10; convertir esos dibujos en animaciones, con solo unas cuantas
Si despus, por alguna razn, queremos cambiar el valor de lneas ms de cdigo.
una variable, podemos reasignarla:
Sin embargo, primero vamos a hablar acerca de qu es una
varxPos=10; animacin. Cmo podras hacer una animacin sin
//algntiempomstarde... programar?
xPos=20;
Pronto veremos por qu la reasignacin volver a asignar puede
ser til cuando queremos animar nuestro dibujos.

Cmo podemos escoger nombres para nuestras variables?


Para las variables en JavaScript, sigue estas reglas:
Podras hacer un montn de dibujos en pedazos de papel, Google ClassroomFacebookTwitterCorreo electrnico
luego hojear esos pedazos de papel de modo que los dibujos
pasaran en una secuencia y se vera como una animacin. En el lenguaje JavaScript (y en la mayora de los lenguajes de
Bueno, se vera como una animacin si esos dibujos fueran programacin), podemos usar operadores matemticos para
cada uno un poco diferente de los otros. Por ejemplo, revisa calcular nmeros y crear expresiones.
esta animacin hecha en lpiz y papel de un carro que va por
la calle: Ya viste algunos ejemplos de sumas en JS, al usar el
operador +. Tambin puedes usar para restas, * para
multiplicaciones, / para divisiones y % para sacar el residuo.
Aqu hay ejemplos de esos en accin:

varx=10;
vara=x+5;//suma5,elresultadoes15
varb=x5;//resta5,elresultadoes5
varc=x*2;//multiplicapor2,elresultadoes
20
vard=x/4;//divideentre4,elresultadoes2.5
vare=x%4;//divideentre4&regresael
residuo,elresultadoes2
Cuando usas varios operadores matemticos en una sola
expresin, la computadora sigue un "orden de operaciones"
para asegurarse de que calcule el resultado de la misma
manera cada vez. Es el mismo orden de operaciones que
probablemente aprendiste en tus clases de matemticas y
comnmente puede recordarse como "PEMDSR": parntesis,
Animacin hecha en lpiz y papel de un carro que va por la
exponentes, multiplicacin, divisin, suma y resta. Puedes
calle
aprender ms acerca del orden de las operaciones en Khan
Sin embargo, probablemente tomara un rato hacer esa Academy.
animacin, y bueno, no es tan buena. Se mueve bastante y no
Por ejemplo, en el siguiente cdigo, primero se evaluaran las
tiene nada de color.
dos expresiones entre parntesis, luego multiplicara esos
Pero ahora vivimos en el futuro! Podemos hacer una mejor resultados y, por ltimo, le sumara 100 a ese resultado.
animacin de manera programtica en pocos minutos con solo
varx=10;
una docena de lneas de cdigo, como esta:
vara=(x+10)*(x/2)+100;
Al igual que en las expresiones matemticas, solo necesitas
parntesis si quieres que tu expresin sea evaluada de manera
Animacin programada de un carro rojo que va por la calle diferente a como se hara de acuerdo al orden de las
operaciones. De otra manera, puedes omitirlos.
Quieres aprender a programar eso? Sigue adelante!
A continuacin, haremos un ejemplo que usa expresiones ms
Usar expresiones matemticas en JS complicadas con variables y operadores matemticos. Si
quieres, primero juega con algunas de estas expresiones varmiSaludo="Hola";
matemticas, para asegurarte de que entiendas bien cmo las varmiNombre="Winston";
evala la computadora. vardiHola=""+miSaludo+","+miNombre+"!";//
Hola,Winston!
Repaso: texto y cadenas Cuando combinamos cadenas en JS, lo
llamamos concatenar cadenas. Tambin podemos combinar
Google ClassroomFacebookTwitterCorreo electrnico cadenas con valores numricos:

varxPos=10;
Aqu est un repaso de lo que cubrimos en esta leccin sobre varyPos=20;
texto: varetiqueta="Lascoordenadasson"+xPos+","+
Antes de esta leccin, estbamos usando valores numricos yPos;
para la mayora de las cosas: pasarle nmeros a las funciones, En este tutorial tambin vimos que podemos usar diferentes
almacenar nmeros en variables, etc. Como ya viste, tambin comandos para cambiar el tamao y el color del texto cuando
podemos usar valores de texto. En JavaScript, a estos valores desplegamos cadenas al usar el comando text()text()t, e, x, t,
de texto los llamamos cadenas; piensa acerca de ellos como left parenthesis, right parenthesis. Puedes leer ms acerca de
una cadena de letras. esos comandos en la seccin de texto de nuestra
documentacin (haz clic en la pestaa de
Para crear una cadena, rodeamos el texto entre comillas: "documentacin"para acceder a ella).

"HolaMundo!" Repaso: funciones


Despus tenemos que hacer algo con esa cadena, como
pasrsela al comando text()text()t, e, x, t, left parenthesis, Google ClassroomFacebookTwitterCorreo electrnico
right parenthesis:

text("HolaMundo!",100,100); Este es un repaso de lo que cubrimos en esta leccin sobre


Tambin podramos almacenarla en una variable, y despus funciones.
pasarle esa variable al comando text()text()t, e, x, t, left
parenthesis, right parenthesis: A menudo queremos poder volver a ejecutar bloques de
cdigo cuando estamos escribiendo programas, sin tener que
varmiSaludo="HolaMundo!"; reescribir todo el bloque de cdigo. Necesitamos una forma de
text(miSaludo,100,100); agrupar el cdigo y darle un nombre, de manera que podamos
Ten en cuenta que tambin podemos utilizar comillas sencillas: llamarlo con ese nombre posteriormente, y a eso es a lo que
llamamos una funcin.
varmiSaludo='HolaMundo!';
Pero no podemos mezclar comillas, eso es un error! Escoge Para crear una funcin, primero debemos declararla y darle un
comillas sencillas o dobles, y qudate con esas. nombre, de la misma forma en la que crearamos cualquier
variable, seguida de una definicin de funcin:
varmiSaludo='HolaMundo!";//aycaray!
Del mismo modo en que podemos manipular nmeros, varsayHello=function(){
tambin podemos manipular cadenas. Podemos, por ejemplo, };
sumarle una cadena a otra: Podramos poner cualquier cdigo dentro de la funcin: una
proposicin, mltiples proposiciones. Depende de lo que
queramos hacer. En esta funcin, podramos simplemente Los argumentos que le pasamos bsicamente se convierten en
escribir en la pantalla un mensaje en una ubicacin aleatoria: variables dentro de tu definicin de funcin, y los nombres
dependen de como los llames en los parntesis. Fcilmente
varsayHello=function(){ podramos ponerles un nombre ms corto:
text("Hooooooola!",random(200),random(200));
}; varsayHello=function(x,y){
Ahora, si lo nico que hacemos es declarar la funcin, no text("Hooooooola!",x,y);
pasar nada. Para que el programa ejecute el cdigo que est };
dentro de la funcin, tenemos que "llamar" la funcin, al Nuestras funciones pueden aceptar cualquier nmero de
escribir su nombre seguido de parntesis vacos: argumentos: cero, uno, dos o ms. Tambin podramos haber
decidido que queramos cambiar nuestra funcin para aceptar
sayHello(); el nombre de una persona a la cual queremos saludar:
Y despus podemos llamarla cuando queramos, las veces que
queramos! varsayHello=function(name){
text("Hooooooola,"+name,random(200),
sayHello(); random(200));
sayHello(); };
sayHello(); Y entonces la habramos llamado as:
Muchas veces queremos personalizar las funciones para
decirle al programa: "Bueno, ejecuta todo este cdigo pero sayHello("Winston");
cambia algunos detalles de cmo lo haces". De esa forma sayHello("Pamela");
tenemos cdigo que es reutilizable y flexible, lo mejor de Podramos combinar ambas ideas y hacer que acepte tres
ambos mundos. Podemos lograr esto al especificar argumentos, para el nombre y la posicin:
"argumentos" para una funcin, luego usar estos argumentos
para cambiar el funcionamiento de la funcin y pasarlos varsayHello=function(name,x,y){
cuando llamemos la funcin. text("Hooooooola"+name,x,y);
};
Por ejemplo, qu pasa si quisiramos decir exactamente Y luego llamarla as:
dnde queremos que aparezca el mensaje, de la misma forma
en que podemos decir exactamente donde dibujar rect()s y sayHello("Winston",10,100);
ellipse()s? Podramos imaginar llamarla as, para poner el Realmente depende de lo que quieras que hagan tus funciones
mensaje en dos coordenadas precisas: y qu tanto deseas personalizar lo que pueden hacer. Siempre
puedes empezar sin argumentos, y luego agregar ms
sayHello(50,100); conforme te des cuenta que los necesitas.
sayHello(150,200);
Para que esto funcione, tenemos que cambiar nuestra De hecho, has estado llamando funciones todo este tiempo
definicin de la funcin sayHello para que sepa que recibir 2 (as es como has estado dibujando y haciendo animaciones)
argumentos, y luego los use: como con rect, ellipse, triangle, etc. Todas esas funciones
estn en la biblioteca ProcessingJS y las cargamos en cada
varsayHello=function(xPos,yPos){ programa que haces aqu, de modo que siempre puedas
text("Hooooooola!",xPos,yPos); usarlas. Hemos definido esas funciones para ti, porque cremos
}; que seran tiles. Ahora depende de ti decidir qu funciones
personalizadas quieres usar en tus propios programas. Por Incluso puedes llamar funciones dentro de la llamadas de una
ejemplo, proporcionamos la funcin ellipse, pero no una funcin, aunque a veces eso puede ser difcil de leer:
funcin gato. Si tu programa involucra muchos gatos distintos
en diferentes ubicaciones, tal vez deberas crear tu propia varhugeSum=addNumbers(addNumbers(5,2),
funcin gato! addNumbers(3,7));
Ahora que sabes cmo crear funciones que encierran bloques
Hay otra cosa poderosa que podemos hacer con funciones: de cdigo, tenemos que hablar de un concepto
podemos usarlas para que acepten valores, calculen algo y importante: variables locales frente a variables globales.
regresen un nuevo valor. Piensa en todas las cosas que puedes
hacer con una calculadora: sumar, restar, sacar raz cuadrada, Cuando declaramos una nueva variable dentro de una funcin,
multiplicar, etc. Todas esas se haran con funciones que decimos que es local para esa funcin. Eso es porque solo esa
tomaran un valor de entrada y regresaran el resultado. Las funcin puede ver esa variable. El resto del programa fuera de
funciones tomaran el valor de entrada como argumento y la funcin no puede. Una vez que estamos fuera de esa
regresaran el resultado al usar una declaracin return. Aqu funcin, es como si ya no existiera. En la siguiente
hay una funcin que suma dos nmeros y regresa el resultado: funcin, localResult es una variable local:

varaddNumbers=function(num1,num2){ varaddNumbers=function(num1,num2){
varresult=num1+num2; varlocalResult=num1+num2;
returnresult; println("Thelocalresultis:"+localResult);
}; returnlocalResult;
};
varsum=addNumbers(5,2); addNumbers(5,7);
text(sum,200,200);//Displays"7" println(localResult);//ohnoes!
La declaracin return hace dos cosas: le regresa un valor a Cuando ejecutemos ese cdigo, obtendremos un error en la
quien la haya llamado (razn por la cual podemos guardarla ltima lnea: "localResult is not defined". La variable solo est
en la variable sum) e inmediatamente sale de la funcin. Eso definida dentro de la funcin, porque es donde la declaramos
significa que sera tonto tener algo as, porque la ltima lnea con la lnea varlocalResult= y no est definida fuera de
nunca se ejecutara: ella.

varaddNumbers=function(num1,num2){ Cuando declaramos una variable fuera de nuestras funciones,


varresult=num1+num2; decimos que es una variable global. Esto es porque todas las
returnresult; funciones pueden acceder a ella y hacer lo que quieran con
result=result*2;//Tonto! ella.
};
varglobalResult;
Las funciones que regresan valores son muy tiles para
manipular datos en los programas, y tambin se pueden
varaddNumbers=function(num1,num2){
combinar en expresiones:
globalResult=num1+num2;
<pre>var biggerSum = addNumbers(2, 5) + addNumbers(3, println("Theglobalresultis:"+globalResult);
2);</pre> };
addNumbers(5,7);
println(globalResult);
Cuando ejecutemos el cdigo de arriba, no obtendremos Al x>0 es lo que llamamos una expresin condicional, que
ningn error, porque declaramos globalResult fuera de la quiere decir que es una expresin que se evala
funcin, as que podemos acceder a ella cuando queramos. a true (verdadero) o a false (falso). Cuando un valor
es true (verdadero) o false (falso), lo llamamos
Cada lenguaje de programacin es diferente, pero para valor booleano (a diferencia de un nmero o de una cadena).
JavaScript, es importante saber que las variables tienen un Por ejemplo, podramos simplemente desplegar la expresin
"mbito de la funcin": una funcin puede ver las variables condicional:
locales que fueron declaradas dentro de ella y las variables
globales que fueron declaradas fuera de ella, pero no puede text(x>0,200,200);//Despliega"true"
ver las variables locales dentro de otras funciones. Tambin podramos almacenarla en una variable y luego
desplegarla:
Repaso: declaraciones lgicas y condicionales (if)
varisPositive=x>0;
Google ClassroomFacebookTwitterCorreo electrnico text(isPositive,200,200);
Entonces diramos que isPositive almacena un valor
booleano, porque es true (verdadero) o false (falso),
Este es un repaso de lo que cubrimos en esta leccin sobre
dependiendo del valor que le demos a x.
lgica y declaraciones if.
Tenemos muchas maneras de crear expresiones condicionales
A menudo queremos ser capaces de hacer cosas
que se evalan como true (verdadero) o false (falso), porque
"condicionalmente" en nuestros programas: queremos ser
capaces de decir "si esta cosa es verdad, entonces haz X, pero tenemos muchos operadores de comparacin. Aqu estn los
si esta otra cosa es verdad, entonces haz Y". Es como cuando ms populares:
despertamos por la maana: "si afuera est lloviendo, Supn que tenemos la siguiente variable, aqu estn los
entonces llevo un paraguas, pero si est soleado, me pongo operadores de comparacin y expresiones ms comunes que
lentes de sol". Podemos hacer cosas condicionalmente en seran verdaderas con ellos:
nuestros programas al usar declaraciones
if y declaraciones if/else combinadas con expresiones varmyAge=28;
condicionales.
Operad Expresiones
Una decaracin if le dice al programa que ejecute un bloque or Significado verdaderas
de cdigo, siempre y cuando una condicin sea verdadera. En
el siguiente cdigo, escribimos un mensaje solo si x es mayor Igualdad
que 0: === estricta myAge===28

varx=5;
Desigualdad
!== estricta myAge!==29
if(x>0){
text('xisapositivenumber!',200,200);
28!==29 | | > | Mayor que | myAge>25
}
28>25 | | >= | Mayor o igual que | myAge>=28
Como x es 5, que es mayor que 0, veramos el mensaje en la
28>=28 | | < | Menor que | myAge<30
pantalla. Si cambiramos x a -1, no veramos el mensaje, ya
que x no sera mayor que 0.
28<30 | | <= | Menor o igual que | myAge<=28 };
28<=28 | Si solo nos preocupa que al menos una condicin sea
verdadera, entonces podemos usar el operador || ("o"):
Es un error muy comn confundir el operador de asignacin (=)
con el operador de igualdad (===), porque los dos usan signos vardegreesOutside=70;
de igual, pero son muy diferentes. El operador de asignacin varnumberOfClouds=50;
en realidad va a cambiar el valor de la variable, mientras que if(degreesOutside<70||numberOfClouds<5){
el operador de igualdad solo leer el valor de la variable y ver text("Pontebloqueadorsolar,aunquenohaga
si es igual a algo. Por ejemplo: calor!",200,200);
}
varx=2+2;//Setsitequalto4 Podemos usar && y || en la misma expresin, si tenemos que
verificar una condicin muy complicada. Solo usa parntesis
if(x===4){//Asksthequestion,"doesthisequal para agrupar expresiones, de manera que el programa no se
4?" confunda acerca del orden para evaluarlas:
text("yep,2+2=4!",200,200);
} varmyAge=28;
A veces queremos combinar varias comparaciones en una if((myAge>=0&&myAge<3)||myAge>90){
misma expresin condicional, y por eso tenemos operadores println('Annoestsentumejormomento.');
lgicos. Estos operadores nos permiten decir cosas como "si X }
y Y son verdaderos" o "si X o Y son verdaderos" en nuestros Ahora regresemos a las declaraciones if. Muchas veces
programas. queremos ejecutar un bloque de cdigo en el caso en el que la
condicin if no sea cierta. En ese caso, agregamos
Si queremos exigir que dos condiciones sean verdaderas, una declaracin else.
podemos usar el operador && ("y"):
varage=28;
vardegreesOutside=70; if(age>16){
varnumberOfClouds=50; println('Yupi,puedesmanejar!');
if(degreesOutside>70&&numberOfClouds<5){ }else{
text("Pontebloqueadorsolar!",200,200); println('Losiento,perodebestener'+(16age)
} +'aosparapodermanejar.');
A menudo usamos eso en nuestros programas para verificar si }
la posicin del ratn de un usuario est dentro de un A veces queremos revisar varias condiciones y hacer
rectngulo (para imitar un botn), en cuyo caso necesitamos diferentes cosas dependiendo de cada una, en cuyo caso
varios operadores &&: podemos usar elseif:
rect(100,50,100,100); varage=20;
if(age>=35){
mousePressed=function(){ println('PuedesvotarYocuparcualquierpuestoen
if(mouseX>100&&mouseX<200&&mouseY>50 elgobierno!');
&&mouseY<150){ }elseif(age>=30){
text("Youpressedit!",80,75); println('PuedesvotarYpostulartepara
} senador!');
}elseif(age>=18){ qu est mal. Tambin puedes pedirle a un amigo o a un
println('Puedesvotar!'); maestro que sea tu pato de goma, que se sienten y te
}else{ escuchen mientras les explicas. Algunas veces incluso pueden
println('Notienesvozenelgobierno!'); pensar en una solucin para ti, pero independientemente de
} eso, te estn haciendo un favor por solo escuchar la
Puedes seguir revisando condiciones tanto como quieras. Solo explicacin.
asegrate de que cada una de tus condiciones sea realmente
alcanzable. Prueba tu cdigo al cambiar las variables hasta Esto es lo ms cercano que tenemos a un pato de goma en la
llegar hasta adentro de cada uno de los bloques de cdigo, de oficina de Khan Academy:
modo que sepas que todo funciona. Foto de un Muchacho Ay Caray de peluche junto a una
Como ojal podrs ver, los condicionales son una parte computadora porttil
importante de programar y nos permiten crear programas Exagera tu salida
mucho ms poderosos y flexibles.
Como ests haciendo programas en ProcessingJS, ests
Ms consejos para depurar tratando con muchos colores de relleno y trazado. Cuando no
veo la slida visual que espero, algunas veces es til usar
Google ClassroomFacebookTwitterCorreo electrnico valores muy grandes o extremos para el relleno y el trazado,
como $\text{strokeWeight(30)}$. Como nuestro
Hay muchas maneras de depurar tus programas! Aqu hay ambiente es en tiempo real e incluye los arrastra-nmeros, es
una lista para que puedas empezar: muy fcil cambiar los nmeros en tu programas para ver qu
efecto tiene el cambio en la salida. Por ejemplo, puede
Depuracin con impresin ayudarte a averiguar a dnde se fue una figura que falta.

Como acabamos de mostrar, puedes insertar $ Captura de pantalla de un programa con strokeWeight()
\text{print()}$s o $\text{println()}$s en tu exagerado
cdigo para ayudarte a averiguar cul cdigo se est llamando
y con qu valores. Ambas de estas funciones escriben valores Es una buena idea sentirse cmodo con todas las opciones
en una consola que aparece sobre el lienzo. Tambin puedes para depurar programas de modo que puedas usar la que
usar $\text{debug()}$ para enviar la salida a la consola de funcione mejor en una situacin particular.
JavaScript de tu navegador, si sabes cmo usar eso.
Repaso: hacer bucles
Captura de pantalla usando la consola de impresin en un
programa Google ClassroomFacebookTwitterCorreo electrnico

Depuracin de pato de goma


Este es un repaso de lo que cubrimos en esta leccin sobre
Pon un pato de goma junto a tu computadora, o cualquier otro bucles.
objeto que parezca un pato de goma que tengas a la mano, y
Cuando estamos escribiendo programas, a menudo nos damos
explcale tu programa y tu problema, lnea por lnea. A muchos
cuenta que queremos repetir una parte del cdigo muchas
programadores les funciona el simple hecho de expresar su
veces, o repetirlo pero cambindole algo cada vez. Para
problema en palabras para que su cerebro se d cuenta de
ahorrarnos escribir todo ese cdigo, podemos usar un bucle.
JavaScript tiene dos tipos de bucles, un bucle cuadrculas. Cuando anidamos un bucle dentro de otro, le
while (mientras) y un bucle for (para). estamos diciendo al programa "haz esta cosa X veces, y por
cada vez que lo hagas, haz esta otra cosa Y veces". Piensa
Un bucle while es una forma de repetir el cdigo hasta que acerca de dibujar una cuadrcula. Quisiramos decirle al
una condicin sea falsa. Por ejemplo, este bucle while va a programa "crea una columna 10 veces, y por cada columna,
desplegar el valor de y en (30, y) mientras y sea menor que tambin crea 15 celdas dentro de ella". Aqu esta cmo
400. El bucle le suma 20 a y cada vez que se ejecuta, de puedes usar bucles anidados para logar eso:
manera que y empieza en 40 pero incrementa a 60, 80, 100,
120, etc. for(varcol=0;col<10;col++){
for(varrow=0;row<15;row++){
vary=40; rect(col*20,row*20,20,20);
while(y<400){ }
text(y,30,y); }
y+=20; Cuando debes usar un bucle for en lugar de un bucle while?
} Eso depende de ti. Muchos programadores prefieren los bucles
Es importante que la condicin dentro del parntesis se vuelva for porque es ms difcil crear un bucle infinito por accidente
falsa en algn momento. De lo contrario tendremos lo que se (porque es ms difcil olvidar incrementar tu variable de
conoce como un bucle infinito! Eso es lo que pasara si contador), pero a veces un bucle while puede tener ms
quitramos el y+=20, porque y sera 40 por siempre, sentido. Prueba ambos!
siempre sera menor a 400, y el programa no sabra cuando
parar. Repaso: arreglos
vary=40;
Google ClassroomFacebookTwitterCorreo electrnico
while(y<400){
text(y,30,y);
} Este es un repaso de lo que cubrimos en esta leccin sobre
El bucle for es parecido a un bucle while, pero con una arreglos.
sintaxis ms especializada. Los programadores inventaron el
bucle for cuando se dieron cuenta que siempre estaban Muchas veces queremos almacenar listas de valores cuando
haciendo las mismas tres cosas: crear variables para contar estamos creando programas y, en JavaScript, podemos hacer
los bucles (como la y arriba), incrementarlas por una cantidad eso al usar un tipo de valor llamado un arreglo.
y verificar que fueran menores que cierto valor. La sintaxis de Para crear un arreglo, declaramos una variable como siempre
un bucle for tiene un lugar especial para cada una de esas tres lo hacemos, pero luego rodeamos nuestra lista de valores con
cosas. Aqu est el mismo bucle que el primer bucle while corchetes y separamos cada valor con una coma:
de arriba, como un bucle for:
varxPositions=[33,72,64];
for(vary=40;y<400;y+=20){ Podemos guardar cualquier tipo de valor de JavaScript en un
text(y,30,y); arreglo, no solo nmeros. Aqu hay un ejemplo donde
} almacenamos una lista de cadenas de caracteres:
Los bucles tambin se pueden anidar. De hecho es muy
comn anidar bucles for, especialmente en dibujos varmyFriends=['Winston','OhNoesGuy','John',
bidimensionales, porque facilita dibujar figuras en forma de 'Sophia'];
Muchas veces queremos desplegar la longitud de un arreglo, o myFriends[1]="TheErrorBuddy";
hacer algo con base en la longitud del arreglo. Tambin podemos agregarles valores completamente nuevos,
Afortunadamente, cada arreglo tiene una al usar el mtodo [push()]
propiedad length que nos dir la longitud actual del arreglo: (http://www.w3schools.com/jsref/jsref_push.asp),
pasndole el nuevo valor:
text(myFriends.length,200,200);//Despliega"4"
Cuando queremos acceder a un valor particular en un arreglo, myFriends.push("Hopper");
accedemos a l al hacer referencia a su "ndice" en el arreglo, Despus de ejecutar esa lnea de cdigo, la propiedad length
el cual representa su posicin. El primer ndice en un arreglo de nuestro arreglo cambiar para reflejar la nueva longitud, y
es "0", as que si queremos acceder al primer elemento en un el ndice final del arreglo ser 4 en lugar de 3.
arreglo, especificamos el nombre de la variable del arreglo,
luego corchetes y 0: Si quieres una lista completa de lo que puedes hacer con los
arreglos en JavaScript, revisa esta referencia. Pero no te
text(myFriends[0],200,0);//Despliega"Winston" preocupes, todo en este repaso te llevar muy lejos!
El segundo elemento est en el ndice "1", el tercero en el
ndice "2" y el cuarto en el ndice "3": Repaso: objetos
text(myFriends[1],200,100);//Despliega
Google ClassroomFacebookTwitterCorreo electrnico
"OhNoesGuy"
text(myFriends[2],200,200);//Despliega"John"
text(myFriends[3],200,300);//Despliega"Sophia" Este es un repaso de lo que cubrimos en esta leccin sobre
La indexacin basada en cero es uno de los aspectos ms objetos.
confusos de los arreglos para los programadores nuevos, as
Tenemos muchos tipos de valores que podemos almacenar en
que ten eso en cuenta si apenas ests empezando con
variables de JavaScript, y a veces queremos guardar muchos
arreglos. Eventualmente te vas a acostumbrar !
valores relacionados juntos: aqu es donde entran
A menudo queremos hacer alguna accin para cada elemento los objetos!
en un arreglo, como cuando arriba usamos el comando text()
Un objeto es un tipo de datos que nos permite almacenar una
para desplegar los nombres. En lugar de escribir el cdigo una
coleccin de propiedades en una sola variable. Para crear un
y otra vez, es mejor usar un bucle for para iterar a travs de
objeto, declaramos una variable como lo haramos
cada uno de los elementos en el arreglo, y hacerle algo a cada
normalmente, y luego utilizamos llaves para rodear las parejas
elemento dentro del bucle. Tenemos que empezar desde el
de propiedades clave-valor:
ndice 0, ir hasta llegar al final del arreglo, y agregarle 1 al
ndice cada vez. Aqu est cmo haramos eso: varobjectName={
propertyName:propertyValue,
for(vari=0;i<myFriends.length;i++){
propertyName:propertyValue,
text(myFriends[i],200,i*100);
...
}
};
Observa cmo ponemos i dentro de los corchetes, porque
Aqu hay un objeto que describe a Winston. Este objeto tiene
representa el ndice actual cada vez que se ejecuta el bucle.
dos propiedades, hometown (ciudad de nacimiento)
Los arreglos pueden ser cambiados de muchas maneras. Para y hair (cabello), y cada una de las propiedades son cadenas
empezar, podemos cambiarles un valor: de caracteres:
varaboutWinston={ Acceder a las propiedades de los objetos
hometown:"MountainView,CA",
hair:"no" Un objeto no es til a menos que podamos ver dentro de l y
}; obtener los valores de las diferentes propiedades. Podemos
Aqu hay un objeto ms complejo que describe un gato, con hacer eso de dos maneras. Primero, mediante lo que llamamos
cuatro propiedades: age (edad), furColor (color de "notacin de punto", en donde escribimos el nombre de la
pelo), likes (cosas que le gustan) y birthday (cumpleaos). variable, seguido por un "." y luego el nombre de la propiedad:

varlizzieTheCat={ varaboutWinston={
age:18, hometown:"MountainView,CA",
furColor:"grey", hair:"no"
likes:["catnip","milk"], };
birthday:{"month":7,"day":17,year:1994}
}; text("Winstonisfrom"+aboutWinston.hometown,100,
Observa como cada propiedad guarda un tipo de dato 100);
distinto: age guarda un nmero, furColor guarda una cadena text("Winstonhas"+aboutWinston.hair+"hair",
de caracteres, likes guarda un arreglo y birthday guarda 100,150);
otro objeto. Eso es la cosa genial de los objetos (bueno, una de Tambin podemos usar "notacin de corchetes", que es
las cosas geniales). Pueden guardar otros objetos dentro de parecida a cmo accedemos a los elementos de un arreglo, en
ellos! As que puedes tener objetos muy anidados para donde escribimos el nombre de la variable, luego corchetes
describir datos complejos. con el nombre de la propiedad entre comillas:

Tambin puedes ver objetos que en sus declaraciones usan varhisHometown=aboutWinston["hometown"];


comillas alrededor de los nombres de propiedades, como: varhisHair=aboutWinston["hair"];
Si intentamos acceder a una propiedad que no existe,
varaboutWinston={ veramos "undefined" (indefinido):
"hometown":"MountainView,CA",
"hair":"no" text("ElobjetivoenlavidadeWinstones"+
}; aboutWinston.lifeGoal,100,150);
Eso es equivalente a lo que vimos anteriormente sin comillas,
pero nos tardamos ms en escribirlo. La nica vez que es
absolutamente necesario usar comillas es si el nombre de tu
Modificar las propiedades de un objeto
propiedad tiene un espacio, por ejemplo:

varaboutWinston={ Al igual que cuando almacenamos otros tipos de datos en las


"hishair":"none" variables, podemos cambiar los valores de las propiedades del
}; objeto en cualquier momento durante un programa, al usar la
Aqu tenemos que usar comillas, porque de lo contrario el notacin de punto o de corchetes:
intrprete de JavaScript se confundir. Este es mi consejo: aboutWinston.hair="curly";//(rizadoeningls)
simplemente no uses espacios en los nombres de las Winstonconsigueunapeluca!
propiedades! As nunca tendrs que poner los nombres de las
propiedades entre comillas.
Tambin podemos agregar propiedades completamente {x:200,y:100},
nuevas! {x:200,y:200},
{x:200,y:300}
aboutWinston.lifeGoal="teachJavaScript"; ];
Si ya no ocupamos una propiedad, podemos borrarla (pero
probablemente la mayor parte del tiempo solo le cambiaremos for(vari=0;i<positions.length;i++){
el valor): varposition=positions[i];
deleteaboutWinston.hair; ellipse(position.x,position.y,100,100);
}
Genial, no? Los objetos pueden ser confusos al principio, pero
sigue usndolos, y eventualmente te volvers adictos a ellos,
Arreglos de objetos y querrs convertir todo en un objeto!

Ahora que conoces tanto los arreglos como los objetos, puedes Repaso: diseo orientado a objetos
combinarlos para crear arreglos de objetos, que de hecho son
formas muy tiles de almacenar datos en programas. Por Google ClassroomFacebookTwitterCorreo electrnico
ejemplo, un arreglo de gatos:

varmyCats=[ Este es un repaso de lo que cubrimos en esta leccin sobre


{name:"Lizzie", diseo orientado a objetos.
age:18}, Cuando creamos programas, a menudo encontramos que
{name:"Daemon", queremos crear muchos objetos diferentes que comparten
age:1} propiedades parecidas, como muchos gatos, que tienen el pelo
]; de color y tamao ligeramente diferente, o muchos botones,
con etiquetas y posiciones diferentes. Queremos ser capaces
for(vari=0;i<myCats.length;i++){ de decir "as es como se ve un gato en general" y luego decir
varmyCat=myCats[i]; "hagamos a este gato en especfco, y luego a este otro gato, y
println(myCat.name+'is'+myCat.age+'years sern parecidos en algunos aspectos pero tambin diferentes
old.'); en otros". En ese caso, queremos usar diseo orientado a
} objetos para definir los tipos de objeto y crear nuevas
Observa que iteramos a travs de un arreglo de la misma instancias de esos objetos.
forma que iteramos a travs de un arreglo de nmeros o de
cadenas de caracteres, al usar un bucle for. Dentro de cada Para definir un tipo de objeto en JavaScript, primero tenemos
iteracin, accedemos al elemento actual del arreglo con que definir una funcin "constructora". Esta es la funcin que
notacin de corchetes y accedemos a las propiedades de ese usaremos cada vez que queramos crear una nueva instancia
elemento del arreglo (un objeto) con notacin de punto. de ese tipo de objeto. Aqu hay una funcin constructora para
un tipo de objeto Book (libro):
Aqu hay otro ejemplo prctico que podras ocupar en tus
programas, un arreglo de coordenadas de posicin: varBook=function(title,author,numPages){
this.title=title;
varpositions=[ this.author=author;
this.numPages=numPages; entonces no seremos capaces de accederlos despus! El
this.currentPage=0; objeto se olvidar de ellos.
};
La funcin toma argumentos para los aspectos que sern Cuando definimos los tipos de objeto, muchas veces queremos
diferentes en cada libro: el ttulo, autor y nmero de pginas. asociar tanto las propiedades como el comportamiento con
Despus establece las propiedades iniciales del objeto con ellos, como todos nuestros objetos de gato que deberan ser
base en esos argumentos, al usar la palabra clave this. capaces de maullar() y comer(). As que necesitamos poder
Cuando usamos this en un objeto, nos estamos refiriendo a la adjuntar funciones a nuestras definiciones de tipo de objeto, y
instancia actual de un objeto, refirindose a s mismo. podemos hacer eso definindolas en lo que se llama el object
Necesitamos almacenar las propiedades en this para prototype (prototipo del objeto):
asegurarnos de que las podamos recordar ms tarde. Book.prototype.readItAll=function(){
this.currentPage=this.numPages;
Para crear una instancia de un objeto Book, declaramos una
println("Leste"+this.numPages+"pginas!");
variable nueva para almacenarla, despus utilizamos la
palabra clave new (nuevo), seguida del nombre de la funcin };
constructora y pasamos los argumentos que espera el Es como si definiramos una funcin de manera normal,
constructor: excepto que la colgamos del prototipo de Book en lugar de
definirla globalmente. As es como JavaScript sabe que esta es
varbook=newBook("SueosdeRobot","Isaac una funcin que se puede llamar en cualquier objeto Book, y
Asimov",320); que esta funcin debe tener acceso a this del libro sobre el
Entonces podemos acceder a las propiedades que cual se llama.
almacenamos en el objeto utilizando la notacin de punto:
Entonces podemos llamar a la funcin (a la que llamamos
println("Meencantleer"+book.title);//Me un mtodo, ya que est adjunta a un objeto), as:
encantleerSueosdeRobot
println(book.author+"esmiautorfavorito");// varbook=newBook("Rebelinenlagranja","George
"IsaacAsimov"esmiautorfavorito Orwell",112);
Vamos a contrastar esto por un minuto, y mostrar qu hubiera book.readItAll();//Leste112pginas!
pasado si no hubiramos configurado correctamente nuestra Recuerda, el objetivo del diseo orientado a objetos es que nos
funcin constructora: facilita hacer mltiples objetos relacionados (instancias de
objetos). Veamos eso en cdigo:
varBook=function(title,author,numPages){
}; varpirate=newBook("PirateCinema","Cory
varbook=newBook("LittleBrother","Cory Doctorow",384);
Doctorow",380); vargiver=newBook("TheGiver","LoisLowry",179);
println("Ilovedreading"+book.title);//Iloved vartuck=newBook("TuckEverlasting","Natalie
readingundefined Babbit",144);
println(book.author+"ismyfavauthor");//
undefinedismyfavoriteauthor pirate.readItAll();//Youread384pages!
Si le pasamos los argumentos a la funcin constructora pero giver.readItAll();//Youread179pages!
no los almacenamos explcitamente en this, tuck.readItAll();//Youread144pages!
Ese cdigo nos da tres libros que son parecidos: todos tienen varPaperBack=function(title,author,numPages,
los mismos tipos de propiedades y comportamiento, pero cover){
tambin son diferentes. Genial! Book.call(this,title,author,numPages);
//...
Ahora, si piensas acerca del mundo, los perros y los gatos son };
distintos tipos de objetos, as que probablemente crearas Todava tenemos que almacenar la propiedad cover en el
diferentes tipos de objeto para ellos si estuvieras programando objeto, as que necesitamos una lnea ms que se encargue de
un Gato y un Perro. Un gato podra maullar(), un perro eso:
podra ladrar(). Pero tambin son parecidos: tanto el perro
como el gato podran comer(), ambos tendran una edad, varPaperBack=function(title,author,numPages,
un nacimiento y una muerte. Ambos son mamferos y eso cover){
significa que tienen mucho en comn, aunque tambin sean Book.call(this,title,author,numPages);
diferentes. this.cover=cover;
};
En ese caso, queremos usar la idea de la herencia del Ahora, tenemos un constructor para nuestro PaperBack, que le
objeto. Un tipo de objeto podra heredar propiedades y
ayuda a compartir las mismas propiedades que los Books, pero
comportamiento de un tipo de objeto padre, pero tambin
tambin queremos que nuestro PaperBack herede sus
tener sus propias cosas nicas. Todos los Gatos y Perros
mtodos. Aqu est como hacer eso, dicindole al programa
podran heredar de Mamfero, as que no tendran que
que el prototipo de PaperBack debe estar basado en el
inventarse el comer() desde cero. Cmo haramos eso en
prototipo de Book:
JavaScript?
PaperBack.prototype=Object.create(Book.prototype);
Volvamos al ejemplo de libro y digamos que ese Book es el
Tambin podramos querer adjuntarle un comportamiento
tipo de objeto "padre", y queremos hacer dos tipos de objetos
especfico al paperback, como poder quemarlo, y podemos
que hereden de l: Paperback e EBook.
hacer eso al definir funciones en el prototipo, despus de la
Un paperback es como un libro, pero tiene una cosa principal lnea de arriba:
diferente, al menos para nuestro programa: tiene una imagen PaperBack.prototype.burn=function(){
de portada. Entonces, nuestro constructor necesita tomar
println("Ohno,quemastetodaslas"+
cuatro argumentos, para recibir esa informacin adicional:
this.numPages+"pginas");
varPaperBack=function(title,author,numPages, this.numPages=0;
cover){ };
//... Y ahora podemos crear un nuevo paperback, leerlo todo y
} quemarlo!
Ahora, no queremos tener que hacer todo el trabajo que ya
varcalvin=newPaperBack("TheEssentialCalvin&
hicimos en el constructor de Book para recordar esos primeros
Hobbes","BillWatterson",256,"http://ecx.images
tres argumentos: queremos aprovechar el hecho de que el
amazon.com/images/I/61M41hxr0zL.jpg");
cdigo para eso sera el mismo. As que en realidad podemos
llamar al constructor de Book desde el constructor
calvin.readItAll();//Youread256pages!
de PaperBack y pasarle esos argumentos:
calvin.burn();//Omg,youburntall256pages!
(Bueno, en realidad no vamos a quemarlo, porque es un libro Si todava no tienes una idea, entonces aqu hay algunas
asombroso, pero tal vez si estuviramos varados en un preguntas para ayudarte en una lluvia de ideas:
desierto glacial y desesperados en busca de calor y a punto de
morir). Cul es tu juego favorito, electrnico, de mesa, de
deportes? Podras hacer una versin simplificada, digital de
Y ahora puedes ver cmo podemos utilizar los principios de eso? Podras cambiarlo un poco, como darle otro tema o
diseo orientado a objetos en JavaScript para crear datos ms personajes principales?
complejos para tus programas y modelar mejor los mundos de Cules son tus campos acadmicos favoritos? Si te
tus programas. encanta el arte, podras hacer un programa para hacer arte?
Si te encanta la historia, que tal una lnea de tiempo
Planear un proyecto de programacin interactiva? Si te encanta la ciencia, qu tal una simulacin
cientfica?
Google ClassroomFacebookTwitterCorreo electrnico Cul es tu pelcula o programa favorito de televisin?
Podras hacer una versin digital de una escena o un personaje
de ah? Tal vez hacer un juego basado en eso?
Convertirse en un programador no solo es aprenderse la
Cul es un dispositivo de la vida real que te encanta?
sintaxis y los conceptos de un lenguaje de programacin: se
Podras hacer una simulacin de eso?
trata de averiguar cmo usar ese conocimiento para hacer
Una vez que hayas escogido una idea, deberas escribir una
programas. Hiciste un montn de programas en este curso, en
descripcin de ella. Por ejemplo, si decidiera hacer un clon de
los desafos y proyectos, pero ahora debes tener ideas para
"Breakout", porque ese es mi juego electrnico retro favorito,
nuevos programas (ideas que te emocionen mucho) y
podra escribir:
tratar de convertir esas ideas en programas reales.
Breakout: un juego en donde controlas una paleta en la parte
Probablemente no sepas todo lo que necesites para tu
inferior de la pantalla y la usas para golpear una pelota hacia
programa cuando lo empieces, y eso est totalmente bien. Te
arriba y en ngulos para romper bloques. El objetivo es romper
motivars para aprender esas cosas nuevas porque realmente
todos los bloques y no dejar que la bola caiga al suelo
quieres hacer que tu programa sea real. Los programadores
demasiadas veces.
estn constantemente aprendiendo nuevas cosas para nuevos
proyectos, y eso es parte por lo cual nos encanta. Vas a detallar esa descripcin despus, pero por ahora eso te
da una idea suficientemente buena para continuar en el
Vayamos a travs del proceso de planear un proyecto de
proceso de planeacin.
programacin:

2. Qu tecnologa usars?
1. Qu quieres hacer?
En este paso, necesitas considerar con qu tecnologas
Cuando empec a programar, me encontr constantemente
(lenguajes/bibliotecas/ambientes) ests familiarizado o cules
pensando en nuevos programas por hacer y escribindolos en
puedes aprender fcilmente, y cules de ellas son las ms
una lista. Era adicto al poder de la creacin, y haba tanto que
adecuadas para el trabajo. Para muchos de ustedes, esa lista
mi cerebro quera hacer. Si tu eres as, entonces
puede ser de un solo elemento, "1. JS+ProcessingJS", y eso
probablemente ya tienes una idea de lo que quieres hacer, y
hace que tu decisin sea fcil.
tal vez ya tienes tu propia lista.
Nuestro ambiente JS+ProcessingJS funciona muy bien para necesito en mi programa para cambiar entre estados del
hacer animaciones, juegos, visualizaciones y simulaciones. programa.
Solo revisa los programas de la comunidad para ver el amplio
rango de programas que la gente hace aqu. Maquetas esbozadas de un clon de Breakout

Nuestro ambiente no funciona para otras cosas como juegos Ahora puedes usar esas maquetas para ayudarte a hacer una
multi-jugador, aplicaciones mviles o aplicaciones de lista de caractersticas, en donde pienses acerca de cada una
procesamiento de datos. Si sabes otros lenguajes/ambientes de las caractersticas de tu programa, y convertirla en una
(como JS+HTML, Python, SCRATCH, Swift, etc.) y ests lista.
pensando en construir algo que no tiene mucho sentido hacer
Para mi clon de Breakout, esta podra ser mi lista de
con ProcessingJS, entonces considera cul de esas tecnologas
caractersticas, separadas por escena:
sera mas adecuada para tu programa. Si quieres construir
esas cosas pero no sabes otras tecnologas, tal vez quieras Escena del juego
replantearte una nueva idea para tu programa.
Tu puedes aprender una nueva tecnologa para un nuevo Paleta controlada por el usuario
proyecto, pero en especial si ests empezando a programar, Bloques de varios colores
es una buena idea primero volverte muy bueno en tu Movimiento angulado de la pelota
primer lenguaje. Deteccin de choques
Desplegar vida
Si yo decidiera hacer un juego como Breakout, escogera Desplegar puntuacin
JS+ProcessingJS, dado que ya s esa tecnologa y tambin Efectos de sonido
funciona muy bien para juegos en 2D como ese. Escena principal

Botn de jugar
Botn de ayuda
3. Qu caractersticas incluir? Escena de ayuda
Aqu es donde realmente nos metemos a planear de verdad, y Texto
en donde (creo) se pone divertido. Tu objetivo en este paso es Botn para regresar
averiguar qu es lo que ests haciendo en realidad: cmo se Escena de ganar
ver, qu caractersticas incluir, qu
caractersticas no incluir. Encabezado
Animacin de fuegos artificiales
Lo primero que puedes hacer son "maquetas": bocetos que se Escena de perder
parezcan a lo que ests haciendo, pero sin los detalles como
colores o tamaos exactos. Puedes hacer maquetas en papel o Texto
con con programas en lnea: Botn para reiniciar
4. Pero qu caractersticas debe incluir?
Para darte una idea de cmo se ven las maquetas, a
continuacin incluyo maquetas de mi clon de Breakout. Hice Si todos tuviramos un tiempo infinito para hacer todos los
bocetos para cada escena de manera separada y dibuj programas en nuestras cabezas, entonces incluiran todas las
flechas entre ellas para mostrar cmo una escena conduce a caractersticas en nuestra lista. Pero no lo tenemos, as que en
otra. Esas flechas me ayudarn a entender la lgica que este paso tienes que decidir cules caractersticas son las ms
importantes, y cules caractersticas hars solo si tenemos (P3) Botn para regresar
tiempo. Esto tambin te ayudar a averiguar en qu orden (P2) Escena de ganar
implementar las caractersticas, de las ms a las menos
importantes. (P2) Encabezado
(P3) Animacin de fuegos artificiales
Para ayudarte a averiguar la importancia de cada (P2) Escena de perder
caracterstica, hazte estas preguntas:
(P2) Texto
Si compartiera esto con un amigo, cules (P3) Botn para reiniciar
caractersticas me gustara estar seguro que funcionaran? Como un consejo general para aquellos de ustedes haciendo
Cules caractersticas me emocionan ms construir? juegos, aqu estn las caractersticas que recomiendo no
Cules caractersticas son las ms nicas de mi priorizar: mens, niveles mltiples, grficos 3D. Enfcate en lo
programa? que es nico y divertido acerca de tu juego, despus agrega
De cules caractersticas aprender ms al esas cosas adicionales.
implementarlas?
Hay algunas caractersticas que parecen demasiado Tambin puedes convertir tu lista priorizada en versiones del
complicadas para mi nivel actual de habilidades? proyecto, de modo que puedas ver fcilmente lo que necesitas
Despus, revisa tu lista del paso anterior y ordena la lista o implementar en cada versin, y siempre puedes detenerte
agrgale un rango de importancia a cada caracterstica. despus de una versin particular y estar contento con lo que
has hecho.
Para mi lista de caractersticas del clon de Breakout, puse "P1",
"P2" y "P3" junto a las caractersticas, que significan prioridad Aqu est como se veran las versiones para mi clon de
alta (P1), prioridad media (P2) y prioridad baja (P3). Decid Breakout:
priorizar los mecanismos nicos del juego por encima de las
V1
caractersticas generales del juego como las escenas, porque
eso se me hace ms emocionante de este proyecto: Paleta controlada por el usuario
Bloques de varios colores
(P1) Escena del juego
Movimiento angulado de la pelota
(P1) Paleta controlada por el usuario Deteccin de choques
(P1) Bloques de varios colores V2
(P1) Movimiento angulado de la pelota
Desplegar vida
(P1) Deteccin de choques
Desplegar puntuacin
(P2) Desplegar vida
Escena de jugar con botn de jugar
(P2) Desplegar puntuacin
Escena de ganar con encabezado
(P3) Efectos de sonido
V3
(P2) Escena principal
Efectos de sonido
(P2) Botn de jugar
Botn de ayuda
(P3) Botn de ayuda
Fuegos artificiales
(P3) Escena de ayuda
Escena de perder con botn para reiniciar
(P3) Texto
5. Cmo lo vas a implementar? Una vez que ya hayas pensado acerca de la arquitectura de
alto nivel, debe ser ms claro qu puedes empezar a codificar
Ya tienes una idea de qu caractersticas vas a construir primero.
primero en tu programa. Pero si empiezas ahora, estars
viendo un programa completamente en blanco sin nada de Puedes decidir escribir todo tu programa en pseudocdigo
cdigo escrito, y eso puede ser intimidante. Cules variables primero, del cual hablamos ms adelante en esta leccin.
debes escribir primero? Cules funciones? Bsicamente, significara escribir todo el programa en espaol
dentro de un comentario, y despus poco a poco convertir eso
Una manera en la que puedes averiguar eso es pensar acerca en cdigo.
de la "arquitectura de alto nivel" de tu programa (separarlo en
categoras como "objetos", "lgica", "interaccin del usuario",
"datos del usuario" y "escenas") y despus pensar acerca de
cmo puedes implementarlas, como tipos de objeto orientados 6. Cul es tu cronograma?
a objetos, funciones o variables.
Cunto tiempo tienes para hacer este programa? Cuntas
Por ejemplo, aqu est una arquitectura para mi clon de semanas y cunto tiempo cada da? Qu caractersticas vas a
Breakout: escribir cada semana? Tu objetivo en este paso es averiguar
un cronograma para tu proyecto, el cual es particularmente
Objetos importante si tienes una fecha lmite, pero tambin es til para
que puedas empezar a entender cunto tiempo te toma
Brick (.isHit())
escribir un programa.
Paddle (.move())
Ball (.move()) Aqu est un cronograma para mi clon de Breakout,
Escenas suponiendo 2-4 horas de trabajo cada semana:
Inicio Semana 1: diseo y pseudocdigo
Juego Semana 2: visualizaciones preliminares
Fin Semana 3: mecnica del movimiento/choque de la
Lgica pelota
Semana 4: mecnica de la puntuacin
Choque pelota-bloque (function, usar bounding box) Semana 5: escenas (inicio/ganar/perder)
ngulo de la paleta con la pelota (function, invertir Semana 6: pulir, pruebas manuales (revisin de
ngulo) calidad), preparacin para demostracin
Interaccin del usuario Averiguar los cronogramas para proyectos de programacin es
difcil. Algunas cosas que parecen fciles toman mucho ms
Movimiento de la paleta con el teclado (keyPressed)
tiempo del esperado (como algn error extrao con el cual te
Botones para cambiar escenas (mouseClicked) pasas horas depurando), algunas cosas que parecen difciles
Datos del usuario toman menos tiempo del esperado. Como una regla general,
Muertes de la pelota (array) supn que te vas a tardar ms de lo que piensas, y ajusta a
medida que vayas avanzando.
Golpes de la pelota (array)
Ests listo!?

Con suerte esto te da una idea del proceso de planear un


proyecto de programacin, y te inspira a empezar un proyecto
ahora. Dependiendo en qu quieras construir, tambin puedes
decidir tomar otros cursos antes, como JS avanzado: juegos y
visualizaciones o JS avanzado: simulaciones naturales, para
darte ms ideas para construir juegos y simulaciones.

Lo importantes es asegurarte de que empieces a hacer tus


propios proyectos en algn punto, porque ah es donde vas a
aprender ms, y tambin donde vas a tener la mayor alegra
de programar, porque ests haciendo tus sueos realidad.

Vous aimerez peut-être aussi