Files
pipgupip/windows/bat/flappybird/FlappyBird.bat
T

261 lines
7.5 KiB
Batchfile

@echo off
setlocal EnableDelayedExpansion
chcp 65001> nul
:beep
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_beep )
echo BA | choice /c A> nul
goto :eof
:_GAy9L3CwYDa531In9pst_end_beep
:pause
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_pause )
pause> nul
goto :eof
:_GAy9L3CwYDa531In9pst_end_pause
:choice
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_choice )
choice /c %~1> nul
set /a "%~2=!ERRORLEVEL!-1"
goto :eof
:_GAy9L3CwYDa531In9pst_end_choice
:read_key
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_read_key )
if not exist "%temp%\readkey.exe" (
set "nf_path=%windir%\Microsoft.NET\Framework"
for /f %%i in ('dir /b /a:d /o:-n "!nf_path!"') do (
set "nf_ver=%%i"
goto got_nf_ver
)
:got_nf_ver
set "csc=!nf_path!\!nf_ver!\csc.exe"
echo using System;namespace _{class _{public static void Main^(string[] args^){if^(args[0]^^!="0"^){System.Threading.Tasks.Task.Run^(^(^)=^>{System.Threading.Thread.Sleep^(int.Parse^(args[0]^)^);Console.Write^(args[1]^);Environment.Exit^(0^);}^);};Console.Write^(Console.ReadKey^(true^).Key.ToString^(^)^);}}}> "%temp%\readkey.cs"
"!csc!" /nologo "/out:%temp%\readkey.exe" "%temp%\readkey.cs"
)
for /f "tokens=*" %%i in ('"%temp%\readkey.exe" %~1 %~2') do set "%~3=%%i"
goto :eof
:_GAy9L3CwYDa531In9pst_end_read_key
:set_size
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_set_size )
mode con cols=%~1 lines=%~2
goto :eof
:_GAy9L3CwYDa531In9pst_end_set_size
:set_title
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_set_title )
title %~1
goto :eof
:_GAy9L3CwYDa531In9pst_end_set_title
:echo
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_echo )
echo;%~1
goto :eof
:_GAy9L3CwYDa531In9pst_end_echo
:printf
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_printf )
goto :eof
:_GAy9L3CwYDa531In9pst_end_printf
:delay
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_delay )
if not exist "%temp%\del.js" (
echo WScript.Sleep^(WScript.Arguments^(0^)^);> "%temp%\del.js"
)
cscript //nologo "%temp%\del.js" %~1
goto :eof
:_GAy9L3CwYDa531In9pst_end_delay
:pow
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_pow )
set "str=%~1"
for /l %%i in (2,1,%~2) do (
set "str=!str! * %~1"
)
set /a "%~3=!str!"
goto :eof
:_GAy9L3CwYDa531In9pst_end_pow
:random
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_random )
set /a "%~3=%~1 + %random% %% (%~2 - %~1)"
goto :eof
:_GAy9L3CwYDa531In9pst_end_random
:is_number_prime
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_is_number_prime )
if %~1 leq 1 (
set "%~2=-1"
goto :eof
)
if %~1==2 (
set "%~2=0"
goto :eof
)
set /a _PfhRdksThgGU7SB6uCE4=%~1-1
for /l %%i in (2,1,!_PfhRdksThgGU7SB6uCE4!) do (
set /a res=%~1 %% %%i
if !res!==0 (
set "%~2=0"
goto :eof
)
)
set "%~2=1"
goto :eof
:_GAy9L3CwYDa531In9pst_end_is_number_prime
:get_cell
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_get_cell )
set "%~3=!map[%~2][%~1]!"
goto :eof
:_GAy9L3CwYDa531In9pst_end_get_cell
:set_cell
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_set_cell )
set "map[%~2][%~1]=%~3"
goto :eof
:_GAy9L3CwYDa531In9pst_end_set_cell
rem function draw_map()
set /a _BjCMVGGvFMZyNXeDn7SU=15-1
rem for /l %%i in (0,1,!_BjCMVGGvFMZyNXeDn7SU!) do (
rem set "txt="
set /a _ii5NEXWfGzLLFgUpdU6W=50-1
rem for /l %%j in (0,1,!_ii5NEXWfGzLLFgUpdU6W!) do (
rem set "txt=!txt!!map[%%i][%%j]!"
rem )
rem echo.!txt!
rem )
rem end function
:draw_map
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_draw_map )
set i=0
set j=0
set /a mh=15-1
set /a mw=50-1
:_dm_loop_y
set "txt="
:_dm_loop_x
pause>nul
call set txt=%txt%%%map[%i%][%j%]%%
set /a j+=1
if %j% lss %mw% goto _dm_loop_x
title %j% %i%
set /a i+=1
if %i% lss %mh% goto _dm_loop_y
goto :eof
:_GAy9L3CwYDa531In9pst_end_draw_map
:move_cell
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_move_cell )
call :get_cell iKPv4R2cuLsTyHv6OKbV %~1 %~2 _cell_val
call :set_cell iKPv4R2cuLsTyHv6OKbV %~1 %~2 " "
call :set_cell iKPv4R2cuLsTyHv6OKbV %~3 %~4 %_cell_val%
goto :eof
:_GAy9L3CwYDa531In9pst_end_move_cell
:draw_player
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_draw_player )
call :set_cell iKPv4R2cuLsTyHv6OKbV !player_x! !player_y! ""
goto :eof
:_GAy9L3CwYDa531In9pst_end_draw_player
:create_pipe
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_create_pipe )
set /a _d7OVHSGjy7TxuuWcoyH7=%~2-3
for /l %%i in (0,1,!_d7OVHSGjy7TxuuWcoyH7!) do (
set /a _ukpQANtqDykSB50kUjGw=15-1-%%i
call :set_cell iKPv4R2cuLsTyHv6OKbV %~1 !_ukpQANtqDykSB50kUjGw! "%~3"
)
set /a _RwrIfYaUK1AoM8l2S8V3=15-%~2-3
for /l %%i in (0,1,!_RwrIfYaUK1AoM8l2S8V3!) do (
call :set_cell iKPv4R2cuLsTyHv6OKbV %~1 %%i "%~3"
)
goto :eof
:_GAy9L3CwYDa531In9pst_end_create_pipe
:create_pipes
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_create_pipes )
for /l %%i in (1,1,4) do (
set /a _iZg9XAvy4vIFsVq83hul=15-3
call :random iKPv4R2cuLsTyHv6OKbV 0 !_iZg9XAvy4vIFsVq83hul! pipe%%i_val
)
goto :eof
:_GAy9L3CwYDa531In9pst_end_create_pipes
:move_pipes
if "%~1"=="iKPv4R2cuLsTyHv6OKbV" ( shift /1 ) else ( goto _GAy9L3CwYDa531In9pst_end_move_pipes )
for /l %%i in (1,1,4) do (
set /a _wYfLy6FDU7SWOMN1Prue=10*%%i-!pipe_offset!
call :create_pipe iKPv4R2cuLsTyHv6OKbV !_wYfLy6FDU7SWOMN1Prue! !pipe%%i_val! " "
set /a _nmaZs561Sn9vNtGJ3ULb=10*%%i-!pipe_offset!-%~1
call :create_pipe iKPv4R2cuLsTyHv6OKbV !_nmaZs561Sn9vNtGJ3ULb! !pipe%%i_val! ""
)
set /a pipe_offset+=%~1
goto :eof
:_GAy9L3CwYDa531In9pst_end_move_pipes
title Flappy Bird
set /a _5re6cw0fHysLwP8K8Gd2=15+2
call :set_size iKPv4R2cuLsTyHv6OKbV 50 !_5re6cw0fHysLwP8K8Gd2!
for /l %%i in (0,1,15) do (
for /l %%j in (0,1,50) do (
set "map[%%i][%%j]= "
)
)
set player_x=2
set player_y=7
set pipe_offset=0
call :create_pipes iKPv4R2cuLsTyHv6OKbV
:game_loop
rem read key
rem read_key(3, "no_key", out key)
rem if(%key% == Spacebar)
rem rem jump
rem set_cell(%player_x%, %player_y%, " ")
rem set /a player_y-=2
rem draw_player()
rem end if
rem gravity
set /a _9Ovq7hIfFD84gTj5He66=%player_y%+1
call :get_cell iKPv4R2cuLsTyHv6OKbV %player_x% !_9Ovq7hIfFD84gTj5He66! pc_val
set /a _Faud5y98v6Lx1Tbr6y85=15-1
if "%pc_val%" equ " " if %player_y% lss !_Faud5y98v6Lx1Tbr6y85! (
call :set_cell iKPv4R2cuLsTyHv6OKbV %player_x% %player_y% " "
set /a player_y+=1
)
call :draw_player iKPv4R2cuLsTyHv6OKbV
for /l %%i in (1,1,4) do (
set /a _oVaD0xpcpCCeJgxjeRuJ=10*%%i-!pipe_offset!
call :create_pipe iKPv4R2cuLsTyHv6OKbV !_oVaD0xpcpCCeJgxjeRuJ! !pipe%%i_val! " "
set /a _iJtJ2KDN229TfBStAqnI=10*%%i-!pipe_offset!-1
call :create_pipe iKPv4R2cuLsTyHv6OKbV !_iJtJ2KDN229TfBStAqnI! !pipe%%i_val! ""
)
set /a pipe_offset+=1
rem redraw map
cls
call :draw_map iKPv4R2cuLsTyHv6OKbV
goto game_loop