Project1
标题:
【LZ已經窮極無聊】真·泛用化數據庫擴展
[打印本页]
作者:
电子最终龙
时间:
2013-8-27 22:59
标题:
【LZ已經窮極無聊】真·泛用化數據庫擴展
{:2_270:} 之前有人說過用戶自定義數據庫可以直接用代碼描述
LZ也深以為然,直到某天……
(, 下载次数: 37)
上传
点击文件名下载附件
{:2_271:} LZ再也不會愛了
於是就有了下面的奇怪的東西
class CusAttribute
def initialize(name, default_value)
@name = name
@value = default_value
attr_accessor :name
attr_accessor :value
end
class CusClass
def initialize(name)
@name = name
@attributes = []
end
def new_attribute(name, default_value)
@attributes.push(CusAttribute.new(@attributes.size, name, default_value))
end
def edit_name(old_name, new_name)
if @attributes.size > 0
for i in 0...@attributes.size
unless @attributes[i] == nil
@attributes[i].name = new_name if @attributes[i].name == old_name
end
end
end
end
def edit_value(name, value)
if @attributes.size > 0
for i in 0...@attributes.size
unless @attributes[i] == nil
@attributes[i].value = value if @attributes[i].name == name
end
end
end
end
def delete_attribute(name)
if @attributes.size > 0
for i in 0...@attributes.size
unless @attributes[i] == nil
@attributes.delete(@attributes[i]) if @attributes[i].name == name
end
end
end
end
def attribute(name)
if @attributes.size > 0
for i in 0...@attributes.size
unless @attributes[i] == nil
return @attributes[i] if @attributes[i].name == name
end
end
end
return nil
end
def attrbute_num
return @attributes.size
end
attr_reader: name
end
复制代码
{:2_270:}
然後可以用RM生成和編輯數據類,然後創建數據、修改數據……
還可以整個數據庫都寫好后再寫點小代碼轉換回普通的類,比如RPG::什麽什麽
作者:
进击の虎叔
时间:
2013-8-27 23:16
俺没糖了,明天再塞,不过这属性真心多,是即时战斗么
作者:
电子最终龙
时间:
2013-8-27 23:50
进击の虎叔 发表于 2013-8-28 01:16
俺没糖了,明天再塞,不过这属性真心多,是即时战斗么
其實是戰棋=。=
作者:
紫英晓狼1130
时间:
2013-8-28 06:48
这是要复杂属性嘛~
作者:
无脑之人
时间:
2013-8-28 10:46
科学!
不过还是那个输入的dll方便一些……
作者:
Sunny.J
时间:
2013-8-28 11:45
表示根本不知道lz在说什么~
作者:
tjjlb
时间:
2013-8-28 12:16
卧槽好复杂!
作者:
SK才是王道
时间:
2013-8-28 12:23
卧槽好牛B!
作者:
一瞬间的幻觉
时间:
2013-8-28 15:06
楼主看不懂这个什么地方用到呢?
作者:
电子最终龙
时间:
2013-8-28 15:35
一瞬间的幻觉 发表于 2013-8-28 17:06
楼主看不懂这个什么地方用到呢?
步驟1:在紙上或者RM或者記事本寫好需要創建的數據類的屬性
步驟2:在RM中以主樓的泛用數據類為數據類編寫數據編輯器
步驟3:根據數據類的屬性使用通用數據類的編輯器製作數據庫,按需要輸出成文件(通常是RXDATA)
步驟4(推薦):編寫轉換代碼,將已經完成的泛用格式數據庫轉換回步驟1中編寫的類
例:
步驟1:actor類中有EXP,HP,SP,ATK,DEF,AGI六項屬性,則可以設定成:
class Actor
def initialize
@exp
= 0; @hp = 0; @sp = 0; @atk=0,@def=0
end
attr_accessor:(略)
end
步驟2:編寫泛用數據類的圖形化編輯器
生成角色數據類時則調用方法:
actor_class = CusClass.new("角色數據")
actor_class.new_attribute("HP", 0)
actor_class.new_attribute("MP", 0)
(略)
創建數據類時的語句:actor_data = actor_class.clone
編輯時調用方法:actor_data.edit_value("屬性名", 數值)
步驟3用過腳本儲存數據庫的基本都知道怎麼回事了
步驟4:
actor = Actor.new
actor.exp = actor_class.attribute("exp")
actor.hp = actor_class.attribute("hp")
如此類推
========================================
主樓的泛用化數據類其實就是編寫數據編輯器才會用到的
作者:
你最珍贵
时间:
2013-8-28 15:58
这可以当做加点的吗
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X5.0