summaryrefslogtreecommitdiff
path: root/java/org/neocities/autoart
diff options
context:
space:
mode:
Diffstat (limited to 'java/org/neocities/autoart')
-rw-r--r--java/org/neocities/autoart/ballbounce/CanvasView.java73
-rw-r--r--java/org/neocities/autoart/ballbounce/Game.java2
-rw-r--r--java/org/neocities/autoart/ballbounce/Highscores.java53
-rw-r--r--java/org/neocities/autoart/ballbounce/Menu.java11
-rw-r--r--java/org/neocities/autoart/ballbounce/MoveBall.java20
5 files changed, 124 insertions, 35 deletions
diff --git a/java/org/neocities/autoart/ballbounce/CanvasView.java b/java/org/neocities/autoart/ballbounce/CanvasView.java
index bd76f30..7747e80 100644
--- a/java/org/neocities/autoart/ballbounce/CanvasView.java
+++ b/java/org/neocities/autoart/ballbounce/CanvasView.java
@@ -1,6 +1,7 @@
package org.neocities.autoart.ballbounce;
import android.content.Context;
+import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Handler;
@@ -35,6 +36,9 @@ public class CanvasView extends View
MoveBall moveBall = new MoveBall();
+ public Bitmap bmp;
+ public Canvas bmpCanvas;
+
public CanvasView(Context context)
{
@@ -65,6 +69,8 @@ public class CanvasView extends View
moveBall.a = Math.random()*0.00001;
moveBall.b = Math.random()*0.002;
+
+
colours = new ArrayList<>();
score = 0;
@@ -135,6 +141,9 @@ public class CanvasView extends View
ballSize = w*0.05;
paddleSize = w*0.2;
+ bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
+ bmpCanvas = new Canvas(bmp);
+
}
@@ -147,46 +156,46 @@ public class CanvasView extends View
Paint paint = new Paint();
- for (int i = 0; i < ballPositions.size(); i+=3)
- {
- double[] ballPosition = ballPositions.get(i);
- if (colours.size() <= Math.ceil((double)i/100))
- {
- int[] c = new int[3];
- c[0] = (int)(Math.random()*255);
- c[1] = (int)(Math.random()*255);
- c[2] = (int)(Math.random()*255);
+ int i = moveBall.t;
- colours.add(c);
- }
+ if (colours.size() <= Math.ceil((double)i/100))
+ {
+ int[] c = new int[3];
+ c[0] = (int)(Math.random()*255);
+ c[1] = (int)(Math.random()*255);
+ c[2] = (int)(Math.random()*255);
- paint.setStyle(Paint.Style.FILL);
- if (Game.MODE == Game.NORMAL_MODE || Game.MODE == Game.CRAZY_GRAVITY_MODE || Game.MODE == Game.FLIP_MODE)
- {
- paint.setARGB(255, 0, 0, 0);
- }
- else if (Game.MODE == Game.COLOUR_CHANGING_MODE)
- {
- paint.setARGB(255, colours.get(i / 100)[0], colours.get(i / 100)[1], colours.get(i / 100)[2]);
- }
- else if (Game.MODE == Game.OSCILLATION_MODE)
- {
- int val = (int)(255*Math.sin(0.001*i));
- paint.setARGB(255, val, val, val);
- }
- else if (Game.MODE == Game.BW_MODE)
- {
- int val = 255*((i/500)%2);
- paint.setARGB(255, val, val, val);
- }
- canvas.drawCircle((float) ballPosition[0], (float) ballPosition[1], (float) ballSize, paint);
+ colours.add(c);
}
+ paint.setStyle(Paint.Style.FILL);
+ if (Game.MODE == Game.NORMAL_MODE || Game.MODE == Game.CRAZY_GRAVITY_MODE || Game.MODE == Game.FLIP_MODE)
+ {
+ paint.setARGB(255, 0, 0, 0);
+ }
+ else if (Game.MODE == Game.COLOUR_CHANGING_MODE)
+ {
+ paint.setARGB(255, colours.get(i / 100)[0], colours.get(i / 100)[1], colours.get(i / 100)[2]);
+ }
+ else if (Game.MODE == Game.OSCILLATION_MODE)
+ {
+ int val = (int)(255*Math.sin(0.001*i));
+ paint.setARGB(255, val, val, val);
+ }
+ else if (Game.MODE == Game.BW_MODE)
+ {
+ int val = 255*((i/500)%2);
+ paint.setARGB(255, val, val, val);
+ }
+ bmpCanvas.drawCircle((float) currentBallPosition[0], (float) currentBallPosition[1], (float) ballSize, paint);
paint.setStyle(Paint.Style.STROKE);
paint.setARGB(255, 0, 0, 255);
paint.setStrokeWidth(10);
- canvas.drawLine((float)(paddlePosition[0]-paddleSize/2), (float)(paddlePosition[1]), (float)(paddlePosition[0]+paddleSize/2), (float)(paddlePosition[1]), paint);
+
+ canvas.drawBitmap(bmp, 0, 0, null);
+ canvas.drawLine((float) (paddlePosition[0] - paddleSize / 2), (float) (paddlePosition[1]), (float) (paddlePosition[0] + paddleSize / 2), (float) (paddlePosition[1]), paint);
+
}
}
diff --git a/java/org/neocities/autoart/ballbounce/Game.java b/java/org/neocities/autoart/ballbounce/Game.java
index 42f20b6..f2e0d7d 100644
--- a/java/org/neocities/autoart/ballbounce/Game.java
+++ b/java/org/neocities/autoart/ballbounce/Game.java
@@ -13,6 +13,8 @@ public class Game extends AppCompatActivity
public static final int BW_MODE = 4;
public static final int FLIP_MODE = 5;
public static final int NUM_MODES = 6;
+ public static final String[] MODE_NAMES = {"Normal mode", "Crazy gravity mode", "Colour changing mode", "Oscillation mode",
+ "Black & white mode", "Flip mode"};
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/java/org/neocities/autoart/ballbounce/Highscores.java b/java/org/neocities/autoart/ballbounce/Highscores.java
new file mode 100644
index 0000000..092992e
--- /dev/null
+++ b/java/org/neocities/autoart/ballbounce/Highscores.java
@@ -0,0 +1,53 @@
+package org.neocities.autoart.ballbounce;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.graphics.Color;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.util.TypedValue;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+public class Highscores extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_highscores);
+
+ SharedPreferences prefs = getSharedPreferences("ballBounceHighscores", Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = prefs.edit();
+
+
+ RelativeLayout rl = (RelativeLayout) findViewById(R.id.highscores_layout);
+
+ int n = 0;
+
+ for (int i = 0; i < Game.NUM_MODES; i++)
+ {
+ if (!prefs.contains("mode"+i))
+ continue;
+ TextView tv = new TextView(this);
+ tv.setText(Game.MODE_NAMES[i] + ": " + (prefs.getInt("mode" + i, -1)));
+ tv.setId(n + 100);
+
+ tv.setTextColor(Color.rgb(0, 0, 0));
+ tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
+ RelativeLayout.LayoutParams.WRAP_CONTENT,
+ RelativeLayout.LayoutParams.WRAP_CONTENT);
+ if (n > 0)
+ params.addRule(RelativeLayout.BELOW, n+99);
+ else
+ params.addRule(RelativeLayout.BELOW, R.id.highscores_title);
+
+ tv.setLayoutParams(params);
+ rl.addView(tv);
+ n++;
+
+
+ }
+
+ }
+}
diff --git a/java/org/neocities/autoart/ballbounce/Menu.java b/java/org/neocities/autoart/ballbounce/Menu.java
index 3eca4a9..8c5b774 100644
--- a/java/org/neocities/autoart/ballbounce/Menu.java
+++ b/java/org/neocities/autoart/ballbounce/Menu.java
@@ -97,6 +97,17 @@ public class Menu extends AppCompatActivity
}
});
+ Button highscores = (Button) findViewById(R.id.highscores);
+ highscores.setOnClickListener(new View.OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ Intent intent = new Intent(getApplicationContext(), Highscores.class);
+ startActivity(intent);
+ }
+ });
+
}
}
diff --git a/java/org/neocities/autoart/ballbounce/MoveBall.java b/java/org/neocities/autoart/ballbounce/MoveBall.java
index cc44fc4..fc8af99 100644
--- a/java/org/neocities/autoart/ballbounce/MoveBall.java
+++ b/java/org/neocities/autoart/ballbounce/MoveBall.java
@@ -1,8 +1,10 @@
package org.neocities.autoart.ballbounce;
import android.app.AlertDialog;
+import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.graphics.Canvas;
import java.util.Date;
@@ -32,13 +34,13 @@ public class MoveBall implements Runnable
}
if (Game.MODE != Game.CRAZY_GRAVITY_MODE && Game.MODE != Game.FLIP_MODE)
- gravity = 1;
+ gravity = 0.0007*cv.w;
else if (Game.MODE == Game.CRAZY_GRAVITY_MODE)
gravity = Math.abs(cv.w*(t*a*Math.sin(b*t)));
else if (Game.MODE == Game.FLIP_MODE && (t/500) % 2 == 0)
- gravity = 1;
+ gravity = 0.0007*cv.w;
else if (Game.MODE == Game.FLIP_MODE)
- gravity = -1;
+ gravity = -0.0007*cv.w;
cv.currentBallPosition[0] += ballVel[0];
cv.currentBallPosition[1] += ballVel[1];
@@ -47,6 +49,16 @@ public class MoveBall implements Runnable
if (cv.currentBallPosition[1] > cv.h || cv.currentBallPosition[1] < 0 || cv.currentBallPosition[0] > cv.w || cv.currentBallPosition[0] < 0)
{
running = false;
+ SharedPreferences prefs = CanvasView.activity.getSharedPreferences("ballBounceHighscores", Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = prefs.edit();
+
+
+ int record = prefs.getInt("mode" + Game.MODE, -1);
+ if (CanvasView.score > record)
+ editor.putInt("mode" + Game.MODE, CanvasView.score);
+
+ editor.apply();
+
new AlertDialog.Builder(CanvasView.activity)
.setTitle("You lost!")
.setMessage("Score: " + CanvasView.score)
@@ -71,8 +83,10 @@ public class MoveBall implements Runnable
{
ballVel[1] += gravity;
cv.ballPositions.add(cv.currentBallPosition.clone());
+ t++;
cv.invalidate();
cv.handler.postDelayed(this, 10);
+
return;
}