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我都得挤时间……这不,又遇上考试周了。 ...
举个例子:
@command_window.set_handler(:new_game, method(:command_new_game))
@command_window.set_handler(:continue, method(:command_continue))
@command_window.set_handler(:shutdown, method(:command_shutdown))
@command_window.set_handler(:new_game, method(:command_new_game))
@command_window.set_handler(:continue, method(:command_continue))
@command_window.set_handler(:shutdown, method(:command_shutdown))
太特么的 NC 了,没完没了地重复形式,完全可以设计一个方法来简化掉
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_TitleCommand.new
set_command_window_handlers [
[:new_game, method(:command_new_game)],
[:continue, method(:command_continue)],
[:shutdown, method(:command_shutdown)]
]
end
def set_command_window_handlers(pairs)
pairs.each do |pair|
@command_window.set_handler(*pair)
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_TitleCommand.new
set_command_window_handlers [
[:new_game, method(:command_new_game)],
[:continue, method(:command_continue)],
[:shutdown, method(:command_shutdown)]
]
end
def set_command_window_handlers(pairs)
pairs.each do |pair|
@command_window.set_handler(*pair)
end
end
这还不算最优方案,但是 RGSS 这种浪费在重复不必要的输入上太多了
rect = Rect.new(20, 30, 140, 32)
bitmap = Bitmap.new(rect.width, rect.height)
sprite = Sprite.new
sprite.x = rect.x
sprite.y = rect.y
sprite.bitmap = bitmap
rect = Rect.new(20, 30, 140, 32)
bitmap = Bitmap.new(rect.width, rect.height)
sprite = Sprite.new
sprite.x = rect.x
sprite.y = rect.y
sprite.bitmap = bitmap
像这样生成一个实例马上 balabala 一堆属性,这你能忍?完全可以设计一个关键字参数的初始化方法嘛
rect = Rect.new(20, 30, 140, 32)
bitmap = Bitmap.new(rect.width, rect.height)
sprite = Sprite.new bitmap: bitmap, x: rect.x, y: rect.y
rect = Rect.new(20, 30, 140, 32)
bitmap = Bitmap.new(rect.width, rect.height)
sprite = Sprite.new bitmap: bitmap, x: rect.x, y: rect.y
Rect 也可以设计一个 spot 用来得到 xy,aspect 得到 width 和 height
rect = Rect.new(20, 30, 140, 32)
bitmap = Bitmap.new(*rect.aspect)
sprite = Sprite.new bitmap: bitmap, location: rect.spot
rect = Rect.new(20, 30, 140, 32)
bitmap = Bitmap.new(*rect.aspect)
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? 貌似可以比较省事的说
@sprite=Sprite.new do |s|
s.x=1
s.y=1
s.z=1
s.bitmap=xxx
end
@sprite=Sprite.new do |s|
s.x=1
s.y=1
s.z=1
s.bitmap=xxx
end
之后呢自己以前也写了一个比较无聊的东西,让这件事情能稍微解决一下
class Plane
alias lbq_init_plane initialize
def initialize(vp=nil)
lbq_init_plane(vp)
if block_given?
hash=yield
hash.each do |index,value|
if index==:belongs_to
value << self
else
eval("self.#{index.to_s}=value")
end
end
end
end
end
class Plane
alias lbq_init_plane initialize
def initialize(vp=nil)
lbq_init_plane(vp)
if block_given?
hash=yield
hash.each do |index,value|
if index==:belongs_to
value << self
else
eval("self.#{index.to_s}=value")
end
end
end
end
end
这样的话貌似新建一个plane的时候就可以。。。
@bg_sprites=[]
Plane.new do
{
opacity: 200, bitmap: Cache.system("Menu_Fog1"),
belongs_to: @bg_sprites
}
end
@bg_sprites=[]
Plane.new do
{
opacity: 200, bitmap: Cache.system("Menu_Fog1"),
belongs_to: @bg_sprites
}
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 |