有點新,所以讓我知道如果我格式化的東西不正確。充分披露這是一個Java類的介紹。希望對概念或其他示例進行一些普遍推理。讓我儘可能簡單地把它打破。我們已經在java中建立了Yahtzee型骰子游戲的基礎。我們目前的指示如下:創建一個名爲Yahtzee的課程。 Yahtzee課程持有遊戲的五個骰子。添加以下方法:Jave繼承和抽象類
鎖定:一種保留骰子的方法(也就是說,不要將骰子包含在下一個卷中)。提示:爲模具類添加一個鎖定變量。解鎖:釋放骰子的方法(即在下一個骰子中包含骰子) UnlockAll:釋放手中所有骰子的方法。 卷軸:一種只能發佈釋放的骰子的方法。提示:將模具類中的滾動方法更改爲僅在模具解鎖時滾動。顯示:顯示當前骰子值的方法。
創建一個名爲Player的抽象類。添加以下方法:
玩:一種方法,以打圓(最多3卷) 選擇:一種抽象方法,來決定要保留的骰子或釋放(從Play方法調用) 名稱:一種方法來設置玩家的名字。此類的構造函數調用設置播放器名稱的方法。
創建一個名爲Human的播放器的子類。人類玩家在鍵盤上詢問人應該保留或釋放骰子。當設置的玩家姓名方法被調用時,它也會向鍵盤上的人詢問他的名字。
創建一個名爲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);
}
}
我試圖使我的抽象類傳遞一個「int which」參數從主選擇哪個骰子鎖定解鎖。但它不喜歡我的哪個參數,但它不介意Yahtzee類/ lock解鎖方法中的這個參數。有什麼想法嗎?此外,我試圖重讀和理解如何使用抽象類。任何人都會有關於如何在人類或計算機子類中實現我的抽象類的一些提示或建議。我開始研究這些部分,這只是一團糟。
你的風格是嘮叨的方式。完全專注的專注可能需要將近半小時的時間,通讀所有這些內容並制定答案。這不是StackOverflow的工作方式;我們每個問題的關注時間約爲5分鐘。你需要適應你的問題。 –
完全明白。我不想成爲社區的負擔,因爲我似乎有一些downvotes:/只是尋求幫助除了從stackoverflow的任何建議?我試圖看看教程和指南,但我仍然有麻煩,但只是想從一個人的實際幫助。再次感謝。 – landres