curso de programación desde cero con...

27
CURSO DE PROGRAMACIÓN DESDE CERO CON UNITY Introducción Temario Poo Lenguajes de prog. Clases Variables Métodos Ejemplo de clase Clases Monobehaviour Ejemplo Monobehaviour Sentencia IF Sentencia FOR Sentencia SWITCH Sentencia WHILE Ejemplo sentencias Enumerados Componentes Ejemplo enumerados Práctica ¡BIENVENIDOS!

Upload: ngomien

Post on 02-Aug-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

CURSO DE PROGRAMACIÓN

DESDE CERO CON UNITY

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

¡BIENVENIDOS!

TEMARIO

Primera clase

• Conceptos básicos de programación orientada a objetos.

• Scripting en Unity (C#).

• Lógica de programación en Unity (Clase Monobehaviour).

Segunda clase

• Métodos propios de Monobehaviour (Start, Update, etc.).

• Inputs (teclado, ratón, mando).

• Programación de controlador de personaje.

Tercera clase

• Bases de datos (listas).

• Optimización de recursos (pooling).

• Implementar animaciones (Animator de Unity).

Cuarta clase

• Inteligencia artificial (IA) básica.

• Implementación de la interfaz de usuario (Canvas).

• Buenas prácticas de programación y “Unity tips”.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

POO

La programación orientada a objetos (POO) es un

paradigma de programación que viene a innovar la forma de

obtener resultados. Los objetos manipulan los datos de

entrada para la obtención de datos de salida específicos,

donde cada objeto ofrece una funcionalidad especial.

Crear objetos con atributos y métodos para manipularlos.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

LENGUAJES DE PROG.

Un lenguaje de programación es un lenguaje formal

diseñado para realizar procesos que pueden ser llevados a

cabo por máquinas como las computadoras.

Idioma en el que le hablamos a una máquina.

• C++

• C# Unity

• Eiffel

• Java

• Javascript Unity

• Perl

• Python

• Ruby

• Visual Basic .Net

• …

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

CLASES

Una clase es un modelo que define un conjunto de

variables (el estado), y métodos apropiados para operar con

dichos datos (el comportamiento). Cada objeto creado a partir

de la clase se denomina instancia de la clase.

Define un objeto con sus variables y métodos.

class MiClase

{

// Variables

int x, y;

// Métodos

void MiMetodo()

{

// Contenido del método

}

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

VARIABLES I

Una variable está formada por un espacio en el sistema de

almacenaje y un nombre simbólico (un identificador) que está

asociado a dicho espacio. Ese espacio contiene un valor.

Almacenan información.

Tipos de datos (primitivos)

• Entero: int -2, -1, 0, 1, 2…

• Real: float 14.56, -0.27, 3.0…

• Cadena: string “¡hola mundo!”, “123”, “”.

• Booleano (lógico): bool true, false.

Ámbito de una variable

• Global Privada (private)

• Global Pública (public)

• Local

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

VARIABLES II

Declaración e inicialización

• bool test;

• int x = 1;

• float y = x;

• string cad = “Prueba de cadena de texto”;

Valores por defecto (variables globales)

• bool false

• int 0

• float 0.0

• string “”

Manipular variables (+,-,*,/,%,==,>,<,>=,<=, &&, ||)

• x = x + 1;

• y = (x / 2) * (y – 5)

• cad = “Encadena ” + cad + “ con ” + cad2;

• test = (x > 1) && (y <= 5);

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

MÉTODOS I

Un método consiste de una serie de sentencias para llevar

a cabo una acción, un juego de parámetros de entrada que

regularán dicha acción con un posible valor de salida (o valor

de retorno) de algún tipo.

Nos permiten manipular las variables y/o devolver un valor.

Ámbito de un método

• Privado (private)

• Público (public)

Valor devuelto

• void metodoSinDevolver() {

// acciones

}

• int metodoDevuelveEntero(){

// acciones

return n; Siendo „n‟ de tipo int.

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

MÉTODOS II

Parámetros un parámetro es un tipo de variable que es

recibida por un método.

• public void Test()

• public void Test(int x)

• public void Test(float x, int y)

• public int Suma(int x, int y)

• public bool Combo(int x, float y, string s, bool a)

Variables locales en métodos

public void Test(int x){

int y = x; // Variable local

}

Métodos llaman a otros métodos

public void Test2(){

int z = 4;

Test(15);

Test(z);

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

EJEMPLO DE CLASE

public class Ejemplo

{

public int posX, posY;

private bool test;

private void Modificar(int n)

{

posX = posX - n;

posY = posY * (n-1);

test = posX <= posY;

}

public int Sumar()

{

int temp = posX + posY;

Modificar(2);

return temp;

}

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

CLASES MONOBEHAVIOUR

En Unity las clases pueden extender (herencia) de

Monobehaviour para que entren dentro de la lógica de

funcionamiento del motor.

Monobehaviour transforma una clase en un script de Unity.

La clase se transforma en un comportamiento y/o una

característica del objeto.

public class ClaseEnUnity : Monobehaviour

{

// Variables Globales

// Métodos propios de Monobehaviour

// Otros métodos

}

Usaremos Monodevelop con lenguaje C# para los scripts.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

EJEMPLO MONOBEHAVIOUR

public class Health: Monobehaviour{

public int health;

private int _initialHealth;

void Start(){

_initialHealth = health;

TakeDamage(25);

Debug.Log(“Health: ” + GetHealthRatio + " %");

}

public void TakeDamage(int damage){

health = health – damage;

Debug.Log(“Character attacked ” + damage);

}

public float GetHealthRatio(){

return ((float)health/_initialHealth) * 100;

}

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

SENTENCIA IF

Se utiliza para comprobar una condición. Si la condición es

verdadera entonces se procesa un bloque de sentencias

(bloque if), sino se procesa otro bloque de sentencias

alternativas (llamado bloque else).

Comprueba condiciones para ejecutar un trozo de código.

if(condición)

{

// Bloque if

}

else if (condición) opcional

{

// Bloque else if

}

else opcional

{

// Bloque else

}

if(x > 1)

{

Debug.Log(1);

}

else if (x <= -2 || x == 0)

{

Debug.Log(2);

}

else

{

Debug.Log(3);

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

SENTENCIA FOR

Es una sentencia que implementa un bucle capaz de

repetir un grupo de sentencias un número determinado de

veces.

Puede repetir un bloque de código varias veces.

for (int x = valor inicial; condición; incremento)

{

// Bloque for

}

for(int i = 0; i < 10; i ++)

{

Debug.Log(i);

}

for(int i = 10; i >= 0; i - -){}

for(int i = 0; i < 50; i += 10){}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

SENTENCIA SWITCH

Se utiliza para agilizar la toma de decisiones múltiples;

trabaja de la misma manera que lo harían sucesivos if, if else.

Si vas a tener varios “if else” para valores determinados

mejor usar un switch.

switch(variable){

case valor1:

accion1;

break;

case valorN:

accionN;

break;

default: opcional

accionD;

break;

}

switch(x){

case 1:

Debug.Log(“Uno”);

break;

case 2:

case 4:

Debug.Log(“Pares”);

break;

default:

Debug.Log(“Otros”);

break;

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

SENTENCIA WHILE

Ejecuta indefinidamente un bloque de código mientras una

condición sea verdadera.

¡Cuidado con los bucles infinitos!

while(condición)

{

// Bloque while

// Actualizar condición.

}

do{

// Bloque do while

// Actualizar condición.

}while(condicion);

int x;

while(x < 5)

{

Debug.Log(x);

x = x + 1;

}

do{

Debug.Log(x);

x = x + 1;

}while(x < 5);

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

EJEMPLO SENTENCIAS I

public class Health: Monobehaviour

{

public bool invulneravility;

void Start()

{

_initialHealth = health;

TakeDamage(25);

SetInvulneravility(true);

TakeDamage(50);

SetInvulneravility(false);

MultiAttack(10, 4);

}

public void SetInvulneravility(bool enable)

{

invulneravility = enable;

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

EJEMPLO SENTENCIAS II

public void TakeDamage(int damage)

{

if(invulneravility == false)

{

health = health - damage;

Debug.Log(“Character attacked ” + damage);

}

}

public void MultiAttack(int damage, int numAttacks)

{

for(int i = 0; i < numAttacks; i++)

{

TakeDamage(damage);

}

}

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

ENUMERADOS

Proporciona una manera eficaz de definir un conjunto de

constantes integrales con nombre que pueden asignarse a

una variable.

Colecciones de valores que puede tener una variable.

public enum <NombreDelEnum>

{

valor1, valor2, …, valorN

}

public enum Colores

{

Azul, Amarillo, Rojo, Verde

}

Colores color1 = Colores.Azul;

Colores color2 = (Colores) 3;

int n = (int) color1;

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

COMPONENTES

Añadimos un componente a un objeto por cada

característica o comportamiento.

Nos comunicamos desde un componente con otro usando

GetComponent<Class>() si está en el mismo objeto.

public class A : Monobehaviour{

public B b;

void Start()

{

b = GetComponent<B>();

Debug.Log(b.x);

}

}

public class B : Monobehaviour{

public int x;

private int y;

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

EJEMPLO ENUMERADOS I

public class Character: Monobehaviour

{

public enum CharacterRace

{

human, dwarf, elf

}

public string characterName;

public CharacterRace race;

public string GetDescription()

{

return (characterName + " the " + race);

}

}

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

EJEMPLO ENUMERADOS II

public class Health : MonoBehaviour {

void Start(){

Character _character = GetComponent<Character>();

Debug.Log(_character.GetDescription());

switch(_character.race)

{

case Character.CharacterRace.human:

TakeDamage(25);

break;

case Character.CharacterRace.dwarf:

MultiAttack(10, 4);

break;

case Character.CharacterRace.elf:

SetInvulneravility(true);

TakeDamage(50);

break;

}

}

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

PRÁCTICA

Método en Health para recuperar salud.

La raza determina la salud inicial.

Añadir un escudo al personaje que reduce el daño entrante.

Juego de gestión de una ciudad en la que tenemos unos

recursos con los que construimos casas para hacer feliz a

una población que aumenta poco a poco. El objetivo es

alcanzar una felicidad elevada de la población o bien

conseguir mucha riqueza.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

RECURSOS

Componente que gestiona los recursos existentes.

Hay tres recursos: madera, piedra y oro.

Método para actualizar las cantidades de los recursos.

Método para comprobar si hay suficientes recursos.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

EDIFICIOS

Componente que gestiona los edificios de la ciudad.

Almacena el número de casas de la ciudad.

Establece el coste de cada recurso para construir una casa.

Indica si la ciudad tiene o no iglesia.

Método para construir una casa, teniendo en cuenta que si

hay una iglesia las casas cuestan la mitad.

Método para construir una iglesia, teniendo en cuenta que

cuesta el triple que una casa.

Antes de construir un edificio hay que comprobar que se

tienen los recursos necesarios.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

POBLACIÓN

Componente que gestiona la población de la ciudad.

Almacena el número de personas de la ciudad.

Establece la probabilidad de un nuevo nacimiento.

Felicidad con tres niveles: alta, media y baja.

Método para aumentar/disminuir la población.

Método para repoblar la ciudad: por cada 2 ciudadanos hay

una probabilidad (establecida arriba) de aumentar en 1 la

población.

Método para actualizar la felicidad, sabiendo que cada

casa aloja a 4 personas:

• Felicidad alta: Al menos el 80% tiene casa.

• Felicidad media: Al menos el 50% tiene casa.

• Felicidad baja: Menos del 50% tiene casa.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica

CIUDAD

Componente que gestiona la ciudad.

Se comunica con todos los componentes.

Establece el final del juego.

El juego termina en tres casos:

• La felicidad es alta y el oro es superior a 250.

• La felicidad es media y el oro es superior a 500.

• La felicidad es baja, hay una iglesia y el oro es

superior a 750.

Introducción

Temario

Poo

Lenguajes de prog.

Clases

Variables

Métodos

Ejemplo de clase

Clases Monobehaviour

Ejemplo

Monobehaviour

Sentencia IF

Sentencia FOR

Sentencia SWITCH

Sentencia WHILE

Ejemplo sentencias

Enumerados

Componentes

Ejemplo enumerados

Práctica