From 7be2c8bd6ac58ddbbd877cadbb6a38a5eb9d4a52 Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Tue, 17 Apr 2018 10:44:11 +0430 Subject: [PATCH] feat: magics --- android/assets/blue.png | Bin 0 -> 4121 bytes android/assets/green.png | Bin 0 -> 6130 bytes android/assets/skull.png | Bin 0 -> 6821 bytes android/assets/spiral.png | Bin 0 -> 6479 bytes android/assets/sprites.svg | 142 ++++++++++++++++++ android/assets/star.png | Bin 0 -> 4140 bytes core/build.gradle | 3 +- core/src/com/mdibaiee/supersnake/Ball.java | 28 ---- core/src/com/mdibaiee/supersnake/Colors.java | 1 + core/src/com/mdibaiee/supersnake/Magic.java | 75 +++++++++ .../mdibaiee/supersnake/Magics/Growth.java | 36 +++++ .../com/mdibaiee/supersnake/Magics/Skull.java | 30 ++++ .../supersnake/Magics/SpeedBoost.java | 44 ++++++ .../mdibaiee/supersnake/Magics/StarPoint.java | 27 ++++ core/src/com/mdibaiee/supersnake/Point.java | 2 +- .../com/mdibaiee/supersnake/SizedPoint.java | 27 ++++ core/src/com/mdibaiee/supersnake/Snake.java | 36 ++--- .../com/mdibaiee/supersnake/SuperSnake.java | 61 +++++--- 18 files changed, 444 insertions(+), 68 deletions(-) create mode 100644 android/assets/blue.png create mode 100644 android/assets/green.png create mode 100644 android/assets/skull.png create mode 100644 android/assets/spiral.png create mode 100644 android/assets/sprites.svg create mode 100644 android/assets/star.png delete mode 100644 core/src/com/mdibaiee/supersnake/Ball.java create mode 100644 core/src/com/mdibaiee/supersnake/Magic.java create mode 100644 core/src/com/mdibaiee/supersnake/Magics/Growth.java create mode 100644 core/src/com/mdibaiee/supersnake/Magics/Skull.java create mode 100644 core/src/com/mdibaiee/supersnake/Magics/SpeedBoost.java create mode 100644 core/src/com/mdibaiee/supersnake/Magics/StarPoint.java create mode 100644 core/src/com/mdibaiee/supersnake/SizedPoint.java diff --git a/android/assets/blue.png b/android/assets/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..881c7bd701f0d6279d22dab53fb6e3698b672df9 GIT binary patch literal 4121 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 Ef;}6+aR2}S literal 0 HcmV?d00001 diff --git a/android/assets/skull.png b/android/assets/skull.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b2a932e6173522554e75c8ab8f44c7360aeecb GIT binary patch literal 6821 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 TnPA+m00000NkvXXu0mjfW{|8Y literal 0 HcmV?d00001 diff --git a/android/assets/spiral.png b/android/assets/spiral.png new file mode 100644 index 0000000000000000000000000000000000000000..07259500f92b79a77c2c1f37afb7bc9ce20ec009 GIT binary patch literal 6479 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 literal 0 HcmV?d00001 diff --git a/android/assets/sprites.svg b/android/assets/sprites.svg new file mode 100644 index 0000000..dae1e26 --- /dev/null +++ b/android/assets/sprites.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/android/assets/star.png b/android/assets/star.png new file mode 100644 index 0000000000000000000000000000000000000000..966cefef6a5cdf4f32af91892daba4c8632c2a63 GIT binary patch literal 4140 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 seconds * 60) { + snake.size -= 10; + return true; + } + + return false; + } +} diff --git a/core/src/com/mdibaiee/supersnake/Magics/Skull.java b/core/src/com/mdibaiee/supersnake/Magics/Skull.java new file mode 100644 index 0000000..1a94bcb --- /dev/null +++ b/core/src/com/mdibaiee/supersnake/Magics/Skull.java @@ -0,0 +1,30 @@ +package com.mdibaiee.supersnake.Magics; + +import com.mdibaiee.supersnake.Colors; +import com.mdibaiee.supersnake.Magic; +import com.mdibaiee.supersnake.Snake; + +public class Skull extends Magic { + private Snake snake; + private int seconds = 15; + + public Skull(float x, float y) { + super(x, y, "skull.png"); + } + + public void action(Snake snake) { + this.snake = snake; + snake.color = Colors.red; + } + + public boolean iter() { + frames++; + + if (frames > seconds * 60) { + snake.color = Colors.snake; + return true; + } + + return false; + } +} diff --git a/core/src/com/mdibaiee/supersnake/Magics/SpeedBoost.java b/core/src/com/mdibaiee/supersnake/Magics/SpeedBoost.java new file mode 100644 index 0000000..93153d2 --- /dev/null +++ b/core/src/com/mdibaiee/supersnake/Magics/SpeedBoost.java @@ -0,0 +1,44 @@ +package com.mdibaiee.supersnake.Magics; + +import com.mdibaiee.supersnake.Magic; +import com.mdibaiee.supersnake.Snake; + +public class SpeedBoost extends Magic { + private Snake snake; + private int seconds = 30; + + private float original_x; + private float original_y; + + public SpeedBoost(float x, float y) { + super(x, y, "green.png"); + original_x = x; + original_y = y; + } + + public void action(Snake snake) { + this.snake = snake; + snake.speed += 5; + } + + public boolean draw() { + double rx = Math.random() * 5; + double ry = Math.random() * 5; + + x = (float) (original_x + rx); + y = (float) (original_y + ry); + + return super.draw(); + } + + public boolean iter() { + frames++; + + if (frames > seconds * 60) { + snake.speed -= 5; + return true; + } + + return false; + } +} diff --git a/core/src/com/mdibaiee/supersnake/Magics/StarPoint.java b/core/src/com/mdibaiee/supersnake/Magics/StarPoint.java new file mode 100644 index 0000000..1a2ef22 --- /dev/null +++ b/core/src/com/mdibaiee/supersnake/Magics/StarPoint.java @@ -0,0 +1,27 @@ +package com.mdibaiee.supersnake.Magics; + + +import com.badlogic.gdx.Gdx; +import com.mdibaiee.supersnake.Magic; +import com.mdibaiee.supersnake.Snake; + +public class StarPoint extends Magic { + public StarPoint(float x, float y) { + super(x, y, "star.png"); + } + + public boolean draw() { + rotation = drawn % 360; + + return super.draw(); + } + + public void action(Snake snake) { + snake.point++; + snake.addTail(); + } + + public boolean iter() { + return true; + } +} diff --git a/core/src/com/mdibaiee/supersnake/Point.java b/core/src/com/mdibaiee/supersnake/Point.java index ccc6ee8..05d6137 100644 --- a/core/src/com/mdibaiee/supersnake/Point.java +++ b/core/src/com/mdibaiee/supersnake/Point.java @@ -39,6 +39,6 @@ public class Point { } public double distance(Point p) { - return Math.sqrt(Math.pow(this.x - p.x, 2) + Math.pow(this.y - p.y, 2)); + return Math.sqrt(Math.pow(x - p.x, 2) + Math.pow(y - p.y, 2)); } } diff --git a/core/src/com/mdibaiee/supersnake/SizedPoint.java b/core/src/com/mdibaiee/supersnake/SizedPoint.java new file mode 100644 index 0000000..6bf726f --- /dev/null +++ b/core/src/com/mdibaiee/supersnake/SizedPoint.java @@ -0,0 +1,27 @@ +package com.mdibaiee.supersnake; + +public class SizedPoint extends Point { + public float size; + + public SizedPoint(float x, float y, float size) { + super(x, y); + + this.size = size; + } + + public float centerX() { + return x + size / 2; + } + public float centerY() { + return y + size / 2; + } + + public double distance(SizedPoint other) { + return Math.sqrt(Math.pow(centerX() - other.centerX(), 2) + + Math.pow(centerY() - other.centerY(), 2)); + } + + public boolean collides(SizedPoint other) { + return distance(other) < (size / 2 + other.size / 2); + } +} diff --git a/core/src/com/mdibaiee/supersnake/Snake.java b/core/src/com/mdibaiee/supersnake/Snake.java index def99ca..6fcb5e1 100644 --- a/core/src/com/mdibaiee/supersnake/Snake.java +++ b/core/src/com/mdibaiee/supersnake/Snake.java @@ -10,10 +10,10 @@ import com.badlogic.gdx.physics.box2d.Shape; import com.badlogic.gdx.utils.Array; class Tail extends DirectedPoint { - public int length; + public float length; public boolean breaking; - public Tail(float x, float y, Direction direction, int length) { + public Tail(float x, float y, Direction direction, float length) { super(x, y, direction); this.length = length; } @@ -25,12 +25,13 @@ class Tail extends DirectedPoint { } public class Snake extends DirectedPoint { - private Color color = Colors.snake; + public Color color = Colors.snake; public int size = 10; + public int point = 0; private Array tail = new Array(); - public int speed = 2; + public float speed = 2; public int lives = 3; public Snake(float x, float y, int length) { @@ -82,26 +83,14 @@ public class Snake extends DirectedPoint { return 0; } - private Direction getNewDirection(DirectedPoint point, DirectedPoint last) { - if (point.direction == last.direction) return point.direction; - - float expectedX = point.x + cx(last.direction) * size; - float expectedY = point.y + cy(last.direction) * size; - - if (Math.abs(last.x - expectedX) <= speed && - Math.abs(last.y - expectedY) <= speed) { - return last.direction; - } - - return point.direction; - } - public void move() { float ox = x; float oy = y; boolean cycled = this.move(x + cx(direction) * speed, y + cy(direction) * speed); + Gdx.app.log("Snake", "(" + ox + ", " + oy + ") > " + "(" + x + ", " + y + ")"); + if (cycled) { tail.insert(0, new Tail(ox, oy, direction, 0)); tail.insert(0, new Tail(x, y, direction, true)); @@ -114,8 +103,10 @@ public class Snake extends DirectedPoint { last.move(last.x + cx(last.direction) * speed, last.y + cy(last.direction) * speed); last.length -= speed; - if (last.length <= 0) { + while (tail.peek().length <= 0) { + float diff = tail.peek().length; tail.removeIndex(tail.size - 1); + tail.peek().length += diff; } } @@ -125,6 +116,11 @@ public class Snake extends DirectedPoint { last.x -= cx(last.direction) * 5; last.y -= cy(last.direction) * 5; - speed += 1; + speed += 0.5; + } + + public boolean head_collision(SizedPoint p) { + SizedPoint s = new SizedPoint(x - size / 2, y - size / 2, size); + return s.collides(p); } } diff --git a/core/src/com/mdibaiee/supersnake/SuperSnake.java b/core/src/com/mdibaiee/supersnake/SuperSnake.java index 02dc597..b56ad3e 100644 --- a/core/src/com/mdibaiee/supersnake/SuperSnake.java +++ b/core/src/com/mdibaiee/supersnake/SuperSnake.java @@ -1,7 +1,5 @@ package com.mdibaiee.supersnake; - -import com.badlogic.gdx.graphics.OrthographicCamera; -import com.mdibaiee.supersnake.Colors; +import com.mdibaiee.supersnake.Magics.*; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; @@ -9,7 +7,6 @@ import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; -import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.utils.Array; @@ -17,15 +14,13 @@ public class SuperSnake extends ApplicationAdapter { public int WIDTH = 800; public int HEIGHT = 480; - int points = 0; - SpriteBatch batch; ShapeRenderer shapeRenderer; Texture img; Snake snake; BitmapFont font; - private Array balls = new Array(); + private Array magics = new Array(); @Override public void create () { @@ -35,6 +30,8 @@ public class SuperSnake extends ApplicationAdapter { WIDTH = Gdx.graphics.getBackBufferWidth(); HEIGHT = Gdx.graphics.getBackBufferHeight(); + Gdx.app.log("Snake", "VIEWPORT " + WIDTH + ", " + HEIGHT); + shapeRenderer = new ShapeRenderer(); snake = new Snake(WIDTH / 2, HEIGHT / 2, 50); @@ -64,25 +61,53 @@ public class SuperSnake extends ApplicationAdapter { } } - if (balls.size < 1) { - balls.add(new Ball((float) Math.random() * WIDTH, (float) Math.random() * HEIGHT)); + int drawn_magics = 0; + + for (Magic m: magics) { + if (!m.active) drawn_magics++; + } + + if (drawn_magics < 3) { + double r = Math.random() * 100; + float mx = (float) Math.random() * WIDTH; + float my = (float) Math.random() * HEIGHT; + + Magic newMagic; + if (r < 70) { + newMagic = new StarPoint(mx, my); + } else if (r < 80) { + newMagic = new SpeedBoost(mx, my); + } else if (r < 90) { + newMagic = new Growth(mx, my); + } else { + newMagic = new Skull(mx, my); + } + + newMagic = new SpeedBoost(mx, my); + + magics.add(newMagic); } snake.draw(shapeRenderer); snake.move(); - for(Ball b: balls) { - b.draw(shapeRenderer); - } - - if (snake.distance(balls.first()) < balls.first().size) { - balls.removeIndex(0); - points += 1; - snake.addTail(); + for(Magic m: magics) { + if (m.active) { + if (m.iter()) { + magics.removeValue(m, true); + } + } else { + if (m.draw()) { + magics.removeValue(m, true); + } else if (snake.head_collision(m)) { + m.action(snake); + m.active = true; + } + } } batch.begin(); - font.draw(batch, Integer.toString(points), 10, 25); + font.draw(batch, Integer.toString(snake.point), 10, 25); batch.end(); }