空指针异常 求助!!!

xiaoru51277 2012-06-11 09:45:38
自己写得一个坦克大战的代码 目前只实现了地图和我方坦克的走动(用图片的切换搞定的) 在做子弹的时候出现了该错误 代码本来有三个类 我自己折磨了好几天都没搞定。现在发下我整合在一个activity的代码 求解(新手代码有点乱 见谅 会改进的 呵呵)

package my.packa;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.KeyEvent;
import android.view.View;


public class Game_oldview extends View {


public static final Canvas canvas = null;
int x=96,y=288,dir_x,dir_y;
Bitmap player,up,down,right,left;
String dir;
Resources res;
Paint p = new Paint();
int[][] map={


{0,0,0,0,0,0,3,4,0,0,0,0,0, 0,3,4,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,17,18,0,0,0,0,0,0,17,18,0,0,0,0,0,0,0,0,0,0},

{0,0,1,2,0,0,3,4,0,0,0,0,0, 0,1,2,0,0,1,2,0,0,1,2,0,0},
{0,0,15,16,0,0,17,18,0,0,0,0,0, 0,15,16,0,0,15,16,0,0,15,16,0,0},

{0,0,1,2,0,0,0,0,0,0,0,0,1, 2,1,2,0,0,1,2,3,4,1,2,0,0},
{0,0,15,16,0,0,0,0,0,0,0,0,15, 16,15,16,0,0,15,16,17,18,15,16,0,0},

{0,0,0,0,1,2,0,0,0,0,0,0,0, 0,0,0,0,0,3,4,0,0,0,0,0,0},
{0,0,0,0,15,16,0,0,0,0,0,0,0,0,0,0,0,0,17,18,0,0,0,0,0,0},

{5,6,0,0,0,0,1,2,0,0,0,0,3, 4,0,0,0,0,1,2,5,6,1,2,3,4},
{19,20,0,0,0,0,15,16,0,0,0,0,17,18,0,0,0,0,15,16,19,20,15,16,17,18},

{5,6,5,6,0,0,0,0,0,0,1,2,0, 0,0,0,3,4,0,0,5,6,0,0,0,0},
{19,20,19,20,0,0,0,0,0,0,15,16,0, 0,0,0,17,18,0,0,19,20,0,0,0,0},

{0,0,1,2,1,2,1,2,5,6,5,6,5, 6,3,4,0,0,0,0,5,6,1,2,0,0},
{0,0,15,16,15,16,15,16,19,20,19,20,19, 20,17,18,0,0,0,0,19,20,15,16,0,0},

{0,0,0,0,0,0,3,4,5,6,1,2,0, 0,1,2,0,0,1,2,0,0,1,2,0,0},
{0,0,0,0,0,0,17,18,19,20,15,16,0, 0,15,16,0,0,15,16,0,0,15,16,0,0},

{3,4,1,2,0,0,3,4,0,0,1,2,0, 0,1,2,0,0,0,0,0,0,1,2,0,0},
{17,18,15,16,0,0,17,18,0,0,15,16,0, 0,15,16,0,0,0,0,0,0,15,16,0,0},

{0,0,1,2,0,0,1,2,0,0,1,2,0, 0,1,2,0,0,1,2,3,4,1,2,0,0},
{0,0,15,16,0,0,15,16,0,0,15,16,0, 0,15,16,0,0,15,16,17,18,15,16,0,0},

{0,0,1,2,0,0,1,2,0,0,1,2,1, 2,1,2,0,0,0,0,0,0,0,0,0,0},
{0,0,15,16,0,0,15,16,0,0,15,16,15, 16,15,16,0,0,0,0,0,0,0,0,0,0},

{0,0,1,2,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,1,2,0,0,1,2,0,0},
{0,0,15,16,0,0,0,0,0,0,0,16,15, 16,15,0,0,0,15,16,0,0,15,16,0,0},

{0,0,1,2,0,0,1,2,0,0,0,2,11,12,1,0,0,0,1,2,1,2,1,2,0,0},
{0,0,15,16,0,0,15,16,0,0,0,16,25, 26,15,0,0,0,15,16,15,16,15,16,0,0},
};

Bitmap bmp;
public Game_oldview(Context context) {
super(context);
// TODO Auto-generated constructor stub
res=context.getResources();
bmp = BitmapFactory.decodeResource(res,R.drawable.map);
player=BitmapFactory.decodeResource(res, R.drawable.player_top);
up=BitmapFactory.decodeResource(res, R.drawable.player_top);
down=BitmapFactory.decodeResource(res, R.drawable.player_bottom);
right=BitmapFactory.decodeResource(res, R.drawable.player_right);
left=BitmapFactory.decodeResource(res, R.drawable.player_left);
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Rect src=new Rect(0,0,0,23);
Rect dst=new Rect();
for(int i=0;i<26;i++){
for(int j=0;j<26;j++){
if(map[i][j]<15){
src.left=(map[i][j]-1)*12;
src.right=src.left+12;
src.top=0;
src.bottom=12;
}else{
src.left=(map[i][j]-15)*12;
src.right=src.left+12;
src.top=12;
src.bottom=24;
}


dst.left=j*12;
dst.right=dst.left+12;
dst.top=i*12;
dst.bottom=dst.top+12;
canvas.drawBitmap(bmp,src,dst,new Paint());






}
}
canvas.drawBitmap(player,x,y,new Paint());
}

private boolean tankPress(int x,int y){
if(x<0||x>288||y<0||y>288)
{System.out.println("ok");
return false;}
int tidtopx=map[y/12][x/12];
if(tidtopx==1||tidtopx==2||tidtopx==3||tidtopx==4||tidtopx==15||tidtopx==16||tidtopx==17||tidtopx==18)
{return false;}
int tidtopy=map[y/12][x/12+1];
if(tidtopy==1||tidtopy==2||tidtopy==3||tidtopy==4||tidtopy==15||tidtopy==16||tidtopy==17||tidtopy==18)
{return false;}
int tidbotx=map[y/12+1][x/12];
if(tidbotx==1||tidbotx==2||tidbotx==3||tidbotx==4||tidbotx==15||tidbotx==16||tidbotx==17||tidbotx==18)
{return false;}
int tidboty=map[y/12+1][x/12+1];
if(tidboty==1||tidboty==2||tidboty==3||tidboty==4||tidboty==15||tidboty==16||tidboty==17||tidboty==18)
{return false;}
return true;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub


switch(keyCode){
case KeyEvent.KEYCODE_DPAD_UP:
System.out.println("x:"+x+"y:"+y);
player=up;
if(tankPress(x,y-12))
{y-=12;}
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
System.out.println("x:"+x+"y:"+y);
player=down;
if(tankPress(x,y+12))
{y+=12;}
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
System.out.println("x:"+x+"y:"+y);
player=left;
if(tankPress(x-12,y))
{x-=12;}
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
System.out.println("x:"+x+"y:"+y);
player=right;
if(tankPress(x+12,y))
{x+=12;}
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
{
new Thread(new PaintThread()).start();
}


}
postInvalidate();
return super.onKeyDown(keyCode, event);
}
public void dir(){
if(up.equals(player)){dir="dir_up";dir_x=x+12;dir_y=y;}
else if(down.equals(player)){dir="dir_down";dir_x=x+12;dir_y=y+24;}
else if(left.equals(player)){dir="dir_left";dir_x=x;dir_y=y+12;}
else if(right.equals(player)){dir="dir_right";dir_x=x+24;dir_y=y+12;}


}
public class PaintThread implements Runnable{

public void run() {
// TODO Auto-generated method stub
while(true){
if(dir=="dir_up"){dir_y-=12;}
else if(dir=="dir_down"){dir_y+=12;}
else if(dir=="dir_left"){dir_x-=12;}
else if(dir=="dir_right"){dir_x+=12;}

try {
canvas.drawCircle(dir_x, dir_y, 8, p);// 小圆
p.setColor(Color.RED);// 设置红色
p.setAntiAlias(true);// 设置画笔的锯齿效果。 true是去除,大家一看效果就明白了
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}




}}
空指针异常发生在调用PaintThread线程时发生的。经过多次更改 感觉每次都是在调用子弹的关节上发生空指针异常 本来子弹也是用图片做的 后来改了 直接画个圆代替了。。=_=













...全文
376 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoru51277 2012-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
空指针异常自己打断点调试吧。
[/Quote]再次感谢 虽然我还是没能找出来 菜鸟来着 那个断点调试我不懂用 还在查询中 不过你让我发现了更多东西 呵呵 关于调试的 呵呵 debug那个界面感觉应该非常棒 俺先去百度下 话说我这个描述 找不出错误吗和修改方法吗 麻烦指点下 见谅新手
xiaoru51277 2012-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
空指针异常自己打断点调试吧。
[/Quote]我也知道空指针异常啊 不过不知道什么是断点调试 呵呵 刚去百度了下 回头自己去试下哈 多谢哈 又知道点东西了 呵呵
軒轅劍 2012-06-12
  • 打赏
  • 举报
回复
空指针异常自己打断点调试吧。
xiaoru51277 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:
引用 1 楼 的回复:
把错误代码贴出来,才知道啊!
呵呵 我有把错误代码的情况说出来了啊 所以感觉不用贴出来了 我说了空指针异常 还有哪里异常也说了啊
鉴于这位仁兄的要求 我还是贴出来吧 按下确定键后才出现该异常,望道友解我迷惑,指我迷津:
06-12 12:55:39.547: ERROR/Zygote(33): setreuid() failed. errn……
[/Quote]还有 经过多次更改依旧是空指针异常 虽然异常下面说的异常出现的行数都不同 不过基本都是在调用子弹的时候出错的
xiaoru51277 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:
把错误代码贴出来,才知道啊!
呵呵 我有把错误代码的情况说出来了啊 所以感觉不用贴出来了 我说了空指针异常 还有哪里异常也说了啊
[/Quote]鉴于这位仁兄的要求 我还是贴出来吧 按下确定键后才出现该异常,望道友解我迷惑,指我迷津:
06-12 12:55:39.547: ERROR/Zygote(33): setreuid() failed. errno: 2
06-12 12:55:48.668: ERROR/Zygote(33): setreuid() failed. errno: 17
06-12 12:55:50.137: ERROR/BatteryService(59): usbOnlinePath not found
06-12 12:55:50.137: ERROR/BatteryService(59): batteryVoltagePath not found
06-12 12:55:50.137: ERROR/BatteryService(59): batteryTemperaturePath not found
06-12 12:55:50.208: ERROR/SurfaceFlinger(59): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake
06-12 12:55:57.058: ERROR/EventHub(59): could not get driver version for /dev/input/mouse0, Not a typewriter
06-12 12:55:57.058: ERROR/EventHub(59): could not get driver version for /dev/input/mice, Not a typewriter
06-12 12:55:57.758: ERROR/System(59): Failure starting core service
06-12 12:55:57.758: ERROR/System(59): java.lang.SecurityException
06-12 12:55:57.758: ERROR/System(59): at android.os.BinderProxy.transact(Native Method)
06-12 12:55:57.758: ERROR/System(59): at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
06-12 12:55:57.758: ERROR/System(59): at android.os.ServiceManager.addService(ServiceManager.java:72)
06-12 12:55:57.758: ERROR/System(59): at com.android.server.ServerThread.run(SystemServer.java:184)
06-12 12:55:59.348: ERROR/SoundPool(59): error loading /system/media/audio/ui/Effect_Tick.ogg
06-12 12:55:59.368: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressStandard.ogg
06-12 12:55:59.368: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressSpacebar.ogg
06-12 12:55:59.388: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressDelete.ogg
06-12 12:55:59.398: ERROR/SoundPool(59): error loading /system/media/audio/ui/KeypressReturn.ogg
06-12 12:56:01.617: ERROR/ThrottleService(59): Could not open GPS configuration file /etc/gps.conf
06-12 12:56:02.808: ERROR/logwrapper(140): executing /system/bin/tc failed: No such file or directory
06-12 12:56:02.917: ERROR/logwrapper(141): executing /system/bin/tc failed: No such file or directory
06-12 12:56:02.978: ERROR/logwrapper(142): executing /system/bin/tc failed: No such file or directory
06-12 12:56:14.373: ERROR/HierarchicalStateMachine(59): TetherMaster - unhandledMessage: msg.what=3
06-12 12:56:43.354: ERROR/AndroidRuntime(280): FATAL EXCEPTION: Thread-8
06-12 12:56:43.354: ERROR/AndroidRuntime(280): java.lang.NullPointerException
06-12 12:56:43.354: ERROR/AndroidRuntime(280): at my.packa.Game_oldview$PaintThread.run(Game_oldview.java:195)
06-12 12:56:43.354: ERROR/AndroidRuntime(280): at java.lang.Thread.run(Thread.java:1096)
xiaoru51277 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
把错误代码贴出来,才知道啊!
[/Quote]呵呵 我有把错误代码的情况说出来了啊 所以感觉不用贴出来了 我说了空指针异常 还有哪里异常也说了啊
深蓝 2012-06-11
  • 打赏
  • 举报
回复
把错误代码贴出来,才知道啊!

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧