Skip to content
Snippets Groups Projects
SimpleBattle.java 2.49 KiB
Newer Older
Joseph Walton-Rivers's avatar
Joseph Walton-Rivers committed
package battle;

import asteroids.Action;
import asteroids.GameObject;
import math.Vector2d;

import java.awt.*;
import java.util.ArrayList;

import static asteroids.Constants.bg;
import static asteroids.Constants.size;

/**
 * Created by simon lucas on 10/06/15.
 *
 *  Aim here is to have a simple battle class
 *  that enables ships to fish with each other
 *
 *  Might start off with just two ships, each with their own types of missile.
 *
 *
 *
 */

public class SimpleBattle {

    // play a time limited game with a strict missile budget for
    // each player
    static int nMissiles = 100;
    static int nTicks = 1000;
    static int pointsPerKill = 10;

    ArrayList<BattleController> controllers;

    ArrayList<GameObject> objects;
    ArrayList<PlayerStats> stats;

    BattleController b1, b2;
    NeuroShip s1, s2;
    BattleController p1, p2;

    public SimpleBattle(NeuroShip s1, NeuroShip s2) {
        this.objects = new ArrayList<>();
        this.stats = new ArrayList<>();
        this.s1 = s1;
        this.s2 = s2;
    }

    public int playGame(BattleController p1, BattleController p2) {
       return 0;
    }

    public void update() {
        // get the actions from each player

        // apply them to each player's ship, taking actions as necessary


        Action a1 = p1.getAction(this, 0);
        Action a2 = p2.getAction(this, 1);

        // now apply them to the ships

        s1.update(a1);
        s2.update(a2);

        // and fire any missiles as necessary
        if (a1.shoot) fireMissile(s1.s, s1.d, 0);
        if (a2.shoot) fireMissile(s2.s, s2.d, 1);

        // here need to add the game objects ...

    }

    public void fireMissile(Vector2d s, Vector2d d, int playerId) {
        // need all the usual missile firing code here

    }

    public void draw(Graphics2D g) {
        // for (Object ob : objects)

        // System.out.println("In draw(): " + n);
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g.setColor(bg);
        g.fillRect(0, 0, size.width, size.height);
        for (GameObject go : objects) {
            go.draw(g);
        }
        s1.draw(g); s2.draw(g);
    }

    static class PlayerStats {
        int nMissiles;
        int nPoints;

        public PlayerStats(int nMissiles, int nPoints) {
            this.nMissiles = nMissiles;
            this.nPoints = nPoints;
        }

        public String toString() {
            return nMissiles + " : " + nPoints;
        }
    }

}