这有点新,所以让我知道我的格式是否不正确。完全公开这是对 java 类的介绍。希望对概念或一些替代示例进行一些一般性的推动。让我尽可能简单地分解它。我们已经在java中构建了Yahtzee类型骰子游戏的基础。我们当前的指令如下:创建一个名为 Yahtzee 的类。Yahtzee 类拥有游戏的五个骰子。添加以下方法:
锁定:一种保留骰子的方法(即不将骰子包含在下一掷中)。提示:在 die 类中添加一个 lock 变量。Unlock:一种释放骰子的方法(即在下一次掷骰中包含一个骰子) UnlockAll:一种释放手中所有骰子的方法。掷骰:一种只掷骰子的方法。提示:将骰子类中的滚动方法更改为仅在骰子解锁时滚动。显示:显示当前骰子值的方法。
创建一个名为 Player 的抽象类。添加以下方法:
Play:玩一局的方法(最多三轮) 选择:决定保留或释放哪个骰子的抽象方法(从 Play 方法调用) Name:设置玩家名称的方法。此类的构造函数调用该方法来设置播放器的名称。
为 Player 创建一个名为 Human 的子类。人类玩家询问键盘上的人应该保留或释放哪个骰子。当调用 set Player's name 方法时,它还会询问键盘上的人他的名字。
为 Player 创建一个名为 Computer 的子类。计算机播放器保留具有相同值的大部分的骰子并释放剩余的骰子。当被问及它的名字时,它称自己为“鲍里斯”。
您的主程序建立了一个人机播放器。然后它告诉每个人玩一轮并显示他们一轮的结果。然后它询问是否应该进行另一轮比赛。
public class OneDice {// class for an individual dice
private int die;
int lock = 0;
public OneDice() {
die = (int)(Math.random()*6) + 1;
}
public void roll() {// random
if(lock != 1){
die = (int)(Math.random()*6) + 1;
}
}
public int value() {
// return the value of the die variable
return die;
}
public void lockDice(){
lock = 1;
}
public void unlockDice(){
lock = 0;
}
}
public class Yahtzee extends OneDice {
OneDice dice1 = new OneDice();
OneDice dice2 = new OneDice();
OneDice dice3 = new OneDice();
OneDice dice4 = new OneDice();
OneDice dice5 = new OneDice();
public Yahtzee(){
yahtzeeRoll(); //constructor
}
public void yahtzeeRoll(){
dice1.roll();
dice2.roll();
dice3.roll();
dice4.roll();
dice5.roll();
}
//这是我的 Yahtzee 类的锁定和解锁方法
public void lock(int which){
switch (which){
case 1: dice1.lockDice();
break;
case 2: dice2.lockDice();
break;
case 3: dice3.lockDice();
break;
case 4: dice4.lockDice();
break;
case 5: dice5.lockDice();
break;
}
}
public void unlock(int which){
switch (which){
case 1: dice1.unlockDice();
break;
case 2: dice2.unlockDice();
break;
case 3: dice3.unlockDice();
break;
case 4: dice4.unlockDice();
break;
case 5: dice5.unlockDice();
break;
}
}
public void unlockAll(){
dice1.unlockDice();
dice2.unlockDice();
dice3.unlockDice();
dice4.unlockDice();
dice5.unlockDice();
}
public void printYahtzee(){ //prints the dice
System.out.println("dice 1 comes up= " + dice1.value());
System.out.println("dice 2 comes up= " + dice2.value());
System.out.println("dice 3 comes up= " + dice3.value());
System.out.println("Dice 4 comes up= " + dice4.value());
System.out.println("Dice 5 comes up= " + dice5.value());
}
}
So the instructor helped me all the previous code so more of less that should be solid. Here is my Player class.
public abstract class Player extends Yahtzee {
private String name;
String choice;
Yahtzee hand = new Yahtzee();
public Player(){
getName();
}
public void play(int which){
while(i <3 ){
hand.yahtzeeRoll();
hand.printYahtzee();
choose(which);
}
}
我应该使用扩展方法而不是在播放器类中创建一个新对象“手”吗?这就是继承和创建这个类的全部意义吗?
abstract public void choose(int which);{
System.out.println("which would you like to go hold (1), unlock (2), or unlock all(3)");
int choice = sc.nextInt();
switch (choice){
case 1: hand.lock(which);
break;
case 2: hand.unlock(which);
break;
case 3: hand.unlockAll();
break;
}
}
public void getName(){
System.out.println("What is your name?: ");
name = sc.nextLine();
}
public void setName(){
System.out.println("Player " + name );
}
}
我试图让我的抽象类从 main 传递一个“int which”参数来选择要锁定哪个骰子。但它不喜欢我的 which 参数,但它不介意 Yahtzee 类/锁定解锁方法中的这个参数。有什么想法吗?我还尝试重新阅读并了解如何使用抽象类。有人会对如何在人类或计算机子类中实现我的抽象类有一些提示或建议吗?我开始研究这些部分,结果一团糟。