Jump to content
  • Advertisement
Sign in to follow this  
Le Van

error Run-Time Check Failure #0

This topic is 2126 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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 = 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 smile.png. Thank in advance Edited by linhmai27

Share this post


Link to post
Share on other sites
Advertisement
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);
}

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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. smile.png


#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

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!