Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off & CD "%~dp0"
- ::::::::::::::::::: Requires Game_EngineDEBUG.bat by T3RRY to run. Filename: Minesweeper.bat
- ::: OS Requirement: Windows 10
- ::: [ * Author: T3RRY * ] Creation Date - 25/01/2021
- ::: Version 1.3
- ::: Added: Sweep on selection of cell with 0 neigbouring mines; clear surrounding empty cells.
- ::: Corrected: Sweep overwriting of previously known safe cells or user flagged cells.
- Call Game_EngineDebug.bat /Q /N 10 2> nul || (
- Echo/Requires Game_EngineDEBUG.bat by T3RRY to run.
- Available for download from: https://drive.google.com/file/d/1cAQLd-f9HN6SuWowBUETccKCZd2dVbWj/view?usp=sharing
- Pause
- Exit /B 0
- )
- Set lvl=1
- TITLE Minesweeper by T3RRY. [E]xit
- Setlocal EnableDelayedExpansion
- %Play.Music%{%~dp0components\synth-loop.wav}{100}{1}
- %Monitor.Game%
- Endlocal
- :start
- CLS
- Setlocal EnableExtensions EnableDelayedExpansion
- %background.Border%{48;2;120;90;0}{10}{25}{1}{10}{@}{-1}
- Set /A .Yi=.Ymax-1,.Ym=.Ymin+1,info=.Ymax+2,.Xi=.Xmax-1,.Xm=.Xmin+1,.Yo=.Ymax+1,safe=0,mines=0
- %Update.Background%
- (For /L %%Y in (!.Ym! 1 !.Yi!)Do For /L %%X in (!.Xm! 1 !.Xi!)Do (
- <nul Set /P "=%\E%[%%Y;%%XH%\E%[90m%\E%!!%\E%[0m"
- Set /A mine=!Random! %%5 + 1
- If !mine!==2 (
- Set /A mines+=1
- If %%X LSS 10 (
- Set "}%%Y;%%X=%\E%[%%Y;%%XH%\E%!!%%!!%%X0m%\E%!!%%!!%%X0mX"
- ) Else (
- Set "}%%Y;%%X=%\E%[%%Y;%%XH%\E%!!%%!!%%X0m%\E%!!%%!!%%Y0mX"
- )
- )Else (Set /A "safe+=1")
- )) >%Background%
- Type %Background%
- Set /A .Xm-=.Xmin,.Xi-=.Xmin,.Ym-=.Ymin,.Yi-=.Ymin
- :loop
- <nul Set /P "=%\E%[!info!;1H%\E%[K%\E%[33mSafe moves: %\E%[32m!safe! %\E%[33mMines: %\E%[31m!mines!%\E%[0m"
- Set /A ".Yp=1,.Xp=1,.Pco=1"
- Set /P ".Yp=%\E%[!.Yo!;1H%\E%[K%\E%[33mEnter Y [%\E%[36m!.Ym!-!.Yi!%\E%[33m]: %\E%[0m"
- Echo/!.Yp!#|Findstr.exe /RX "[Ee#]*" > nul && Goto :end
- Echo/!.Yp!#|Findstr.exe /RX "[0123456789#]*" > nul || Goto :loop
- Set /P ".Xp=%\E%[!.Yo!;1H%\E%[K%\E%[36mEnter X [%\E%[33m!.Xm!-!.Xi!%\E%[36m]: %\E%[0m"
- Echo/!.Xp!#|Findstr.exe /RX "[Ee#]*" > nul && Goto :end
- Echo/!.Xp!#|Findstr.exe /RX "[0123456789#]*" > nul || Goto :loop
- Set /A ".Xp+=.Xmin,.Yp+=.Ymin" 2> nul
- If !.Yp! GEQ !.Ymax! Goto :loop
- If !.Xp! GEQ !.Xmax! Goto :loop
- If !.Yp! LEQ !.Ymin! Goto :loop
- If !.Xp! LEQ !.Xmin! Goto :loop
- <nul Set /P "=%\E%[!.Yp!;!.Xp!H%\E%[7;35m %\E%[0m"
- <nul Set /P "=%\E%[!.Yo!;1H%\E%[K%\E%[33m[%\E%[36mF%\E%[33m]lag [%\E%[36mC%\E%[33m]onfirm [%\E%[36mB%\E%[33m]ack%\E%[0m"
- For /F "Delims=" %%C in ('Choice /N /C:FCBE')Do If "%%C"== "C" (
- For %%z in ("!.Yp!;!.Xp!")Do If "!}%%~z:~-1!" == "X" (
- %Play.Music%{%~dp0components\backfire.wav}{100}{0}
- %Update.Background%
- <nul Set /P "=%\E%[%%~zH%\E%[7;1;31mB%\E%[0m"
- <nul Set /P "=%\E%[!.Yo!;1H"
- Timeout /T 3 /Nobreak > nul
- Pause
- Endlocal
- Goto :Start
- )Else (
- Set /A "safe-=1"
- For %%o in (".ne" ".nw" ".se" ".sw" ".no" ".ea" ".we" ".so")Do Set "%%~o="
- Set /A .no=.Yp-1,.so=.Yp+1,.ea=.Xp+1,.we=.Xp-1"
- Set ".se=!.so!;!.ea!"
- Set ".sw=!.so!;!.we!"
- Set ".ne=!.no!;!.ea!"
- Set ".nw=!.no!;!.we!"
- For %%o in (".no" ".so" )Do For %%v in ("!%%~o!")Do Set "%%~o=!}%%~v;%.Xp%!"
- For %%o in (".ea" ".we" )Do For %%v in ("!%%~o!")Do Set "%%~o=!}%.Yp%;%%~v!"
- For %%o in (".ne" ".nw" ".se" ".sw")Do For %%v in ("!%%~o!")Do If "!}%%~v:~-1!" == "X" (Set "%%~o=!}%%~v!")Else (Set "%%~o=")
- Set ".Pco=0"
- For %%o in (".ne" ".nw" ".se" ".sw" ".no" ".ea" ".we" ".so")Do If Not "!%%~o!" == "" (
- If "!%%~o:~-1!" == "X" ( Set /A ".Pco+=1" )
- )
- Set "}!.Yp!;!.Xp!=%\E%[!.Yp!;!.Xp!H%\E%[7;32m!.Pco!%\E%[0m"
- <nul Set /P "=%\E%[!.Yp!;!.Xp!H%\E%[7;32m!.Pco!%\E%[0m"
- If !safe! EQU 0 (
- <nul Set /P "=%\E%[!info!;1H%\E%[K%\E%[32mYou Won^^^!%\E%[0m"
- Goto :end
- )
- )
- )Else If "%%C" == "F" (
- <nul Set /P "=%\E%[!.Yp!;!.Xp!H%\E%[7;33m?%\E%[0m"
- For %%v in ("!.Yp!;!.Xp!")Do if not "!}%%~v:~-1!" == "X" (
- Set "}%%~v=%\E%[!.Yp!;!.Xp!H%\E%[7;33m?%\E%[0m"
- )
- )Else If "%%C" == "B" (
- <nul Set /P "=%\E%[!.Yp!;!.Xp!H%\E%[90m%\E%[48;2;20;20;40m?%\E%[0m"
- )Else If "%%C" == "E" Goto :end
- IF "!.Pco!" == "0" (
- %Play.Music%{%~dp0components\collectcoin.wav}{100}{0}
- For %%o in ("p.ne" "p.nw" "p.se" "p.sw" "p.no" "p.ea" "p.we" "p.so")Do Set "%%~o="
- For %%p in (".ne" ".nw" ".se" ".sw" ".no" ".ea" ".we" ".so")Do If "!%%~p!" == "" (
- Set /A p.no=.Yp-1,p.so=.Yp+1,p.ea=.Xp+1,p.we=.Xp-1"
- Set "p.se=!p.so!;!p.ea!"
- Set "p.sw=!p.so!;!p.we!"
- Set "p.ne=!p.no!;!p.ea!"
- Set "p.nw=!p.no!;!p.we!"
- For %%o in ("p.no" "p.so" )Do For %%v in ("!%%~o!")Do Set "%%~o=%%~v;!.Xp!"
- For %%o in ("p.ea" "p.we" )Do For %%v in ("!%%~o!")Do Set "%%~o=!.Yp!;%%~v!"
- For %%v in ("!p%%~p!")Do if "!}%%~v!" == "" If not "!}%%~v:~-1!" == "!.Char!" (
- <nul Set /P "=%\E%[!p%%~p!H%\E%[7;32m☺%\E%[0m"
- Set "}%%~v=%\E%[%%~vH%\E%[7;32m☺%\E%[0m"
- )
- )
- )
- Goto :loop
- :end
- Timeout /T 2 /Nobreak > nul
- %Stop.Music:running=%
- Exit /B 0
Add Comment
Please, Sign In to add comment