当前位置: 首页 > 知识库问答 >
问题:

如何在Java中进行交替转弯?

汪耀
2023-03-14

我在AP计算机科学的9年级,我们得到了一个制作游戏的项目。我选择了老师建议的一个简单的气游戏。但我不知道如何在电脑和播放器之间交替旋转。

import java.util.Scanner;

/**
 * Game of Chi .. see main for gameplay
 * 
 * @author .....
 */
public class GameOfChi {

private static int numStonesLeft = 0;

public static void main(String[] args) {
    numStonesLeft = (int) (Math.random() * 16) + 15;// btw 15 & 30 stones
    System.out.println("This is the Game of Chi.");
    System.out.println("There is a pile of " + numStonesLeft
            + " stones between us.");
    System.out.println("We alternate taking either 1,2 or 3 stones.");
    System.out.println("The person who takes the last stone loses");

    // Write a loop to alternate computerTurn() and playerTurn()
    // checking after each turn see if there is a winner to print
    // and to break the loop ... then output the winner

    computerTurn(); // invoke the computerTurn() method
    playerTurn(); // invoke the playerTurn() method
while (numStonesLeft> 0);


}

/**
 * The computerTurn method chooses a random number from 1 to 3 if
 * numStonesLeft is greater than or equal to 3, otherwise chooses a random
 * number from 1 to numStonesLeft.
 * 
 * Then decrements numStonesLeft appropriately and prints the turn.
 */
public static void computerTurn() {
    int stonesChosen = 1 + (int) (Math.random() * Math
            .min(3, numStonesLeft));
    numStonesLeft -= stonesChosen;
    System.out.println("\nI took " + stonesChosen + " stones.");
    System.out.println("There are " + numStonesLeft + " stones left.");
}

/**
 * The playerTurn method prompts the user for a valid number of stones to
 * choose and reads an int value from the user and will repeat this action
 * while the user input is invalid. (i.e. user must choose 1, 2 or 3 AND
 * their choice must be less than or equal to numStonesLeft.)
 * 
 * Also decrements numStonesLeft appropriately and prints the turn.
 */
public static void playerTurn() {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Number of stones you take this turn:");
    int stonesChosen = 0;
    stonesChosen = keyboard.nextInt();

    while (stonesChosen > 3 || stonesChosen < 1) {
        ;
        System.out.println("That is an invalid number of stones.");
        stonesChosen = keyboard.nextInt();
    }

    if (stonesChosen <= 3 || stonesChosen >= 1)
        ;
    {
        System.out.println("\nYou took " + stonesChosen + " stones.");
        System.out.println("There are " + (numStonesLeft - stonesChosen)
                + " stones left.");
    }
    stonesChosen = keyboard.nextInt();

}
}

共有1个答案

壤驷敏学
2023-03-14

在main方法中,创建某种形式的while循环,检查游戏是否结束。

while(!gameEnded)
{
    playerTurn();
    computerTurn();
}

除非你问如何使它,计算机先播放,然后下一轮播放器先播放。在这种情况下,添加一个计数器来跟踪谁最后去了。

while(!gameEnded)
{
    if(counter%2 = 0)
    {
        playerTurn();
        computerTurn();
    }
    if(counter%2 = 1)
    {            
        computerTurn();
        playerTurn();
    }
    couter++;
}

为了随机选择第一回合的玩家,你可以用奇数或偶数初始化计数器。

int counter = Math.random()*2;
 类似资料:
  • 问题内容: 我需要取消转义包含转义的XML标签的xml字符串: 我确实找到了一些可以执行此任务的库,但是我宁愿使用可以执行此任务的单一方法。 有人可以帮忙吗? 干杯,Bas Hendriks 问题答案: (commons-lang,下载)

  • 问题内容: 如何在Go中反转任意切片()?我宁愿不必编写和使用。有没有简单的内置方法来做到这一点? 问题答案: 没有一个简单的,内置的用于反转接口{}的部分。您可以编写一个for循环来做到这一点: Go 1.8中引入的reflect.Swapper函数可用于编写通用的反转函数: 游乐场的例子

  • 我正在尝试用Java做一些事情,我需要在while循环中等待/延迟几秒钟。 我想构建一个step sequencer,我是Java新手。有什么建议吗?

  • 问题内容: 我正在将一些代码从Processing移植到Java,我遇到的一个问题是处理的预编译器会将所有double转换为float。但是,在Eclipse中,我不得不将值显式转换为float。不过,我遇到了我不理解的错误。例如,不应该在该语句的末尾加上f来修复类型不匹配的问题(类型不匹配:无法从double转换为float)? 甚至在像这样的简单语句上,我也会遇到类型不匹配的情况。我究竟做错了

  • 问题内容: 在写这个问题之前,我已经 有使用Affine转换的经验 阅读Quartz 2D编程指南中的Transforms文档 看过这个详细的CALayer教程 从Github 下载并运行LayerPlayer项目 但是,我仍然难以理解如何在 图层 上进行基本转换。寻找用于平移,旋转和缩放的解释和简单示例非常困难。 今天,我终于决定坐下来,进行测试项目,然后找出答案。我的答案如下。 笔记: 我只做

  • 问题内容: 我有一个数据库,其中包含以二进制Blob存储的图片数据。该文档说数据是使用LZW编码的。我以为我可以使用Java库中的Zip或GZip输入流对其进行解码,但是它不起作用- 我遇到了一个例外,即数据格式不正确。 根据我的阅读,该库使用DEFLATE,而不是LZW。另外,我已经阅读了有关使用LZW算法的许可问题。 我可以用什么来解码数据?有图书馆吗?我必须自己实施吗?许可问题呢? 问题答案