Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Agile forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

I'm fazed by a nullpointererror I can't get rid of

 
Martin Platt
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It's really annoying because it seems logical enough to me and I'm sure it's something really simple. I hope someone can help me. It's a bat and ball game to which I'm adding a computer opponent. The problem occurs in the Ball code:



and throws the exception because it doesn't like aii.b. But it has no problem in the next if statement:
if ((int)(x)>=490 && y>james.z-6 && y<james.z+35+6)

which is exactly the same logic.


Here's the main programme


And here's the Ball code...



Here's the Player code...



And finally here's the AI code...

 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
in batball3's init()

ball=new Ball(200,250,-5,-5,bat,hitwall,score,missit,ai)
ai=new Ai(ball);

ai is null - used prior to it's creation

if you change the lines around, ball will be null - same reason
 
Martin Platt
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Michael, this makes sense. I see what you mean that, either way, you get the error. But I need ai to know about ball, and ball to know about ai. Is there an easy way to send this information after the object is created?
[ December 28, 2005: Message edited by: Martin Platt ]
 
Michael Dunn
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
you could try this (need to modify ball's constructor)

//ball=new Ball(200,250,-5,-5,bat,hitwall,score,missit,ai);//remove ai
ball=new Ball(200,250,-5,-5,bat,hitwall,score,missit);
ai=new Ai(ball);
ball.aii = ai;
 
Martin Platt
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks so much! It works.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic