Загрузить файлы в «windows/bat/flappybird»
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user