I have a cicle For and i have to implement a while cicle into this.
How to do?
example code:
Code: Select all
For /L %%N in (1,1,100) do (
rem implement a while ...
set /a k=1
rem while k<10 do .....
)
the original code: not finished...
Code: Select all
::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Explorer3D by Francesco Poscetti aka einstein1969
::
:: Developed on monocore seven 32bit system.
::
::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
setlocal EnableDelayedExpansion
rem resolution
set /a screen_W=120, screen_H= 80
rem FOV=0.6 = 6/10 real to integer
set /a FOV=6*10000/10
rem PI
set /a PI=31416
rem StepD=MovSpeed=0.1, RotationSpeed=0.05
set /a MovSpeed=1*10000/10, RotSpeed=5*10000/100
rem init frame/canvas
set /a frame.width=scree_W, frame.heigth=screen_H
rem initial state
set /a state.posx=3
set /a state.posy=3
set /a state.dirx=-1
set /a state.diry=0
set /a state.camx=0
set /a state.camy=FOV
call :LoadWorld
call :SetFullScreen
:loop
call :RenderScene
call :DrawScene
goto :loop
exit /b
:SetFullScreen
exit /b
:RenderScene
set /a tot=frame.width*frame.height-1
rem empty
For /L %%i in (0,1,!tot!) do set /a frame.data[%%i].r=0, frame.data[%%i].g=0, frame.data[%%i].b=0
set /a lastcol=frame.width-1
rem for each column
For /L %%c in (0,1,!lastcol!) do (
set /a cameraX=2*%%c * 10000 / frame.width - 1
set /a rayPosX=state.posx, rayPosY=state.posy
rem CHECK cameraX on second line!
set /a rayDirX=state.dirx + state.camx + cameraX
set /a rayDirY=state.diry + state.camy + cameraX
rem integer part
set /a mapX=rayPosX/10000*10000, mapY=rayPosY/10000*10000
rem ray length
set /a _deltaDistX= 1 + (rayDirY*rayDiry)/(rayDirX*rayDirX)
set /a _deltaDistY= 1 + (rayDirX*rayDirX)/(rayDirY*rayDirY)
rem CALCOLARE la radice quadrata dei due precedenti.
set deltaDistX= _deltaDistX
set deltaDistY= _deltaDistY
if !rayDirX! lss 0 (
set /a stepX=-1
set /a sideDistX=(rayPosX-mapX) * deltaDistX
) else (
set /a stepX=1
set /a sideDistX=(mapX + 1 - rayPosX) * deltaDistX
)
if !rayDirY! lss 0 (
set /a stepY=-1
set /a sideDistY=(rayPosY-mapY) * deltaDistY
) else (
set /a stepY=1
set /a sideDistY=(mapY + 1 - rayPosY) * deltaDistY
)
rem ray casting
)
exit /b
:LoadWorld
exit /b
:DrawScene
exit /b
einstein1969