void update_field(short player_x, short player_y, short player_angle) { short angle=player_angle-30; short ray=0; short drawn=0; raytrace horiz; raytrace vert; if(angle>0 && angle<180) horiz.step_y=-WALL_SIDE; if(angle>180 && angle<360) horiz.step_y=WALL_SIDE; if(angle<90 && angle>270) vert.step_x=-WALL_SIDE; if(angle>90 && angle<270) vert.step_x=WALL_SIDE; for(;ray0 && angle<180) horiz.point_y=((player_y/WALL_SIDE)*WALL_SIDE)-1; if(angle>180 && angle<360) horiz.point_y=((player_y/WALL_SIDE)*WALL_SIDE)+WALL_SIDE; horiz.grid_y=horiz.point_y/WALL_SIDE; //the y grid coordinate of the questioned wall if(angle!=0 && angle!=180) //watch out for divide by zero horiz.point_x=player_x+(player_y-horiz.point_y)/tan(angle); horiz.grid_x=horiz.point_x/WALL_SIDE; //the y grid coordinate of the questioned wall //______________________________________ //set initial vertical collision point if(angle<90 && angle>270) vert.point_x=(vert.point_x/WALL_SIDE)*WALL_SIDE+WALL_SIDE; if(angle>90 && angle<270) vert.point_x=(vert.point_x/WALL_SIDE)*WALL_SIDE-1; vert.grid_x=vert.point_y/WALL_SIDE; vert.point_y=player_y+(player_x-vert.point_x)*tan(angle); vert.grid_y=vert.point_y/WALL_SIDE; //______________________________________ //we now have the initial grid coords for vert and horiz checking //check for collision while(horiz.grid_y>=0 && horiz.grid_y=0 && horiz.grid_x=0 && vert.grid_y=0 && vert.grid_x