所有新聞群組討論區列表 風禹科技驗證有限公司 Web News Reader

目前新聞群組:tw.bbs.comp.oop

項目 內容
發文者 Peter
日期 2007/6/25 上午 12:52:48
標題 踩地雷遊戲
檔頭
220 32874 <4UcEI0$rOq@whshs.cs.nccu.edu.tw> article
Path: netnews!ctu-gate!news.nctu.edu.tw!newsfeed.nthu.edu.tw!news.cs.nthu.edu.tw!WHSHS
From: xxxpeter.bbs@whshs.cs.nccu.edu.tw (Peter)
Newsgroups: tw.bbs.comp.oop
Subject: 踩地雷遊戲
Date: 24 Jun 2007 16:52:48 GMT
Organization: 政大狂狷年少
Lines: 141
Message-ID: <4UcEI0$rOq@whshs.cs.nccu.edu.tw>
NNTP-Posting-Host: whshs.cs.nccu.edu.tw
X-Trace: news.cs.nthu.edu.tw 1182704814 19233 140.119.164.252 (24 Jun 2007 17:06:54 GMT)
X-Complaints-To: manager@cs.nthu.edu.tw
NNTP-Posting-Date: Sun, 24 Jun 2007 17:06:54 +0000 (UTC)
X-Filename: oop/A137T8B0
Xref: netnews tw.bbs.comp.oop:32874
內文
我們學校是用JCreator寫的
目前程式碼如下
還要加或改什麼才能正常執行呢?
===================================
class MineBox
{
    int bState; //格子內容值
    boolean isOpened; //格子是否翻開
    MineBox() //建構式
    {
        //設初值
    }
    void show() //顯示單一格子
    {
        //顯示內容或#
    }
    int hit()
    {
        //設定翻開並傳回內容值
    }
}

class MineGame
{
    MineBox[][]mMap; //地雷地圖
    int bx, by; //地圖邊界
    int mineNum; //地雷個數
    int openCnt; //翻開格子數

    MineGame(int ibx, int iby) //建構式
    {
        bx=ibx; by=iby; openCnt=0;
        //設定地雷個數
        mMap=new MineBox[bx][by];
        for(int fx=0;fx<bx;fx++)
            for(int fy=0;fy<by;fy++)
                mMap[fx][fy]=new MineBox();
        randomMine(); //亂數產生地雷位置
        showMap(); //顯示地圖
    }

    boolean check(int ix, int iy) //檢查地圖邊界
    {
        if(ix<0||ix>=bx||iy<0||iy>=by)
            return false; //超出邊界傳出假
        else
            return true; //界內傳真
    }

    void randomMine() //亂數設定地雷
    {
        //連續擺放mineNum個地雷
        for(int i=0;i<10000;i++)
        {
            //亂數產生兩座標
            //交換兩座標格子之bState
        }
        for(int fx=0;fx<bx;fx++) //掃描所有格子並設定bState
            for(int fy=0;fy<by;fy++)
            {
                //如果格子內是地雷就跳過
                mMap[fx][fy].bState=0; //清空地雷計數
                for(int lx=fx-1;lx<=fx+1;lx++) //掃描對應九宮格
                    for(int ly=fy-1;ly<=fy+1;ly++)
                    {
                        //超出邊界的格式需略過
                        if(mMap[lx][ly].bState==9)
                            mMap[fx][fy].bState++;
                    }
            }
    }

    void showMap() //顯示地圖
    {
        //印出X座標 ABC...
        //印出地雷個數及翻開格子數
        for(int fy=0;fy<by;fy++) //依序印出格子容
        {
            System.out.print(fy+1); //印出開頭Y座標 123...
            for(int fx=0;fx<bx;fx++) //將fy列的所有格子內容顯示在螢幕
                mMap[fx][fy].show();
        }
    }

    boolean hitBox(int ix, int iy) //點擊地圖座標(ix,iy)
    {
        //如果格子已翻開,返回
        //翻開格子數遞增1
        int rlt=mMap[ix][iy].hit(); //點擊該MineBox
        if(rlt==9)
            return false; //若得到9表示踩到地雷
        else if(rlt>0)
            return true; //沒事傳回真(1~8)
        else //0就要遞迴呼叫
        {
            for(int fx=ix-1;fx<=ix+1;fx++) //掃描對應九宮格
                for(int fy=iy-1;fy<=ix+1;fy++)
                {
                    //超出邊界的格式需略過
                    hitBox(fx,fy); //遞迴呼叫
                }
            return true; //沒事傳回真(0)
        }
    }

    boolean play() //開始玩,贏傳真,輸傳假
    {
        while(openCnt<(bx*by-mineNum)) //當已翻開格子小於應翻開格子時
        {
            //讓使用者輸入座標
            //解釋成(hx,hy)
            if(!hitBox(int hx,int hy)) //如果點到地雷
            {
                //翻開所有MineBox
                showMap();
                return false;
            }
            showMap();
        }
        return true;
    }
}

class PlayMG
{
    public static void main(String[] args)
    {
        MineGame mg=new MineGame(18,9); //設定地圖18*9
        if(mg.play()) //如果玩了以後傳回真
            System.out.println("Congratulation!!"); //掃雷成功
        else
            System.out.println("Oh Oh!!"); //踩到地雷
    }
}
--
   ╔═══╗  ┼────────────────────────╮
   ║狂狷  ║  │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
   ║  年少║  ┼╮                         < IP:140.119.164.252 >   ╰─╮
   ╚╦═╦╝    ╰  * From:61-59-214-158.adsl.static.seed.net.tw     
   ─╨─╨─ KGBBS ─  ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎  

基本條件

.Net 原始碼 | ASP.NET News Reader Beta 0.2.9

請參閱

個人資料 | 發表新文章 | 回覆 | 回信 | 轉寄 | 同標題 | 搜尋 | 列印 預覽 直接

重要訊息通知

2007/06/21 由於微軟新聞伺服器移除多數新聞群組 (newsgroup),目前遭移除之群組暫時改為隱藏純瀏覽,若狀況已定案時,將會將隱藏中的群組重新調整。[討論]