| @ -0,0 +1,75 @@ | |||||
| #include <cmath> | |||||
| #include <string> | |||||
| #include <vector> | |||||
| #include <iostream> | |||||
| #include "quickcg.h" | |||||
| using namespace QuickCG | |||||
| #define mapWidth 32 | |||||
| #define mapHeight 32 | |||||
| #define screenWidth 320 | |||||
| #define screenHeight 200 | |||||
| int worldMap[mapWidth][mapHeight]= | |||||
| { | |||||
| {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,3,0,0,3,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,3,0,0,3,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,3,0,0,3,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,2,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, | |||||
| {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} | |||||
| }; | |||||
| int main(int /*argc*/, char */*argv*/[]) | |||||
| { | |||||
| double posX = 22, posY = 12; //x and y start position | |||||
| double dirX = -1, dirY = 0; //initial direction | |||||
| double planeX = 0, planeY = 0.66; //2d raycaster camera plane | |||||
| double time = 0; //current frame | |||||
| double oldTime = 0; //previous frame | |||||
| screen(screenWidth, screenHeight, 0, "Raycaster"); | |||||
| while(!done()) | |||||
| { | |||||
| for(int x = 0; x < w; x++) | |||||
| { | |||||
| double cameraX = 2 * x / (double)w - 1; | |||||
| double rayDirX = dirX + planeX * cameraX; | |||||
| double rayDirY = dirY + planeY * cameraX; | |||||
| int mapX = int(posX); | |||||
| int mapY = int(posY); | |||||
| double sideDistX; | |||||
| double sideDistY; | |||||
| double deltaDistX = (rayDirX == 0) ? 1e30 : std::abs(1 / rayDirX); | |||||
| double deltaDistY = (rayDirY == 0) ? 1e30 : std::abs(1 / rayDirY); | |||||
| } | |||||
| } | |||||
| } | |||||
Powered by TurnKey Linux.