Project1

标题: 学RGSS买了C++的书行么? [打印本页]

作者: 黄濑凉太    时间: 2013-7-4 19:27
标题: 学RGSS买了C++的书行么?
想学脚本就买了本C++的书……不知道行不行…………
作者: satgo1546    时间: 2013-7-4 19:29
RGSS是基于Ruby的……于是……嗯……
作者: 越前リョーマ    时间: 2013-7-4 19:35
你可以拿来学C++,学完再回来学ruby,也会简单很多
作者: oobuluo    时间: 2013-7-4 19:39
这是不同的语言好不好啊,可以参考,但是最好认真学一种,否则你将凌乱掉
作者: 精灵使者    时间: 2013-7-4 19:46
RGSS与C有一些不同点,所以你需要找一些RUBY的书看
作者: DeathKing    时间: 2013-7-4 20:59
看完以后自己造一个游戏引擎。还学RGSS干嘛?
作者: Shy07    时间: 2013-7-4 23:12
学 c/c++ 有助于了解计算的运作原理,尤其是内存方面(没错就是指针这让人又爱又恨的货),而且 Ruby 的创造者 Matz 就是用 c 来实现 Ruby 的。抛开这些,就算只是为了增强 RGSS 去学一下 c/c++ 也是值得的。

SINRGE2 邀你入坑

@DeathKing 话说你有兴趣帮 SINRGE2 设计一个框架么,RGSS 这个框架太特么罗嗦了,一点都不优雅
作者: DeathKing    时间: 2013-7-4 23:14
Shy07 发表于 2013-7-4 23:12
学 c/c++ 有助于了解计算的运作原理,尤其是内存方面(没错就是指针这让人又爱又恨的货),而且 Ruby 的创 ...

我现在读的工地大学就是成天杂事多,写URG3我都得挤时间……这不,又遇上考试周了。
作者: Shy07    时间: 2013-7-5 00:07
DeathKing 发表于 2013-7-4 23:14
我现在读的工地大学就是成天杂事多,写URG3我都得挤时间……这不,又遇上考试周了。 ...

举个例子:
RUBY 代码复制
  1. @command_window.set_handler(:new_game, method(:command_new_game))
  2.     @command_window.set_handler(:continue, method(:command_continue))
  3.     @command_window.set_handler(:shutdown, method(:command_shutdown))

太特么的 NC 了,没完没了地重复形式,完全可以设计一个方法来简化掉
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # * Create Command Window
  3.   #--------------------------------------------------------------------------
  4.   def create_command_window
  5.     @command_window = Window_TitleCommand.new
  6.     set_command_window_handlers [
  7.       [:new_game, method(:command_new_game)],
  8.       [:continue, method(:command_continue)],
  9.       [:shutdown, method(:command_shutdown)]
  10.     ]
  11.   end
  12.   def set_command_window_handlers(pairs)
  13.     pairs.each do |pair|
  14.       @command_window.set_handler(*pair)
  15.     end
  16.   end

这还不算最优方案,但是 RGSS 这种浪费在重复不必要的输入上太多了
RUBY 代码复制
  1. rect = Rect.new(20, 30, 140, 32)
  2. bitmap = Bitmap.new(rect.width, rect.height)
  3. sprite = Sprite.new
  4. sprite.x = rect.x
  5. sprite.y = rect.y
  6. sprite.bitmap = bitmap

像这样生成一个实例马上 balabala 一堆属性,这你能忍?完全可以设计一个关键字参数的初始化方法嘛
RUBY 代码复制
  1. rect = Rect.new(20, 30, 140, 32)
  2. bitmap = Bitmap.new(rect.width, rect.height)
  3. sprite = Sprite.new bitmap: bitmap, x: rect.x, y: rect.y

Rect 也可以设计一个 spot 用来得到 xy,aspect 得到 width 和 height
RUBY 代码复制
  1. rect = Rect.new(20, 30, 140, 32)
  2. bitmap = Bitmap.new(*rect.aspect)
  3. sprite = Sprite.new bitmap: bitmap, location: rect.spot

RGSS 里这种成对属性分开设置的地方实在太多了
作者: yangjunyin2002    时间: 2013-7-29 19:42
自学自己琢磨脚本的孩纸路过~
作者: LBQ    时间: 2013-7-29 19:44
理论上可以问题是怎么感觉应该先学ruby再学c++...
毕竟ruby和C++还是有很多不同的=-=
作者: 紫英晓狼1130    时间: 2013-7-29 19:45
觉得不行吧,不过学C++也很好…
再学习ruby
作者: LBQ    时间: 2013-7-29 19:51
Shy07 发表于 2013-7-5 00:07
举个例子:
@command_window.set_handler(:new_game, method(:command_new_game))
    @command_window.s ...

于是乎对于这些问题我也有我的一些无聊的见解。。。。

首先第一个想到的是yield self方法,在对象initialize的时候yield self if block_given? 貌似可以比较省事的说
RUBY 代码复制
  1. @sprite=Sprite.new do |s|
  2.   s.x=1
  3.   s.y=1
  4.   s.z=1
  5.   s.bitmap=xxx
  6. end



之后呢自己以前也写了一个比较无聊的东西,让这件事情能稍微解决一下
RUBY 代码复制
  1. class Plane
  2.   alias lbq_init_plane initialize
  3.   def initialize(vp=nil)
  4.     lbq_init_plane(vp)
  5.  
  6.       if block_given?
  7.         hash=yield
  8.         hash.each do |index,value|
  9.           if index==:belongs_to
  10.             value << self
  11.           else
  12.             eval("self.#{index.to_s}=value")
  13.           end
  14.  
  15.         end
  16.       end
  17.     end
  18. end


这样的话貌似新建一个plane的时候就可以。。。


RUBY 代码复制
  1. @bg_sprites=[]
  2.  
  3. Plane.new do
  4. {
  5.     opacity: 200, bitmap: Cache.system("Menu_Fog1"),
  6.     belongs_to: @bg_sprites
  7.   }
  8. end


当然这是个个人的见解,大触们一定能想到更好的方法的OTL
作者: noachic    时间: 2013-7-29 21:36
学了c++后就直接用引擎,你会发现没有你实现不了的东西
作者: mulanyuan    时间: 2013-7-29 21:50
我说...C++和Ruby是两个语言...
黄濑可以去学学Visual Basic,然后去看看Lua、C、C++、Java这些(难度高...至今看不懂)
作者: SuperMario    时间: 2013-7-30 00:32
不行,必须买汇编的。
作者: 寒影    时间: 2013-7-30 10:15
……表示不懂神马是C++
作者: 飞3a    时间: 2013-7-30 10:39
如果你要c++的书窝可以送给你(差不多学校里别的语言的书籍的两倍这么厚)
指针很痛苦啊。
c++掺杂了许多东西。窝看过一个微博,貌似c++是20个模块,ruby是12个。(很久以前的,不太记得了)
所以学出来差不多无敌了吧。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1