From: anne001 Date: 2006-02-02T06:49:15+09:00 Subject: can robot.rb be written a ruby way? This site gives the c code from robot.c in its robot-framework-1.3.tar.gz file http://yallara.cs.rmit.edu.au/~aholkner/Interactive3D/ and this site gives a ruby code for the same program in robot.rb in its folder sample in version 0.32g http://www2.giganet.net/~yoshi/ The c program is structured as follows: void init(void) void display(void) void reshape (int w, int h) void keyboard (unsigned char key, int x, int y) int main(int argc, char** argv) { ... /* Tell GLUT to create and display the window, with the given title */ glutCreateWindow("Robot Arm Demo"); /* Call our own init function to set up the background color and shading * model. */ init (); /* Tell GLUT where each of our functions are. We are passing in the name * of each function, which it will then call as required. */ glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); /* All initialisation is finished, tell GLUT to run the application forever * (or until we tell it to quit) */ glutMainLoop(); ....} and the ruby program is set up as def init display = Proc.new { reshape = Proc.new {|w, h| keyboard = Proc.new {|key, x, y| ... GLUT.CreateWindow($0); init(); GLUT.DisplayFunc(display); GLUT.ReshapeFunc(reshape); GLUT.KeyboardFunc(keyboard); GLUT.MainLoop(); .... I was surprised to find that robot.rb is a litteral translation of robot.c. No objects talking to each other here! On the other hand, GLUT has a function ReshapeFunc which requires a function, and so reshape is going to be a function, etc, so there may not be a lot of room for ruby like programming. Is it the case here, that because it is calling opengl and GLUT code, the structure is going to have to be "C" like, and not "Object OOP" like? Or is there a way of writing robot.rb a more ruby like way?