2016-03-19 107 views
0

我最近學習了一些教程,並學習瞭如何創建和編程批處理文件。我開始製作一款旨在模擬戰鬥怪物的遊戲。這個遊戲的機制之一是成爲一個已經編程的庫存,你可以從商店購買某些物品並將它們放入你已經可以在戰鬥中使用的庫存中。到目前爲止,唯一的編程級別是教程,只是它的開始。你應該能夠做的是在詢問時選擇一個存貨槽,然後計算機應該運行似乎沒有的庫存功能。出現一些錯誤,然後自動關閉窗口。如果任何人都可以簡單地解釋爲什麼這不起作用,我如何解決它,這將真的幫助我。謝謝:d這裏是我的代碼...無法在批處理文件中調用函數

::SETUP 
@echo off 
title Platformer 
color 0a 


::Variables 
set my_level=0 
set money=0 
set inventory_slot_1= 
set inventory_slot_2= 
set inventory_slot_3= 
set inventory_slot_4= 
set inventory_slot_5= 
set current_level=-1 
set pin=0 


::MONSTER VARIABLES 
set monster_level = 0 


::MAIN MENU 
:main_menu 
cls 

echo. 
echo PPPPP l aaaaa ttttt fffff ooooo rrrr mmmmm eeeee rrrr 
echo P P l a a t f  o o r r m m m e  r r 
echo PPPPP l aaaaa t ffff o o rrrr m m m eeee rrrr 
echo P  l a a t f  o o r r m m m e  r r 
echo P  l a a t f  ooooo r r m m eeeee r r 
echo. 
echo 1990 inc. 
echo. 
echo LVL.%my_level%         $%money% 
echo ________________________________________________________________________________ 
echo. 

echo 1 - Play 
echo 2 - Save 
echo 3 - Load 
echo. 
set /p input=">>> " 

if %input%==1 goto level_select 
if %input%==2 goto save 
if %input%==3 goto load 

pause >nul 


::LEVEL SELECT 
:level_select 
cls 

echo LVL.%my_level%         $%money% 
echo ________________________________________________________________________________ 
echo. 

echo 1 - Tutorial 
echo 2 - Level 1 
echo 3 - level 2 
echo 4 - level 3 
echo 5 - Boss 
echo 6 - BACK 
echo. 
set /p input=">>> " 

if %input%==1 goto tutorial 
if %input%==2 goto level_select 
if %input%==3 goto level_select 
if %input%==4 goto level_select 
if %input%==5 goto level_select 
if %input%==6 goto main_menu 

goto main_menu 
pause >nul 


::INVENTORY 
:inventory 
if %~1==rock set %damage%=2 
if %~1==mercy set mercy_chance=%RANDOM%*%monster_leve%/32768+1 

EXIT /b 


::TUTORIAL 
:tutorial 
cls 
echo LVL.%my_level%         $%money% 
echo ________________________________________________________________________________ 
echo. 
set /a current_level = 0 

call:summon_dragon 

pause >nul 


::Monster -- Dragon 
:summon_dragon 

set /a monster_level=%current_level%+1 
set /a rand=%RANDOM%%%3+1 
set /a monster_hp=%monster_level%*3+%rand% 
echo A Lvl.%monster_level% Dragon Has Been Summoned 
echo What Will You Do? 
echo. 
echo HP: %monster_hp% 
echo. 
echo 1 - [ %inventory_slot_1% ] 
echo 2 - [ %inventory_slot_2% ] 
echo 3 - [ %inventory_slot_3% ] 
echo 4 - [ %inventory_slot_4% ] 
echo 5 - [ %inventory_slot_5% ] 
echo 6 - [ Mercy ] 

echo. 
set /p input=">>> " 
if input==1 callinventory %inventory_slot_1% 
if input==2 call:inventory %inventory_slot_2% 
if input==3 call:inventory %inventory_slot_3% 
if input==4 call:inventory %inventory_slot_4% 
if input==5 call:inventory %inventory_slot_5% 
if input==6 (
    call:inventory mercy 
    if %mercy_chance%==1 (
     set my_level=%my_level%+1 
     goto win 
    ) 
) 

set monster_hp=%monster_hp%-%damage% 
if monster_hp<=0(
    set my_level=%my_level%+1 
    set current_level=%current_level%+1 
    goto win 
) 

EXIT /b 


::WIN 
:win 
cls 

echo YOU WIN! 

pause >nul 


::SAVE 
:save 
cls 

echo LVL.%my_level%         $%money% 
echo ________________________________________________________________________________ 
echo. 

set /p pin="Pin: " 
echo. 
if pin==nul(set /p pin = Change Pin: goto save) 
(
echo @echo off 
echo set my_level=%my_level% 
echo set money=%money% 
) >> game_saves\%pin%.cmd 
echo SAVED 

pause >nul 
goto main_menu 


::LOAD 
:load 
cls 

echo LVL.%my_level%         $%money% 
echo ________________________________________________________________________________ 
echo. 

set /p pin="Pin: " 
echo. 
if pin==nul(pause >Invalid Pin goto load) 
call game_saves\%pin%.cmd 
echo Loaded 

pause >nul 
goto main_menu 

回答

1
if %~1==rock set %damage%=2 

可能不正確。如果%~1爲空,則會出現語法錯誤。

您試圖set的變量是damage到2. 內容也許這是不正確。如果damage沒有設置在這個時候,你會得到一個錯誤cmd試圖解析set =2

開始>程序>附件和快捷鍵設置自己Command Prompt

點擊,這將讓你到cmd,然後你可以瀏覽有關通過改變到相應的目錄中cd c:\wherever\your\batch\is,只是運行nameofyourbatchfile運行批處理。

要退出cmd,請鍵入exit並獲得有關命令的幫助type commandname /?

所有acions終止與輸入

+0

芒果,我覺得現在明白這個問題,但仍然沒有得到如何解決它或命令PROMT將如何幫助解決,我發現了錯誤。我也儘管我會讓你知道,我不認爲這是錯誤,因爲我試圖在定義庫存功能後暫停一行。我仍然有一個錯誤,並立即關閉窗口。我相信它說的是(意外的是在這個時候 – Vansh03

+0

和「(」不是一個接口,這就是它說的 – Vansh03

相關問題