2016-02-26 55 views
0

因此對於我們的計算機科學課,我們不得不編寫一個隨機生成卡的程序,我決定批量執行我的程序,因爲我是一個巨大的noob XD 我有信心,我可以做到這一點,因爲我很熟悉它。即使批量不是一種好的'語言',如果你打算這麼稱呼它的話。我能夠通過一些努力解決大部分問題。然而,我仍然有一些問題,我不知道如何解決。Windows批處理卡遊戲運行不正常,不知道如何修復

我不知道如何解決我最大的問題是...未正常顯示

  • 文本。
  • 數字(我用於AI和卡片生成的基礎)有時候沒有在變量中正確定義。
  • 積分系統只是拒絕工作,不管我做什麼。
  • 如果我跳過'TIMEOUT'或'PAUSE',它有時會隨機隨意平放,決定撞上我。
  • 某些「IF」語句即使與其他語句完全相同,也沒有正確執行。

對不起,如果這個問題太寬泛,但我真的不知道如何總結它。

這裏是我的紙牌遊戲的鏈接:http://pastebin.com/t2S3yWk5

這是我們的問題:

1)創建一個程序,將產生兩個隨機數 - 一個映射到西裝(心,方塊,梅花或黑桃)和一個映射到一個卡(ACE,2,3,......傑克,皇后,國王)

*Mine is slightly different, it generates two different suits based on two random numbers.* 

2)創建一個程序,它會產生一個隨機卡然後要求用戶去更高,Lowe r或Quit。如果玩家選擇較高,則下一張牌必須具有較高的價值或者該玩家已經出局。同樣適用於Lower。

3)擴展前一個程序,用戶將在遊戲開始時選擇一個王牌套裝。如果卡是王牌卡,那麼無論卡的價值如何,遊戲都會繼續。該計劃將保持分數,並將分數保存到高分檔案。用戶也將能夠顯示當前的高分檔案。

我想嘗試和自己做這個東西(上面列出)。我只是需要幫助,試圖解決我現有的計劃。

我希望如果您閱讀本文,您可以給我一些建議或爲我的一些問題提供解決方案。提前致謝! :3

+0

您將不得不爲您的問題添加特定問題,因爲現在它太寬泛了。你的代碼應該做什麼,它實際上在做什麼? – SomethingDark

+0

@ Will11600 - 你真的需要用批處理語言創建它嗎?或者是您的選擇? – miroxlav

+0

Mirolav,我知道,我要爲我的帖子添加一條評論。我們可以用我們想要的任何語言來完成。我知道批處理真的不是最好的語言。但我沒有使用Python或Java的經驗,我確信我可以批量執行此操作。我也走了很遠,我不想重新開始。 – Will11600

回答

1

好消息;沒有什麼是超級你的代碼不對,它只是一堆看起來很多的小東西。一些錯誤的錯誤和一個我只能假設從復​​制和粘貼中複製的缺失變量。

文本沒有被正確

顯示我認爲這是「拒絕訪問」,你的代碼產生的,而不是AI的言論錯誤。這是因爲><用於輸出重定向,所以您添加的表情符號試圖在您無權訪問的位置創建文件。要麼擺脫它們(推薦)或使用^來逃避它們(^>:))。

號碼(I使用的AI和卡生成的鹼)有時不被在變量正確定義

%random% %% 5導致在組0,1,2,3中的號碼中的一個,4.您當前沒有if語句,如果隨機選擇0,會發生什麼情況。添加一個if語句,或者如果選擇0,代碼將返回到該部分的頂部。

點系統只是拒絕工作,無論我做什麼

你會踢自己...

set語句丟失分配部分。 SET /A %p1p% + 2應該是SET /A p1p=%p1p% + 2等等(或set /a p1p+=2如果你認爲看起來更好)。

如果有時隨機只是平了決定崩潰的我,如果我跳過「超時」或「暫停」

我不能複製的是,但代碼似乎正常工作時,我刪除了這些陳述。

一些「IF」語句沒有被正確執行,即使它們是完全一樣的其他的

您的評論表示線119-132,其中包括if語句指定點。請參閱上文爲什麼這些不起作用。

爲您的代碼的一些其他建議

你的變量名應該是更具描述性的。例如,ctog不告訴我有關該變量應該是什麼的任何信息;我可以看看代碼,看看它做了什麼,但沒有任何上下文,這可能會做任何事情。

您應該將/i標誌添加到if語句中,以檢查您放下哪張卡,以便C1和c1得到相同處理。在相關說明中,您應該檢查玩家何時進入除C1或C2之外的其他東西。您甚至可以像以前一樣使用choice命令。

:pvic缺少exit命令,因此如果您贏了,您將自動再次播放。結合你只檢查lt是否等於2,不大於或等於2的事實,如果你贏了,沒有辦法停止播放。關於最終遊戲條件的問題,如果您綁定計算機,則沒有if聲明。

cp1和num1實際上是同一個變量,沒有理由同時存在(與cp2/num2,ap1/num3和ap2/num4相同)。

在pc1的末尾需要某種goto以便:pc1在pc1完成後不會自動運行。

+0

非常感謝您的幫助。我的程序現在已經完全工作,除了一件事情,在137-140行,我試圖取消設置變量,以便玩家不能使用他再次使用的卡。它無法工作。我把它作爲這個* IF%ch%== ch1 SET%card1%= *這是什麼錯誤?我會嘗試沒有* == *之間的間距。非常感謝你的幫助。 – Will11600

+0

@ Will11600 - 您正在有效地告訴計算機取消設置名爲「Jack」的變量或任何值或card1。要真正清除card1變量,請刪除'%'符號,如下所示:'IF%ch%== ch1 SET card1 =' – SomethingDark

+0

另外,如果我的答案解決了您的問題,請單擊我的答案旁邊的複選標記。 – SomethingDark