剪刀、石头、布机器人比赛
生活随笔
收集整理的這篇文章主要介紹了
剪刀、石头、布机器人比赛
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 兩名選手是都是軟件(機器人),玩剪刀石頭布比賽,連續比賽100次(即一局),看誰贏得多。
- 規則與小時候玩的剪刀、石頭、布一樣,只不過規定100次中的第1次每位選手都必須出石頭,這是為了避免隨機現象。
- 程序會告訴你上一次對手出的是什么,但不會也不應該告訴你本次對手出什么。
- 要編一個打敗某選手的并不難,難的是如何打敗盡可能多的選手。
- 為了較客觀的評價每位選手,平臺設計了循環賽。
- 100位選手的主人可能會有100種設計思路,這聽起來很有趣,到底誰的作品更具威力呢?
只要從Player類繼承(引用RowshanBow.dll),重載GetNext方法,就可以實現你的設計,充分發揮你的想象力。
把你的dll放入players文件夾,就可以參戰了。
好了,接下來說說技術,挑2點說一下:
1.動態裝載,即是使用.net的反射技術,動態裝載dll,然后查找特定的Type,當要比賽時實例出該Type的一個對象進行100次比賽。(主要看LoadPlayers方法和BuildPlayer方法)
2.循環賽制。內核是RoundPair類,它能產生一對對比賽的選手對,盡可能地模擬人類的單循環出賽順序。外部的RoundRobin是對RoundPair的進一步封裝,使用泛型,能操控不能類型的“選手”。根據RoundPair產生的序號,選中選手引發事件,并通過參數把兩位選手傳送過去進行具體的比賽,把結果傳回由RoundRobin進行分數計算。
大概就是這個樣子了,其它的都沒太多的技術含量,相信不難讀得懂的。有什么問題可以回復交流。
這是一個參與很容易,做好很難的游戲。開源下載,希望各位喜歡。
下載:RowShanBow_v2_2.zip
轉載于:https://www.cnblogs.com/BillySir/archive/2010/02/07/1665586.html
總結
以上是生活随笔為你收集整理的剪刀、石头、布机器人比赛的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HttpMoudle实现用户身份验证
- 下一篇: c语言自动取款机贴吧,求助 简单atm