curso de programación desde cero con...
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