Gosu "Name error" problem


#1

Hello

I’m trying to write a program, that hopefully will turn into a simple
strategy game sometime. For now, i’ve got to the point, where a new game
window shows up.

Now i wrote a method that should draw a rectangle when you hold down the
left mouse button, and move the mouse (like in any rts game, so that you
can select multiple units). Now, this method obviously does not work,
and i’m not sure why.
If somebody could look at my code (its 1 page), and tell me the problem,
i would be grateful. However, i’m using the ‘gosu’ module, so it is
needed to run this program. I attached the code to this message.


#2

Hello Zsolnai,

It looks like you mixed up Gosu’s interfaces for C++ and Ruby :slight_smile: In
Ruby, it is simply draw_quad (vs. graphics().drawQuad), or
Window#draw_quad to be more precise.
Also, the last argument should be :default instead of Gosu::amDefault.
You can leave it out, though.

The complete Ruby interface can be found at:
http://code.google.com/p/gosu/wiki/RubyReference

More information and a forum dedicated to only Gosu can be found on
http://www.libgosu.org/.

Regards,
Julian


#3

Thank you. Replacing Gosu::Graphics:drawQuad with just draw_quad solved
the problem. What i don’t understand, is why draw_quad works, and
Gosu::Graphics::draw_quad doesn’t ?


#4

What i don’t understand, is why draw_quad works, andGosu::Graphics::draw_quad doesn’t ?

Basically, because there is no Graphics class at all in the Ruby
version of Gosu, where all the methods from Graphics have been moved
to the Window class. Also, draw_quad is a method;
Gosu::Graphics::draw_quad() would be a call to a class method of
Gosu::Graphics. So there’s only Gosu::Window#draw_quad, and you’d call
it on an instance of Window, or without any instance at all in the
methods of your Window.

Regards,
Julian