From b260fcedb3e770a0ba2565515dc3b14c72d1f0eb Mon Sep 17 00:00:00 2001 From: Tiago Date: Fri, 23 Sep 2016 04:17:59 -0300 Subject: [PATCH] fixed ai selection to include fruits --- build.gradle | 2 +- core/src/com/theosirian/pacman/Ai.java | 8 ++++++-- core/src/com/theosirian/pacman/Game.java | 2 +- core/src/com/theosirian/pacman/pacdot/BonusPacdot.java | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 814b089..d05c109 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ allprojects { apply plugin: "eclipse" apply plugin: "idea" - version = '0.4a' + version = '0.5a' ext { appName = 'Pacman' gdxVersion = '1.6.4' diff --git a/core/src/com/theosirian/pacman/Ai.java b/core/src/com/theosirian/pacman/Ai.java index 2c2baba..6c7a787 100644 --- a/core/src/com/theosirian/pacman/Ai.java +++ b/core/src/com/theosirian/pacman/Ai.java @@ -14,11 +14,15 @@ */ public class Ai { public static Pacdot decidePacdot(Pacman pacman, List pacdots) { + Optional testFruit = pacdots.stream().filter(a -> a instanceof BonusPacdot).findFirst(); + if (testFruit.isPresent()) { + return testFruit.get(); + } Optional nearestOpt = pacdots.stream().min((a, b) -> { if (a.isDestroy()) return Integer.MIN_VALUE; else if (b.isDestroy()) return Integer.MAX_VALUE; - else if (a instanceof BonusPacdot) return Integer.MAX_VALUE; - else if (b instanceof BonusPacdot) return Integer.MIN_VALUE; + else if (a.getClass().isInstance(BonusPacdot.class)) return Integer.MAX_VALUE; + else if (b.getClass().isInstance(BonusPacdot.class)) return Integer.MIN_VALUE; return heuristic_sort(pacman, a.getX(), a.getY(), b.getX(), b.getY()); }); if (nearestOpt.isPresent()) diff --git a/core/src/com/theosirian/pacman/Game.java b/core/src/com/theosirian/pacman/Game.java index 27b6b6f..3df09e6 100644 --- a/core/src/com/theosirian/pacman/Game.java +++ b/core/src/com/theosirian/pacman/Game.java @@ -124,7 +124,7 @@ public void render() { aiPacdotTarget = Ai.decidePacdot(pacman, pacdots); Ai.pathfind(pacmanGraph, pacman, stepQueue, teleportHashes, aiPacdotTarget); aiTargetPosition.set(pacman.getX(), pacman.getY()); - System.out.println("Pathfinding! " + stepQueue.size() + " new steps."); +// System.out.println("Pathfinding! " + stepQueue.size() + " new steps."); pacman.setDirection(NONE); } else { Entity.Direction dir = stepQueue.poll(); diff --git a/core/src/com/theosirian/pacman/pacdot/BonusPacdot.java b/core/src/com/theosirian/pacman/pacdot/BonusPacdot.java index 70ed915..e859a3b 100644 --- a/core/src/com/theosirian/pacman/pacdot/BonusPacdot.java +++ b/core/src/com/theosirian/pacman/pacdot/BonusPacdot.java @@ -18,8 +18,8 @@ public BonusPacdot(int x, int y, Pacman player) { setBounds(getX() + 4, getY() + 4, 8, 8); worth = Math.min(accumalativeBonus >= 1000 ? 500 + accumalativeBonus : 200 + accumalativeBonus, 5000); accumalativeBonus = worth; - currentFrame = new TextureRegion(sprite, textureIndex * Settings.SPRITE_WIDTH, 0, Settings.SPRITE_WIDTH, Settings.SPRITE_HEIGHT); - targetedFrame = new TextureRegion(sprite, textureIndex * Settings.SPRITE_WIDTH, 16, Settings.SPRITE_WIDTH, Settings.SPRITE_HEIGHT); + currentFrame = new TextureRegion(sprite, textureIndex * Settings.SPRITE_WIDTH, 16, Settings.SPRITE_WIDTH, Settings.SPRITE_HEIGHT); + targetedFrame = new TextureRegion(sprite, textureIndex * Settings.SPRITE_WIDTH, 0, Settings.SPRITE_WIDTH, Settings.SPRITE_HEIGHT); textureIndex = (textureIndex + 1) % (sprite.getWidth() / 16); timer = 0; }