Logic Player Completely changed

This commit is contained in:
rubenpirreram
2026-03-18 17:49:11 +01:00
parent e98bae5a6e
commit acb915b611
12 changed files with 62 additions and 85 deletions
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.Building.Effects;
import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Artist;
import it.polimi.ingsw.gc14.Model.Player;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
@@ -31,16 +32,12 @@ public class Building0 extends BuildingCard {
{
return;
}
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
for(CharacterType t : CharacterType.values())
numSet=player.getNType(CharacterType.INVENTOR);
for(CharacterType type : CharacterType.values())
{
map.put(t, 0);
if(player.getNType(type)<=numSet)
numSet=player.getNType(type);
}
for(Character c : player.getCharacterCards())
{
map.merge(c.getType(), 1, Integer::sum);
}
numSet= map.values().stream().min(Integer::compareTo).get();
purchased = true;
}
@@ -50,22 +47,18 @@ public class Building0 extends BuildingCard {
}
@Override
public void applyEffect(Player player) {
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
for(CharacterType t : CharacterType.values())
int min_temp=player.getNType(CharacterType.INVENTOR);
for(CharacterType type : CharacterType.values())
{
map.put(t, 0);
if(player.getNType(type)<=min_temp)
min_temp=player.getNType(type);
}
for(Character c : player.getCharacterCards())
{
map.merge(c.getType(), 1, Integer::sum);
}
int temp = map.values().stream().min(Integer::compareTo).get();
if(temp<=numSet)
if(min_temp<=numSet)
{
return;
}
player.addFood(5*(temp-numSet));
player.addFood(5*(min_temp-numSet));
numSet=min_temp;
};
}
@@ -22,17 +22,14 @@ public class Building10 extends BuildingCard {
public void applyEffect(Player player) {
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
for(CharacterType t : CharacterType.values())
int numSet=player.getNType(CharacterType.INVENTOR);
for(CharacterType type : CharacterType.values())
{
map.put(t, 0);
if(player.getNType(type)<=numSet)
numSet=player.getNType(type);
}
for(Character c : player.getCharacterCards())
{
map.merge(c.getType(), 1, Integer::sum);
}
int numberOfSet = map.values().stream().min(Integer::compareTo).get();
player.addPrestige(6 * numberOfSet);
player.addPrestige(6 * numSet);
}
}
@@ -27,8 +27,6 @@ public class Building11 extends BuildingCard {
}
@Override
public void applyEffect(Player player) {
int Count = (int) player.getCharacterCards().stream()
.filter(x -> x.getType().equals(this.getIcon())).count();
player.addPrestige(Count * this.getPrestigeMul());
player.addPrestige(player.getNType(getIcon()) * this.getPrestigeMul());
}
}
@@ -29,13 +29,9 @@ public class Building4 extends BuildingCard {
{
map.put(i,0);
}
for(Character c : player.getCharacterCards())
for(Inventor inv : player.inventors)
{
if(c instanceof Inventor inv)
{
map.merge(inv.Icon(),1,Integer::sum);
}
map.merge(inv.Icon(),1,Integer::sum);
}
numPair=0;
for(Integer i : map.values())
@@ -56,13 +52,9 @@ public class Building4 extends BuildingCard {
{
map.put(i,0);
}
for(Character c : player.getCharacterCards())
for(Inventor inv : player.inventors)
{
if(c instanceof Inventor inv)
{
map.merge(inv.Icon(),1,Integer::sum);
}
map.merge(inv.Icon(),1,Integer::sum);
}
int temp=0;
for(Integer i : map.values())
@@ -21,12 +21,8 @@ public class Building8 extends BuildingCard {
}
@Override
public void applyEffect(Player player) {
ArrayList<Builder> builders = player.getCharacterCards().stream()
.filter(c -> c instanceof Builder)
.map(c -> (Builder) c)
.collect(Collectors.toCollection(ArrayList::new));
for (Builder builder : builders) {
for (Builder builder : player.builders) {
player.addPrestige(builder.getPrestigeValue() * 2);
}
}
@@ -3,7 +3,11 @@ package it.polimi.ingsw.gc14.Model.Cards;
import it.polimi.ingsw.gc14.Model.PlayableCard;
public abstract class TribeCard extends PlayableCard {
public TribeCard(int Era) {
private boolean isEventCard;
public boolean IsEventCard() {
return isEventCard;
}
public TribeCard(int Era,boolean IsEventCard) {
super(Era);
}
}
@@ -11,7 +11,7 @@ public abstract class Character extends TribeCard implements Cloneable {
}
public Character(int Era, CharacterType type){
super(Era);
super(Era,false );
this.type = type;
}
@@ -14,7 +14,7 @@ public abstract class EventCard extends TribeCard {
// Constructors
public EventCard(int Era, EventType type) {
super(Era);
super(Era,true);
this.type = type;
}
// End Constructors
@@ -3,6 +3,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Artist;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
@@ -25,16 +26,10 @@ public class CavePaintings extends EventCard {
@Override
public void activateEvent (ArrayList <Player> playerList){
for (Player player : playerList){
int NArtists = 0;
int NArtists = player.getNType(CharacterType.ARTIST);
int NBuildings = 0;
ArrayList<Character> charCards = player.getCharacterCards();
ArrayList<BuildingCard> buildingCards = player.getBuildingCards();
for (Character card : charCards){
if(card instanceof Artist){
NArtists++;
}
}
for(BuildingCard card : buildingCards){
if(card.getEffectId() == 9){
NBuildings++;
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Hunter;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
@@ -20,15 +21,8 @@ public class Hunt extends EventCard {
@Override
public void activateEvent (ArrayList <Player> playerList){
for (Player player : playerList) {
ArrayList <Character> characterList= player.getCharacterCards();
ArrayList <BuildingCard> buildingList = player.getBuildingCards();
int hunterCounter=0;
for (Character character : characterList) {
if (character instanceof Hunter) {
hunterCounter++;
}
}
int hunterCounter=player.getNType(CharacterType.HUNTER);
for (BuildingCard buildingCard : buildingList) {
if (buildingCard.getEffectId() == 7) {
@@ -15,7 +15,7 @@ public class ShamanicRitual extends EventCard {
}
// TODO
// TODO è completamente scorretto... da controllare numero icone sciamani
@Override
public void activateEvent (ArrayList <Player> playerList){
int maxPrestige = playerList.get(0).getPrestigeValue();
@@ -2,10 +2,13 @@ package it.polimi.ingsw.gc14.Model;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import static java.lang.Math.abs;
@@ -16,20 +19,20 @@ public class Player {
return UserName;
}
private ArrayList <Character> CharacterCards;
public ArrayList <Character> getCharacterCards() {
ArrayList <Character> copy = new ArrayList <>();
ArrayList<Character> temp = new ArrayList <>();
temp.addAll(artists);
temp.addAll(builders);
temp.addAll(gatherers);
temp.addAll(inventors);
temp.addAll(shamans);
temp.addAll(hunters);
for(Character character:CharacterCards){
copy.add(character.clone());
}
return copy;
public int getTotCharacters() {
return Arrays.stream(CharacterType.values())
.mapToInt(this::getNType)
.sum();
}
public int getNType(CharacterType type) {
return switch (type) {
case ARTIST -> artists.size();
case INVENTOR -> inventors.size();
case HUNTER -> hunters.size();
case BUILDER -> builders.size();
case SHAMAN -> shamans.size();
case GATHERERS -> gatherers.size();
};
}
private ArrayList <BuildingCard> BuildingCards;
@@ -71,9 +74,7 @@ public class Player {
this.FoodValue += Value;
}
// TODO, chiedere prof (throws IllegalArgument)
public Boolean removeFood(int Value){
// Value = abs(Value); chiedere prof
if(Value > this.FoodValue){
return false;
}
@@ -95,8 +96,15 @@ public class Player {
// Constructors
public Player(String UserName){
this.UserName = UserName;
this.CharacterCards = new ArrayList<Character>();
this.BuildingCards = new ArrayList<BuildingCard>();
this.inventors = new ArrayList <>();
this.builders = new ArrayList <>();
this.gatherers = new ArrayList <>();
this.shamans = new ArrayList <>();
this.hunters = new ArrayList <>();
this.artists = new ArrayList<>();
this.BuildingCards = new ArrayList<>();
this.FoodValue = 0;
this.PrestigeValue = 0;
}