各大帝国游戏吧 关注:2,357贴子:325,214

发布一个自制的虚拟国对战的程序(不像软件也不像游戏)

只看楼主收藏回复

在我很小的时候,为了实现各虚拟国对战的公平性,曾用计算器产生随机数,通过一系列复杂的运算,实现交战国的伤亡、胜负的判断,后来,随着兵种的增加,以及科技水平与兵种相互克制等等属性的影响,导致每进行一次战斗要进行大量的计算,所以我不断制作一些小程序来替代人工的计算,如最开始用C++程序实现一次战斗的计算,并且输出结果,后来,我整合了所有国家的数据,进行统一的处理,极大方便了计算,再后来,我在程序中增加了地图和区块,战斗不再是国家的所有兵力对战另外一个国家的所有兵力,而是分区域的战斗,且战斗计算方式也不再是曾经的双方对打直到一方全部死亡而结束,而是相对更智能的战斗函数,以及战斗功能(如消耗战,歼灭战,包围战,甚至是俘虏地方单位),所以就成了目前这个程序的样子。


IP属地:重庆1楼2017-12-30 12:33回复
    二楼放地址吧,三楼开始介绍


    IP属地:重庆2楼2017-12-30 12:34
    收起回复
      实质上……楼主……你这个用于虚拟国战争可惜了(毕竟不可否认的是,虚拟国的战争方式还是爆吧)。
      楼主的这个软件完全可以推进贴游的判定公正性,甚至都可以发明简单的类似文明时代的游戏的


      IP属地:天津来自iPhone客户端3楼2017-12-30 12:37
      收起回复
        介绍:
        本来应该先介绍程序的操作和功能的,不过我觉得大家更关心的是如何创建自己YY的国家,以及设置相关的属性等信息吧。首先呢,程序附带两个数据文档(都是.csv格式),一个是NationData.csv,一个是AreaData.csv,我们先讲讲国家的建立,即打开第一个文件(可以用EXCEL打开,如果EXCEL无法打开就用TXT打开)


        IP属地:重庆4楼2017-12-30 12:38
        回复
          因为编码问题,这里用TXT打开的(用EXCEL打开有中文编码的csv总是莫名其妙的报错)。
          如图所示,每行即代表一个国家的信息:
          第一个是国家ID
          第二个是国家名称(name)
          第三个是科技等级(sci)(一共5个等级,一级:拿战科技 二级:普法战争科技 三级:一战科技 四级:二战前科技 五级:二战后科技 ,理论上科技可以无限大,越大军事单位战斗力越强,建议别超过5级,不然单位输出太暴力)
          第四个是经济(money),大家都懂,都写了MONEY了嘛,买东西,升级城市,建造堡垒都靠它
          第五个是导弹(nuclear),nuclear本来是核弹的意思,但后来不想虚拟国之间发生核战争,所以改名为导弹,不过程序里的变量名都是nuclear(核弹),(目前还没做导弹功能,我自己的虚拟国世界还没到二战呢,下个版本再做吧)
          第六个是科学院(aca),除了显示这个国家的科学院外,没什么用(还没做科技发展的功能)
          第六个是阵营(camp),也是方便向用户显示阵营的,没实质用处
          第七个是影响力(cr),原来有国家经济加成的功能,后来觉得,打胜仗多了会增加影响力从而加成经济,对那些和平发展的国家不公平,就把这个经济加成的功能取消了,所以现在影响力反映的就是一个国家战争胜负的情况,初始值建议设置成100
          八九十分别是这个国家区块的颜色,用RGB的数值表示,具体什么RGB数值代表什么颜色,可以到 https://tool.css-js.com/rgba.html 这个网站查看
          注意:修改或者增加国家信息的时候别少打逗号,少一栏什么的,不然会报错。还有就是最后一栏公海别删掉了


          IP属地:重庆5楼2017-12-30 12:56
          回复
            然后是AreaData.csv,这个因为没中文,可以直接用EXCEL打开。
            一共有100个区块,这里截了一部分的图,老规矩
            第一个与第二个是区块坐标,坐标原点在地图左上角,从(0,0)开始,横为X,纵为Y。(右上角坐标(9,0),左下角坐标(0,9),右下角坐标(9,9))该栏不需要修改
            第二个是陆地或海洋,需要修改地图陆海地形的就要改这里了,0代表海洋,1代表陆地。
            第三个是地区所属国家ID,可以在这里修改,不过这里改很不直观,建议在创建好国家数据后,直接在程序里该区块ID分配国家区块。
            第三个是地区经济产值,点一下程序的“各国获取收入”,即通过该国所有区块的经济产值经过一定计算产生的。可以通过发展经济来提升地区经济产值。
            第四个是堡垒,共三个等级(1级/2级/3级,抵御进攻者伤害:30/45/60,堡垒生命值:200/280/350),升级堡垒需要科技等达到一定水平。
            后面的是该区域存在的兵种单位数量,注意,一个区块总单位不能超过36个。如果新开局,可以将每个区块的所有兵种单位数量设置成0(用格式刷,直接将man以及之后的数据全部刷成0),然后到程序中双击相应区块进行生产。


            IP属地:重庆6楼2017-12-30 13:11
            回复
              然后,国家什么的都弄好了,地图海陆地形也设置好了,那就开始YY啦。
              首先,介绍一下地图中的东西

              首先青色的是海洋,每个区块的颜色代表其所属的不同国家,陆地区块中,四面有空洞的矩形框是堡垒,线条越深代表堡垒等级越高,堡垒里的各种图案代表的是该区块的军队类型和数目(圆形是步兵师,矩形是装甲师,三角是火炮支援单位,然后是海上单位,梯形是航母,正方形是战列舰,十字圆形是重巡洋舰,|字圆形是轻巡洋舰,十字三角是驱逐舰,|字三角是潜艇),陆上单位可以坐运输船到海上,不过伤害大打折扣,而且跟海军拼基本死路一条,海军不能上陆地,但可以轰击沿海区块,甚至占领沿海区块。


              IP属地:重庆7楼2017-12-30 13:21
              回复
                左键点击地图可选择所点击的区块(也可进行后续操作),同时显示区域信息
                再右键其他区块,可进行相应操作(移动,占领/开战,对比信息,汇款)


                点击生产

                点击比较

                点击全部数据统计


                IP属地:重庆8楼2017-12-30 13:29
                回复
                  然后嘛,该说战争了,举个例子,我们先打一仗,左键选取进攻区块,右键选取相邻地方区块,点击“开战/占领”按钮,就会弹出战争信息了

                  从这里可以看到,进攻方完全劣势被进攻方(因为只是作为演示,平时不这么作死的打仗的)
                  首先被进攻方火力比进攻方猛(战争点数),其次,防御方拥有二级堡垒和大量的火炮支援单位,火炮支援单位在防御中极其有优势(就是除非进攻方很强,不然很不容易死),从伤亡中可以看出,进攻方有12个步兵师,打没了7个,6个火炮支援兵团打没了5个,防守方只损失了一个装甲师和一个火炮支援团,而且堡垒也没被打坏,所以进攻方巨亏。
                  在战斗中,有时可能战胜了,但自身兵力损伤可能比敌方还多很多(尤其是敌方防守且有堡垒的情况),所以对于海军强大的国家,建议直接用海军炮轰敌方沿海地区,海军弱的国家,尽量把陆军放在内陆地区


                  IP属地:重庆9楼2017-12-30 13:42
                  回复
                    然后。。。。然后怎么没人啊


                    IP属地:重庆10楼2017-12-30 13:49
                    回复
                      楼主继续啊很多人看但是不说话的


                      IP属地:天津11楼2017-12-30 13:51
                      收起回复
                        我一直在看啊…


                        IP属地:天津来自iPhone客户端12楼2017-12-30 13:54
                        回复
                          好吧,其实,其实也没啥然后的了,就是一些战斗的细节,若有不妥的,欢迎指正。
                          比如,海战中,潜艇的生存率取决于地方驱逐舰的数量,而航母的存活率取决于己方驱逐舰和地方潜艇的比,战列舰和重巡洋舰相当于输出,轻巡洋舰负责打驱逐舰和防空,所以敌方轻巡洋舰多,则己方航母对地方伤害会下降。当然,战列舰重巡洋舰是好,同样也贵,主陆战的国家造点儿潜艇搞点儿事情就行了,花大价钱造一两艘战列舰,没太大用处(不仅没用还容易被围歼)
                          战争中,一方军队战败,且堡垒被摧毁便会撤退到邻近区块,如果没有邻近己方区块,则部队会被全歼(相当于被包围了),如果有邻近己方区块,但己方区块已经有相当一部分军队,撤退此区域会导致军队数超过36,则失败部队会被俘虏(就像军队想撤,后方不让撤,又打不赢,就只有投降了)。胜利方则会占领进攻的区域(敌方堡垒被摧毁),在地区没有军队的时候,其他国家直接占领将不会进攻堡垒,也不会降影响力(就相当于别国军队过路,过完了再占回来就行(不需要军队就可以占回来))
                          陆战中,较弱的主要造堡垒和火炮支援,较强的想进攻的主要造装甲师,经济不赋予的造步兵师(性价比高)


                          IP属地:重庆13楼2017-12-30 14:06
                          回复
                            至于兵种价格和属性我直接发代码图啦,数据参考了欧陆战争3和世界征服者2,不过战斗方式完全不同。


                            就不解释什么是什么意思了哈(唉,m是花费的钱,hp不用说了,接着是攻击最小最大值,然后mp不用管,每千每万也不用管,这我复制我上一个程序的数据),就长这样,没地图,纯数据

                            具体的内容,玩一玩就都明白了。如果有BUG,欢迎指正


                            IP属地:重庆14楼2017-12-30 14:13
                            回复
                              真.大佬


                              IP属地:天津15楼2017-12-30 14:19
                              收起回复