Windows 批量卡牌游戏无法正常运行,不知道如何解决

Windows batch card game not working properly, don't know how to fix

所以对于我们的计算机科学 class,我们必须编写一个随机生成卡片的程序,我决定批量生成卡片,因为我是一个 大菜鸟 XD 我有信心我能做到,因为我对此很有经验。即使 batch 无论如何都不是一个好的 'language' 如果你要这么称呼它的话。我能够通过一些努力自己解决大部分问题。然而,我仍然有一些问题我不知道如何解决。

我不知道如何解决的最大问题是...

如果这个问题太宽泛,我很抱歉,但我真的不知道如何总结它。

这是我的纸牌游戏 link:http://pastebin.com/t2S3yWk5

这是我们的问题:

1) 创建一个程序来生成两个随机数 - 一个映射到花色(红桃、方块、梅花或黑桃),另一个映射到牌(A、2、3、.... . 杰克, 女王, 国王)

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

2) 创建一个将生成随机卡片的程序,然后要求用户走高、走低或退出。如果玩家选择更高,则下一张牌必须具有更高的价值,否则玩家就出局了。同样适用于 Lower.

3)扩展之前的程序,用户将在游戏开始时select一张王牌。如果该牌是王牌,则无论该牌的价值如何,游戏都会继续。该程序将保留分数并将分数保存到高分文件中。用户还将能够显示当前的高分文件。

我想自己尝试做这些事情(上面列出的)。我只是需要帮助来修复我现有的程序。

我希望如果您阅读本文,可以给我一些建议或为我的一些问题提供解决方案。提前致谢! :3

好消息;您的代码没有 super 错误,它只是一堆看起来很多的小东西。一些差一错误和一个缺失的变量,我只能假设是通过复制和粘贴复制的。

Text not being displayed properly

我假设这是您的代码产生的 "Access denied" 错误,而不是 AI 的注释。这是因为 >< 用于输出重定向,因此您添加的表情试图在您无权访问的地方创建文件。摆脱它们(推荐)或使用 ^ 来逃避它们(^>:))。

Numbers (I use for the base of the AI and card generation) sometimes not being defined properly in variables

%random% %% 5 会产生集合 0、1、2、3、4 中的一个数字。您目前没有 if 说明如果随机选择 0 会发生什么.如果选择 0,则添加 if 语句或让代码返回到该部分的顶部。

The point system just refuses to work no matter what I do

你会踢自己的...

您的 set 语句缺少赋值部分。 SET /A %p1p% + 2 应该是 SET /A p1p=%p1p% + 2 等等(或者 set /a p1p+=2 如果你认为这样看起来更好)。

If sometimes randomly just flat out decides to crash on me if I skip a 'TIMEOUT' or 'PAUSE'

我无法复制它,但当我删除这些语句时,代码似乎工作正常。

Some 'IF' statements not being executed properly even though they're exactly the same as the other ones

您的评论指出了第 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,这样 :pc2 就不会在 :pc1 完成后自动 运行。