Browse Source

lø. 22. mars 13:04:12 +0100 2025

main
Sten Jørgen Pettersen 11 months ago
parent
commit
3ad4a2ae5f
1 changed files with 57 additions and 4 deletions
  1. +57
    -4
      main.cpp

+ 57
- 4
main.cpp View File

@ -101,11 +101,64 @@ int main(int /*argc*/, char */*argv*/[])
mapY += stepY;
side = 1;
}
if(worldMap[mapX][mapY] > 0) hit = 1;
if(side == 0) perpWallDist = (sideDistX - deltaDistX);
else perpWallDist = (sideDistY - deltaDistY);
int lineHeight = (int)(h /perpWallDist);
}
if(worldMap[mapX][mapY] > 0) hit = 1;
if(side == 0) perpWallDist = (sideDistX - deltaDistX);
else perpWallDist = (sideDistY - deltaDistY);
int lineHeight = (int)(h / perpWallDist);
int drawStart = -lineHeight / 2 + h / 2;
if(drawStart < 0) drawStart = 0;
int drawEnd = lineHeight / 2 + h / 2;
if(drawEnd >= h) drawEnd = h - 1;
ColorRGB color;
switch(worldMap[mapX][mapY])
{
case 1: color = RGB_Red; break;
case 2: color = RGB_Green; break;
case 3: color = RGB_Blue; break;
case 4: color = RGB_White; break;
default: colort = RGB_Yellow; break;
}
if(side == 1) {color = color / 2;}
verLine(x, drawStart, drawEnd, color);
}
oldTime = time;
time = getTicks();
double frameTime = (time - oldTime) / 1000.0;
print(1.0 / frameTime);
redraw();
cls();
double moveSpeed = frameTime * 5.0;
double rotSpeed = frameTime * 3.0;
readKeys();
if(keyDown(SDLK_UP))
{
if(worldMap[int(posX + dirX * moveSpeed)][int(posY)] == false) posX += dirX * moveSpeed;
if(worldMap[int(posX)][int(posY + dirY * moveSpeed)] == false) posY += dirY * moveSpeed;
}
if(keyDown(SDLK_DOWN))
{
if(worldMap[int(posX - dirX * moveSpeed)][int(posY)] == false) posX -= dirX * moveSpeed;
if(worldMap[int(posX)][int(posY - dirY * moveSpeed)] == false) posY -= dirY * moveSpeed;
}
if(keyDown(SDLK_RIGHT))
{
double oldDirX = dirX;
dirX = dirC * cos(-rotSpeed) - dirY * sin(-rotSpeed);
dirY = oldDirX * sin(-rotSpeed) + dirY * cos(-rotSpeed);
double oldPlaneX = planeX;
planeX = planeX * cos(-rotSpeed) - planeY * sin(-rotSpeed);
planeY = oldPlaneX * sin(-rotSpeed) + planeY * cos(-rotSpeed);
}
if(keyDown(SDLK_LEFT))
{
double oldDirX = dirX;
dirX = dirX * cos(rotSpeed) - dirY * sin(rotSpeed);
dirY = oldDirX * sin(rotSpeed) + dirY * cos(rotSpeed);
double oldPlaneX = planeX;
planeX = planeX * cos(rotSpeed) - planeY * sin(rotSpeed);
planeY = oldPlaneX * sin(rotSpeed) + planeY * cos(rotSpeed);
}
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.