VC C++ Error

D.V.D

Make a wish
Reaction score
73
So I was trying to make a ray caster and I inputed all of the code, fixed all the syntax problems and I was getting a error that the stack around one of my variables was corrupted. So I updated my computer which stopped the error from being displayed but before when I debugged my code line by line, it took me to some ouput file were the code has stopped and it would tell me that ftol2 was not found. I looked all over the internet for this file and all I udnerstand is that its a converter between integer and float or something like that. I still have this problem and Im stuck as to what's causing it. Here's the code causing the problem. The moment Increment Horizontal is called, it gives me the error without going through the functions code. The code doesn't draw anything as I was trying to debug it but when using a win32 application template, it was extremely hard to do so, so I decided to put the code through the console so I could see were the math went wrong as before it was only drawing one line on the screen.

#include "stdafx.h"
#include "Setup.h"
#include <cmath>
#include <iostream>

using namespace std;

void DefinePlayer();
void CastRays();
void IncrementVertical();
void IncrementHorizontal();

CPP

#include "stdafx.h"
#include "Render.h"

short GRID_SIZE=128;

short FOV=60;
short FOV_H=30;

short POS_VECTOR [3];
short ROT_VECTOR [2];
short PROJ_PLANE_VEC [2];

short SCREENX=320;
short SCREENY=200;

short DIST_PROJ = 277;

float ANG_SUB = 0.1875;

void DefinePlayer () {
// Setup Pos
POS_VECTOR[0]=10;//x
POS_VECTOR[1]=10;//y
POS_VECTOR[2]=32;//z MEM
// Setup Rotation
ROT_VECTOR[0]=45;
// Proj Plane
PROJ_PLANE_VEC[0]=SCREENX/2;
PROJ_PLANE_VEC[1]=SCREENY/2;//MEM
}

// CHECK IF THE FIRST XNEW STEP AND Y ENW STEP FOR BOTH INCREMENTS IS NECESSARY

void IncrementVertical (int Xold,int Yold,int angle,int Xa,int xnew,int ynew) {

if ( angle < 90 && angle > 269 ) {
xnew=floor(float(Xold/GRID_SIZE))*(GRID_SIZE)-1;
}
else {
xnew=floor(float(Xold/GRID_SIZE))*(GRID_SIZE)+GRID_SIZE;
}

float Ya = Yold + (Xold-xnew)*tan(float(angle));

xnew=Xold+Xa;
Xold=xnew;
ynew=Yold+Ya;
Yold=ynew;
}

void IncrementHorizontal (int Xold,int Yold,int angle,int Ya,int Xnew,int Ynew,int CA,int SA) {

// First Cord of Y and Determine Ya (Slope)
if ( ROT_VECTOR[0] < 180 ) {
Ynew = floor(float(Yold/GRID_SIZE)) * (GRID_SIZE) - 1;
Yold=Ynew;
}
else {
Ynew = floor(float(Yold/GRID_SIZE)) * (GRID_SIZE) + GRID_SIZE;
Yold=Ynew;
}
// First Cord of X
Xnew = POS_VECTOR[0] + (POS_VECTOR[1]-Ynew)/tan(float(angle));

// Determine Slope 2
float Xa=GRID_SIZE/tan(float(angle));

// Increment
Xnew=Xold+Xa;
Xold=Xnew;
Ynew=Yold+Ya;
Yold=Ynew;
}

void CastRays () {
float angle=ROT_VECTOR[0]-FOV_H;

float CA,SA;

short HORIZONTAL[2],VERTICAL[2],H_OLD[2],V_OLD[2];

short gridX,gridY;

// Dist to Wall
float distX;//distY;

short Ya,Xa;

short ProjWallHeight;
short DrawCentre;
short TopDrop;
short Py;

for (short i=0; i < SCREENX; i++) {

if (angle < 0) {
short newang=angle*-1;
angle=360-newang;
}

if ( angle < 90 && angle > 269 ) {
Xa=GRID_SIZE*=1;
}
else {
Xa=GRID_SIZE;
}

if ( angle < 180 ) {
Ya=GRID_SIZE*-1;
}
else {
Ya=GRID_SIZE;
}

HORIZONTAL[0]=POS_VECTOR[0];
VERTICAL[0]=POS_VECTOR[0];
HORIZONTAL[1]=POS_VECTOR[1];
VERTICAL[1]=POS_VECTOR[1];

H_OLD[0]=POS_VECTOR[0];
V_OLD[0]=POS_VECTOR[0];
H_OLD[1]=POS_VECTOR[1];
V_OLD[1]=POS_VECTOR[1];

CA=cos(float(angle));
SA=sin(float(angle));

for (bool hit=false; hit != true;) {

IncrementHorizontal(H_OLD[0],H_OLD[1],angle,Ya,HORIZONTAL[0],HORIZONTAL[1],CA,SA);

gridX=floor(float(HORIZONTAL[0]/GRID_SIZE));
gridY=floor(float(HORIZONTAL[1]/GRID_SIZE));

if ( GetMap(gridX,gridY) == 1 ) {
hit=true;
distX = abs(POS_VECTOR[0]-HORIZONTAL[0])*cos(float(FOV-30+i));
//distY = abs(POS_VECTOR[1]-HORIZONTAL[1])*cos(float(FOV-30+i));
break;
}

IncrementVertical(V_OLD[0],V_OLD[1],angle,Xa,VERTICAL[0],VERTICAL[1]);

gridX=floor(float(VERTICAL[0]/GRID_SIZE));
gridY=floor(float(VERTICAL[1]/GRID_SIZE));

if ( GetMap(gridX,gridY) == 1 ) {
hit=true;
distX = abs(POS_VECTOR[0]-VERTICAL[0])*cos(float(FOV-30+i));
//distY = abs(POS_VECTOR[1]-VERTICAL[1])*cos(float(FOV-30+i));
break;
}

}

ProjWallHeight=GRID_SIZE/distX*DIST_PROJ;
DrawCentre=ProjWallHeight/2;
TopDrop=PROJ_PLANE_VEC[1]-(ProjWallHeight/2);

for ( short t=0; t <= ProjWallHeight; t++ ) {
Py=TopDrop+t;
const char T=char(t);
printf("%s \n",T);
}

angle+=ANG_SUB;
const char C=char(i);
printf ("%s \n", C);
}

}
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top