Calumnia - RavenEye

Programación Orientada a Objetos (Tower defense - kingdom rush)

Moderator: julianmartinez16

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #4.1

Post by David Ballesteros V » Thu Feb 21, 2019 10:50 pm

Sólo responderemos el ¿Qué vamos a hacer? dado a que lo que hemos hecho, ha sido lo mismo del anterior post dado a las mismas dificultades, esperamos este fin de semana desatrazarnos de todas las tareas pendientes para retomar la próxima semana de buena manera.

Image
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #5

Post by David Ballesteros V » Tue Feb 26, 2019 10:36 pm

¿QUÉ HEMOS HECHO?
Se ha estado trabajando en programación ya que en cuanto a gráficas no se ha podido invertir el tiempo necesario, así que ya tenemos el código de las monedas, vida de la base y del menú de inicio:

-CÓDIGO MONEDAS:

Code: Select all

public class Monedas : MonoBehaviour {

    public GameObject centenas, decenas, unidades;
    private Animator ce, de, un;
    private string[] estado = { "Estado_0", "Estado_1", "Estado_2", "Estado_3", "Estado_4", "Estado_5", "Estado_6", "Estado_7", "Estado_8", "Estado_9" };
    private float tiempoLimite = 60f;
    private float tiempo = 0f;
    private int dinero = 0;

    public int Dinero
    {
        get
        {
            return dinero;
        }

        set
        {
            dinero = value;
        }
    }

    // Inicializacion
    void Start()
    {
        ce = centenas.GetComponent<Animator>();
        de = decenas.GetComponent<Animator>();
        un = unidades.GetComponent<Animator>();



    }

    // Update is called once per frame
    void Update()
    {
        tiempo++;
        if (tiempo > tiempoLimite)
        {
            dinero++;
            ActualizadorContador(dinero);
            tiempo = 0;
        }

    }
    public void ActualizadorContador(int numero)
    {
        int unidades = numero % 10;
        int decenas = numero % 100 - unidades;
        int centenas = numero % 1000 - decenas;
        Debug.Log("numero " + numero + " centenas " + centenas / 100 + " decenas " + decenas / 10 + " unidades " + unidades);

        decenas = decenas / 10;
        centenas = centenas / 100;

        if (numero > 9)
        {
            de.Play(estado[decenas]);
        }
        else
        {
            de.Play(estado[0]);
        }

        if (numero > 99)
        {
            ce.Play(estado[centenas]);
        }
        else
        {
            ce.Play(estado[0]);
        }
        un.Play(estado[unidades]);

    }

}
-CÓDIGO VIDA DE LA BASE:

Code: Select all

public class Muerte : MonoBehaviour {

    private const string ENEMIGO = "Enemigo";
    private int vidas = 100;

    public int Vidas
    {
        get
        {
            return vidas;
        }

        set
        {
            vidas = value;
        }
    }


    void OnTriggerEnter2D(Collider2D otro)
    {
        if (otro.gameObject.tag.Equals(ENEMIGO))
        {
            
            --vidas;
            Destroy(otro.gameObject);
        }
    }

}
¿QUÉ VAMOS A HACER?
Recuperar el ritmo en cuanto a visuales para poder implementar todos los códigos.

¿QUÉ DIFICULTADES HEMOS TENIDO?
Retraso en visuales, ya que el encargado se ha visto saturado por las demás materias.

Image
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #5.1

Post by David Ballesteros V » Thu Feb 28, 2019 11:35 pm

-¿QUÉ HEMOS HECHO?

-¿QUÉ VAMOS A HACER?

-¿QUÉ DIFICULTADES HEMOS TENIDO?
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
xacarana
Site Admin
Posts: 1140
Joined: Fri Jan 15, 2016 6:13 pm

Re: Calumnia - RavenEye

Post by xacarana » Tue Mar 12, 2019 12:06 pm

Image

La publicación del 28 esta incompleta, no publican desde febrero.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #6 / SPRINT #4

Post by David Ballesteros V » Tue Mar 12, 2019 11:16 pm

ACTIVIDAD #4

-Inició: Feb 17
-Finalizó: Marzo 11

-Posicionamiento de Torres y Cambio de Escena -Kateryn Pérez -Dif: 2
-Código de Monedas -Miguel Vargas -Dif: 3
-Código Vida de Base -Miguel Vargas -Dif: 5
-Código de Umbral -Miguel Vargas -Dif: 2
-Botones de Inicio -David Ballesteros -Dif: 5

¿QUÉ HEMOS HECHO?
Dado a que ya tenemos gran parte de la mecánica básica del juego hemos decidido empezar a implementar elementos como el menú de inicio con su respectivo cambio de escena.

Botón de inicio sin presión/con presión:
ImageImage

Image

Código cambio de escena:

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class LevelManager : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

    public void cargaScene(string nombreScene)
    {
        SceneManager.LoadScene(nombreScene); //Abre la escena del parametro 
    }
}
Código Posicionamiento de Torres (habiamos olvidarlo montarlo la vez pasada):

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LogicaTorres : MonoBehaviour {

    // Use this for initialization
    public GameObject torre;

    void OnMouseDown()
    {
        //Debug.Log("Test");
        GameObject temp;
        Vector3 pos = this.transform.position;
        temp = Instantiate(torre);
        temp.transform.position = pos;
        temp.layer = 5;
        Destroy(this.gameObject);
    }
}
Código Umbral de ataque de torres:

Code: Select all

using UnityEngine;
using System.Collections;

public class Torres : MonoBehaviour {
    public GameObject enemigo;
    private float UmbrualdeDistancia = 2;
    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        float dist = (enemigo.transform.position - this.transform.position).magnitude;
        if (dist <= UmbrualdeDistancia)
        {
            Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.green);
        }

    }
}
¿QUÉ VAMOS A HACER?
Montar evidencia de todos los códigos aplicados con sus respectivos apoyos gráficos y ponernos al día.

¿QUÉ DIFICULTADES HEMOS TENIDO?
Hemos estado involucrados en proyectos de otros cursos con plazo de entrega mucho más cercanos.

Image
Last edited by David Ballesteros V on Tue Apr 02, 2019 3:44 am, edited 2 times in total.
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #6.1

Post by David Ballesteros V » Thu Mar 14, 2019 11:33 pm

¿QUÉ HEMOS HECHO?
Se estuvo implementando todo el código que se tiene con sprites prueba mientras los originales estan listos.

Image

Se implementó el código de disparo y monedas, y se hicieron pequeños cambios en el de torres y las oleadas.

-Código de disparo:

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Flechas : MonoBehaviour {
    private GameObject objetivo;
    private float disparoLife = 2f;
    private float speed = 5f;
   
    private const string ENEMIGO = "Enemigo";
    // Use this for initialization
    void Start () {
        
	}
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag.Equals(ENEMIGO))
        {
            Debug.Log("Ataco al enemigo");
            Destroy(this.gameObject);
        }
    }
    public void ActivarFlecha(Torres torre)
    {
        objetivo = torre.Enemigo;
    }
    // Update is called once per frame
    void Update () {
        
        Vector3 direccion;
       
            if (objetivo != null)
            {
                direccion = objetivo.transform.position - this.transform.position;
                this.transform.position += speed * direccion * Time.deltaTime;
                Destroy(this.gameObject, disparoLife);

            }

	}
}
-Código de oleadas:

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Oleadas : MonoBehaviour {
    public static ArrayList enemigos = new ArrayList();
    [SerializeField]
    private GameObject enemigo1;
    [SerializeField]
    private GameObject enemigo2;
    [SerializeField]
    private Transform spawn;
    private int waves = 2;
    private int contador = 0;

    void Oleada1()
    {
        GameObject temp;
        GameObject temp2;
        Vector3 pos_inicial = spawn.transform.position;
        Vector3 incremento = new Vector3(0,5); 
        for(int i =0; i<4;i++)
        {
            temp = Instantiate(enemigo1, pos_inicial + incremento, Quaternion.identity);
            pos_inicial = temp.transform.position;
            enemigos.Add(temp);
            if (i>=2)
            {
                temp2 = Instantiate(enemigo2, pos_inicial + incremento, Quaternion.identity);
                pos_inicial = temp2.transform.position;
                enemigos.Add(temp2);
            }

        }

    }
    void Oleada2()
    {
        GameObject temp;
        GameObject temp2;
        Vector3 pos_inicial = spawn.transform.position;
        Vector3 incremento = new Vector3(0, 5);
        for (int i = 0; i < 6; i++)
        {
            temp = Instantiate(enemigo1, pos_inicial + incremento, Quaternion.identity);
            pos_inicial = temp.transform.position;
            enemigos.Add(temp);
            if (i >= 3)
            {
                temp2 = Instantiate(enemigo2, pos_inicial + incremento, Quaternion.identity);
                pos_inicial = temp2.transform.position;
                enemigos.Add(temp2);
            }

        }

    }

	IEnumerator spawnOleadas()
    {
        contador++;
        Debug.Log("Empieza la oleada:"+contador);


        if (contador == 1)
        {
            Oleada1();
            yield return new WaitForSeconds(2f);
        }
        else if(contador==2)
        {
            Oleada2();
            yield return new WaitForSeconds(2f);
        }
    }
	
	// Update is called once per frame
	void Update () {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            if(contador<=waves)
            {
                StartCoroutine(spawnOleadas());
            }
            else
            {
                StopCoroutine(spawnOleadas());
            }
            
        }
        
	}
}
-Código de torres:

Code: Select all

using UnityEngine;
using System.Collections;

public class Torres : MonoBehaviour {
    private GameObject enemigo;
    private float UmbrualdeDistancia = 2.2f;
    [SerializeField]
    private GameObject disparo;
    private static float seg;

    public GameObject Enemigo
    {
        get
        {
            return enemigo;
        }

        set
        {
            enemigo = value;
        }
    }

    void Start()
    {
        Torres.seg=25f;
    }
    GameObject BuscarEnemigos()
    {
        ArrayList objetivos = Oleadas.enemigos;
        GameObject temp;
        foreach(Object item in objetivos)
        {
            temp = (GameObject)item;
            if (Vector3.Distance(temp.transform.position, this.transform.position)<UmbrualdeDistancia)
            {
                return temp;
            }
        }
        return null;
    }
    void Disparar()
    {
        GameObject obj = Instantiate(disparo, this.transform.position, Quaternion.identity);
        Flechas flecha = obj.GetComponent<Flechas>();
        flecha.ActivarFlecha(this);
    }
    
    // Update is called once per frame
    void Update()
        
    {
        seg += 1 + Time.deltaTime;
        Enemigo = BuscarEnemigos();
        if(Torres.seg>25f)
        {
            Torres.seg = 0f;
            Debug.Log("Entro");

            if (Enemigo != null)
            {
                Disparar();
                Debug.DrawLine(this.transform.position, enemigo.transform.position, Color.green);

            }
        }
        

    }
}
¿QUÉ VAMOS A HACER?
Se implementará la compra de torres, vida de enemigo y de la base.

¿QUÉ DIFICULTAD HEMOS TENIDO?
No hemos tenido inconvenientes, sólo algo de retraso en cuando a arte.

Image
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #7

Post by David Ballesteros V » Tue Mar 19, 2019 10:58 pm

¿QUÉ HEMOS HECHO?
Se ha empezado a trabajar más que todo en la parte gráfica, se han estado realizando algunos props de escenarios para poder así tener los niveles completos.

-Props escenario lvl 1; casa, bebedero, leña, bloque de paja.
ImageImage
ImageImage

¿QUÉ VAMOS A HACER?
Incorporaremos la torre #1 y el escenario, además empezaremos a trabajar en la interfaz.

¿QUÉ DIFICULTADES HEMOS TENIDO?
Por el momento no hemos vuelto a tener inconvenientes.

Image
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #7.1

Post by David Ballesteros V » Thu Mar 21, 2019 11:14 pm

¿QUÉ HEMOS HECHO?
No hemos hecho muchos avances, pero se realizó el código de la vida de enemigos de manera general:

-Código general de vida de enemigos:

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Muerte_Enemigos : MonoBehaviour
{
    private int vida_enemigo=20;
    private const string FLECHA = "Flecha";

    public int Vida_enemigo
    {
        get
        {
            return vida_enemigo;
        }

        set
        {
            vida_enemigo = value;
        }
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.gameObject.tag.Equals(FLECHA))
        {
            vida_enemigo = vida_enemigo - 3;
            if(vida_enemigo==0)
            {
                Destroy(this.gameObject);
            }
        }
    }
}
¿QUÉ VAMOS A HACER?
Vamos a empezar a dejar un poco de lado la programación para dedicarnos en programación, arreglar el código de la vida de enemigos con clases abstractas y arreglar la compra de torres.

¿QUÉ DIFICULTADES HEMOS TENIDO?
No son dificultades pero si se ha pospuesto mucho la parte gráfica y no se ha podido llegar al código de la compra de torres.

Image
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #8 / SPRINT #5

Post by David Ballesteros V » Tue Mar 26, 2019 11:23 pm

ACTIVIDAD #5

Inició: Mar 13
Finalizó:Mar 25

-Código Oleadas: -Miguel Vargas -Dif: 3
-Código Torre y Vida Enemigo: -Miguel Vargas -Dif: 3
-Código Torre#2 -Miguel Vargas -Dif: 4
-Torres y Props de Escenario: -David Ballesteros -Dif: 3

¿QUÉ HEMOS HECHO?
Se realizaron las dos primeras torres, implementamos la barra de selección de torre y creamos un inicializador de oleadas.

-Torre#1 Arqueros:
Image

-Torre#2 Iglesia:
Image

Image
Image

-Código torre #2:

Code: Select all

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Iglesia : MonoBehaviour
{
    [SerializeField]
    private GameObject aura;
    [SerializeField]
    private Transform creacion;
    [SerializeField]
    private float tiempo_aura;
    public static int seg;
    void Start()
    {
        Iglesia.seg = 700;
    }

    
    void Update()
    {
        seg = 1 +seg;
        Debug.Log(seg);
        if(Iglesia.seg>700)
        {
            Iglesia.seg = 0;
            GameObject crear_aura = Instantiate(aura, creacion.position, creacion.rotation);
            Destroy(crear_aura.gameObject, tiempo_aura);
        }
    }
}
¿QUÉ VAMOS A HACER?
A hacer mejoras en algunas cosas como la torre"2, las animaciones, el mapa e interfaz.

¿QUÉ DIFICULTADES HEMOS TENIDO?
Ninguna relevante por el momento.

Image
Last edited by David Ballesteros V on Tue Apr 02, 2019 3:51 am, edited 1 time in total.
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

User avatar
David Ballesteros V
Posts: 83
Joined: Fri Jul 22, 2016 11:04 am

WEEKLY MEETING #8.1

Post by David Ballesteros V » Thu Mar 28, 2019 11:12 pm

¿QUÉ HEMOS HECHO?
Se han ultimado detalles artísticos como la torre#3 y su ataque,el nivel #1 en su totalidad y los enemigos 2 y 3.

-Torre#3/Ataque
ImageImage

-Nivel#1:
Image

-Enemigos 1, 2 y 3.(Montados en 12fps)
ImageImageImage

¿QUÉ VAMOS A HACER?
Se implementará toda la parte artística en unity.

¿QUÉ DIFICULTADES HEMOS TENIDO?
Ninguna grave por el momento, retrazo en entrega de compra de torres.

Image
Last edited by David Ballesteros V on Tue Apr 02, 2019 3:06 am, edited 4 times in total.
David Ballesteros Villa
Fundamentos De Programación - P.O.O

-Contacto:
Correo: Personal: dsktod@gmail.com Institucional: david.ballesteros@upb.edu.co
Redes: www.instagram.com/davidballev

Post Reply