Programación Orientada a Objetos (Tower defense - kingdom rush)
Moderator: julianmartinez16
-
kriptonauta
- Posts: 35
- Joined: Tue Jan 22, 2019 6:36 am
Post
by kriptonauta » Wed Aug 07, 2019 11:39 pm
Sprint Semana 4
De: lunes 5 de Agosto
Hasta: viernes 9 de Agosto
¿Qué hemos hecho?
- Continuamos con la programación de las torres (Tiroteo de la torre).(Javier)
- Hubo un pequeño avance en la integración del diseño del código de la torre y el diseño dentro de unity (Declaración y encapsulamiento de variables)
Code: Select all
public class Torre : MonoBehaviour{
private int precio;
private int precio_de_mejora;
private int precio_al_destruir;
private int dano_proyectil;
private Collider rango_de_accion;
private float tiempo_de_disparo;
private float tiempo_de_mejora;
private bool efecto_del_disparo;
public int Precio { get => precio; set => precio = value; }
public Collider Rango_de_acción { get => rango_de_accion; set => rango_de_accion = value; }
public float Tiempo_de_disparo { get => tiempo_de_disparo; set => tiempo_de_disparo = value; }
public float Tiempo_de_mejora { get => tiempo_de_mejora; set => tiempo_de_mejora = value; }
public bool Efecto_del_disparo { get => efecto_del_disparo; set => efecto_del_disparo = value; }
public int Daño_proyectil { get => dano_proyectil; set => dano_proyectil = value; }
public void Detectar()
{
}
public void Disparar()
{ }
public void Generar()
{
}
public void Mejorar()
{ }
public void Destruir()
{
}
}
- Se avanzo con el diseño de las torres (Obelisco y torre Tesla) (Javier)


¿Qué vamos a hacer?
- Programación de torres (Daño y selección de enemigos)
- Correcciones en el desplazamiento de los enemigos.
¿Qué dificultades hemos tenido?
- Integración correcta de los modelos 3D para el juego y el programa
Last edited by
kriptonauta on Tue Aug 27, 2019 5:23 am, edited 6 times in total.
Javier Santiago Arango
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos
-
Ivan19
- Posts: 8
- Joined: Fri Jul 19, 2019 6:07 am
Post
by Ivan19 » Fri Aug 16, 2019 6:32 am
Sprint semana #5
De: Lunes 12 de agosto
Hasta:Viernes 16 de agosto
¿Que se hizo?
- Se creo la barra de vida de la puerta principal junto con un sistema que detecte las colisiones de los enemigos.
- Se estableció que cada vez que un enemigo colisione con el objeto la flotante de vida disminuya y cuando esta llegue a 0 se cargue una nueva escena.
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class vida : MonoBehaviour
{
[SerializeField] Slider healthbar;
public string htht = "";
[SerializeField] float Daño = 30f;
public float heath;
// Start is called before the first frame update
void Awake()
{
heath = 100f;
}
void Start()
{
}
// Update is called once per frame
void Update()
{
healthbar.value = heath;
Debug.Log(heath);
if (heath <= 0)
{
SceneManager.LoadScene(htht);
}
}
public void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Enemigo"))
{
heath -= Daño;
}
}
}
- Se avanzo el diseño estético del mapa
¿Que se va a hacer?
- Mejoras en el sistema de disparo
Last edited by
Ivan19 on Fri Aug 30, 2019 6:24 am, edited 2 times in total.
Iván Felipe Osorio Ortega
programacion y diseño orientado a objetos
2019 02
-
Ivan19
- Posts: 8
- Joined: Fri Jul 19, 2019 6:07 am
Post
by Ivan19 » Fri Aug 23, 2019 9:19 pm
Sprint semana -#6
De: 19 de agosto
Hasta: 23 de agosto
¿Qué se hizo?
- Se empezó a crear un sistema de puntaje tomando de base el siguiente vídeo
- A partir del video anterior se extrajo siguiente script:
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class gamescore2 : MonoBehaviour
{
public static int score = 0;
public string scorestring = "Score";
public Text textscore;
public static gamescore2 gamecontroler;
void Awake()
{
gamecontroler = this;
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (textscore != null)
{
textscore.text = scorestring + score.ToString();
}
}
}
¿Qué se va a hacer?
- Diseñar la clase enemigo.
- Trabajar con las mecánicas de disparo de torres.
¿Qué problemas hemos tenido?
- Problemas de interacción con la camara principal de juego.
- Los enemigos no responden correctamente a la interacción con los waypoints, se traban.
Last edited by
Ivan19 on Fri Aug 30, 2019 6:27 am, edited 5 times in total.
Iván Felipe Osorio Ortega
programacion y diseño orientado a objetos
2019 02
-
juan.mira1
- Posts: 8
- Joined: Tue Jul 16, 2019 6:25 am
Post
by juan.mira1 » Tue Aug 27, 2019 5:13 am
Sprint semana #6
De: 19 de agosto
Hasta: 23 de agosto
¿Qué hemos hecho?
- Se ha avanzado con el código del Punto de Aparición de los Enemigos.(Juan José)
Code: Select all
public Transform enemyPrefab;
public Transform spawnPoint;
public float timeBetweenWaves = 5f;
private float countdown = 2;
private int waveNumber = 1;
void Update()
{
if (countdown<=0f)
{
SpawnWave();
countdown = timeBetweenWaves;
}
countdown -= Time.deltaTime;
}
void SpawnWave()
{
for (int i = 0; i < waveNumber; i++)
{
SpawnEnemy();
}
waveNumber++;
}
void SpawnEnemy()
{
Instantiate(enemyPrefab, spawnPoint.position,spawnPoint.rotation);
}
¿Qué vamos a hacer?
- Diseñar la clase enemigo.
- Trabajar con las mecánicas de disparo de torres.
¿Qué dificultades tuvimos?
- Errores con la vista de la cámara de juego.
- Problemas con el spawn de enemigos.
Last edited by
juan.mira1 on Fri Aug 30, 2019 5:21 am, edited 3 times in total.
Juan José Mira Álvarez
Programación y Diseño Orientado a Objetos
2019-2
"Life ... uh, finds a way".
Dr. Ian Malcolm
-
xacarana
- Site Admin
- Posts: 1213
- Joined: Fri Jan 15, 2016 6:13 pm
Post
by xacarana » Tue Aug 27, 2019 6:20 am
El avance de la semana 6 fue muy pobre, además no se esta haciendo la planeación del sprint de la semana con las asignaciones a cada integrante.

Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez
-
Ivan19
- Posts: 8
- Joined: Fri Jul 19, 2019 6:07 am
Post
by Ivan19 » Fri Aug 30, 2019 6:35 am
Sprint Semana #7
De: Lunes 26 de Agosto.
Hasta: Viernes 30 de Agosto.
¿Qué se hizo?
- Trabajamos solucionando el error que se presentaba con la cámara de juego.
¿Qué se va a hacer?
- Corección de los waypoint para denotar un movimiento más fluido.
- Inplementacion de un sistema de monedas.
- Correción del punto de spawn.
¿Qué problemas hemos tenido?
Last edited by
Ivan19 on Tue Sep 10, 2019 7:05 am, edited 1 time in total.
Iván Felipe Osorio Ortega
programacion y diseño orientado a objetos
2019 02
-
kriptonauta
- Posts: 35
- Joined: Tue Jan 22, 2019 6:36 am
Post
by kriptonauta » Tue Sep 10, 2019 5:31 am
Sprint Semana #8
Desde el lunes 1 de Septiembre
Hasta el viernes 6 de Septiembre
¿Qué se hizo?
- Se crearon los objetos de la clase Torre y se asignaron todos los valores de sus variables básicas (Javier)
-Torre Tesla
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Torre_tesla: Torre
{
public Torre_tesla()
{
Precio = 150;
Precio_al_destruir = 100;
Precio_de_mejora = 300;
Tiempo_de_disparo = 3;
Tiempo_de_mejora = 1;
Dano_proyectil = 2;
}
}
-Torre Vampira
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Torre_vampira: Torre
{
public Torre_vampira()
{
Precio = 150;
Precio_al_destruir = 100;
Precio_de_mejora = 300;
Tiempo_de_disparo = 2;
Tiempo_de_mejora = 1;
Dano_proyectil = 2;
}
}
-Torre Marciana
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Torre_marciana:Torre
{
public Torre_marciana()
{
Precio = 150;
Precio_al_destruir = 100;
Precio_de_mejora = 350;
Tiempo_de_disparo = 2;
Tiempo_de_mejora = 1;
Dano_proyectil = 3;
}
}
-ObeliscoCode: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Obelisco: Torre
{
public Obelisco()
{
Precio = 100;
Precio_al_destruir = 50;
Precio_de_mejora = 200;
Tiempo_de_disparo = 2;
Tiempo_de_mejora = 1;
Dano_proyectil = 2;
}
}
-Árbol del pantanoCode: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Arbol: Torre
{
public Arbol()
{
Precio = 200;
Precio_al_destruir = 100;
Precio_de_mejora = 300;
Tiempo_de_disparo = 3;
Tiempo_de_mejora = 1;
Dano_proyectil = 1;
}
}
-CementerioCode: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Cementerio: Torre
{
public Cementerio()
{
Precio = 200;
Precio_al_destruir = 100;
Precio_de_mejora = 300;
Tiempo_de_disparo = 3;
Tiempo_de_mejora = 1;
Dano_proyectil = 1;
}
}
¿Qué se va a hacer?
- Avanzar significativamente en las distintas acciones que puede realizar una torre
¿Qué problemas hemos tenido?
Last edited by
kriptonauta on Tue Sep 10, 2019 6:16 am, edited 5 times in total.
Javier Santiago Arango
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos
-
kriptonauta
- Posts: 35
- Joined: Tue Jan 22, 2019 6:36 am
Post
by kriptonauta » Tue Sep 10, 2019 5:31 am
Sprint Semana #8
Desde el lunes 1 de Septiembre
Hasta el viernes 6 de Septiembre
¿Qué se hizo?
- Se programó una idea preliminar de lo que será la clase del enemigo (Javier)
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemigo : MonoBehaviour
{
private int vida;
private float velocidad_de_mov;
private int dano_final;
private int dano_a_soldados;
private bool magia;
public int Vida { get => vida; set => vida = value; }
public float Velocidad_de_mov { get => velocidad_de_mov; set => velocidad_de_mov = value; }
public int Dano_final { get => dano_final; set => dano_final = value; }
public int Dano_a_soldados { get => dano_a_soldados; set => dano_a_soldados = value; }
public bool Magia { get => magia; set => magia = value; }
Enemigo() { }
public void Atacar(){ }
public void Usar_magia() { }
}
- Se programó cada una de las clases de los enemigos con sus respectivas variables
-Aldeano
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Aldeano : Enemigo
{
public Aldeano()
{
Vida = 8;
Velocidad_de_mov=1;
Dano_final=1;
Dano_a_soldados=1;
Magia=false;
}
}
-Sabueso
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sabueso : Enemigo
{
public Sabueso()
{
Vida = 4;
Velocidad_de_mov = 3;
Dano_final = 2;
Dano_a_soldados = 2;
Magia = false;
}
}
-Monje
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Monje : Enemigo
{
public Monje()
{
Vida = 16;
Velocidad_de_mov = 1;
Dano_final = 1;
Dano_a_soldados = 0;
Magia = true;
}
}
-Horda
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Horda : Enemigo
{
public Horda()
{
Vida = 24;
Velocidad_de_mov = 2;
Dano_final = 3;
Dano_a_soldados = 3;
Magia = false;
}
}
-Panadero
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Panadero : Enemigo
{
public Panadero()
{
Vida = 32;
Velocidad_de_mov = 1;
Dano_final = 5;
Dano_a_soldados = 3;
Magia = false;
}
}
¿Qué se va a hacer?
- Avanzar significativamente en las distintas acciones que puede realizar un enemigo
¿Qué problemas hemos tenido?
Last edited by
kriptonauta on Tue Sep 10, 2019 7:09 am, edited 4 times in total.
Javier Santiago Arango
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos
-
kriptonauta
- Posts: 35
- Joined: Tue Jan 22, 2019 6:36 am
Post
by kriptonauta » Tue Sep 10, 2019 7:08 am
Sprint Semana #9
Desde el lunes 9 de Septiembre
Hasta el viernes 13 de Septiembre
¿Qué se hizo?
- Diseño final del suelo de los 3 niveles (Javier)

- HUD y correcciones movimiento enemigos (Juan José)
- Menú de pausa (Ivan), en el que se esta trabajando en un sistema para la implementación de un menú de pausa para el cual se usara el siguiente script:
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class pausemenu : MonoBehaviour
{
public static bool GameIsPause = false;
public GameObject pauseMenuUI;
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (GameIsPause)
{
Resume();
}
else
{
Pause();
}
}
}
void Resume()
{
pauseMenuUI.SetActive(false);
Time.timeScale = 1f;
GameIsPause = false;
}
void Pause()
{
pauseMenuUI.SetActive(true);
Time.timeScale = 0f;
GameIsPause = true;
}
}
¿Qué se va a hacer?
- Reparar el sistema de disparo de las torres
¿Qué problemas hemos tenido?
Javier Santiago Arango
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos
-
kriptonauta
- Posts: 35
- Joined: Tue Jan 22, 2019 6:36 am
Post
by kriptonauta » Mon Sep 16, 2019 10:34 pm
Sprint Semana #9
Desde el lunes 9 de Septiembre
Hasta el viernes 13 de Septiembre
¿Qué se hizo?
- Diseño final del suelo de los 3 niveles (Javier)


- Modificaciones en el Wave Spawner, que permiten personalizar cúantos enemigos y qué enemigos salen por ronda. Además de que, hasta que todos los enemigos se hayan muerto, no saldrá la otra ronda. (Juan José)
Code: Select all
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class WaveSpawner : MonoBehaviour {
public static int EnemiesAlive = 0;
public Wave[] waves;
public Transform spawnPoint;
public float timeBetweenWaves = 5f;
private float countdown = 2f;
public Text waveCountdownText;
public GameManager gameManager;
private int waveIndex = 0;
void Update ()
{
if (EnemiesAlive > 0)
{
return;
}
if (waveIndex == waves.Length)
{
gameManager.WinLevel();
this.enabled = false;
}
if (countdown <= 0f)
{
StartCoroutine(SpawnWave());
countdown = timeBetweenWaves;
return;
}
countdown -= Time.deltaTime;
countdown = Mathf.Clamp(countdown, 0f, Mathf.Infinity);
waveCountdownText.text = string.Format("{0:00.00}", countdown);
}
IEnumerator SpawnWave ()
{
PlayerStats.Rounds++;
Wave wave = waves[waveIndex];
EnemiesAlive = wave.count;
for (int i = 0; i < wave.count; i++)
{
SpawnEnemy(wave.enemy);
yield return new WaitForSeconds(1f / wave.rate);
}
waveIndex++;
}
void SpawnEnemy (GameObject enemy)
{
Instantiate(enemy, spawnPoint.position, spawnPoint.rotation);
}
}
¿Qué se va a hacer?
- Reparar el sistema de disparo de las torres
¿Qué problemas hemos tenido?
Last edited by
kriptonauta on Tue Sep 17, 2019 6:16 am, edited 3 times in total.
Javier Santiago Arango
– La existencia es azarosa. No tiene ningún patrón seguro que podamos imaginar después de haberlo observado fijamente por demasiado tiempo.
Programación orientada a objetos