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
-th visitors to this page.