From fd239ff9ec62120fec449ae1bd87fcc042e287ef Mon Sep 17 00:00:00 2001 From: Adrian400811 Date: Mon, 10 Jun 2024 12:08:40 -0400 Subject: [PATCH] Finished Spider movement --- BlueSpider.java | 1 - Level0.java | 2 +- Spider.java | 34 ++++++++++++++++++++++++++-------- project.greenfoot | 8 ++++---- 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/BlueSpider.java b/BlueSpider.java index e05f74c..996efd3 100755 --- a/BlueSpider.java +++ b/BlueSpider.java @@ -15,6 +15,5 @@ public void addedToWorld(World w) { public void act() { super.act(); - super.movement(); } } diff --git a/Level0.java b/Level0.java index 9e0d8b2..14996b4 100755 --- a/Level0.java +++ b/Level0.java @@ -35,7 +35,7 @@ public Level0() { int[][] mobGeneration = new int[40][10]; addObject(new BlueBee(), 800, 600); addObject(new RedBee(), 100, 600); - addObject(new Spider(), 1200, 600); + addObject(new Spider(), 750, 600); } public void act() { diff --git a/Spider.java b/Spider.java index 8437f55..777bf7c 100755 --- a/Spider.java +++ b/Spider.java @@ -5,13 +5,15 @@ public class Spider extends Mobs { private final double speed; private final int dmg; private World w; + private int direction = 1; private long startTime; private boolean oob = false; - private int direction = 1; + private int holdAct = 0; + private boolean holding = false; public Spider() { hp = 2; - speed = 0.5; + speed = 1; dmg = 1; } @@ -20,23 +22,39 @@ public void addedToWorld(World w) { } public void act() { - movement(); + if (checkBlock()) { + holdAct--; + hold(); + } else { + movement(); + } attack(); timeout(); } protected void movement() { - if (getWorld() == null) { + if (getWorld() == null || holding) { return; } - turnTowards(direction * 999, getY()); - if (getOneObjectAtOffset(direction * getImage().getWidth(), 0, Brick.class) != null) { + setLocation(getX(), getY() + (speed * direction)); + } + + protected void hold() { + if (!holding) { + holding = true; + holdAct = 60; + } + if (holdAct == 0) { + holding = false; direction *= -1; - } else { - move(speed); + setLocation(getX(), getY() + (5 * direction)); } } + private boolean checkBlock() { + return getOneIntersectingObject(Tile.class) != null; + } + public void timeout() { if (w == null) { return; diff --git a/project.greenfoot b/project.greenfoot index 1e207e5..4e76bb1 100755 --- a/project.greenfoot +++ b/project.greenfoot @@ -42,7 +42,7 @@ dependency2.type=UsesDependency dependency20.from=RedBee dependency20.to=Player dependency20.type=UsesDependency -dependency21.from=RedBee +dependency21.from=Spider dependency21.to=Brick dependency21.type=UsesDependency dependency22.from=RedSpider @@ -76,7 +76,7 @@ editor.fx.0.height=0 editor.fx.0.width=0 editor.fx.0.x=0 editor.fx.0.y=0 -height=1042 +height=1040 package.numDependencies=23 package.numTargets=18 project.charset=UTF-8 @@ -222,5 +222,5 @@ target9.y=0 version=3.1.0 width=1920 world.lastInstantiated=Level0 -xPosition=864 -yPosition=317 +xPosition=0 +yPosition=0