Jump to content

  • Log In with Google      Sign In   
  • Create Account


error Run-Time Check Failure #0


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 linhmai27   Members   -  Reputation: 116

Like
0Likes
Like

Posted 26 November 2012 - 12:46 AM

Hello guys, i have problem with my code


tankGame.h

class myTank;
class TankSteering;
//enum KEYS{ W, S, A, D,J,K};
class TankGame{
public:
  TankGame(ALLEGRO_DISPLAY* display);
  ~TankGame();
  myTank* m_player;
  TankSteering* m_TankSteering;
  void Update();
  void Render();
};


myTank.h

class TankGame;
class TankSteering;	

class myTank : public MovingEntity {
public:
  myTank(TankGame* tank_game, Vector2D pos, ALLEGRO_DISPLAY* display);
  ~myTank();
  void Update();
  void Render();
	....blah....
private:
....blah....
  TankSteering* m_pSteering;
  TankGame* m_tankGame;

};


tankSteering.h
class myTank;
class TankGame;
class TankSteering
{
public:
  TankSteering(myTank* player, TankGame* tankGame);
  //TankSteering();
  ~TankSteering();
  Vector2D Calculate();
  Vector2D Player_Steering();
private:
  TankGame* m_pTankGame;
  float m_fMaxForce;
  myTank* m_tplayer;
  float m_fDesRateForce;
};

TankGame.cpp

TankGame::TankGame(ALLEGRO_DISPLAY* display)
{
m_player = new myTank(this, Vector2D(200.0f, 200.0f), display);
//m_TankSteering = new TankSteering(this);
for(int i = 0; i < 6; i++)
{
  keys[i] = false;
}
}
blah blah

the thing is, when i remove the line "m_player = new myTank(this, Vector2D(200.0f, 200.0f), display);" in my tankGame, it work. But when i add this line in TankGame constructor, error "error Run-Time Check Failure #0" happened. when i create an object of myTank in mainfunction, it worked. Someone can help me Posted Image. Thank in advance

Edited by linhmai27, 26 November 2012 - 12:48 AM.


Sponsor:

#2 Hodgman   Moderators   -  Reputation: 26962

Like
0Likes
Like

Posted 26 November 2012 - 12:54 AM

Can you post the code for myTank::myTank?

#3 linhmai27   Members   -  Reputation: 116

Like
0Likes
Like

Posted 26 November 2012 - 12:58 AM

here is sir :)
#include "tankGame.h"
#include "myTank.h"
//#include "Tank_SteeringBehavior.h"
#include "Tank_Scriptor.h"
#include <allegro5\allegro.h>
#include <allegro5\allegro_primitives.h>
#include <allegro5\allegro_image.h>
myTank :: myTank(TankGame* tank_game, Vector2D pos, ALLEGRO_DISPLAY* display) : MovingEntity(pos,
				 script->GetFloat("Player_Scale"),
				 Vector2D(0,0),
				 script->GetFloat("Player_MaxSpeed"),
				 Vector2D(1,0),
				 script->GetFloat("Player_Mass"),
				 Vector2D(script->GetFloat("Player_Scale"),script->GetFloat("Player_Scale")),
				 script->GetFloat("Player_MaxHeadTurnRate"),
				 script->GetFloat("Player_MaxForce"))
{
m_tankGame = tank_game;
m_tankBody = new tankBody();
m_tankBarrel = new tankBarrel();
m_bImage = al_load_bitmap("Tankz_sprite.png"); // the entry image
int h = al_get_bitmap_height(m_bImage);
int w = al_get_bitmap_width(m_bImage);
ALLEGRO_BITMAP* tempImage;
tempImage = al_create_bitmap(w/5, h);
m_tankBody->image[0] = al_create_bitmap(w/5, h);
m_tankBody->image[1] = al_create_bitmap(w/5, h);
m_tankBarrel->image = al_create_bitmap(w/5, h);

al_set_target_bitmap(m_tankBody->image[0]);
al_draw_bitmap_region(m_bImage,0,0,40,40,0,0,1);
al_draw_tinted_bitmap_region(m_bImage, al_map_rgba_f(0.0f,1.0f,0.0f,0.5f), 80.0f, 0.0f, 40.0f, 40.0f, 0.0f, 0.0f, 1);
al_set_target_bitmap(m_tankBody->image[1]);
al_draw_bitmap_region(m_bImage,40,0,40,40,0,0,1);
al_draw_tinted_bitmap_region(m_bImage, al_map_rgba_f(0.0f,1.0f,0.0f,0.5f), 80.0f, 0.0f, 40.0f, 40.0f, 0.0f, 0.0f, 1);
al_set_target_bitmap(m_tankBarrel->image);
al_draw_bitmap_region(m_bImage,120,0,40,40,0,0,1);
al_draw_tinted_bitmap_region(m_bImage, al_map_rgba_f(0.0f,1.0f,0.8f,0.5f), 120.0f, 0.0f, 40.0f, 40.0f, 0.0f, 0.0f, 1);

al_set_target_bitmap(al_get_backbuffer(display));
//al_draw_tinted_bitmap(
//m_tankBody->position = Pos();
m_tankBody->center = Vector2D(20.0f, 20.0f);
//MovingEntity(pos, Vector2D(0,0), script->get
}
myTank :: ~myTank()
{
}

void myTank :: Update()
{
}
void myTank :: UpdateMovement()
{
// Vector2D force = m_pSteering->Calculate();
  //if no steering force is produced decelerate the player by applying a
  //braking force
  //if (m_pSteering->Force().isZero())
  //{
  //  const double BrakingRate = 0.8;
  //  m_vVelocity = m_vVelocity * BrakingRate;									
  //}
  //calculate the acceleration
  Vector2D accel = m_V2Dforce / m_dMass;
  //update the velocity
  m_vVelocity += accel;
  //make sure vehicle does not exceed maximum velocity
  m_vVelocity.Truncate(m_dMaxSpeed);
  //update the position
  m_vPosition += m_vVelocity;
  //if the vehicle has a non zero velocity the heading and side vectors must
  //be updated
  if (!m_vVelocity.isZero())
  {   
    m_vHeading = Vec2DNormalize(m_vVelocity);
    m_vSide = m_vHeading.Perp();
  }
}
void myTank :: Render()
{
al_draw_bitmap(m_tankBody->image[0], Pos().x, Pos().y, 0);
al_draw_bitmap(m_tankBarrel->image, Pos().x, Pos().y, 0);
}


#4 Ashaman73   Crossbones+   -  Reputation: 6538

Like
0Likes
Like

Posted 26 November 2012 - 01:19 AM

I don't know allergro, but what about the 'script' var in the constructor of myTank ? It seems to be a global var, is it already initialized when accessing it in the constructor ?

Edited by Ashaman73, 26 November 2012 - 01:19 AM.


#5 linhmai27   Members   -  Reputation: 116

Like
0Likes
Like

Posted 26 November 2012 - 01:27 AM

thank for reading my topic. When i create object of myTank in main function, and render it. All things work.

but when i create object of TankGame in main function( it include instance of mytTank, it call constructor of m_player, and in debug mode, it goes to the end of TankGame constructor ( in this case, it created myTank object ),it raise "error Run-Time Check Failure #0" here

script is an singleton class, and i tested it, it worked. Posted Image

#ifndef TANK_SCRIPTOR
#define TANK_SCRIPTOR
#pragma warning (disable:4786)
//-----------------------------------------------------------------------------
//
//  Name:   Raven_Scriptor
//
//  Author: Mat Buckland (www.ai-junkie.com)
//
//  Desc:   A Singleton Scriptor class for use with the Raven project
//-----------------------------------------------------------------------------
#include <script\Scriptor.h>
#define script Tank_Scriptor::Instance()
class Tank_Scriptor : public Scriptor
{
private:
 
  Tank_Scriptor();
  //copy ctor and assignment should be private
  Tank_Scriptor(const Tank_Scriptor&);
  Tank_Scriptor& operator=(const Tank_Scriptor&);
public:
  static Tank_Scriptor* Instance();
};

#endif

Edited by linhmai27, 26 November 2012 - 01:29 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS