游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3373|回复: 3

[讨论] 我自己搞了个公式,准备在游戏中就这么干

[复制链接]

11

主题

35

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2011-4-12 11:23:00 | 显示全部楼层 |阅读模式
我的一个战棋类游戏,做到两只军队打仗的计算这一块了。

军队属性:
人数
生命

武将三围:
军事
智谋
修为

士兵属性:
攻击
防御


想了半天,我搞了个一次战斗的计算公式出来:

(我攻击-敌防御)*(我军事/敌智谋)*(我人数/敌人数)*我人数=总伤害/对方生命=折损人数

注:
1.每一步计算,如果小于1,就按1计算。
2.修为决定闪避几率。
3.军事加成:(我军事/敌智谋)计算步骤会有随机取上限内的数。

------------实例1-----------------------------------------
军队属性:
人数 100,500
生命 200,120

武将三围:
军事 60,30
智谋 20,30
修为 50,50

士兵属性:
攻击 70,30
防御 40,40

敌方折损人数:(70-40)*(60/30)*(100/500)*100=30*2*1*100=6000/120=50
我方折损人数:(30-40)*(30/20)*(500/100)*500=1*1.5*5*500=3750/200=18



------------实例2-----------------------------------------
军队属性:
人数 100,500
生命 200,120

武将三围:
军事 120,30
智谋 20,30
修为 50,50

士兵属性:
攻击 250,30
防御 250,40

敌方折损人数:(250-40)*(120/30)*(100/500)*100=210*4*1*100=84000/120=700
我方折损人数:(30-250)*(30/20)*(500/100)*500=1*1.5*5*500=3750/200=18



有不妥之处请指教。


20

主题

903

帖子

977

积分

高级会员

Rank: 4

积分
977
QQ
发表于 2011-4-12 15:49:00 | 显示全部楼层

Re:我自己搞了个公式,准备在游戏中就这么干

简单公式有简单公式的好处,就是计算方便

不过简单公式会存在缺陷,需要在其他数值设计上进行弥补
例如你的这个公式在小数值的时候会存在这样的情况“很小的差异造成很大的影响”

在其他所有条件均相同的情况下
A:军事2、智谋2
B:军事2,智谋1
那么A能够压倒性的战胜B,虽然仅仅差了一点智谋。。。

11

主题

35

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2011-4-12 16:59:00 | 显示全部楼层

Re:我自己搞了个公式,准备在游戏中就这么干

感谢回复,但结果恰恰是"很小的差异造成很小的影响"呵呵。

我已经在游戏中测试了,基本没问题,因为我的游戏的资源是玩家慢慢获得的,所以

人数优势是硬伤,军事可以随机一点,呵呵,总之按现在的情况没办法做出多种技能效果,只能先搞个简单的了。

应该是我没写清楚.我贴上我的代码片段:
--------------------------------------------------

        public int getunit1(int attack,int defence)
        {
                int tmp=1;
                if ( attack>defence ) {tmp=attack-defence;}       
                return tmp;
    }

        public int getunit2(int js,int zm)
        {
                int tmp=1;
                Random random = new Random();
                if ( js>zm ) {tmp=random.nextInt(js/zm);}               
                if (tmp==0) {tmp=1;        }
                return tmp;
    }

        public int getunit3(int woamount,int diamount)
        {
                int tmp=1;
                if ( woamount>diamount ) {tmp=woamount/diamount;}       
                return tmp;
    }
--------------------------------------------------------
                                                int unit1=getunit1(h.getAttack(),npc.getDefence());
                                                int unit2=getunit2(h.getJs()+h.getJs2(),npc.getZm()+npc.getZm2());
                                                int unit3=getunit3(h.getArmyamount(),npc.getArmyamount());


                                                int aim_lose=(unit1*unit2*unit2*h.getArmyamount())/npc.getArmyblood();

                                                int unit4=getunit1(npc.getDefence(),h.getAttack());
                                                int unit5=getunit2(npc.getJs()+npc.getJs2(),h.getZm()+h.getZm2());
                                                int unit6=getunit3(npc.getArmyamount(),h.getArmyamount());

                                                int hero_lose=(unit4*unit5*unit6*npc.getArmyamount())/h.getArmyblood();
-----------------------------------------------------------------------------
       

3

主题

29

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2011-4-14 10:33:00 | 显示全部楼层

Re:我自己搞了个公式,准备在游戏中就这么干

公式看起来是复杂。。。我不知道你为什么要这么设计   动机是什么?   公式是为了达到你的目标跟效果去设计的。。。你不把思路告诉我们   我也不知道该公式有什么问题。。。复杂不代表适合。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-20 16:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表