台灣最大程式設計社群網站
線上人數
1450
 
會員總數:246740
討論主題:190153
歡迎您免費加入會員
討論區列表 >> Android APP 開發 >> 井字(電腦亂數
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
井字(電腦亂數
價值 : 100 QP  點閱數:1671 回應數:3
樓主

林孝祐
門外漢
0 2
57 4
發送站內信

想做一個井字遊戲有電腦的 ,個人版已經做出來
利用9個按鈕做 想利用亂數隨機按鈕當X
亂數隨機按鈕當X部分跟重複,礙於不知如何用而卡住

因為按鈕動作都是用setOnClickListener
不知如何讓他亂數選一個按鈕給X而卡住 以及重複部分
也有想過用陣列,不知如何用也卡住

OX部分是想說先用文字而已,假如要換成圖片也可以。
希望有大大可以針對這部分解答

搜尋相關Tags的文章: [ 井字 ] ,
本篇文章發表於2012-01-02 09:41
1樓
回應

小威
檢舉此回應
我想樓主的意思呢,是想先做一個很簡單的電腦出來吧
所以在看完樓主描述後,我所認為的流程如下:

1. 使用者點選按鈕判斷是否結束
2. 電腦自選按鈕,判斷是否結束

我想樓主沒問判斷部分我就不浪費版面了
既然樓主有做9個BUTTON,那其實這9個BUTTON就可以當作一個陣列了,可以不必另外建立額外陣列

首先9個BUTTON會有 BUTTON[0~8]
我想流程1.使用者點選按鈕,只需要判斷 onClick事件去改變BUTTON的TEXT就可以
應該不需要多講。
流程2.電腦自選,其實只要在使用者按完按鈕立即產生一個亂數,就可以作為電腦選擇的方位了;
同時亂數選擇部分樓主說卡在重複,我想只需要做一個WHILE迴圈
--------------------------------
int AiStep;
do{
AiStep=random.nextInt(9);
}while(BUTTON[AiStep].getText!="");

BUTTON[AiStep].setText("X");
--------------------------------
這樣應該可以解決亂數選到已經有人選的位置問題,同時每次選完要判斷是否結束,也不會卡在無限迴圈;
如果要換成圖片,也只需要改變按鈕物件以及把setText改成setImageBitmap等等換圖的函數就可以了。

我的回答有問題再麻煩指教!
其他還有問題再說一下吧!

本篇文章回覆於2012-01-10 13:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

林孝祐
檢舉此回應
還是有點問題 我將我的程式碼貼上好了 圖片按鈕
img01.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
a++;
if(num%2==0)
{ img02.setImageResource(i1[0]);} //這是圈的圖片
else
{ img02.setImageResource(i1[1]);} //這是叉的圖片
if(a==1)
{
img02.setEnabled(false);
a=0;
}
}
});
假如改成大大所說會X的部分變成 他nextint 跟img02[[AiStep] 都會錯 請問要怎麼改 ?
else
{ int AiStep;
do{
AiStep=Random.nextint(9);
}while(img02[[AiStep].getText!=""); <<判斷?

img02[AiStep].setImageResource(i1[1]);
本篇文章回覆於2012-01-10 18:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

小威
檢舉此回應
基本上我的程式只是偽代碼,跟你講一個正確的程式流程
麻煩你還是要自己找正確的實作寫法= =
因為我不知道你的物件還有變數到底是什麼...
nextint是亂數的其中一個函數,你用法錯誤所以會出錯
亂數的用法你必須要建立一個亂數成員才可以用吧!
Random random=new Random();
至於img02[[AiStep]這是沒問題的,但是你現在要判斷的是圖片,不是文字
所以先前判斷處,.getText請改成.getDrawable 抓文字改成抓圖
while(img02[[AiStep].getDrawable !=null);

本篇文章回覆於2012-01-10 20:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.