Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6874257
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T04:10:18+00:00 2026-05-27T04:10:18+00:00

I’ve got problem here which I couldn’t solve by myself. Everything was okay before,

  • 0

I’ve got problem here which I couldn’t solve by myself. Everything was okay before, but when I decide to add in method doShoot(); stuff for shooting project stoped to work.
some code here
class for Player

    package game.objectsmain;

    import game.main.R;
    import game.objects.animation.PlayerBullet;

    import java.util.List;
    import java.util.Random;

    import android.content.Context;
    import android.content.res.Resources;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.Drawable;
    import android.view.MotionEvent;


    public class Player extends GameObject {

         public static final int P_DEF_SPEED = 3;
         public static final int P_HIGH_SPEED = 6;

         //......//


         private static Random rand = new Random();


         private List<PlayerBullet> bulletList;
         private GunType gunType;
         Context context; 
         Bitmap mBasic;
         Bitmap  mSpray;

        public Player(Drawable image, int cordX, int cordY) {
            super(image);
            // TODO Auto-generated constructor stub
            setXCoord(cordX);
            setYCoord(cordY);
            setSpeedX(P_DEF_SPEED);
            setSpeedY(P_DEF_SPEED);
            update();
            mBasic = BitmapFactory.decodeResource(context.getResources(), R.drawable.bullet3);
    mSpray = BitmapFactory.decodeResource(context.getResources(), R.drawable.spray);

        }

        //......//

        public void doShoot()
        {
        //I ADDED THIS
            if(gunType == GunType.BASIC)
        {


                PlayerBullet b = new PlayerBullet(mBasic, getXCoord(), getYCoord(), 15, 35, 3, 3, BulletDirection.CENTER);
                bulletList.add(b);



        }
        if(gunType == GunType.SPRAY)
        {

                PlayerBullet b1 = new PlayerBullet(mSpray, getXCoord(), getYCoord(), 15, 15, 3, 3, BulletDirection.CENTER);
                PlayerBullet b2 = new PlayerBullet(mSpray, getXCoord(), getYCoord(), 15, 15, 3, 3, BulletDirection.RIGHT);
                PlayerBullet b3 = new PlayerBullet(mSpray, getXCoord(), getYCoord(), 15, 15, 3, 3, BulletDirection.LEFT);


                bulletList.add(b1);
                bulletList.add(b2);
                bulletList.add(b3);



        }//

        }

//......//

     public void draw(Canvas canvas)
       {

        mImage.draw(canvas);
       //AND ADDED THIS
        synchronized (bulletList) {
               for (PlayerBullet bullet: bulletList) {

                   bullet.animate();
                   bullet.draw(canvas);
                   //bullet.animate();
               }
           }
       }//BTW i tried to add this foreach path into doShoot() too it not helps





}

Bullet class. It wroks though

package game.objects.animation;


import game.objectsmain.BulletDirection;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;

public class PlayerBullet extends AnimatedObject{

    private double mSpeedY;
    private double mSpeedX;
    private BulletDirection bulletDir;// direction here it's just enum looks like public enum BulletDirection{LEFT,RIGHT,CENTER}

    public PlayerBullet(Bitmap bitmap, int x, int y, int width, int height, int fps,
            int frameCount, BulletDirection dir) {
        super(bitmap, x, y, width, height, fps, frameCount);
        // TODO Auto-generated constructor stub
        bulletDir = dir;//направление пули
        setFramePeriod(5000/ fps);
        setSpeeds();



    }

    public void draw(Canvas canvas) {
        // where to draw the sprite
        //setY(getY() - mSpeedY);
        Rect destRect = new Rect(getX(), getY(), getX() + spriteWidth, getY() + spriteHeight);
        canvas.drawBitmap(bitmap, sourceRect, destRect, null);

    }

    public void animate()//анимация движения
    {
        super.animate();
        setY(getY() + (int)mSpeedY);
        setX(getX() + (int)mSpeedX); 
       // checkBorders(rect);
    }

    private void setSpeeds()
    {
        if(bulletDir.equals(BulletDirection.CENTER))
        {
             mSpeedY = -10;
             mSpeedX = 0;
        }
        else
        {
            mSpeedY = -8;
            mSpeedX = 5;

            if(bulletDir.equals(BulletDirection.LEFT))
                mSpeedX = -1 * mSpeedX;
        }

    }

    /*public void move()
    {
        xCoord = xCoord + xSpeed;       
        yCoord = yCoord + ySpeed;
        this.resetBounds();
        if(yCoord < (0 - width) || xCoord < 0-width || xCoord > screenWidth) 
            alive = false;

    }*/

}

Main thread class

package game.view;

import game.main.R;
import game.objects.animation.Explosion;
import game.objects.animation.PlayerBullet;
import game.objects.animation.ScrollingElement;
import game.objectsmain.BulletDirection;
import game.objectsmain.Player;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;

public class ViewManager extends Thread 
{
    private static final int FIELD_WIDTH = 480;
    private static final int FIELD_HEIGHT = 800;
    private static final int dist = 100;

    public int touchedX, touchedY;

    /** Область, на которой будем рисовать */
    private SurfaceHolder mSurfaceHolder;

    /** Состояние потока (выполняется или нет. Нужно, чтобы было удобнее прибивать поток, когда потребуется) */
    private boolean mRunning;

    /** Стили рисования */
    private Paint mPaint;

   /** The drawable to use as the background of the animation canvas */
    private Bitmap mBackgroundImage;
    private Bitmap mLinesImage;
    private Bitmap mExplosionImage;
    private Bitmap mBulletImage;
    private Drawable mPlayerImage;

    private ArrayList<ScrollingElement> mScrollEls = new ArrayList<ScrollingElement>();
    private ArrayList<PlayerBullet> mBullets = new ArrayList<PlayerBullet>();
    private ArrayList<Explosion> mBang = new ArrayList<Explosion>();
    public Player mHero;

    // desired fps
    private final static int    MAX_FPS = 50;
    // maximum number of frames to be skipped
    private final static int    MAX_FRAME_SKIPS = 5;
    // the frame period
    private final static int    FRAME_PERIOD = 1000 / MAX_FPS;  

    private Explosion mBoom;//объект класса взрыв

    public ViewManager(SurfaceHolder surfaceHolder, Context context)
    {
        mSurfaceHolder = surfaceHolder;
        mRunning = false;
        Resources res = context.getResources();
        mExplosionImage = BitmapFactory.decodeResource(res, R.drawable.explosion);
        mBackgroundImage = BitmapFactory.decodeResource(res, R.drawable.bckgr1);
        mLinesImage = BitmapFactory.decodeResource(res, R.drawable.lines3); 
        mPlayerImage = res.getDrawable(R.drawable.test);
        mBulletImage = BitmapFactory.decodeResource(res, R.drawable.bullet3);
        InitElements(res);
        mHero = new Player(mPlayerImage, 240, 400);
        mBoom = new Explosion(mExplosionImage, 200, 500, 64, 64, 7, 7);

    }


    /**
        * Задание состояния потока
        * @param running
        */
       public void setRunning(boolean running)
       {
           mRunning = running;
       }

       public void run()
       {
           while (mRunning)
           {
               Canvas canvas = null;
               try
               {
                   // подготовка Canvas-а
                   canvas = mSurfaceHolder.lockCanvas();
                   synchronized (mSurfaceHolder)
                   {

                       mHero.update();
                       // собственно рисование

                       doDraw(canvas);
                       //mImage.draw(canvas);



                   }
               }
               catch (Exception e) { }
               finally
               {
                   if (canvas != null)
                   {
                       mSurfaceHolder.unlockCanvasAndPost(canvas);
                   }
               }
           }
       }

       public boolean gettouch = false;

       private void doDraw(Canvas canvas) {

        canvas.drawBitmap(mBackgroundImage, 0, 0, null);
        //отрисовка анимации
           //......//
           mHero.draw(canvas);




           }

    }



    //....//
}

what LOGCAT says

11-27 15:39:36.852: INFO/ActivityManager(58): Displayed activity game.main/game.mainmenu.MainMenuActivity: 2102 ms (total 2102 ms)
11-27 15:39:42.073: DEBUG/dalvikvm(124): GC_EXPLICIT freed 2866 objects / 133872 bytes in 140ms
11-27 15:39:47.113: DEBUG/dalvikvm(197): GC_EXPLICIT freed 117 objects / 5160 bytes in 144ms
11-27 15:39:52.133: DEBUG/dalvikvm(265): GC_EXPLICIT freed 765 objects / 55144 bytes in 138ms
11-27 15:39:52.383: INFO/ActivityManager(58): Starting activity: Intent { cmp=game.main/game.mainmenu.StartGame }
11-27 15:39:52.693: DEBUG/dalvikvm(303): GC_EXTERNAL_ALLOC freed 267 objects / 13328 bytes in 50ms
11-27 15:39:53.054: DEBUG/AndroidRuntime(303): Shutting down VM
11-27 15:39:53.054: WARN/dalvikvm(303): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-27 15:39:53.073: ERROR/AndroidRuntime(303): FATAL EXCEPTION: main
11-27 15:39:53.073: ERROR/AndroidRuntime(303): java.lang.RuntimeException: Unable to start activity ComponentInfo{game.main/game.mainmenu.StartGame}: java.lang.NullPointerException
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.os.Looper.loop(Looper.java:123)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at java.lang.reflect.Method.invokeNative(Native Method)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at java.lang.reflect.Method.invoke(Method.java:521)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at dalvik.system.NativeStart.main(Native Method)
11-27 15:39:53.073: ERROR/AndroidRuntime(303): Caused by: java.lang.NullPointerException
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at game.objectsmain.Player.<init>(Player.java:45)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at game.view.ViewManager.<init>(ViewManager.java:73)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at game.view.ViewPanel.<init>(ViewPanel.java:24)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at game.mainmenu.StartGame.onCreate(StartGame.java:18)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-27 15:39:53.073: ERROR/AndroidRuntime(303):     ... 11 more
11-27 15:39:53.093: WARN/ActivityManager(58):   Force finishing activity game.main/game.mainmenu.StartGame
11-27 15:39:53.104: WARN/ActivityManager(58):   Force finishing activity game.main/game.mainmenu.MainMenuActivity
11-27 15:39:53.373: INFO/ARMAssembler(58): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x2d2d78:0x2d2e34] in 463339 ns
11-27 15:39:53.677: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{44ec3010 game.main/game.mainmenu.StartGame}
11-27 15:40:04.141: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{44f01440 game.main/game.mainmenu.MainMenuActivity}
11-27 15:40:04.143: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{44ec3010 game.main/game.mainmenu.StartGame}
11-27 15:40:14.553: DEBUG/AndroidRuntime(312): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
11-27 15:40:14.553: DEBUG/AndroidRuntime(312): CheckJNI is ON
11-27 15:40:14.703: DEBUG/AndroidRuntime(312): --- registering native functions ---
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T04:10:19+00:00Added an answer on May 27, 2026 at 4:10 am

    You’ve got NullPointerException in Player – looks like your context member is not initialized.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to count how many characters a certain string has in PHP, but
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I am trying to understand how to use SyndicationItem to display feed which is
I used javascript for loading a picture on my website depending on which small
I've got a string that has curly quotes in it. I'd like to replace
Seemingly simple, but I cannot find anything relevant on the web. What is the
I have a French site that I want to parse, but am running into
I am currently running into a problem where an element is coming back from
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I need to clean up various Word 'smart' characters in user input, including but

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.