2015-12-23 81 views
1

所以我有一批瞎搞,搞得這個腳本:碰撞檢測批次遊戲工作不正常

@echo off 
setlocal enabledelayedexpansion 
set /a "start=33" 
set "sc1=°" 
set "sc2=°" 
set "sc3=°" 
set "sc4=°" 
set "sc5=°" 
set "sc6= " 
set "sc7= " 
set "sc8= " 
set "sc9= " 
set "sc10= " 
set "sc11= " 
set "sc12= " 
set "sc13= " 
set "sc14= " 
set "sc15= " 
set "sc16= " 
set "sc17= " 
set "sc18= " 
set "sc19= " 
set "sc20= " 
set "sc21= " 
set "sc22= " 
set "sc23=°" 
set "sc24= " 
set "sc25= " 
set "sc26= " 
set "sc27= " 
set "sc28= " 
set "sc29= " 
set "sc30= " 
set "sc31= " 
set "sc32= " 
set "sc33=X" 
set "sc34= " 
set "sc35= " 
set "sc36= " 
set "sc37= " 
set "sc38= " 
set "sc39= " 
set "sc40= " 
set "sc41= " 
set "sc42= " 
set "sc43= " 
set "sc44= " 
set "sc45= " 
set "sc46= " 
set "sc47= " 
set "sc48= " 
set "sc49= " 
set "sc50= " 
set "sc51= " 
set "sc52= " 
set "sc53= " 
set "sc54= " 
set "sc55= " 

:display 
cls 
echo. !sc1!!sc2!!sc3!!sc4!!sc5! 
echo. !sc6!!sc7!!sc8!!sc9!!sc10! 
echo. !sc11!!sc12!!sc13!!sc14!!sc15! 
echo. !sc16!!sc17!!sc18!!sc19!!sc20! 
echo. !sc21!!sc22!!sc23!!sc24!!sc25! 
echo. !sc26!!sc27!!sc28!!sc29!!sc30! 
echo. !sc31!!sc32!!sc33!!sc34!!sc35! 
echo. !sc36!!sc37!!sc38!!sc39!!sc40! 
echo. !sc41!!sc42!!sc43!!sc44!!sc45! 
echo. !sc46!!sc47!!sc48!!sc49!!sc50! 
echo. !sc51!!sc52!!sc53!!sc54!!sc55! 
choice /c wasd 
if !ERRORLEVEL!==1 (
set /a "x=5" 
set "op=-" 
) 
if !ERRORLEVEL!==2 (
set /a "x=1" 
set "op=-" 
) 
if !ERRORLEVEL!==3 (
set /a "x=5" 
set "op=+" 
) 
if !ERRORLEVEL!==4 (
set /a "x=1" 
set "op=+" 
) 
call :detect 

if !m! EQU 1 (
goto :display 
) 

set /a "newstart=!start!!op!!x!" 
set "sc!newstart!=X" 
set "sc!start!= " 
set /a "start=!newstart!" 
goto :display 


:detect 
set /a "detect=!start!!op!!x!" 
if !sc%detect%!==° (
set /a "m=1" 
) 
exit /b 

這一切是一個簡單的原型一批遊戲。你可以用wasd向四面八方移動。我遇到的唯一問題是當您按下牆上的按鈕時,您會永久卡住。我將如何解決這個問題?

+1

我大多印象深刻,你可以在bat文件中做這樣的原始I/O。 – selbie

+0

請澄清。除了一個語法錯誤,因爲'm'沒有建立first-through-through(直接在':display'之後用'set m = 1'固化它看起來是有效的 - 除了到達一邊以前/下一行或到達最下面的行會進入遺忘狀態(這是因爲位置'scmn'和'scmn + 1'在不同的行上,並且'sc56(+)'不存在...... – Magoo

回答

2

您的檢測工作正常。你的問題是你在檢測到碰撞後從未清除「m」值,因此你爲什麼會卡住。最簡單的解決方法是在檢測例程開始時簡單地將m初始化爲0。