zoukankan      html  css  js  c++  java
  • 剪刀、石头、布机器人比赛

    • 两名选手是都是软件(机器人),玩剪刀石头布比赛,连续比赛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

  • 相关阅读:
    C++ 将对象写入文件 并读取
    IronPython fail to add reference to WebDriver.dll
    How to Capture and Decrypt Lync Server 2010 TLS Traffic Using Microsoft Tools
    .net code injection
    数学系学生应该知道的十个学术网站
    Difference Between Currency Swap and FX Swap
    Swift开源parser
    谈谈我对证券公司一些部门的理解(前、中、后台)[z]
    JDK8记FullGC时候Metaspace内存不会被垃圾回收
    JVM源码分析之JDK8下的僵尸(无法回收)类加载器[z]
  • 原文地址:https://www.cnblogs.com/BillySir/p/1665586.html
Copyright © 2011-2022 走看看