Newer
Older
Algolike / src / main / java / models / Algo.java
package models;

import java.util.*;

import static views.Constants.DECK_COUNT;

public class Algo {
	private LoseB loseB;
	private HandsB handsB;
	private LoseA loseA;
	private HandsA handsA;
	private Deck deck;
	private SucceedDrawA succeedDrawA;
	private SucceedDrawB succeedDrawB;
	private SucceedSelectA succeedSelectA;
	private SucceedSelectB succeedSelectB;
	int turnCount=0;
	public Algo() {
		///モデル生成分
		loseB = new LoseB();
		handsB = new HandsB(loseB);
		loseA = new LoseA();
		handsA = new HandsA(loseA);
		deck = new Deck();
		succeedDrawA = new SucceedDrawA(handsB,deck,handsA);
		succeedDrawB = new SucceedDrawB(deck,handsB,handsA);
		succeedSelectA = new SucceedSelectA(handsB,handsA);
		succeedSelectB = new SucceedSelectB(handsA,handsB);
		//追加分
		deck.reset(DECK_COUNT);
		for(int i=0;i<2;i++){
			handsA.getValue().add(deck.head());
			handsB.getValue().add(deck.head());
		}
		getHandsA().sort(Comparator.comparing(Map.Entry<Integer, Boolean>::getKey));
		getHandsB().sort(Comparator.comparing(Map.Entry<Integer, Boolean>::getKey));
	}
	public void drawA(int guess,  int target) {
		var b=getHandsB();
		var d = getDeck();
		this.handsA.drawA(guess, b, d, target);
		this.handsB.drawA(guess, b, d, target);
		this.deck.drawA(guess, b, d, target);
	}
	public void selectA(int guess, int attacker, int target) {
		var b=getHandsB();
		this.handsA.selectA(guess, attacker, b, target);
		this.handsB.selectA(guess, attacker, b, target);
	}
	public void drawB(int guess,  int target) {
		var a=getHandsA();
		var d = getDeck();

		this.handsB.drawB(guess, a, d, target);
		this.handsA.drawB(guess, a, d, target);
		this.deck.drawB(guess, a, d, target);
	}
	public void selectB(int guess, int attacker, int target) {
		var a=getHandsA();
		this.handsB.selectB(guess, attacker, a, target);
		this.handsA.selectB(guess, attacker, a, target);
	}
	public void inputSelectA(int guess, int attacker,  int target) {
		this.succeedSelectA.inputSelectA(guess, attacker, target);
	}
	public void inputDrawA(int guess, List<Map.Entry<Object, Boolean>> b, int target) {
		this.succeedDrawA.inputDrawA(guess, b, target);
	}
	public void inputDrawB(int guess, List<Map.Entry<Object, Boolean>> a, int target) {
		this.succeedDrawB.inputDrawB(guess, a, target);
	}
	public void inputSelectB(int guess, int attacker,  int target) {
		this.succeedSelectB.inputSelectB(guess, attacker, target);
	}
	private void countUpTurn(){
		turnCount++;
	}
	public Map.Entry<Boolean, Map.Entry<Integer, Integer>> getSucceedSelectB() {
		return succeedSelectB.getValue();
	}
	public Map.Entry<Boolean, Map.Entry<Integer, Integer>> getSucceedSelectA() {
		return succeedSelectA.getValue();
	}
	public List getDeck() {
		return deck.getValue();
	}
	public Map.Entry<Boolean, Integer> getSucceedDrawB() {
		return succeedDrawB.getValue();
	}
	public boolean getLoseA() {
		return loseA.getValue();
	}
	public boolean getLoseB() {
		return loseB.getValue();
	}
	public List<Map.Entry<Integer, Boolean>> getHandsB() {
		return handsB.getValue();
	}
	public List<Map.Entry<Integer, Boolean>> getHandsA() {
		return handsA.getValue();
	}
	public Map.Entry<Boolean, Integer> getSucceedDrawA() {
		return succeedDrawA.getValue();
	}
}