mirror of
https://github.com/etlegacy/JoyStick.git
synced 2024-11-10 06:42:15 +00:00
some small changes to the demo app
This commit is contained in:
parent
b173a4213b
commit
6855c847d7
4 changed files with 50 additions and 60 deletions
|
@ -7,7 +7,7 @@ import android.view.SurfaceView;
|
||||||
* Created by edgarramirez on 7/17/15.
|
* Created by edgarramirez on 7/17/15.
|
||||||
*/
|
*/
|
||||||
public class GameLoop extends Thread {
|
public class GameLoop extends Thread {
|
||||||
private static final long FPS = 60;
|
private static final long FPS = 24;
|
||||||
private static final long ticksPS = 1000 / FPS;
|
private static final long ticksPS = 1000 / FPS;
|
||||||
private SurfaceView view;
|
private SurfaceView view;
|
||||||
private boolean running = false;
|
private boolean running = false;
|
||||||
|
|
|
@ -7,7 +7,6 @@ import android.graphics.Canvas;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.support.annotation.NonNull;
|
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.SurfaceHolder;
|
import android.view.SurfaceHolder;
|
||||||
import android.view.SurfaceView;
|
import android.view.SurfaceView;
|
||||||
|
@ -20,61 +19,55 @@ import java.util.Vector;
|
||||||
*/
|
*/
|
||||||
public class GameView extends SurfaceView implements SurfaceHolder.Callback {
|
public class GameView extends SurfaceView implements SurfaceHolder.Callback {
|
||||||
|
|
||||||
|
private int i;
|
||||||
|
private int size = 20;
|
||||||
|
private int minSpeed;
|
||||||
|
private int maxSpeed;
|
||||||
|
private int minRadius;
|
||||||
|
private int maxRadius;
|
||||||
private float width;
|
private float width;
|
||||||
private float height;
|
private float height;
|
||||||
private float posX;
|
private float posX;
|
||||||
private float posY;
|
private float posY;
|
||||||
private float radius;
|
private float radius;
|
||||||
private GameLoop gameLoop;
|
|
||||||
private Paint paint;
|
|
||||||
private Random random = new Random();
|
|
||||||
private int i;
|
|
||||||
private int size = 20;
|
|
||||||
private int maxRadius;
|
|
||||||
private Bitmap droid;
|
|
||||||
private RectF rectF;
|
|
||||||
|
|
||||||
private double angle;
|
private double angle;
|
||||||
private double power;
|
private double power;
|
||||||
|
|
||||||
private double angle2;
|
private double angle2;
|
||||||
|
private Bitmap droid;
|
||||||
|
private GameLoop gameLoop;
|
||||||
|
private Paint paint;
|
||||||
|
private Vector<Star> stars = new Vector<>();
|
||||||
|
private RectF rectF = new RectF();
|
||||||
|
private Random random = new Random();
|
||||||
|
|
||||||
private Vector<Star> stars;
|
public GameView(Context context) {
|
||||||
|
this(context, null);
|
||||||
|
}
|
||||||
|
|
||||||
public GameView(Context context, AttributeSet attrs) {
|
public GameView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameView(Context context) {
|
|
||||||
super(context);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void init() {
|
|
||||||
getHolder().addCallback(this);
|
getHolder().addCallback(this);
|
||||||
paint = new Paint();
|
paint = new Paint();
|
||||||
paint.setAntiAlias(true);
|
paint.setAntiAlias(true);
|
||||||
|
paint.setFilterBitmap(true);
|
||||||
paint.setStyle(Paint.Style.FILL);
|
paint.setStyle(Paint.Style.FILL);
|
||||||
paint.setColor(Color.WHITE);
|
paint.setColor(Color.WHITE);
|
||||||
droid = BitmapFactory.decodeResource(getResources(), R.drawable.droid);
|
droid = BitmapFactory.decodeResource(getResources(), R.drawable.droid);
|
||||||
rectF = new RectF();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(@NonNull Canvas canvas) {
|
public void draw(Canvas canvas) {
|
||||||
if (canvas == null) return;
|
if (canvas == null) return;
|
||||||
super.draw(canvas);
|
|
||||||
canvas.drawColor(Color.BLACK);
|
canvas.drawColor(Color.BLACK);
|
||||||
|
|
||||||
if (stars != null && stars.size() > 0) {
|
if (stars != null && stars.size() > 0) {
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < size; i++) {
|
||||||
stars.get(i).draw(canvas, paint, height, maxRadius);
|
stars.get(i).draw(canvas, paint, rectF, random, minSpeed, maxSpeed, minRadius, maxRadius, width, height, maxRadius);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
posX -= Math.cos(angle) * (power / 2);
|
posX -= Math.cos(angle) * power;
|
||||||
posY += Math.sin(-angle) * (power / 2);
|
posY += Math.sin(-angle) * power;
|
||||||
if (posX > width - radius) posX = width - radius;
|
if (posX > width - radius) posX = width - radius;
|
||||||
if (posX < radius) posX = radius;
|
if (posX < radius) posX = radius;
|
||||||
if (posY > height - radius) posY = height - radius;
|
if (posY > height - radius) posY = height - radius;
|
||||||
|
@ -108,23 +101,16 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback {
|
||||||
radius = min / 12;
|
radius = min / 12;
|
||||||
rectF = new RectF(posX - radius, posY - radius, posX + radius, posY + radius);
|
rectF = new RectF(posX - radius, posY - radius, posX + radius, posY + radius);
|
||||||
|
|
||||||
int minSpeed = (int) (min / 75);
|
minSpeed = (int) (min / 37);
|
||||||
int maxSpeed = (int) (min / 25);
|
maxSpeed = (int) (min / 12);
|
||||||
|
minRadius = (int) (min / 250);
|
||||||
int minRadius = (int) (min / 250);
|
|
||||||
maxRadius = (int) (min / 220);
|
maxRadius = (int) (min / 220);
|
||||||
|
|
||||||
if (maxRadius == minRadius) maxRadius += minRadius;
|
if (maxRadius == minRadius) maxRadius += minRadius;
|
||||||
|
|
||||||
stars = new Vector<>();
|
stars.clear();
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < size; i++) {
|
||||||
int tmpRadius = random.nextInt(maxRadius - minRadius) + minRadius;
|
stars.add(new Star(random, minSpeed, maxSpeed, minRadius, maxRadius, width, height));
|
||||||
int maxX = width - tmpRadius;
|
|
||||||
int maxY = height - tmpRadius;
|
|
||||||
stars.add(new Star(random.nextInt(maxX - tmpRadius + (maxRadius * 4)) + (tmpRadius - (maxRadius * 4)),
|
|
||||||
random.nextInt(maxY - tmpRadius + (maxRadius * 4)) + (tmpRadius - (maxRadius * 4)),
|
|
||||||
random.nextInt(maxSpeed - minSpeed) + minSpeed,
|
|
||||||
tmpRadius));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import com.erz.joysticklibrary.JoyStick;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity implements JoyStick.JoyStickListener {
|
public class MainActivity extends AppCompatActivity implements JoyStick.JoyStickListener {
|
||||||
|
|
||||||
GameView gameView;
|
private GameView gameView;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
|
@ -4,6 +4,8 @@ import android.graphics.Canvas;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by edgarramirez on 6/16/15.
|
* Created by edgarramirez on 6/16/15.
|
||||||
*/
|
*/
|
||||||
|
@ -13,33 +15,35 @@ public class Star {
|
||||||
private float speedY;
|
private float speedY;
|
||||||
private float radius;
|
private float radius;
|
||||||
private boolean ready = false;
|
private boolean ready = false;
|
||||||
private RectF rectF;
|
|
||||||
|
|
||||||
public Star(float x, float y, float speedY, float radius) {
|
public Star(Random random, int minSpeed, int maxSpeed, int minRadius, int maxRadius, int width, int height) {
|
||||||
this.x = x;
|
reset(random, minSpeed, maxSpeed, minRadius, maxRadius, width, height);
|
||||||
this.y = y;
|
|
||||||
this.speedY = speedY;
|
|
||||||
this.radius = radius;
|
|
||||||
ready = true;
|
|
||||||
rectF = new RectF();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void draw(Canvas canvas, Paint paint, float height, float max) {
|
private void reset(Random random, int minSpeed, int maxSpeed, int minRadius, int maxRadius, int width, int height) {
|
||||||
|
int tmpRadius = random.nextInt(maxRadius - minRadius) + minRadius;
|
||||||
|
int maxX = width - tmpRadius;
|
||||||
|
int maxY = height - tmpRadius;
|
||||||
|
this.x = random.nextInt(maxX - tmpRadius + (maxRadius * 4)) + (tmpRadius - (maxRadius * 4));
|
||||||
|
this.y = random.nextInt(maxY - tmpRadius + (maxRadius * 4)) + (tmpRadius - (maxRadius * 4));
|
||||||
|
this.speedY = random.nextInt(maxSpeed - minSpeed) + minSpeed;
|
||||||
|
this.radius = tmpRadius;
|
||||||
|
ready = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void draw(Canvas canvas, Paint paint, RectF rectF, Random random, int minSpeed,
|
||||||
|
int maxSpeed, int minRadius, int maxRadius, float width, float height, int max) {
|
||||||
if (!ready) return;
|
if (!ready) return;
|
||||||
update(height, max);
|
|
||||||
|
y += speedY;
|
||||||
|
|
||||||
|
if ((y + radius) > (height + (max * 4))) {
|
||||||
|
reset(random, minSpeed, maxSpeed, minRadius, maxRadius, (int) width, (int) height);
|
||||||
|
}
|
||||||
|
|
||||||
rectF.set(x - radius, y - radius, x + radius, y + radius);
|
rectF.set(x - radius, y - radius, x + radius, y + radius);
|
||||||
|
|
||||||
paint.setStrokeWidth(radius / 10);
|
paint.setStrokeWidth(radius / 10);
|
||||||
canvas.drawOval(rectF, paint);
|
canvas.drawOval(rectF, paint);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(float height, float max) {
|
|
||||||
if (!ready) return;
|
|
||||||
y += speedY;
|
|
||||||
|
|
||||||
if ((y + radius) > (height + (max * 4))) {
|
|
||||||
y = - (max * 4) - radius;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue