贪吃蛇游戏bat

 前几期一直再聊计算机病毒,今天我们聊聊电子游戏。由于我最近很忙,所以只能写一个较简单的bat贪吃蛇游戏。废话不多说,直接上代码:

@echo off
setlocal enabledelayedexpansion

:: 初始化变量
set "snake=HH"
set "direction=RIGHT"
set "food=O"
set /a width=20, height=10
set /a score=0
set /a snake_x=width / 2, snake_y=height / 2

:: 清屏并隐藏光标
cls
echo ^[[?25l

:: 生成食物
call :spawn_food

:: 游戏主循环
:main
    cls
    call :draw_board
    call :move_snake
    timeout /nobreak /t 1 > nul
    call :check_collision
goto main

:: 生成食物函数
:spawn_food
:spawn_again
    set /a food_x=%random% %% (width - 2) + 1
    set /a food_y=%random% %% (height - 2) + 1
    if %food_x% equ %snake_x% if %food_y% equ %snake_y% goto spawn_again
    goto :eof

:: 画板函数
:draw_board
    for /l %%y in (0,1,%height%) do (
        for /l %%x in (0,1,%width%) do (
            set "char= "
            if %%x equ 0 if %%y equ 0 set "char=#"
            if %%x equ %width%-1 if %%y equ %height%-1 set "char=#"
            if %%x equ %width%-1 if %%y equ 0 set "char=#"
            if %%x equ 0 if %%y equ %height%-1 set "char=#"
            if %%x equ 0 if %%y gtr 0 if %%y lss %height%-1 set "char=#"
            if %%x equ %width%-1 if %%y gtr 0 if %%y lss %height%-1 set "char=#"
            if %%y equ 0 if %%x gtr 0 if %%x lss %width%-1 set "char=#"
            if %%y equ %height%-1 if %%x gtr 0 if %%x lss %width%-1 set "char=#"
            if %%x equ %food_x% if %%y equ %food_y% set "char=%food%"
            if %%x equ !snake_x! if %%y equ !snake_y! set "char=%snake%"
            set /p "=!char!" < nul
        )
        echo.
    )
goto :eof

:: 移动蛇函数
:move_snake
    set /a prev_x=snake_x, prev_y=snake_y
    if "%direction%" equ "UP" set /a snake_y-=1
    if "%direction%" equ "DOWN" set /a snake_y+=1
    if "%direction%" equ "LEFT" set /a snake_x-=1
    if "%direction%" equ "RIGHT" set /a snake_x+=1
    if %snake_x% equ %food_x% if %snake_y% equ %food_y% (
        set /a score+=1
        call :spawn_food
    )
goto :eof

:: 检查碰撞函数
:check_collision
    if %snake_x% leq 0 goto gameover
    if %snake_x% geq %width%-1 goto gameover
    if %snake_y% leq 0 goto gameover
    if %snake_y% geq %height%-1 goto gameover
    goto :eof

:gameover
    cls
    echo Game Over! Your score: %score%
    echo.
    pause
    exit /b

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值