all repos — WarBot2020 @ master

Bootleg version of "WorldWarBot 2020" done in Java and without a map.

siciliaguerrabot2020/Guerra/Comune.java (view raw)

  1/*
  2 * To change this license header, choose License Headers in Project Properties.
  3 * To change this template file, choose Tools | Templates
  4 * and open the template in the editor.
  5 */
  6package siciliaguerrabot2020.Guerra;
  7
  8import java.util.ArrayList;
  9import java.util.LinkedList;
 10
 11/**
 12 *
 13 * @author Bi-Rabittoh
 14 */
 15public class Comune implements Comparable<Comune> {
 16    private boolean vivo;
 17    private String nome;
 18    private Posizione pos;
 19    private LinkedList<Territorio> territori;
 20    private final int pop;
 21
 22    public Comune(String nome, int pop, Posizione pos) {
 23        this.nome = nome;
 24        this.pop = pop;
 25        this.pos = pos;
 26        this.vivo = true;
 27        territori = new LinkedList<>();
 28        territori.add(new Territorio(nome, this, pos));
 29    }
 30    
 31    public boolean isVivo() {
 32        return vivo;
 33    }
 34
 35    public void kill() {
 36        this.vivo = false;
 37    }
 38
 39    public String getNome() {
 40        return nome;
 41    }
 42
 43    public int getPop() {
 44        return pop;
 45    }
 46
 47    public Posizione getPos() {
 48        return pos;
 49    }
 50
 51    public LinkedList<Territorio> getTerritori() {
 52        return territori;
 53    }
 54
 55    
 56    @Override
 57    public String toString() {
 58        return "Comune{" + "vivo=" + vivo + ", nome=" + nome + ", pop=" + pop + ", pos=" + pos + '}';
 59    }
 60    
 61    //FUNZIONI BELLE
 62    public void aggiornaCentroide(){
 63        for (Territorio t : territori){
 64            pos = pos.puntoMedio(t.getPos());
 65        }
 66    }
 67    
 68    public boolean conquista(Territorio target){
 69        boolean ris = false;
 70        target.getProprietario().territori.remove(target);
 71        if(target.getProprietario().territori.isEmpty()){
 72            target.getProprietario().kill();
 73            ris = true;
 74        }else
 75            target.getProprietario().aggiornaCentroide();
 76        
 77        target.setProprietario(this);
 78        this.territori.add(target);
 79        this.aggiornaCentroide();
 80        return ris;
 81    }
 82    
 83    public Territorio trovaVicino(ArrayList<Comune> lista){
 84        
 85        Territorio trovato = new Territorio("Errore", null, null);
 86        double minD = 999999999, cur;
 87
 88        for(int i = 0; i < lista.size(); i++){
 89            Comune comune = lista.get(i);
 90            //scorro i comuni
 91            if(comune.isVivo() && !comune.equals(this)){
 92                //mi trovo in un comune VIVO e diverso da se stesso
 93                for(int j = 0; j < comune.territori.size(); j++){
 94                    Territorio territorio = comune.territori.get(j);
 95                    //mi trovo in un territorio generico di questo comune
 96                    cur = this.pos.distanza(territorio.getPos());
 97                    //oonfronto la distanza con minD
 98                    if(cur < minD){
 99                        minD = cur;
100                        trovato = territorio;
101                    }
102                }
103            }
104        }
105        return trovato;
106    }
107    
108    @Override
109    public int compareTo(Comune target){
110        if((!this.isVivo()) && target.isVivo()){
111            return 1;
112        } else if (this.isVivo() && (!target.isVivo())){
113            return -1;
114        } else return 0;
115    }
116    //FINE FILE
117
118    
119}