Hack Forums
[Shell] :Grid function - Printable Version

+- Hack Forums (https://hackforums.net)
+-- Forum: Tech (https://hackforums.net/forumdisplay.php?fid=444)
+--- Forum: Coding (https://hackforums.net/forumdisplay.php?fid=151)
+---- Forum: Software Development (https://hackforums.net/forumdisplay.php?fid=118)
+---- Thread: [Shell] :Grid function (/showthread.php?tid=5522570)



:Grid function - ɩᴄᴀʀᴜȿ ᴌוᴠᴇѕ™ - Jan 13, 2017

Hello all, dropping new function of the week I guess lol

Spoiler (Click to View)

This is a neat function, mostly for game developers, but can most certainly be useful for people who would use it as some sort of spreadsheet, etc.

Spoiler (Click to View)

You could create a lot of different type of boxes/grids with this function. You could use it to create a maze, a map for games, a spreadsheet, a puzzle, etc. It's really up to your imagination.

The below example displays :grid /F 4 "3x5"
Code
.  A     B     C     D     E     F
.#####################################
.#     #     #     #     #     #     #
1#     #     #     #     #     #     #
.#     #     #     #     #     #     #
.#####################################
.#     #     #     #     #     #     #
2#     #     #     #     #     #     #
.#     #     #     #     #     #     #
.#####################################
.#     #     #     #     #     #     #
3#     #     #     #     #     #     #
.#     #     #     #     #     #     #
.#####################################


Parameter1 = number of boxes horizontally from /A-Z
Paremeter2 = number of stacks tall these boxes are
Parameter3 = "HeightxWidth" of each individual box
Parameter4 = /s to show data of grid, and echo %ol% to do so.

Quickview: Controls W S E D R F and Q.
Q prompts for alphabet letter
Code
@echo off & setlocal enableDelayedExpansion
mode con: lines=50 cols=70

set a=A
set j=1
set h=1
set k=1

:main
    
    set q=
    cls
        echo CONTROLS: Q W S E D R F
        call :grid /!a! !j! "!h!x!k!" /s
        if defined ol echo %ol%
        call :display

        for /f "tokens=*" %%a in ('choice /c:qwsedrf /n') do (
            
            if /i "%%~a" equ "Q" set /p "a=: "
            if /i "%%~a" equ "W" set /a "j+=1"
            if /i "%%~a" equ "S" if !j! geq 1 set /a "j-=1"
            if /i "%%~a" equ "E" set /a "h+=1"
            if /i "%%~a" equ "D" if !h! geq 2 set /a "h-=1"
            if /i "%%~a" equ "R" set /a "k+=1"
            if /i "%%~a" equ "F" if !k! geq 2 set /a "k-=1"
            
        )
goto :main

:display
    echo.
    for /l %%a in (1,1,%gridMaxHeight%) do echo=!line[%%a]!
goto :eof

:grid
    for /l %%a in (0,1,%gridMaxHeight%) do set "line[%%a]="
    for %%a in (gHeight gWidth gridMaxHeight gridMaxWidth bHeight bWidth i g s d z) do set "%%a="
    set "_t=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
    set /a "gHeight=%2"
    set "z=%1" & set "z=!z:~1,1!"
    for %%a in (%_t%) do set /a "i+=1" & if /i "%%a" equ "%z%" set "gWidth=!i!"
    for /f "tokens=1,2 delims=x" %%a in ("%~3") do set /a "bHeight=%%a + 1", "bWidth=%%b"
    set /a "g=((gWidth * bWidth) + bWidth)", "gridMaxHeight=(gHeight * bHeight) + 1"
    set /a  "gridMaxWidth=g - bWidth + gWidth + 1"
    for /l %%a in (1,1,%bWidth%) do set "s=!s! "
    for /l %%a in (1,%bWidth%,%g%) do set "d=!d!!s!#"
    for /l %%a in (1,1,%gridMaxHeight%) do set "line[%%a]=#!line[%%a]!!d:~0,-%bWidth%!"
    for /l %%a in (1,1,%gridMaxWidth%) do set "line[0]=!line[0]!#"  
    for /l %%a iN (1,%bHeight%,%gridMaxHeight%) do set "line[%%a]=!line[0]!"
    if "%~4" equ "/s" set "ol=GRID: %gridMaxHeight%x%gridMaxWidth%/[A-%z%] x %gHeight%. - %~3 boxes"  
goto :eof



RE: :Grid function - Phlox - Mar 26, 2018

Wow again another fantastic batch script, keep up the good work @ɩᴄᴀʀᴜȿ!