- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我正在编写 Nim 游戏,
我已经完成了大部分代码,但我遇到了两个主要问题。
我找不到错误
我似乎无法让计算机轮流运行
提前致谢,这是我的代码。
import java.util.*;
import java.util.Random;
public class Nim {
public static void main(String[] args) {
int banana = 0;
Random r = new Random();
intro();
banana = r.nextInt(16);
int numStones = (15 + banana);
yorner(numStones);
//kbinput.nextInt();
}
public static void intro () {
System.out.println("Welcome to the game of Nim!");
System.out.println("The Rules of the game are as follows: \n");
System.out.println("1. There are two players in this game; you and the computer.");
System.out.println("2. The game starts with a random number stones ranging from 15 to 30 stones.");
System.out.println("3. Every turn each player takes anywhere between 1 to 3 stones");
System.out.println("4. The player who takes the last stone loses. \n");
System.out.println("Would you like to start the game now? \nPlease enter 'Y' for yes and 'N' for no:");
}
public static void yorner (int numStones){
System.out.println("This game of nim will start with " + numStones + " stones.\n");
Scanner kbinput = new Scanner (System.in);
boolean vInput = false;
do
{
String yorn = kbinput.nextLine();
char input = yorn.charAt(0);
switch(input) {
case 'Y':
case 'y':
vInput = true;
yes(numStones);
break;
case 'N':
case 'n':
System.out.println("Thank you for your time.");
vInput = true;
break;
default:
System.out.println("Please only enter 'Y' for yes and 'N' for no, other entries will not be tolerated.");
}
}
while((vInput == false));
}
public static void yes (int numStones){
System.out.println("You selected 'Yes', thank you for choosing to play the game of Nim.\n");
System.out.println("It is your turn first.");
System.out.println("How many stones would you like to take? \n");
System.out.println("Enter a number from 1 to 3");
player(numStones);
}
public static int player(int numStones){
Scanner kbinput = new Scanner (System.in);
int numTake = kbinput.nextInt();
int numStone = 0;
boolean apple = false;
loop: while ( apple == false){
switch(numTake){
case 1:
apple = true;
numStone = numStones - numTake;
System.out.println("There are " + numStone + " stones left");
break;
case 2:
apple = true;
numStone = numStones - numTake;
System.out.println("There are " + numStone + " stones left");
break;
case 3:
apple = true;
numStone = numStones - numTake;
System.out.println("There are " + numStone + " stones left");
break;
default:
System.out.println("You can only takes anywhere between 1 and 3 stones from the pile");
}
}
return numStone;
}
public static boolean compWin (int numStone){
return false;
}
public static void computerTurn(int numStone1, int numStone) {
Random rn = null;
int compTake = rn.nextInt(3);
switch(compTake){
case 1:
System.out.println("Computer takes 1 stone.");
numStone1 = numStone - compTake;
System.out.println("There are " + numStone + " stones left");
break;
case 2:
System.out.println("Computer takes 2 stones");
numStone1 = numStone - compTake;
System.out.println("There are " + numStone + " stones left");
break;
case 3:
System.out.println("Computer takes 3 stones");
numStone1 = numStone - compTake;
System.out.println("There are " + numStone + " stones left");
break;
}
}
}
我得到的错误是这些
线程“main”java.lang.Error中出现异常: Unresolved 编译问题:语法错误,请插入“;”完成LocalVariableDeclarationStatement语法错误,请插入“;”完成声明
最佳答案
我无法重现您的编译错误。
但是,您没有游戏循环(即,在仍然存在有效移动的情况下保持游戏继续进行的循环),并且您从不调用 computerTurn
关于java - Nim 游戏 Java 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22391380/
以下代码无法编译,但说明了我想做的事情:totalTests 应该保存调用 assertEquals() 的次数(assertEquals() 可能应该是一个宏才能实现这一点,但我不熟悉Nim 的这方
macros 中有可用的解析器包,如 parseExpr和 parseStmt但他们是{.compileTime.}过程。 有没有办法在运行时解析一串 Nim 代码,产生可以分析的 AST? 最佳答案
是否可以为字符串定义类似枚举的类型?我知道枚举,但在这种情况下不想使用枚举,我想使用它就好像它只是一个字符串一样。 type Blog = object text: string pr
我目前正在尝试计算我请求某个网站的次数。在 python 中,我只会使用一个全局变量,但我不知道如何在 nim 中编写它。 import httpclient proc threadMain(a: i
我正在尝试学习 Nim 及其特性,例如迭代器;我发现下面的例子运行良好。 for i in countup(1,10): # Or its equivalent 'for i in 1..10:'
我一直在读到 Nim 的内存管理是可选的,但文档似乎很薄,我发现的唯一资源主要与 FFI 到 C 和 https://nim-lang.org/docs/gc.html 相关。 除了编写新的 GC 之
我是 Nim 的新手,所以这可能是一个迟钝的问题,但是如何创建一个速记别名变量来简化代码? 例如: import sdl2 import sdl2.gfx type Vector[T] = obj
有没有可能在 Nim 中获取前 N 个元素?像这样的东西: let [a, b, ...rest] = "a/b/c".split("/") 附言 用例我正在尝试解析“NYSE:MSFT”字符串 pr
是的,我们可以通过 Sublime、VS-Code 等将制表符转换为空格,这不是什么大问题。 但是如果我想摆脱这个额外的 Action 怎么办? Found通过将此行添加到 .nim 文件来回答: #
像 Rust 这样的语言有 Cargo,它通过调用 cargo new 来构建一个新项目。 . Nim 语言中是否有类似的工具或命令可用于搭建新项目?符合 new 的内容? 最佳答案 Nimbl
我想在 Nim 中不跳行地打印。 这是我的代码 int i = 1 for i in countup(1, 10): echo "number: " echo i 我希望输出为: number
假设我们有两个模块:一个定义一个 Object,一个定义一个 ObjectFactory。 Object 需要访问 ObjectFactory 才能使用它的一些功能,并且 ObjectFactory
假设我有一个程序 getTuple(): (int, int, int) .如何迭代返回的元组?看起来不像 items定义为 tuple ,所以我做不到 for i in getTuple() . 我
是否有任何常量变量或proc允许以字符串或数字形式访问编译器版本? 最佳答案 The version can be obtained as a string通过 system.NimVersion (
我将如何通过 nimscript 从标准输入读取? 我试过: if readLine(stdin) == "yes": exec buildCommand 我已经用 运行了脚本 nim c bu
在 NIM 0.17 中 toLower 已弃用。那么,在 NIM 中更改字符串大小写的正确方法是什么? 最佳答案 strutils.toLowerAscii 或 unicode.toLower 取决
我创造了一个敏捷 图书馆按照 documentation 包装.当我尝试使用 nimble build 构建它时我收到以下错误。 Error: Nothing to build. Did you sp
这是getStackTrace()从当前异常获取堆栈跟踪的函数。 但它不适用于特定的异常,此代码不起作用 error.getStackTrace()我需要它 log功能 proc error*(mes
下面的代码将无法编译,因为 let a 的重新声明多变的。 但是如果第二个test模板注释掉它会起作用。 为什么它会这样工作,以及如何解决它? playground template test*(na
如果我运行 nim c -r test.nim Nim 中的以下代码 echo "Hi" 它将打印带有附加信息的结果 $ nim c -r test.nim Hint: used config fil
我是一名优秀的程序员,十分优秀!