设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2951|回复: 10
打印 上一主题 下一主题

[随意闲聊] 【LZ已經窮極無聊】真·泛用化數據庫擴展

[复制链接]

Lv4.逐梦者

水月·镜花

梦石
10
星屑
403
在线时间
1181 小时
注册时间
2005-10-22
帖子
1183

开拓者

跳转到指定楼层
1
发表于 2013-8-27 22:59:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
{:2_270:} 之前有人說過用戶自定義數據庫可以直接用代碼描述
LZ也深以為然,直到某天……



{:2_271:} LZ再也不會愛了
於是就有了下面的奇怪的東西
  1. class CusAttribute
  2. def initialize(name, default_value)
  3. @name = name
  4. @value = default_value
  5. attr_accessor :name
  6. attr_accessor :value
  7. end

  8. class CusClass
  9. def initialize(name)
  10. @name = name
  11. @attributes = []
  12. end
  13. def new_attribute(name, default_value)
  14. @attributes.push(CusAttribute.new(@attributes.size, name, default_value))
  15. end
  16. def edit_name(old_name, new_name)
  17.   if @attributes.size > 0
  18.     for i in [email protected]
  19.       unless @attributes[i] == nil
  20.         @attributes[i].name = new_name if @attributes[i].name == old_name
  21.       end
  22.     end
  23.   end
  24. end
  25. def edit_value(name, value)
  26.   if @attributes.size > 0
  27.     for i in [email protected]
  28.       unless @attributes[i] == nil
  29.         @attributes[i].value = value if @attributes[i].name == name
  30.       end
  31.     end
  32.   end
  33. end
  34. def delete_attribute(name)
  35.   if @attributes.size > 0
  36.     for i in [email protected]
  37.       unless @attributes[i] == nil
  38.         @attributes.delete(@attributes[i]) if @attributes[i].name == name
  39.       end
  40.     end
  41.   end
  42. end
  43. def attribute(name)
  44.   if @attributes.size > 0
  45.     for i in [email protected]
  46.       unless @attributes[i] == nil
  47.         return @attributes[i] if @attributes[i].name == name
  48.       end
  49.     end
  50.   end
  51.   return nil
  52. end
  53. def attrbute_num
  54.   return @attributes.size
  55. end
  56. attr_reader: name
  57. end
复制代码
{:2_270:}
然後可以用RM生成和編輯數據類,然後創建數據、修改數據……
還可以整個數據庫都寫好后再寫點小代碼轉換回普通的類,比如RPG::什麽什麽

评分

参与人数 1星屑 +5 收起 理由
进击の虎叔 + 5 说好的糖

查看全部评分

Lv3.寻梦者

梦石
0
星屑
2383
在线时间
647 小时
注册时间
2013-8-11
帖子
858
2
发表于 2013-8-27 23:16:08 | 只看该作者
俺没糖了,明天再塞,不过这属性真心多,是即时战斗么

Engine:RPG Maker XP
Ability:

帅的人在默默填坑,而丑的人在疯狂灌水。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

水月·镜花

梦石
10
星屑
403
在线时间
1181 小时
注册时间
2005-10-22
帖子
1183

开拓者

3
 楼主| 发表于 2013-8-27 23:50:59 | 只看该作者
进击の虎叔 发表于 2013-8-28 01:16
俺没糖了,明天再塞,不过这属性真心多,是即时战斗么

其實是戰棋=。=

点评

那样扩充战旗也是很棒的呢(俺没玩过战旗的说  发表于 2013-8-27 23:52
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
4
发表于 2013-8-28 06:48:47 | 只看该作者
这是要复杂属性嘛~
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
5
发表于 2013-8-28 10:46:45 | 只看该作者
科学!
不过还是那个输入的dll方便一些……
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
54
在线时间
231 小时
注册时间
2013-7-9
帖子
1456
6
发表于 2013-8-28 11:45:08 | 只看该作者
表示根本不知道lz在说什么~
此人:
精通RPG Maker Action Game Maker KRKR2 橙光文字游戏制作软件的打开与关闭
熟悉Photoshop SAI 美图秀秀的安装卸载
掌握JAVA C++ C# Visual Basic Visual Studio PHP HTML单词的拼写
了解橙光游戏中心 66RPG 永夜幻想曲的网站地址
回复 支持 反对

使用道具 举报

Lv2.观梦者 (版主)

HATSUNE★MIKU
KAGAMINE★LEN
KAGAMINE★RIN
MEGURINE★LUKA

梦石
0
星屑
849
在线时间
1172 小时
注册时间
2012-4-2
帖子
5035

开拓者

7
发表于 2013-8-28 12:16:55 | 只看该作者
卧槽好复杂!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
235
在线时间
212 小时
注册时间
2013-8-13
帖子
1561
8
发表于 2013-8-28 12:23:08 | 只看该作者
卧槽好牛B!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
帖子
12326

贵宾第6届短篇游戏比赛季军

9
发表于 2013-8-28 15:06:34 手机端发表。 | 只看该作者
楼主看不懂这个什么地方用到呢?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

水月·镜花

梦石
10
星屑
403
在线时间
1181 小时
注册时间
2005-10-22
帖子
1183

开拓者

10
 楼主| 发表于 2013-8-28 15:35:26 | 只看该作者
一瞬间的幻觉 发表于 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")
如此類推

========================================

主樓的泛用化數據類其實就是編寫數據編輯器才會用到的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 03:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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