Discussion:
[求助]JAVA作業
(时间太久无法回复)
a***@bbs.yuntech.edu.tw
2007-01-08 03:41:10 UTC
Permalink
Triple Roll的遊戲是由兩個遊戲者和三個骰子所組成。遊戲者輪流擲骰子,並依所擲出的?
諵l得分。當其中一個遊戲者的分數累計達到50分或超過50分時,遊戲便結束。
每一回遊戲者擲三個骰子。擲出後,遊戲者可選擇重擲其中一個骰子以得到更高的成績。沒
有要求遊戲者一定要重擲其中一個骰子。
本遊戲有兩個遊戲者 PlayerA PlayerB

共用一個方法 public void playerTurn (boolean player) {}
方法的內容是玩者這回的遊戲方法
我又另外設計了一個private void player(){}的方法
可以讓player輪流讀入PlayerA及PlayerB
我該怎麼寫呢??(PlayerA,B 一開始就有宣告玩者了)
private void player(){
if (PLAYER1){
return this.playerA;
}
else{
return this.playerB;
}
}return 只能回傳數值所以會錯,我外面又設String player;把程式改成
this.player=playerA;也是不行 請大大指教
--
※ Origin: 雲林科技大學藍天使 <bbs.yuntech.edu.tw> [From: 140.125.202.27]
骨頭
2007-01-08 04:14:55 UTC
Permalink
※ 引述《***@bbs.yuntech.edu.tw ()》之銘言:
: Triple Roll的遊戲是由兩個遊戲者和三個骰子所組成。遊戲者輪流擲骰子,並依所擲出的?
: 諵l得分。當其中一個遊戲者的分數累計達到50分或超過50分時,遊戲便結束。
: 每一回遊戲者擲三個骰子。擲出後,遊戲者可選擇重擲其中一個骰子以得到更高的成績。沒
: 有要求遊戲者一定要重擲其中一個骰子。
: 本遊戲有兩個遊戲者 PlayerA PlayerB
: 共用一個方法 public void playerTurn (boolean player) {}
: 方法的內容是玩者這回的遊戲方法
: 我又另外設計了一個private void player(){}的方法
: 可以讓player輪流讀入PlayerA及PlayerB
: 我該怎麼寫呢??(PlayerA,B 一開始就有宣告玩者了)
: private void player(){
: if (PLAYER1){
: return this.playerA;
: }
: else{
: return this.playerB;
: }
: }return 只能回傳數值所以會錯,我外面又設String player;把程式改成
: this.player=playerA;也是不行 請大大指教

看不懂你的問題,

照你寫的碼,你可能需要一個global scope變數,
可能叫做 nowPlayer 然後當你呼叫player的時候就swap;


你的說明文和你的程式碼實在讓人連不起來,
話說 return 只能傳回數值 這句話可能也有待商議,

妳可能需要去閱讀一下method的寫法,
把void改成你想回傳的Object,或許也是你需要的東西。

--
簡單來講......
不要說你想要甚麼而改說你碰到甚麼問題,
這樣別人會比較好幫助你。:)

--
 String temp="relax"; | Life just like programing
 while(buringlife) String.forgot(temp); | to be right or wrong
 while(sleeping) brain.setMemoryOut(); | need not to say
 stack.push(life.running); | the complier will
 stack.push(scouting.buck()); | answer your life
 stack.push(bowling.practice()); | Bone everything

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.27.68
※ 編輯: TonyQ 來自: 220.134.27.68 (01/08 12:14)
學無止境,啥時才摔到底?
2007-01-08 10:29:16 UTC
Permalink
※ 引述《***@bbs.yuntech.edu.tw ()》之銘言:
: private void player(){
: if (PLAYER1){
: return this.playerA;
: }
: else{
: return this.playerB;
: }
: }return 只能回傳數值所以會錯,我外面又設String player;把程式改成
: this.player=playerA;也是不行 請大大指教

你回傳設為void,是想傳回什麼東西咧?

此外,純PL方面建議,
從小養成好的習慣,單進單出,多個return,當code一多,很容易錯,
不過話說回來,好的程式碼,單一method是不該有很多code滴! >.<a

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.166.172
肉腳布
2007-01-08 11:03:23 UTC
Permalink
==> ***@ptt.cc (學無止境,啥時才摔到底?) 提到:
: ※ 引述《***@bbs.yuntech.edu.tw ()》之銘言:
: : private void player(){
: : if (PLAYER1){
: : return this.playerA;
: : }
: : else{
: : return this.playerB;
: : }
: : }return 只能回傳數值所以會錯,我外面又設String player;把程式改成
: : this.player=playerA;也是不行 請大大指教
: 你回傳設為void,是想傳回什麼東西咧?
: 此外,純PL方面建議,
: 從小養成好的習慣,單進單出,多個return,當code一多,很容易錯,
: 不過話說回來,好的程式碼,單一method是不該有很多code滴! >.<a
您的code

private void player()
void 可以回傳媽
含有
這樣寫法有一點怪怪的

--
◎龍貓資訊天地(bbs.mgt.ncu.edu.tw)
◎[brucetsao]From: 59-117-171-141.dynamic.hinet.net
c***@kkcity.com.tw
2007-01-08 18:45:01 UTC
Permalink
雖然你要問的問題可能沒這麼簡單,不過下面的程試是我嘗試寫的,或許對你有一點
幫助吧,寫得不好也請見諒~~

import java.io.*;



public class Dicer
{
public static void main(String args[])throws Exception
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

String name_a="playerA";
String name_b="playerB";
int a[]={0,0,0};
int b[]={0,0,0};
int sum1[]={0};
int sum2[]={0};
int count=1;

while(sum1[0]<50&&sum2[0]<50)
{
int s=2;
if(count%2!=0)
{
playerTurn(a,sum1,s);
System.out.println();
print(name_a,a,sum1);

System.out.print("請問A君是否要重擲,要重擲最小數請按1,否的話則按2:");
s=Integer.parseInt(br.readLine());
System.out.flush();
if(s==1)
{
playerTurn(a,sum1,s);
print(name_a,a,sum1);
}
}

else
{
playerTurn(b,sum2,s);
System.out.println();
print(name_b,b,sum2);

System.out.print("請問B君是否要重擲,要重擲最小數請按1,否的話則按2:");
s=Integer.parseInt(br.readLine());
System.out.flush();
if(s==1)
{
playerTurn(b,sum2,s);
print(name_b,b,sum2);
}
}



count++;
}

}


private static void playerTurn(int[] c,int sum[],int s)
{


if(s==2)
{

for(int i=0;i<c.length;i++)
{
c[i]=(int)(Math.random()*6)+1;
sum[0]=sum[0]+c[i];

}


}
if(s==1)
{
int minVaul=c[0];int min=0;
for(int i=0;i<c.length;i++)
{
if(c[i]<minVaul)
{
minVaul=c[i];
min=i;
}
}

c[min]=(int)(Math.random()*6)+1;
sum[0]=sum[0]-minVaul+c[min];

}



}

private static void print(String n,int[] c,int sum[])
{

System.out.println(n+"擲出的數字依序為:");
for(int i=0;i<c.length;i++)
System.out.print(c[i]+" ");
System.out.println(" 總分為:"+sum[0]);


}




}
--
┌─────◆KKCITY◆─────┐ ◢╱ 只要你通過身份認證 ~ ◥█
│ bbs.kkcity.com.tw │ █▉─ 免經驗、五人連署即開班系板 ◥
└──《From:220.138.51.156 》──┘ ◥╲ 趕快為班上設個秘密基地吧! ◢
--

Loading...