Update-Game-Logic

yuying
王宇洋 3 years ago
parent d5f809e0c3
commit a160d4a8c7

@ -1,26 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<application
android:name="com.echo.colorizeit.APP"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:requestLegacyExternalStorage="true"
android:theme="@style/Theme.MyApplication">
<activity
@ -28,11 +32,11 @@
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApplication.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
<activity
@ -40,33 +44,37 @@
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApplication.NoActionBar">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
<activity
android:name="com.echo.colorizeit.ui.a_image_upload_activity.ImageUploadViewActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApplication.NoActionBar">
</activity>
android:theme="@style/Theme.MyApplication.NoActionBar"></activity>
<activity
android:name="com.echo.colorizeit.ui.a_camera_activity.CameraKitActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApplication.NoActionBar">
</activity>
android:theme="@style/Theme.MyApplication.NoActionBar"></activity>
<activity
android:name="com.echo.colorizeit.myganme.GameActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApplication.NoActionBar"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation">>
android:theme="@style/Theme.MyApplication.NoActionBar">>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />

@ -8,15 +8,19 @@ import android.graphics.Rect;
import com.example.myapplication.R;
public class Bird extends RectHittableObject{
public class Bird extends RectHittableObject {
private Bitmap bird;
private int speed = Scene.speed;
public Bird(int x, int y, int width, int height, Context context) {
super(x, y, width, height, context);
}
@Override
public void draw(Canvas canvas) {
if(bird== null)
if (GameView.DEBUG)
canvas.drawRect(getBorderRect(), getDefault_paint());
if (bird == null)
bird = BitmapFactory.decodeResource(getContext().getResources(), R.mipmap.bird2);
canvas.drawBitmap(bird, null, getBorder_rect(), null);
@ -26,4 +30,14 @@ public class Bird extends RectHittableObject{
public Boolean checkHit(Rect rect) {
return false;
}
@Override
public void moveSingle() {
int x = getX() - speed / GameView.FPS;
if ((x > 0 - getWidth() - 100 && x <= Scene.screenWidth && getMoveStarted())) {
setLocation(x, getY());
} else {
setMoveStarted(false);
}
}
}

@ -0,0 +1,26 @@
package com.echo.colorizeit.myganme;
import android.content.Context;
import java.util.Random;
public class BirdMoving extends Bird{
private int randomNum = 0;
public BirdMoving(int x, int y, int width, int height, Context context) {
super(x, y, width, height, context);
Random random = new Random();
randomNum = random.nextInt(2);
}
@Override
public void moveSingle() {
int x = getX() - (Scene.speed + 300*randomNum)/GameView.FPS;
// int y = getY() - (300*randomNum)/GameView.FPS;
if ((x > 0 - getWidth() - 100 && x <= Scene.screenWidth && getMoveStarted())) {
setLocation(x, getY());
} else {
setMoveStarted(false);
}
}
}

@ -9,6 +9,7 @@ import com.example.myapplication.R;
public class Box extends RectHittableObject {
private Bitmap obstacle;
private int speed = Scene.speed;
public Box(int x, int y, int width, int height, Context context) {
super(x, y, width, height, context);
@ -19,12 +20,23 @@ public class Box extends RectHittableObject {
@Override
public void draw(Canvas canvas) {
// canvas.drawRect(getBorderRect(), getDefault_paint());
if (GameView.DEBUG)
canvas.drawRect(getBorderRect(), getDefault_paint());
if(obstacle== null)
if (obstacle == null)
obstacle = BitmapFactory.decodeResource(getContext().getResources(), R.mipmap.obstacle);
canvas.drawBitmap(obstacle, null, getBorder_rect(), null);
}
@Override
public void moveSingle() {
int x = getX() - speed / GameView.FPS;
if ((x > 0 - getWidth() - 100 && x <= Scene.screenWidth && getMoveStarted())) {
setLocation(x, getY());
} else {
setMoveStarted(false);
}
}
}

@ -10,13 +10,15 @@ import com.example.myapplication.R;
public class Cloud extends RectHittableObject{
private Bitmap cloud;
private int speed = Scene.speed;
public Cloud(int x, int y, int width, int height, Context context) {
super(x, y, width, height, context);
}
@Override
public void draw(Canvas canvas) {
if (GameView.DEBUG)
canvas.drawRect(getBorderRect(), getDefault_paint());
if(cloud== null)
cloud = BitmapFactory.decodeResource(getContext().getResources(), R.mipmap.cloud);
canvas.drawBitmap(cloud, null, getBorder_rect(), null);
@ -26,4 +28,15 @@ public class Cloud extends RectHittableObject{
public Boolean checkHit(Rect rect) {
return false;
}
@Override
public void moveSingle() {
int x = getX() - speed / GameView.FPS;
if((x > 0 - getWidth() - 100 && x <= Scene.screenWidth && getMoveStarted())){
setLocation(x, getY());
}
else{setMoveStarted(false);
}
}
}

@ -16,6 +16,7 @@ public class GameActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
GameView gameView = new GameView(this);
// getSupportActionBar().hide();
setContentView(gameView);
// gameView.setOnClickListener(new View.OnClickListener() {
// @Override
@ -30,16 +31,11 @@ public class GameActivity extends AppCompatActivity {
return false;
}
});
}
public void makeFullScreen() {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
@Override
protected void onStop() {
super.onStop();
finish();
}
}

@ -7,6 +7,7 @@ import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.os.Build;
import android.os.Vibrator;
import android.util.Log;
import android.view.SurfaceHolder;
@ -15,20 +16,23 @@ import android.view.SurfaceView;
import androidx.annotation.NonNull;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
public class GameView extends SurfaceView implements SurfaceHolder.Callback, Runnable {
public static final Boolean DEBUG = true;
private SurfaceHolder holder;
private Boolean isDrawing;
private Canvas canvas;
private Paint string_paint;
private Paint string_paint1;
public static final int FPS = 100;
public static final int minDrawTime = 1000 / FPS;
public static int FPS = 60;
public static int minDrawTime = 1000 / FPS;
private Scene scene;
public static Context context;
private ArrayList<Integer> FPS_data = new ArrayList<>();
private float mean_fps = 0;
private Boolean isHit = false;
private Boolean isGameOver = false;
public GameView(Context context) {
@ -63,7 +67,10 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback, Run
int ScreenHeight = Math.abs(holder.getSurfaceFrame().top - holder.getSurfaceFrame().bottom);
scene = new Scene(ScreenWidth, ScreenHeight);
Scene.init_game_object(context);
Scene.startMove();
// Scene.startMove();
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// holder.getSurface().setFrameRate(120, Surface.FRAME_RATE_COMPATIBILITY_DEFAULT);
// }
}
@ -74,7 +81,7 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback, Run
@Override
public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
isDrawing = false;
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
//canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
Scene.end();
}
@ -85,6 +92,7 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback, Run
long last_start = System.currentTimeMillis();
while (isDrawing) {
long start = System.currentTimeMillis();
Scene.startMove();
drawing(last_start, last_end);
long end = System.currentTimeMillis();
while (end - start < minDrawTime) {
@ -102,7 +110,11 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback, Run
private void drawing(long start, long end) {
try {
canvas = holder.lockCanvas();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
canvas = holder.lockHardwareCanvas();
} else {
canvas = holder.lockCanvas();
}
if (canvas != null) {
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
canvas.drawColor(Color.WHITE, PorterDuff.Mode.ADD);
@ -118,33 +130,102 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback, Run
}
canvas.drawText("FPS: " + String.valueOf(mean_fps), 50, 50, string_paint);
canvas.drawText("Distance: " + String.valueOf((int) (Scene.distance / 100)), 450, 50, string_paint);
for (RectHittableObject o : Scene.rectHittableObjects) {
o.draw(canvas);
if (!o.equals(Scene.player))
if (o.checkHit(Scene.player.getBorderRect())) {
isHit = true;
break;
try {
for (int i = 0; i < Scene.rectHittableObjects.size(); i++) {
RectHittableObject o = Scene.rectHittableObjects.get(i);
if (o.getX() > 0 - o.getWidth() - 100)
o.draw(canvas);
else {
Scene.rectHittableObjects.remove(o);
}
if (!o.equals(Scene.player))
if (o.checkHit(Scene.player.getBorderRect())) {
isHit = true;
break;
}
}
} catch (ConcurrentModificationException e) {
System.out.println("ConcurrentModificationException");
}
if (DEBUG) {
canvas.drawText("DrawTime: " + String.valueOf((end - start)) + " ms", 50, 100, string_paint);
canvas.drawText("Width: " + String.valueOf(canvas.getWidth()), 50, 150, string_paint);
canvas.drawText("Height: " + String.valueOf(canvas.getHeight()), 50, 200, string_paint);
canvas.drawText("HardwareAccelerated: " + String.valueOf(canvas.isHardwareAccelerated()), 50, 250, string_paint);
canvas.drawText("ClipBounds: " + canvas.getClipBounds().toString(), 50, 300, string_paint);
int count = 0;
for (RectHittableObject o : Scene.rectHittableObjects) {
if (o.getMoveStarted()) {
count += 1;
}
if (!o.equals(Scene.player) && o.getMoveStarted()) {
int x1 = Scene.player.getX();
int y1 = Scene.player.getY();
int x2 = o.getX();
int y2 = o.getY();
int distance = (int) Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
Paint paint = new Paint();
paint.setStrokeWidth(5f);
paint.setColor(Color.CYAN);
if (distance < 450) {
string_paint.setColor(Color.RED);
string_paint.setTextSize(80);
paint.setColor(Color.RED);
canvas.drawLine(Scene.player.getX(), Scene.player.getY(), o.getX(), o.getY(), paint);
canvas.drawText(String.valueOf(distance), (x1 + x2) / 2, (y1 + y2) / 2, string_paint);
string_paint.setColor(Color.BLACK);
paint.setColor(Color.BLACK);
string_paint.setTextSize(50);
} else {
canvas.drawLine(Scene.player.getX(), Scene.player.getY(), o.getX(), o.getY(), paint);
canvas.drawText(String.valueOf(distance), (x1 + x2) / 2, (y1 + y2) / 2, string_paint);
}
}
}
if (DEBUG) {
Paint paint = new Paint();
paint.setTextSize(100);
paint.setColor(Color.RED);
canvas.drawText("DEBUG MODE", (int) (Scene.screenWidth * 0.6), 200, paint);
}
if (Player.getIsJumping() && !isHit) {
canvas.drawText("Need Jump !", (int) (Scene.screenWidth * 0.2), Scene.screenHeight / 2, string_paint1);
}
canvas.drawText("Moving Obj: " + count, 50, 350, string_paint);
canvas.drawText("Jump H: " + Scene.player.getJump_h(), 50, 400, string_paint);
canvas.drawText("Jump: " + Player.getIsJumping(), 50, 450, string_paint);
canvas.drawText("Draw Obj Count: " + Scene.rectHittableObjects.size(), 50, 500, string_paint);
canvas.drawText("Left up: " + String.valueOf(Scene.player.getLeft_up()), Scene.player.getX() - 100, Scene.player.getY() + Player.playerHeight + 100, string_paint);
}
for (Drawable o : Scene.staticObject) {
o.draw(canvas);
}
if(isHit){
if (isHit) {
System.out.println("HIT!!!!!!!!!!!!!!!!");
canvas.drawText("Game Over !" , (int) (Scene.screenWidth * 0.2), Scene.screenHeight/2, string_paint1);
final Vibrator vibrator=(Vibrator)context.getSystemService(VIBRATOR_SERVICE);
if(vibrator.hasVibrator())
canvas.drawText("Game Over !", (int) (Scene.screenWidth * 0.2), Scene.screenHeight / 2, string_paint1);
final Vibrator vibrator = (Vibrator) context.getSystemService(VIBRATOR_SERVICE);
if (vibrator.hasVibrator())
vibrator.vibrate(300);
isHit = false;
isGameOver = true;
Scene.end();
Scene.init_game_object(context);
Scene.startMove();
}
}
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
if (isGameOver) {
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
isGameOver = false;
}
}
}
}

@ -7,4 +7,5 @@ public interface Movable {
void startMoveLeftX(int speed);
void startMoveUpY(int speed);
void startMoveXY(int speedX, int speedY);
void moveSingle();
}

@ -6,16 +6,24 @@ import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import com.example.myapplication.R;
public class Player extends RectHittableObject {
public static final int playerWidth = 150;
public static final int playerHeight= 150;
public static final int playerHeight = 150;
public static final float g = 9.8f;
private static Thread thread;
private static Boolean isJumping = false;
private static Boolean canNewJumping = true;
private Bitmap player_image;
private Bitmap player_image_all;
private long jump_start_time;
private long jump_current_time;
private int jump_up_v0 = 6400;
private double jump_h = 0;
private Rect[] crop_array = new Rect[6];
public Player(int x, int y, int width, int height, Context context) {
@ -25,7 +33,7 @@ public class Player extends RectHittableObject {
@Override
public void startMoveUpY(int speed) {
if(!isJumping) {
if (!isJumping) {
isJumping = true;
long start_time = System.currentTimeMillis();
thread = new Thread(new Runnable() {
@ -38,6 +46,7 @@ public class Player extends RectHittableObject {
long current_time = System.currentTimeMillis();
t = (current_time - start_time);
h = (speed * t - 0.5 * g * t * t) / 10000;
jump_h = h;
setLocation(getX(), (int) (Scene.groundY - Player.playerHeight - h));
long end = System.currentTimeMillis();
while (end - start < GameView.minDrawTime) {
@ -59,6 +68,29 @@ public class Player extends RectHittableObject {
}
}
@Override
public void moveSingle() {
// if(canNewJumping){
// jump_start_time = System.currentTimeMillis();
// canNewJumping = false;
// isJumping = true;
// }
// if(isJumping) {
// jump_current_time = System.currentTimeMillis();
// int x = getX() - jump_up_v0 / GameView.FPS;
// long t = (jump_current_time - jump_start_time);
// long h = (long) ((jump_up_v0 * t - 0.5 * g * t * t) / 10000);
// if (h <= 0) {
// isJumping = false;
// canNewJumping = true;
// }
// else {
// setLocation(getX(), (int) (Scene.groundY - Player.playerHeight - h));
// }
// }
}
@Override
public void startMoveLeftX(int speed) {
//stop x move
@ -71,13 +103,91 @@ public class Player extends RectHittableObject {
@Override
public void draw(Canvas canvas) {
if (GameView.DEBUG)
canvas.drawRect(getBorderRect(), getDefault_paint());
Paint paint = getDefault_paint();
paint.setColor(Color.BLUE);
// canvas.drawRect(getBorderRect(), paint);
if(player_image==null)
player_image = BitmapFactory.decodeResource(getContext().getResources(), R.mipmap.player);
canvas.drawBitmap(player_image,null,getBorder_rect(),null);
if (player_image == null) {
// player_image = BitmapFactory.decodeResource(getContext().getResources(), R.mipmap.player);
player_image_all = BitmapFactory.decodeResource(getContext().getResources(), R.mipmap.playerall);
int single_width = player_image_all.getWidth() / 6;
int single_height = player_image_all.getHeight();
for (int i = 0; i < 6; i++) {
int x = single_width * i;
crop_array[i] = new Rect(x, 0, x + single_width, single_height);
}
}
canvas.drawBitmap(player_image_all, crop_array[(Scene.distance/20) % 4], getBorder_rect(), null);
}
public static int getPlayerWidth() {
return playerWidth;
}
public static int getPlayerHeight() {
return playerHeight;
}
public static float getG() {
return g;
}
public static Boolean getIsJumping() {
return isJumping;
}
public static void setIsJumping(Boolean isJumping) {
Player.isJumping = isJumping;
}
public static Boolean getCanNewJumping() {
return canNewJumping;
}
public static void setCanNewJumping(Boolean canNewJumping) {
Player.canNewJumping = canNewJumping;
}
public Bitmap getPlayer_image() {
return player_image;
}
public void setPlayer_image(Bitmap player_image) {
this.player_image = player_image;
}
public long getJump_start_time() {
return jump_start_time;
}
public void setJump_start_time(long jump_start_time) {
this.jump_start_time = jump_start_time;
}
public long getJump_current_time() {
return jump_current_time;
}
public void setJump_current_time(long jump_current_time) {
this.jump_current_time = jump_current_time;
}
public int getJump_up_v0() {
return jump_up_v0;
}
public void setJump_up_v0(int jump_up_v0) {
this.jump_up_v0 = jump_up_v0;
}
public double getJump_h() {
return jump_h;
}
public void setJump_h(double jump_h) {
this.jump_h = jump_h;
}
}

@ -1,13 +1,13 @@
package com.echo.colorizeit.myganme;
import android.content.Context;
import android.util.Log;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.Random;
public class Scene {
private static int speed = 420;
public static int speed = 420;
public static int distance = 0; //from right of the screen
public static int screenWidth;
public static int screenHeight;
@ -17,88 +17,143 @@ public class Scene {
public static Boolean running = true;
private static ArrayList<Thread> threads = new ArrayList<>();
public static Player player;
private static Context context;
private static Random random = new Random();
public Scene(int screenWidth, int screenHeight) {
this.screenWidth = screenWidth;
this.screenHeight = screenHeight;
groundY = (int) (screenHeight * 0.8);
distance = 0;
}
public static void startMove(){
Log.d("Scene","startMove");
running = true;
distance = 0;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while(running){
long start = System.currentTimeMillis();
distance += speed/GameView.FPS;
public static void startMove() {
// Log.d("Scene","startMove");
// running = true;
long start = System.currentTimeMillis();
distance += speed / GameView.FPS;
if (distance % 200 == 0) {
genNewObj();
}
// Log.d("Scene","Distance:" + distance);
for(RectHittableObject o: rectHittableObjects){
if(o.getX() - distance < screenWidth && !o.getMoveStarted()){
o.setX(o.getX() - distance);
o.startMoveLeftX(speed);
}
}
long end = System.currentTimeMillis();
while(end - start < GameView.minDrawTime){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
try {
for (int i = 0; i < rectHittableObjects.size(); i++) {
RectHittableObject o = rectHittableObjects.get(i);
if (o.getX() - distance < screenWidth && !o.getMoveStarted()) {
o.setMoveStarted(true);
o.setX(o.getX() - distance);
}
if (o.getMoveStarted()) {
o.moveSingle();
}
//Cheat
if (GameView.DEBUG) {
if (!o.equals(player) && o instanceof Box) {
if (Math.abs(o.getRight_bottom().x - player.getRight_bottom().x) < 200) {
System.out.println("JUMP");
Scene.player.startMoveUpY(6400);
}
end = System.currentTimeMillis();
}
}
}
});
threads.add(thread);
thread.start();
} catch (ConcurrentModificationException e) {
System.out.println("ConcurrentModificationException");
}
long end = System.currentTimeMillis();
// Thread thread = new Thread(new Runnable() {
// @Override
// public void run() {
// while(running){
// long start = System.currentTimeMillis();
// distance += speed/GameView.FPS;
//// Log.d("Scene","Distance:" + distance);
// for(RectHittableObject o: rectHittableObjects){
// if(o.getX() - distance < screenWidth && !o.getMoveStarted()){
// o.setX(o.getX() - distance);
// o.startMoveLeftX(speed);
// }
// }
// long end = System.currentTimeMillis();
// while(end - start < GameView.minDrawTime){
// try {
// Thread.sleep(1);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// end = System.currentTimeMillis();
// }
// }
//
// }
// });
// threads.add(thread);
// thread.start();
}
public static void init_game_object(Context context){
public static void genNewObj() {
new Thread(new Runnable() {
@Override
public void run() {
rectHittableObjects.add(new Box(Scene.screenWidth + distance + 2000 + random.nextInt(500), Scene.groundY - 100, 100, 100, context));
rectHittableObjects.add(new Cloud(Scene.screenWidth + distance + 500 + random.nextInt(2000), 300, 150, 100, context));
rectHittableObjects.add(new Cloud(Scene.screenWidth + distance + 0 + random.nextInt(2000), 100, 150, 100, context));
rectHittableObjects.add(new Cloud(Scene.screenWidth + distance + 1000 + random.nextInt(500), 100, 150, 100, context));
rectHittableObjects.add(new Bird(Scene.screenWidth + distance + 1200 + random.nextInt(600), 200, 100, 100, context));
rectHittableObjects.add(new BirdMoving(Scene.screenWidth + distance + 600 + random.nextInt(300), 400, 100, 100, context));
}
}).start();
}
public static void init_game_object(Context context) {
distance = 0;
Random random = new Random();
if(rectHittableObjects != null)
Scene.context = context;
if (rectHittableObjects != null)
rectHittableObjects.clear();
staticObject.add(new Ground());
System.out.println(rectHittableObjects.size());
player = new Player(300,groundY - Player.playerHeight, Player.playerWidth, Player.playerHeight,context);
player = new Player(300, groundY - Player.playerHeight, Player.playerWidth, Player.playerHeight, context);
rectHittableObjects.add(player);
for(int i = 5; i < 100; i++){
rectHittableObjects.add(new Box(i * 800 + random.nextInt(500),Scene.groundY - 100, 100,100,context));
}
for(int i = 2; i < 100; i++){
rectHittableObjects.add(new Cloud(i * 800 + random.nextInt(400), 300, 150,100,context));
rectHittableObjects.add(new Cloud(i * 1000 + random.nextInt(800), 100, 150,100,context));
rectHittableObjects.add(new Bird(i * 900 + random.nextInt(800), 200, 100,100,context));
}
rectHittableObjects.add(new Box(distance + 3000 + random.nextInt(500), Scene.groundY - 100, 100, 100, context));
rectHittableObjects.add(new Cloud(distance + 800 + random.nextInt(400), 300, 150, 100, context));
rectHittableObjects.add(new Cloud(distance + 1000 + random.nextInt(800), 100, 150, 100, context));
rectHittableObjects.add(new Bird(distance + 900 + random.nextInt(800), 200, 100, 100, context));
// for (int i = 3; i < 10; i++) {
// rectHittableObjects.add(new Box(i * 1000 + random.nextInt(500), Scene.groundY - 100, 100, 100, context));
// }
// for (int i = 2; i < 10; i++) {
// rectHittableObjects.add(new Cloud(i * 800 + random.nextInt(400), 300, 150, 100, context));
// rectHittableObjects.add(new Cloud(i * 1000 + random.nextInt(800), 100, 150, 100, context));
// rectHittableObjects.add(new Bird(i * 900 + random.nextInt(800), 200, 100, 100, context));
// }
}
public static void end(){
public static void end() {
running = false;
for(RectHittableObject o: rectHittableObjects){
Thread thread = o.getThread();
if(thread != null) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
for(Thread t: threads){
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// for(RectHittableObject o: rectHittableObjects){
// Thread thread = o.getThread();
// if(thread != null) {
// try {
// thread.join();
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
// }
// for(Thread t: threads){
// try {
// t.join();
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
rectHittableObjects.clear();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 B

Loading…
Cancel
Save