Interfaces Java - Exemplo 1

De Aulas
Revisão de 15h25min de 26 de novembro de 2016 por Admin (discussão | contribs) (Substituição de texto - "<code java n>" por "<syntaxhighlight lang=java line>")
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Links relacionados: Programação em Java

NPCInterface

1public interface NPCInterface {
2	public int DIREITA = 0;
3	public int ESQUERDA = 1;
4	public void andar();
5	public void inverter();
6	public int getDirecao();
7	public int getPosicao();
8}

Game

 1import java.util.ArrayList;
 2import java.util.List;
 3
 4public class Game {
 5	private List<NPCInterface> npcList = new ArrayList<NPCInterface>();
 6
 7	public void addNPC(NPCInterface npc) {
 8		npcList.add(npc);
 9	}
10
11	public void executar() {
12		for (int i = 0; i < npcList.size(); i++) {
13			NPCInterface npc = npcList.get(i);
14			npc.andar();
15			if (npc.getDirecao() == NPCInterface.DIREITA) {
16				if (npc.getPosicao() > 100) {
17					npc.inverter();
18				}
19			} else {
20				if (npc.getPosicao() <= 0) {
21					npc.inverter();
22				}
23			}
24		}
25	}
26
27	public String toString() {
28		String out = "";
29		for (int i = 0; i < npcList.size(); i++) {
30			out += npcList.get(i).getPosicao() + ", ";
31		}
32		return out;
33	}
34}

Monstro

 1public class Monstro implements NPCInterface {
 2	private int posicao;
 3	private int direcao;
 4
 5	@Override
 6	public void andar() {
 7		if (direcao == NPCInterface.DIREITA) {
 8			posicao++;
 9		} else {
10			posicao--;
11		}
12	}
13
14	@Override
15	public void inverter() {
16		direcao = (direcao == NPCInterface.DIREITA) ?
17			NPCInterface.ESQUERDA : NPCInterface.DIREITA;
18	}
19
20	@Override
21	public int getDirecao() {
22		return direcao;
23	}
24
25	@Override
26	public int getPosicao() {
27		return posicao;
28	}
29}

Main

 1public class Main {
 2	public static void main(String[] args) {
 3		Game g = new Game();
 4
 5		Monstro m = new Monstro();
 6		g.addNPC(m);
 7
 8		while (true) {
 9			g.executar();
10			System.out.println(g);
11		}
12	}
13}