GithubHelp home page GithubHelp logo

clashofclans's Introduction

War game!

Authors: Gerald Zamora (@geraldzm) & Juan Fletes (@JuanVF)

In this game, you can create and customize as many as six types of characters. Your characters will increase their health, damage, and others as you win levels. You can save your progress and unlock new characters.

The game

Home Configurations Menu game game

clashofclans's People

Contributors

juanvf avatar geraldzm avatar

Stargazers

Royner Oporta avatar  avatar

Watchers

 avatar

Forkers

vynidaulkel

clashofclans's Issues

Bases del juego

  • Implementar lombok en todo el proyecto
  • Mover el main de la clase Game a una clase externa mainWindows donde pondremos los menús principales después
  • Rehacer WindowGame con netbeans (con los JFrame de netbeans)
  • WindowGame debe tener un BorderLayout y el canvas (Objeto Game) en el centro
  • WindowsGame debe tener una barra de menus arriba que luego vamos a usar para las opciones como saltar nivel etc..
  • Implementar el método getArea de la clase IHittable
  • Buscar algún background para el terreno de juego para fin tener algo visual y inspirarnos xd
  • Crear una interfaz IHeuristic que será @FuntionalInterface con el método Point[] getMove(Character characters[][]) esto luego lo usáremos para determinar como movernos en el método move de la interfaz IMove, lo que retorna getMove será el camino al punto que hay que ir

La diferencia entre estas IHeuristic y IMove

IMove :
determinara si hay que moverse o no, en el caso que haya que moverse, le pedirá el camino a IHeuristic y mantendrá ese camino, si durante el trayecto algo se mete en el camino o el objetivo al que se estaba yendo se mueve, se volverá a solicitar un camino a IHeuristic

IHeuristic:
como ya es obvio es el encargado de determinar el camino por ende también el objetivo al que hay que atacar, si no hay nadie a quién atacar se devolverá algo como un null (convención), aquí también definiremos si se ataca al mas cercano o a alguien random, esto influirá directamente en el rendimiento del juego por-supuesto.

  • Crear la clase Barbarian y implementar su heurística

Niveles

Para todos los personajes:

En los métodos levelUp y upgrade(int)

levelUp es el método que se usa para subir de nivel a los personajes con los que el user juega, debe subir todos los atributos (health, ataque, etc) en base al atributo nivel además de sumarle al nivel 1, para todos los personajes tomaremos su nivel maximo como 5, luego de nivel 5 ningún atributo sube. El crecimiento debe ser lineal pero tiene que tener sentido.

upgrade(int) este método se usa para subir el nivel de los enemigos, cuando un juego inicia se recorre todos los enemigos pasándole como parámetro el int que representa el nivel que se va a jugar, lo mismo, debe aumentar los stacks de acuerdo al nivel, como maximo 5, ósea que sí se pasa un 7 se debe tomar como nivel 5. Aquí no se toma en cuenta el atributo nivel

El crecimiento de los personajes del usuario debe ser un poco mayor que el de los enemigos, esto para que el usuario tenga ventaja y no cueste tanto pasar de nivel.

@JuanVF

UI del Juego

  • Home UI
  • Ajustes
  • Elegir Personaje
  • Conexión entre ellas

Ataque

Se había establecido el golpe en 10

crear en el fighter un boolean que indique cuando atacar, al inicio del metodo attack vamos a poner un if con este atributo, la idea es que ataque por segundo, se debe crear igual en la clase fighter un objeto Timer o parecido, cada vez que se ataque este boolean se pondrá en falso y el objeto Timer creará un schedule para dentro del siguiente segundo con la tarea de poner el boolean de nuevo en true.

ya con esto tendrémos bien controlado cada cuanto se ataca, todo esto se debe implementar en fighter luego se sobreescribirá el metodo y usará super para utilizar esta funcionalidad en todos los demas jugadores

Heuristic

  • Por ahora vamos a atacar al primero que encontremos, esto funciona igual para todos -tal vez luego pongamos al mas cercano o algo así- ya que funciona para todos igual el método findTarget() de ContactWarrior debería estar implementado en Fighter

  • Para no recorrer la lista hittable 2 veces se debe cambiar lo que retorna getArea del GameBoard por una ArrayList<Warrior>

Bug

8ac3d88 Hay un bug en este commit que aveces, cuando selecciono un personaje para jugar, me aparece otro que no es. en la versión pasada eso servia bien.

Target

18de093
Recuerde meter el target al .gitignore, va a modifica mi environment si lo descargo. Puede meter el target al .gitignore y volver a subirlo pero sin el target pofa, no quiero que mi netbeans explote 👍

Lista de cosas que faltan

  • Mostrar los stacks a la hora de agregar los personajes con los que se va a jugar
  • Filtrar los personajes que se pueden agregar dependiendo del nivel
  • Cuando se gana, el usuario tiene que subir de nivel junto con sus personajes
  • Permitirle al usuario seleccionar el nivel que quiere jugar, puede seleccionar todos los que ya haya ganado
  • Arreglar el sonido en linux
  • quitar el resize de las ventanas que lo tienen
  • Implementar que se muestre una imagen dependiendo de lo que este haciendo
  • tener una lógica en que cosas salen por nivel (enemigos)
  • tener una lógica de cuánto aumentan los stacks por nivel (enemigos, amigos)
  • Hacer que los botones del GameWindow sirvan
  • Animación Dragon
  • Animación Distancia
  • Animación Cañón
  • Animación Torre
  • Animación Mortero
  • Animación anti-air
  • Animación Bomba
  • Permitir guardar partida
  • Documentación
  • Animacion cuando gane o pierda

@JuanVF

Estructura de herencias

  • Crear las relaciones entre cada clase
  • Determinar el árbol de herencia
  • Determinar cuales son las clases esenciales que van a existir
  • Determinar cuales son las interfaces esenciales que van a existir

BEAST

Hay un bug con el beast y no sé que es, no esta pegando a distancia, parece un bárbaro.

getArea

Implementar los métodos IHittable[][] getArea que se encuentran en GameBoard dependiendo de sus diferentes parámetros.
Analizar las implicaciones de meter la interfaz IHeuristic como un método abstracto de Warrior

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.