Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ::Prisioner Of Dark
- ::Date: 27/11/2010
- ::Author: Germaniac
- ::Graphic.exe and Kbd.exe files are part of the utilities Adbat 1.1 by Carlitos
- @echo off
- setlocal enableextensions enabledelayedexpansion
- if "%~1"=="/i" (goto :init) else (
- start "Prisioner Of Dark" /high "%comspec%" /q /d /c "%~0" /i
- exit /b 0
- )
- :init
- chcp 1252 >nul
- set "gpc=%~dps0graphic.exe"
- set "kbd=%~dps0kbd.exe"
- for %%i in (gpc kbd) do if not exist !%%i! (
- echo.Need Graphic.exe and Kbd.exe files in the current folder for play.
- set /p "=Press any key to exit . . . " <nul
- pause >nul
- goto :eof
- )
- %gpc% hidecursor
- :reset
- cls
- color 0c
- set "time="
- set "errorlevel="
- set "clr.1=b"
- set "up="
- set "down="
- set "left="
- set /a "clr.2=clr.3=lives=3,select=next=world=1,score=0,worlds=5"
- set "file=%tmp%\%random%.tmp"
- copy nul + nul "%file%" >nul 2>nul
- for /f %%i in (%file%) do set "right=%%i"
- del "%file%" >nul 2>nul
- set "key=^!errorlevel^!"
- set "opt.1=%right%"
- set "opt.2= "
- set "opt.3= "
- echo.
- echo. ÛÛÛÜ ÜÛÛÜ ÛÛÛÜ
- echo. Û Û ÛÜÜÜ ß ÜÛÛÜ ß ÜÛÛÜ ÛÜÜÜ ÜÛÛÜ ÛÜÜÜ Û Û ÛÜÜÜ Û Û ßßßßÛ ÛÜÜÜ Û Û
- echo. ÛÛÛß Û ß Û ÛÜÜ Û Û Û Û Û Û Û Û ß Û Û ÛÜÜ Û Û ÛßßßÛ Û ß Û Û
- echo. Û Û Û ßßÛ Û Û Û Û Û Ûßßß Û Û Û Û Û Û Û Û Û ÛßßÛ
- echo. Û Û Û ßÛÛß Û ßÛÛß Û Û ßÛÛß Û ßÛÛß Û ÛÛÛß ßßßßÛ Û Û Û
- echo.
- call :main 1 7 "Play " Exit
- if %select% equ 1 goto :start
- if %select% equ 2 call :info
- if %select% equ 3 goto :eof
- goto :reset
- :main
- %gpc% locate %~1 %~2
- %gpc% printcolor c "ÉÍ"
- %gpc% printcolor f "Menu"
- %gpc% /r printcolor c "ÍÍÍÍÍÍÍÍ»\10\ º º\10\ º "
- %gpc% printcolor %clr.1% "%opt.1% %~3"
- %gpc% /r printcolor c " º\10\ º "
- %gpc% printcolor %clr.2% "%opt.2% Controls"
- %gpc% /r printcolor c " º\10\ º "
- %gpc% printcolor %clr.3% "%opt.3% %~4"
- %gpc% /r printcolornl c " º\10\ ÈÍÍÍÍÍÍÍÍÍÍÍÍͼ"
- %kbd%
- if %key% equ 13 goto :eof
- if %key% equ 72 set /a "next=(select-1%%3)"
- if %key% equ 80 set /a "next=(select%%3)+1"
- if %next% equ 0 set "next=3"
- set "opt.%select%= "
- set "opt.%next%=%right%"
- set "clr.%select%=3"
- set "clr.%next%=b"
- set "select=%next%"
- goto :main
- :info
- cls
- color 07
- echo.
- %gpc% printcolornl b " Action: Arrow Keys:"
- echo.
- echo. Move player to left %left%
- echo. Move player to right %right%
- echo. Jump to left %up% %left%
- echo. Jump to right %up% %right%
- echo. Long jump to left %up% %up% %left%
- echo. Long jump to right %up% %up% %right%
- echo. Decrease jump height %down%
- echo. Pause game Enter/Esc
- echo.
- set /p "=ÿPress any key to return . . . " <nul
- pause >nul
- goto :eof
- :start
- color 07
- call :load || goto :reset
- call :graphic
- :play
- call :timeCnt
- call :gravity player
- call :enemies
- if !finish! gtr 0 goto :finish
- %kbd% 1
- if %key% equ 72 call :jump
- if %key% equ 75 call :move -
- if %key% equ 77 call :move +
- if %key% equ 13 goto :pause
- if %key% equ 27 goto :pause
- goto :play
- :gravity
- if !finish! gtr 0 goto :eof
- call :getXY %1.pos
- set /a "n=l+1"
- if !n! gtr !map.row! goto :eof
- call :moveChk %n% %c% %1 gravity || goto :eof
- call :graphic
- call :gravity %1
- goto :eof
- :move
- if !finish! gtr 0 goto :eof
- call :getXY player.pos
- set /a "n=c%11,i=map.col-view.max-view.min,j=view.max/2,k=n-(map.col-(view.max-j))"
- if !n! gtr !map.col! goto :eof
- if !n! lss 1 goto :eof
- call :moveChk %l% %n% player || goto :eof
- if !n! gtr !j! (
- if !i! gtr 0 (
- set /a "view.min%1=1"
- ) else if !k! lss 1 if !view.min! gtr 0 set /a "view.min-=1"
- ) else if !view.min! gtr 0 set /a "view.min-=1"
- call :graphic
- goto :eof
- :jump
- set "course="
- set /a "jump=1,count=0,height=3"
- set /p "=ÿJump : %up%"<nul
- :jumpCnt
- %kbd% 1
- if %key% equ 72 set /a "jump+=1" & set /p "=%up%" <nul
- if %key% equ 75 set "course=-" & set /p "=%left%" <nul
- if %key% equ 77 set "course=+" & set /p "=%right%" <nul
- if %key% equ 80 set /a "height-=1" & set /p "=%down%" <nul
- if %key% equ 0 set /a "count+=1"
- if %count% equ 35 cd.|more & exit /b 0
- if !jump! leq 2 if not defined course goto :jumpCnt
- cd.|more
- for /l %%i in (1,1,!height!) do (
- if !finish! gtr 0 goto :eof
- call :getXY player.pos
- set /a "n=l-1"
- if !n! geq 1 call :moveChk !n! !c! player && call :graphic
- )
- if defined course for /l %%i in (1,1,%jump%) do call :move !course!
- goto :eof
- :enemies
- if not defined enemies.pos goto :eof
- set "enemies="
- set /a "view.pos=view.max+view.min+1"
- for %%i in (%enemies.pos%) do (
- if !finish! gtr 0 goto :eof
- set "enemy.pos=%%i"
- call :getXY enemy.pos
- call :gravity enemy
- if !c! geq !view.min! if !c! leq !view.pos! (
- set /a "rnd=!random!%%3"
- if !rnd! equ 0 set /a "n=c-1"
- if !rnd! equ 1 set /a "n=c+1"
- if !rnd! equ 2 (
- set /a "rnd=!random!%%2"
- for /l %%i in (0,1,!rnd!) do (
- call :getXY enemy.pos
- set /a "n=l-1"
- if !n! geq 1 call :moveChk !n! !c! enemy && call :graphic
- )
- set /a "rnd=!random!%%3"
- call :getXY enemy.pos
- if !rnd! equ 0 set /a "n=c-1"
- if !rnd! equ 1 set /a "n=c+1"
- )
- if !n! leq !map.col! if !n! geq 1 if !rnd! lss 2 call :moveChk !l! !n! enemy && call :graphic
- call :gravity enemy
- )
- set "enemies=!enemies!,!enemy.pos!"
- )
- set "enemies.pos=%enemies%,"
- goto :eof
- :moveChk
- set /a "col=%2-1"
- set "chr=!m[%1]:~%col%,1!"
- if "!chr!"=="!border!" exit /b 1
- if "%3"=="player" (
- if "!chr!"=="!coin!" set /a "score+=1" & set "chr=!ground!"
- if "!chr!"=="!live!" set /a "lives+=1" & set "chr=!ground!"
- if "!chr!"=="!exit!" set "finish=1"
- if "!chr!"=="!pick!" if !lives! gtr 0 (set /a "lives-=1,finish=3") else set "finish=2"
- if "!chr!"=="!enemy!" if "%4"=="gravity" (
- set /a "score+=5"
- set "enemies.pos=!enemies.pos:,%1.%2,=,!"
- set "chr=!ground!"
- ) else if !lives! gtr 0 (set /a "lives-=1,finish=3") else set "finish=2"
- )
- if "%3"=="enemy" (
- if "!chr!"=="!player!" if !lives! gtr 0 (set /a "lives-=1,finish=3") else set "finish=2"
- if "!chr!"=="!enemy!" exit /b 1
- if "!chr!"=="!pick!" exit /b 1
- if "!chr!"=="!exit!" exit /b 1
- )
- call :chrRplc %l% %c% last[!%3.pos!]
- set "last[%1.%2]=!chr!"
- call :chrRplc %1 %2 %3
- set "%3.pos=%1.%2"
- exit /b 0
- :finish
- %kbd% 1
- if %key% neq 0 goto :finish
- set "return=start"
- echo.
- if !finish! equ 1 %gpc% printcolor b " World completed." & set /a "world+=1"
- if !finish! equ 2 %gpc% printcolor b " Game over." & set "return=reset"
- if !finish! equ 3 %gpc% printcolor b " World is over."
- if !finish! equ 4 %gpc% printcolor b " Time is over."
- if %world% gtr %worlds% %gpc% /r printcolor c "\10\10\ Game Over"
- echo.
- echo.
- set /p "=ÿPress enter to continue . . . " <nul
- :enter
- %kbd%
- if %key% neq 13 goto :enter
- goto :%return%
- :graphic
- %gpc% locate 0 0
- echo.
- for /l %%i in (1,1,%map.row%) do echo. !m[%%i]:~%view.min%,%view.max%!
- echo.
- echo. World : %world%
- echo. Lives : %lives%
- echo. Score : %score%
- echo. Time : %time.sec%
- goto :eof
- :pause
- color 08
- call :main 1 1 Continue Quit
- if %select% equ 2 call :info
- if %select% equ 3 goto :reset
- call :equTime "%time.end%" "%time%" sec
- set /a "secons+=sec%%86400"
- cls
- color 07
- call :graphic
- goto :play
- :load
- cls
- set /p "=Loading" <nul
- set "border=Û"
- set "ground= "
- set "player="
- set "enemy="
- set "coin=›"
- set "exit=°"
- set "live="
- set "pick="
- set /a "map.col=map.row=view.max=view.min=finish=0,secons=100"
- for /f "delims==" %%i in ('"set m[ 2>nul|findstr /r "m\[[0-9]*\]=""') do set "%%i="
- set /p "=." <nul
- if %world% lss 1 set /a "world=1"
- call :world_%world% 2>nul || exit /b 1
- for /f %%i in ('"set m[ 2>nul|findstr /r "m\[[0-9]*\]=""') do set /a "map.row+=1"
- set /p "=." <nul
- if %map.row% equ 0 exit /b 1
- call :strLen m[1] map.col
- if !view.max! lss 1 set /a "view.max=map.col"
- if !view.max! gtr %map.col% set /a "view.max=map.col"
- set /p "=." <nul
- call :getPstn player player.pos
- call :getPstn enemy enemies.pos
- call :strLen secons secons.len
- set "time.ini=%time%"
- call :time
- cls
- exit /b 0
- :strLen
- set "str=!%~1!"
- set "%~2=0"
- :strLen.loop
- if not defined str goto :eof
- set /a "%~2+=1"
- set "str=!str:~1!"
- goto :strLen.loop
- :getPstn
- set "%2="
- for /f "tokens=2 delims=[]" %%i in ('"set m[ 2>nul|findstr /r "m\[[0-9]*\]="|find "!%1!""') do (
- for %%j in (%%i) do for /l %%k in (0,1,%map.col%) do if "!m[%%j]:~%%k,1!"=="!%1!" (
- set /a "col=%%k+1"
- set "%2=!%2!,%%j.!col!"
- set "last[%%j.!col!]=!ground!"
- )
- )
- if defined %2 set "%2=!%2:~1!"
- goto :eof
- :getXY
- for /f "tokens=1,2 delims=." %%x in ("!%1!") do set /a "l=%%x,c=%%y"
- goto :eof
- :chrRplc
- set /a "col=%2-1"
- set "m[%1]=!m[%1]:~0,%col%!!%3!!m[%1]:~%2!"
- goto :eof
- :timeCnt
- call :time
- call :strLen time.sec time.len
- set /a "time.len+=1"
- set /a "time.pst=map.row+5"
- %gpc% locate 9 %time.pst%
- for /l %%i in (%time.len%,1,%secons.len%) do set "time.sec=0!time.sec!"
- echo.%time.sec%
- goto :eof
- :time
- set "time.end=%time%"
- call :equTime "%time.ini%" "%time.end%" sec
- set /a "time.sec=secons-(sec%%86400)"
- if !time.sec! lss 1 if !lives! gtr 0 (set /a "lives-=1,finish=4") else set "finish=2"
- goto :eof
- :equTime
- setlocal enableextensions
- for /f "tokens=1-3 delims=;,:. " %%i in ("%~1") do (
- for /f "tokens=1-3 delims=;,:. " %%l in ("%~2") do (
- set /a "h1=%%i,m1=1%%j-100,s1=1%%k-100,h2=%%l,m2=1%%m-100,s2=1%%n-100"))
- if %h2% gtr %h1% (set /a "h=h2-h1") else set /a "h=24-h1+h2"
- if %m2% gtr %m1% (set /a "m=m2-m1") else set /a "h-=1,m=60-m1+m2"
- if %s2% geq %s1% (set /a "s=s2-s1") else set /a "m-=1,s=60-s1+s2"
- endlocal & set /a "%~3=(%h%*3600)+(%m%*60)+%s%"
- goto :eof
- :world_1
- set "m[1]= ú ú ú ú ú"
- set "m[2]= ú ú "
- set "m[3]= ú ú ú ú"
- set "m[4]= ››› ›› "
- set "m[5]= ›› ÛÛ "
- set "m[6]= ÛÛÛÛÛ "
- set "m[7]= ÛÛ ÛÛÛ "
- set "m[8]= ÛÛ Û °"
- set "m[9]=ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
- set /a "view.max=10"
- exit /b 0
- :world_2
- set "m[1]=ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
- set "m[2]=Û Û"
- set "m[3]=Û ›› ››› ›› Û"
- set "m[4]=Û ÛÛ ÛÛ °"
- set "m[5]=Û ÛÛÛÛßÛÛÛÛ ÛÛÛÛÛÛÛ"
- set "m[6]=Û ÛÛ Û ›› Û Û"
- set "m[7]=Û ÛÛ ÛÛ ÛÛÛÛÛÛ ÛßÛ"
- set "m[8]=Û ÛÛ"
- set "m[9]=ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
- set /a "view.max=10"
- exit /b 0
- :world_3
- set "m[1]= › › › "
- set "m[2]= › › "
- set "m[3]= ÛÛÛÛÛÛÛ ÛÛ ÛÛÛÛ Û °"
- set "m[4]= Û ÛÛÛÛÛ Û ÛßÛÛ"
- set "m[5]= ÛßÛßÛßÛ Û ›› Û Û Û Û Û Û "
- set "m[6]= Û ÛÛÛÛÛÛÛ Û Û›Û › "
- set "m[7]= Û Û Û›Û Û › "
- set "m[8]= Û ›››Û ÛÛÛ › "
- set "m[9]= Û ÛÛÛÛÛ "
- set "m[10]= "
- set "m[11]=ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
- set /a "secons=150,view.max=15"
- exit /b 0
- :world_4
- set "m[1]=ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ú ú ú ú "
- set "m[2]=Û ÛÛ Û Û "
- set "m[3]=Û ÛÛÛÛ ÛÛ ÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛ Û Û Û Û ú ú "
- set "m[4]=Û ÛÛ Û Û Û Û Û ú ú"
- set "m[5]=ÛÛÛÛ Û ÛÛÛÛ Û Û Û Û › › ÛÛÛÛÛÛÛÛÛÛ ú °° ú "
- set "m[6]=Û Û Û ÛÛ Û › › › Û °° "
- set "m[7]=Û ÛÛ ÛÛ ÛÛ Û ÛÛÛÛÛÛÛÛÛÛÛ Û ›› ÛÛÛÛ ››"
- set "m[8]=Û ››› ÛÛÛÛÛÛÛÛÛ › › › Û Û Û "
- set "m[9]=Û › › › ÛÛ Û Û "
- set "m[10]=Û ÛÛÛ "
- set "m[11]=ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
- set /a "secons=200,view.max=10"
- exit /b 0
- :world_5
- set "border=Í"
- set "ground=²"
- set "m[1]=ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
- set "m[2]=²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"
- set "m[3]=²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"
- set "m[4]=²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"
- set "m[5]=²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"
- set "m[6]=²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"
- set "m[7]=²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"
- set "m[8]=²²²²²²²²²²²²²²²²²²²²²²°"
- set "m[9]=ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
- set /a "view.max=10"
- exit /b 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement