关于Silverlight角色扮演游戏Sprite经典属性设计

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using ContentSql.Global;//GetImage//EquipmentSet
using ContentSql.sqlText;
using System.Xml;//XmlReader
using System.IO;//StringReader//FileStream

namespace ContentSql.Global
{
    public struct RolesHeart
    {
        /// <summary>
        /// 角色名称
        /// </summary>
        public string RoleName { get; set; }
        /// <summary>
        /// 角色等级
        /// </summary>
        public int RoleLevel { get; set; }
        /// <summary>
        /// 角色经验
        /// </summary>
        public double RoleEXP { get; set; }
        /// <summary>
        /// 角色小头像
        /// </summary>
        public int RolePro { get; set; }
        /// <summary>
        /// 角色性别
        /// </summary>
        public int RoleSex { get; set; }
        /// <summary>
        /// 角色负重
        /// </summary>
        public double RoleBurden { get; set; }
        /// <summary>
        /// 获取物理攻击力最小值MinPhyDamage
        /// </summary>
        public double RoleAttackMin { get; set; }
        /// <summary>
        /// 获取物理攻击力最大值MaxPhyDamage
        /// </summary>
        public double RoleAttackMax { get; set; }
        /// <summary>
        /// 获取命中值Hit
        /// </summary>
        public double RoleHit { get; set; }
        /// <summary>
        /// 获取闪避值Dodge
        /// </summary>
        public double RoleDodge { get; set; }
        /// <summary>
        /// 获取跑步速度(每移动一个单元格的花费时间,越小越快)RunSpeed
        /// </summary>
        public double RoleRunSpeed { get; set; }
        /// <summary>
        /// 获取物攻速度(越小越快)
        /// </summary>
        public double RoleAttackSpeed { get; set; }
        /// <summary>
        /// 获取施法速度(越小越快)
        /// </summary>
        public double RoleMagicSpeed { get; set; }
        /// <summary>
        /// 获取最大生命值
        /// </summary>
        public double RoleLifeMax { get; set; }
        /// <summary>
        /// 获取现在生命值
        /// </summary>
        public double RoleLife { get; set; }
        /// <summary>
        /// 获取物理防御力
        /// </summary>
        public double RoleDefense { get; set; }
        /// <summary>
        /// 获取格档率
        /// </summary>
        public double RoleBlock { get; set; }
        /// <summary>
        /// 获取最大魔法值
        /// </summary>
        public double RoleManaMax { get; set; }
        /// <summary>
        /// 获取现在魔法值
        /// </summary>
        public double RoleMana { get; set; }
        /// <summary>
        /// 获取魔法防御力
        /// </summary>
        public double RoleMagicDefense { get; set; }
        /// <summary>
        /// 获取魔法攻击力最小值
        /// </summary>
        public double RoleMagicMin { get; set; }
        /// <summary>
        /// 获取魔法攻击力最大值
        /// </summary>
        public double RoleMagicMax { get; set; }
        /// <summary>
        /// 获取暴击率
        /// </summary>
        public double RoleBurst { get; set; }
        /// <summary>
        /// 获取或设置力量值STR
        /// </summary>
        public int RolePower { get; set; }
        /// <summary>
        /// 获取或设置敏捷值AGI
        /// </summary>
        public int RoleAgile { get; set; }
        /// <summary>
        /// 获取或设置体质值CON
        /// </summary>
        public int RolePhysique { get; set; }
        /// <summary>
        /// 获取或设置智慧值INT
        /// </summary>
        public int RoleWisdom { get; set; }
        /// <summary>
        /// 获取或设置精神值SPI
        /// </summary>
        public int RoleSpirit { get; set; }
        /// <summary>
        /// 获取或设置幸运值
        /// </summary>
        public double RoleLucky { get; set; }
    }
}

关于属性使用方面,利用一个类来记录。

我自己的设计是使用

先将计算玩家身上的装备所带来的属性(装备基础属性+私人装备属性)

基础装备属性:数据列表中装备基础属性,

私人装备属性:玩家强化装备等级,玩家装备品质,玩家鉴定装备属性。

在获取完所有装备属性并且累计之后。在玩家基本属性

RolePower ---力量

RoleAgile ---敏捷

RoleWisdom ---智力

RoleSpirit ---精神

RolePhysique ---体质

五项属性。

rolebaseSX.RoleLifeMax = IniLifeMax + rolebaseSX.RolePower * 5 + rolebaseSX.RolePhysique * 20;//left=装备+力量*5+体质*20+装备增加的
            rolebaseSX.RoleManaMax = IniManaMax + rolebaseSX.RoleWisdom * 5 + rolebaseSX.RoleSpirit * 30;//mana=装备+智力*5+精神*30
            rolebaseSX.RoleAttackMax = IniAttackMax + rolebaseSX.RolePower * 2 + rolebaseSX.RoleAgile;//最大攻击 =装备+ 力量*2 + 敏捷*1
            rolebaseSX.RoleMagicMax = IniMagicMax + rolebaseSX.RoleWisdom * 3 + rolebaseSX.RoleSpirit;//最大魔法攻击 =装备+ 智力*3 + 精神*1
            rolebaseSX.RoleAttackMin = IniAttackMin + rolebaseSX.RolePower * 1 + rolebaseSX.RoleAgile / 2;//最小物理攻击=
            rolebaseSX.RoleMagicMin = IniMagicMin + rolebaseSX.RoleWisdom * 1.5 + rolebaseSX.RoleSpirit / 2;//最小魔法攻击=

            rolebaseSX.RoleDefense += rolebaseSX.RoleAgile + rolebaseSX.RolePower * 0.5;//物理防御 += 敏捷 + 力量*0.5
            rolebaseSX.RoleMagicDefense += rolebaseSX.RoleWisdom + rolebaseSX.RoleSpirit * 2;//魔法防御 += 智力*1 + 精神*2
            rolebaseSX.RoleBurst = rolebaseSX.RoleLucky + (IniBurst + rolebaseSX.RoleWisdom + rolebaseSX.RoleAgile * 1.5 + rolebaseSX.RolePower) / 50;//暴击=幸运+(魔法+敏捷*1.5+力量)/50 (2倍伤害)
            rolebaseSX.RoleBlock = rolebaseSX.RoleLucky + (IniBlock + rolebaseSX.RolePower) / 35;//格挡=幸运+力量/35  (伤害减少50%)
            rolebaseSX.RoleDodge = rolebaseSX.RoleLucky + (IniDodge + rolebaseSX.RoleAgile) / 75;//闪避=幸运+敏捷/75  (伤害全免)
            rolebaseSX.RoleHit = rolebaseSX.RoleLucky + (IniHit + rolebaseSX.RoleSpirit + rolebaseSX.RolePhysique) / 30;//命中=幸运+(精神+体质)/30

每一个Sprite都拥有一个Heart属性。怪物和NPC和玩家全都继承于Sprite。我设计的方案里面Sprite拥有发饰,身体,武器三项组成部分,

原文地址:https://www.cnblogs.com/zou90512/p/2343086.html