日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

现代程序设计 作业5

發布時間:2024/7/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 现代程序设计 作业5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前四個作業中, 我們體會了數組,子數組的和,二維數組,字符串和字母的處理, 簡單和復雜的 UI 程序等。大家鍛煉了命令行的處理,模塊的持續重構和演化,單元測試,UI 程序的處理,全局單例的做法,MVC 設計模式等等。同時我們還學習和練習了兩次結對編程,學習了如何用代碼規范讓自己的程序容易理解,便于維護。

有了前面的基礎,現在我們來嘗試一些更有意思的題目 – 設計 client/server 的程序,做實時的數據處理。

這個作業來源于:

創新的時機 – 黃金點游戲

我們在課堂上也玩過這個游戲,我們自然想把這個游戲搬到網上。 我們分兩步走:

1) 9/30 課堂練習

同學們還是兩人結對 (這次可以自由組合),設計一個基于網絡的黃金點游戲。 要求:

  • 多人游戲, 每個選手有一個客戶程序在運行, 和一個服務器通過互聯網的某種協議交互。
  • 在有網絡接的地方就可以玩 (LAN, WiFi,? 3G 都應該可以)。
  • 客戶程序要先向服務器注冊, 確保在一個游戲的過程中, 注冊信息能保證一個(并且只有一個)客戶以某確定的用戶名參與游戲。
  • 服務器可以規定一次錦標賽有多少輪,? 每輪的具體提交數據的格式是什么。 在服務器規定的時間范圍內, 每個客戶程序向服務器提交黃金點數據。 客戶程序之間不交流。
  • 在一輪介紹后, 服務器把此輪的結果 (參與用戶名,? 提交的數據,第一名,G-number) 公布在服務器上。? 每個客戶程序都能自由獲取。
  • 一輪的優勝程序可以得 10 分, 一輪的最后一名得 (–1)分, 其余選手得 0 分。? 在規定時間內不能提交數字的客戶程序得 (-5) 分。 如果有并列第一名, 則服務器取提交數字較早的客戶程序作為優勝者。? 如果有并列最后一名, 則并列者都得 (-1) 分。
  • 每次錦標賽事先規定好是采取下列哪一個模式:
  • 每個客戶程序必須提交一個有理數。
  • 每個客戶程序必須提交兩個有理數。? (任何一個數字最接近G-number 則此客戶程序就是優勝。)
  • 客戶程序可以用任何語言編寫, 只要它能夠按要求和服務器交互即可。
  • 服務器必須實時地通過一個網頁顯示每個用戶的得分 (人可以從這里看進展,客戶端程序會從這里拿數據進行分析)。
  • 服務器必須能避免接口擁堵, DDOS 等意外情況。
  • 課堂作業交什么?

  • 你對于這個系統的服務器和接口是如何設計的?? 應該采取哪些設計讓游戲能順利完成? 寫出具體的接口。
  • 你和你的同伴分工負責, 設計出服務器應該有幾個功能模塊,? 這些功能模塊之間的關系 (用 UML 或其它圖例來表示)。
  • 寫出每個模塊功能的偽代碼,要能做到讓另一個同學能看到這些偽代碼,就能明確實現的要求并馬上開始實現。
  • 我們的課程有 60 名學生 (60 個客戶程序),如何能設計服務器程序和交互的接口讓它能在 1 秒鐘之內就完成一輪比賽???
  • 2) 實際服務器程序設計和展示

    既然同學們設計好了服務器,那就讓我們測試大家寫的服務器吧。 兩人一組寫服務器 (按照你們原來的設計), 每個人自己寫一個比較簡單的客戶端 (這樣就有兩個客戶端了)。

    測試: 上課時候大家輪番上陣,? 做下面的事情。

  • 顯示你們的博客,上面應該有你們的設計,特別是接口的設計,說明你們的接口設計是如何簡明而有效,獨特之處在哪里?
  • 每一對同學帶兩臺電腦到講臺上。在你們的電腦上,? 啟動你們的服務器, 在的兩個電腦各運行 20 個實例 ,那就有 40 個進程了,這 40 個進程各有各的用戶名和密碼。 建議把用戶名和密碼放到一個文件中,服務器保存了所有的 <用戶名,密碼>信息,? 每一個客戶端進程使用一個 <用戶名,密碼>。 建議在每個程序中加入一定的隨機因素,來避免所有的客戶端都提交一樣的數字) 。兩臺電腦可以通過局域網或其它連接方式 (例如用網線直接連接兩個電腦的網卡),這個由學生自己事前設置好,不要到時候再出錯。
  • 開始一個錦標賽 (大約100 輪, 為時2分鐘。 到時如果沒有完成也強行停止)
  • 同時服務器顯示網頁自動展現各個用戶在每個輪次的排名,和每輪黃金點的變化曲線 (這樣大家用肉眼就可以看到)。
  • 根據錦標賽完成的質量, 同學們和TA? 在下面評分。
  • 3) 同學們的客戶端比賽

    我們通過上面的比賽和評比, 選出一個好用的服務器程序之后,? 下面就要進行真刀真槍的客戶端比賽了。同學們根據服務器的設計要求修改一下他們的程序 (主要是接口部分), 每個人為一個單位參加比賽。 寫好程序,提交到 GitHub,? TA 組織大家在一個網絡相對穩定的環境中進行比賽。 根據服務器的負載和運行效率,計劃用 1 小時完成 1,000 輪比賽,最后得出所有人的名次 。

    誰的程序設計得好, 那就拉出來溜溜吧!

    這個比賽如何算分?? 給同學們提供服務器程序的同學得到最高分10 分, 不參加比賽 (包括程序不能正常和服務器交流)的同學得 負分。

    比賽最好的同學在1000輪的錦標賽中得了 2000 分, 他的得分算10 分,其余的同學按這個(最高分:同學實際得分)比例算得分,例如一個同學得了 200 分, 是最高分的 10%, 那么他得 1 分。

    【這是 現代程序設計 (課程設計中, 征求意見稿) 的一部分】

    總結

    以上是生活随笔為你收集整理的现代程序设计 作业5的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。