Загрузить файлы в «windows/bat/flappybird»

This commit is contained in:
2026-05-13 23:40:05 +00:00
parent 1f5f334b69
commit fdfafa048c
3 changed files with 386 additions and 0 deletions
+261
View File
@@ -0,0 +1,261 @@
@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
+123
View File
@@ -0,0 +1,123 @@
noout(chcp 65001)
include(console)
include(time)
include(math)
define(MAP_WIDTH, 50)
define(MAP_HEIGHT, 15)
define(PIPES_COUNT, 4)
function get_cell(x, y, out_res)
set "$out_res=!map[$y][$x]!"
end function
function set_cell(x, y, val)
set "map[$y][$x]=$val"
end function
//function draw_map()
// for /l %%i in (0,1,calc{MAP_HEIGHT-1}) do (
// set "txt="
// for /l %%j in (0,1,calc{MAP_WIDTH-1}) do (
// set "txt=!txt!!map[%%i][%%j]!"
// )
// echo.!txt!
// )
//end function
function draw_map()
set i=0
set j=0
set /a mh=MAP_HEIGHT-1
set /a mw=MAP_WIDTH-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
end function
function move_cell(old_x, old_y, new_x, new_y)
get_cell($old_x, $old_y, out _cell_val)
set_cell($old_x, $old_y, " ")
set_cell($new_x, $new_y, %_cell_val%)
end function
function draw_player()
set_cell($player_x, $player_y, "●")
end function
function create_pipe(x, val, char)
for /l %%i in (0,1,calc{$val-3}) do (
set_cell($x, calc{MAP_HEIGHT-1-%%i}, "$char")
)
for /l %%i in (0,1,calc{MAP_HEIGHT-$val-3}) do (
set_cell($x, %%i, "$char")
)
end function
function create_pipes()
for /l %%i in (1,1,4) do (
random(0, calc{MAP_HEIGHT-3}, out pipe%%i_val)
)
end function
function move_pipes(off)
for /l %%i in (1,1,4) do (
create_pipe(calc{10*%%i-$pipe_offset}, $pipe%%i_val, " ")
create_pipe(calc{10*%%i-$pipe_offset-$off}, $pipe%%i_val, "█")
)
set /a pipe_offset+=$off
end function
title Flappy Bird
set_size(MAP_WIDTH, calc{MAP_HEIGHT+2})
for /l %%i in (0,1,MAP_HEIGHT) do (
for /l %%j in (0,1,MAP_WIDTH) do (
set "map[%%i][%%j]= "
)
)
set player_x=2
set player_y=7
set pipe_offset=0
create_pipes()
:game_loop
//read key
//read_key(3, "no_key", out key)
//if(%key% == Spacebar)
// //jump
// set_cell(%player_x%, %player_y%, " ")
// set /a player_y-=2
// draw_player()
//end if
//gravity
get_cell(%player_x%, calc{%player_y%+1}, out pc_val)
if("%pc_val%" == " " && %player_y% < calc{MAP_HEIGHT-1})
set_cell(%player_x%, %player_y%, " ")
set /a player_y+=1
end if
draw_player()
for /l %%i in (1,1,4) do (
create_pipe(calc{10*%%i-$pipe_offset}, $pipe%%i_val, " ")
create_pipe(calc{10*%%i-$pipe_offset-1}, $pipe%%i_val, "█")
)
set /a pipe_offset+=1
//redraw map
cls
draw_map()
goto game_loop
+2
View File
@@ -0,0 +1,2 @@
@echo off
D:\folder\cs\exbat\exbat.exe --compile FlappyBird.exb FlappyBird.bat