java - have trouble with my 2d android game -
hey guys im kind of noob dont hard me. i'm working on 2d game android have trouble it. finished, want collectible coins in game, , want them spawn randomly on obstacles. finished main code of coins, hovering on obstacles , can collect them, have no idea how can let them randomly spawn: hope can me here code: coin class:
enter code herepublic class coin extends gameobject{ private bitmap spritesheet; private double dya; private boolean playing; private long starttime; private animation animation = new animation(); private int num = 0; private obsticals obsticals; public coin(bitmap res, int w, int h, int numframes) { x = gamepanel.width + 20; y = gamepanel.height - gamepanel.height / 4 - 200; dy = 0; dx = +gamepanel.movespeed; height = h; width = w; bitmap[] image = new bitmap[numframes]; spritesheet = res; (int = 0; < image.length; i++) { image[i] = bitmap.createbitmap(spritesheet, i*width, 0, width, height); } animation.setframes(image); animation.setdelay(100); } public void update() { if (y <= 50) { reseto(); } x += dx; long elapsed = (system.nanotime() - starttime) / 1000000; if (elapsed > 10000) { dx = dx - 1; starttime = system.nanotime(); system.out.println(dx); num = num + 30; } if (dx <= -25) { dx = -24; } if (num >= 200) { num = 200; } } public void draw(canvas canvas) { canvas.drawbitmap(animation.getimage(),x,y,null); } public void reseto(){ x = gamepanel.width + 20; y = gamepanel.height - gamepanel.height / 4 - 200; dy = 0; dx = +gamepanel.movespeed; num = 0; } public void coincollected(){ reseto(); } }
here gamepanel code:
public class gamepanel extends surfaceview implements surfaceholder.callback {
public static final int width = 856; public static final int height = 480; public static int movespeed = -15; //other classes private mainthread thread; private background bg; private busch busch; private ground ground; private player player; private obsticals obsticals; private sun sun; private coin coin; private coinsymbol coinsymbol; private random rand = new random(); public boolean sliden = false; private int coincounter = 0; //sharedpreferences coins sharedpreferences coinprefs; sharedpreferences.editor coinprefseditor; // sharedpreferences highscore sharedpreferences prefs; sharedpreferences.editor prefseditor; int highscore; int highstring; final string key1 = "key1"; public enum state{ menu, ingame, gameover; }; private state state = state.menu; public gamepanel(context context) { super(context); //add callback surfaceholder intercept events getholder().addcallback(this); coinprefs = context.getsharedpreferences("coinprefsdatei", context.mode_private); coinprefseditor = coinprefs.edit(); prefs = context.getsharedpreferences("prefsdatei", context.mode_private); prefseditor = prefs.edit(); thread = new mainthread(getholder(), this); //make gamepanel focusable can handle events setfocusable(true); } public void gameover(){ state = state.gameover; } public void newgame(){ movespeed = -15; } @override public void surfacechanged(surfaceholder holder, int format, int width, int height) { } @override public void surfacedestroyed(surfaceholder holder) { boolean retry = true; while (retry) { try { thread.setrunning(false); thread.join(); } catch (interruptedexception e) { e.printstacktrace(); } retry = false; } } @override public void surfacecreated(surfaceholder holder) { //checkt highscore loadscore(); loadcoins(); //malt alle bilder sun = new sun(bitmapfactory.decoderesource(getresources(), r.drawable.sonne)); bg = new background(bitmapfactory.decoderesource(getresources(), r.drawable.baum)); busch = new busch(bitmapfactory.decoderesource(getresources(), r.drawable.applandschaft)); ground = new ground(bitmapfactory.decoderesource(getresources(), r.drawable.weg)); coinsymbol = new coinsymbol(bitmapfactory.decoderesource(getresources(), r.drawable.coinsymbol)); //breite, höhe, frames player = new player(bitmapfactory.decoderesource(getresources(), r.drawable.test), 115, 120, 8); obsticals = new obsticals(bitmapfactory.decoderesource(getresources(), r.drawable.hindernisnew), 75, 150, 1); coin = new coin(bitmapfactory.decoderesource(getresources(), r.drawable.coin), 40, 40, 4); //we can safely start game loop thread.setrunning(true); thread.start(); } public void savehighscore(){ highscore = player.getscore(); prefseditor.putint(key1,highscore); prefseditor.commit(); } public void loadscore(){ highstring = prefs.getint(key1,0); } public void loadcoins() { coincounter = coinprefs.getint(key1,0); } public void savecoins() { coinprefseditor.putint(key1,coincounter); coinprefseditor.commit(); } @override public boolean ontouchevent(motionevent event) { if(event.getaction()==motionevent.action_down){ if(state == state.menu){ state = state.ingame; } if(!player.getplaying() && state == state.ingame) { player.setplaying(true); } else if (state == state.ingame) { player.setup(true); } else if (state == state.gameover) { player.resetscore(); player.resetp(); player.setplaying(true); state = state.ingame; obsticals.reseto(); coin.reseto(); //newgame(); } return true; } if(event.getaction()==motionevent.action_up) { player.setup(false); return true; } return super.ontouchevent(event); } public void update() { if (player.getplaying() == true && state == state.ingame) { bg.update(); busch.update(); player.update(); ground.update(); obsticals.update(); coin.update(); collisionboolen(player, obsticals); collectcoin(player, coin); } } public boolean collisionboolen(gameobject player, gameobject obsticals) { if(rect.intersects(player.getrectangle(),obsticals.getrectangle())) { checkscore(); savecoins(); state = state.gameover; ground.restartground(); return true; } return false; } public boolean collectcoin(gameobject player, gameobject coin) { if(rect.intersects(player.getrectangle(),coin.getrectangle())) { coidcollectet(); coincounter += 1; return true; } return false; } public void coidcollectet(){coin.coincollected();} public void stopplay(){ player.setplaying(false); } public void checkscore(){ if (player.score > highstring) { savehighscore(); loadscore(); }else { loadscore(); } } public void startmusik(){ } @override public void draw(canvas canvas) { final float scalefactorx = getwidth() / (width*1.f); final float scalefactory = getheight() / (height*1.f); if (canvas != null && state == state.ingame) { final int savedstate = canvas.save(); canvas.scale(scalefactorx, scalefactory); sun.draw(canvas); paint paint = new paint(); paint.setcolor(color.black); paint.settextsize(50); paint.settextalign(paint.align.right); canvas.drawtext(""+coincounter, width - 50 , 50 , paint); bg.draw(canvas); coinsymbol.draw(canvas); busch.draw(canvas); ground.draw(canvas); player.draw(canvas); obsticals.draw(canvas); coin.draw(canvas); canvas.restoretocount(savedstate); }else if (canvas != null && state == state.menu){ canvas.scale(scalefactorx, scalefactory); sun.draw(canvas); bg.draw(canvas); coinsymbol.draw(canvas); busch.draw(canvas); ground.draw(canvas); paint paint = new paint(); paint.setcolor(color.black); paint.settextsize(100); paint.settextalign(paint.align.center); canvas.drawtext("start game", width / 2 , height / 2 , paint); paint.setcolor(color.black); paint.settextsize(50); canvas.drawtext("touch start!", width / 2 , height / 2 + 100 , paint); paint.settextalign(paint.align.right); canvas.drawtext(""+coincounter, width - 50 , 50 , paint); paint.settextalign(paint.align.center); paint.settextsize(20); canvas.drawtext("highscore = "+highstring, width / 2 , height / 2 + 150 , paint); }else if (canvas != null && state == state.gameover){ canvas.scale(scalefactorx, scalefactory); canvas.drawcolor(color.black); sun.draw(canvas); bg.draw(canvas); coinsymbol.draw(canvas); busch.draw(canvas); ground.draw(canvas); paint paint = new paint(); paint.setcolor(color.black); paint.settextsize(100); paint.settextalign(paint.align.center); canvas.drawtext("game over", width / 2 , height / 2 , paint); paint.settextsize(50); canvas.drawtext("touch restart!", width / 2 , height / 2 + 100 , paint); paint.settextalign(paint.align.right); canvas.drawtext(""+coincounter, width -50 , 50 , paint); paint.settextalign(paint.align.center); paint.settextsize(20); canvas.drawtext("highscore = "+highstring, width / 2 , height / 2 + 150 , paint); } } }
i hope can me!
here function spawn ball random position. hope can adapt needs :
public void spawn() { /** * spawns ball @ random position */ random random = new random(); radius = random.nextfloat() * 100f + 50f; float velocity_x = random.nextfloat() * 70.0f + 40.0f; float position_y = random.nextfloat() * (screen_height - 120 - radius); position = new vector(screen_width, position_y); paused_velocity = velocity = new vector(-velocity_x, 0.0f); }
source : virajmahesh | github : falling balls
Comments
Post a Comment