LAB11 寫一個可以讓人與電腦對玩 NIM 遊戲的 Java Application 網路版程式, 
      以便讓全世界的台灣人可以用 telnet 命令連進來玩 NIM Game !
      程式要做到若電腦有機會贏就必須贏! 
   * 注意你的程式除了可當網路版,也必須可當單獨執行的單機版。
   * 還不太會寫 NIM 程式的可以拿我給的 C 版本的 NIM 遊戲程式範例來修改:-)
Purpose: 
     再次了解網路程式TCP Server 在 Java有多簡單:-),
     並藉由 NIM 遊戲再複習亂數與其應用, 以及認識 xor 運算的神奇。
     (因為 NIM 必贏的策略須用到 xor 互斥或運算!)  
     請參看 http://en.wikipedia.org/wiki/Nim
     (或是自己用 http://gogle.com 打入 "NIM wiki" 查詢)

Due: 2011/05/15 Sunday 23:59  
  請注意: 做好習題請到數位學習本題的討論區依照規定貼文(post)寫報告,
   且注意標題 Subject: LAB11 from 學號姓名(當然是你學號與姓名!)
   報告內容是心得、然後 Running Script、再接著帶Line numbers程式碼
   方便助教評分, 並把所有資料壓縮成可執行的 .jar 檔案當夾檔附件佐證!

Description: (不懂 NIM 者自己查 gogle.com)
       NIM 與之前的 BATNUM 都是兩人輪流對玩的策略遊戲(Strategy),
     阿就是用對策略就可以贏! BATNUM 只有一堆, NIM 是至少兩堆!
     都是可以規定拿到最後一個贏或是輸!
     更神奇的是, 不論規定拿到最後一個是贏家還是輸家, 要贏的策略是一樣的,
     只要稍微注意一下就可以! 
  (1) 程式要用亂數決定 二到七堆石頭, 再用亂數決定每堆有幾個石頭,
      請控制每堆石頭數在合理範圍 (如 5..31);
  (2) 程式要用亂數決定拿到最後一粒石頭者輸還是贏?
  (3) 程式要詢問使用者是否要先拿, 除回答 n 或 no 外都讓使用者先拿!
  (4) 每次玩若結果是使用者贏要恭喜他, 若電腦贏則炫耀一下,
      然後要詢問使用者是否繼續玩下一攤? 直到使用者說 no 才結束!
  (5) 若電腦有機會贏就必須贏, 否則就只拿一個等機會!
  (6) 程式必須可當單機版Application也可當網路Server版, 
      使用者可用 telnet 或任何  TCP client (自己寫 CLient也可)連進去玩!
  (7)參考所給範例: 
     http://www.csie.nctu.edu.tw/~tsaiwn/oop/03_Labs/Lab11/
        詳細請灣考目錄內各檔案 
     然後,
     (a.) 如果你之前已經寫好Lab08應該已經對 TCP Server有概念,
          否則請再研究人透過網路與電腦簡易對談的程式  HaLa.java,
          以及配合 Bat6OK.java 的 HaLaBat.java 與 NetBAT.java 等,
         注意 HaLa.java 等這些"TCP server"執行後要從別的電腦 telnet 進去測試!
         你可以 copy 該 NetBAT.java 來改為 NetNIMxxx.java, 
                 (此處的 xxx 是你學號末三碼) 
         拿它準備改來配合你的單機版 NIM Java Application.
         或是拿你 Lab08 的 TCP Server 部分來配合(改一句就可以了:-)
     (b.) 自己寫出 nim.java 或把 nim5OK.c 改為 Java application
          nim.java 必須可以獨立執行(要有 main program)
          也必須可以搭配 NetNIMxxx 成為網路版的 NIM 
           (只要另寫一個 constructor 給 NetNIMxxx  做 new 時用即可)
     (c.) NIM 更進一步資料請查 wiki 或用 gogle.com 查
          NIM 仍不太會寫的或搞不清楚 NIM 的,
          可在本目錄之下 NIM 子目錄內看到從零到完整版的 NIM 程式:
          nim0.c ==> nim2.c ==> nim3.c ==> 
          nim5OK.c    (是在 NIM 子目錄內喔!)
       好啦,  點這看看我幫忙整理的 NIM 資料
  
   *** 再次強調, 你的習題報告必須包括:
          心得 + Running Script + 帶有 Line# 的 source codes 
          以及把全部壓縮成一個可以執行的 學號Lab11.jar 檔案當作附件。

  *** 關於網路版要注意的部份, 可以參考之前 LAB08 給的 BATNUM 範例, 
      包括 HaLaBat.java 或是 NetBAT.java (會印出自己的 IP address),
      以及你做網路版 Java 身分證檢查程式

  *** 其它參考資料: 
關於 BullCows Game 公牛母牛遊戲程式(參考用! 注意本題是要寫 NIM) ./bullCow/* 裡面有:
      (1)人猜電腦想的 bullCow.* : C version
      (2)電腦猜人想的 cowBull.* : C version, Java version
 
   電腦猜人想的 Bulls & Cows 在之前已經給過 HTML + JavaScript 版的
   各相關資料, 包括思考寫 Bulls&Cows遊戲過程, 都在本題各子目錄內!

  抓這習題壓縮檔 LAB11.jar (zip 格式, 可以用 java -jar 執行)
至於 NIM 仍不太會寫的或搞不清楚 NIM 的,
可在本目錄之下 ./NIM 子目錄內看到從零到完整版的 NIM 程式
nim0.c ==> nim2.c ==> nim3.c ==> nim5OK.c  
好啦, 你可以  點這看看我幫忙整理的 NIM 資料
 

      回到作業目錄             回到課程目錄

You are the Website counter -th visitors to this page.