2016-02-26 60 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