这是我使用ruby的代码

时间:2013-09-13 15:48:35

标签: ruby rubygame

它继续说语法错误意外'n'期待:: ['或'。'和语法错误意外的keyword_ensure期望输入结束。我的代码有什么问题?

require 'rubygems'
require 'rubygame'

class
      def initialize
             @screen = Rubygame::Screen.new [640, 480], 0, [Rubygame::HWSURFACE, Rubygame::DOUBLEBUF] 
             @screen.title = "Pong"

             @queue = Rubygame::EventQueue.new
             @clock =  Rubygame::Clock.new
             @clock.target_framerate = 60
      end

      def run!
          loop do
                      update
                      draw
                      @clock.tick
           end  
      end

      def update
      end

      def draw
      end
end

g = Game.new
g.run!

3 个答案:

答案 0 :(得分:2)

您没有类名,只有关键字“class”。

答案 1 :(得分:2)

class

应该是:

class Game

那会让你开始。

从风格上讲,Ruby的代码格式错误:

  • 使用2空格缩进
  • 在方法名称之后使用尾随()是明智的:当你阅读它时它会在视觉上将它区分开来,并且有时候Ruby会误解并认为方法是一个变量,直到它看到一个确定的方法与该名称的变量使用。
  • 使用括号括起以下方法的参数:

    @screen = Rubygame::Screen.new [640, 480], 0, [Rubygame::HWSURFACE, Rubygame::DOUBLEBUF] 
    

    如果尝试将块传递给没有周围参数的方法调用,则可能会遇到调试受伤的世界。 Ruby会被混淆并会抛出错误;只要养成围绕它们的习惯,就可以干净利落地避免这个问题。

答案 2 :(得分:0)

因此,这是一个非常神秘的错误消息,因为您的代码中存在基本的语法错误!

正如其他人所说,问题是缺少类名。也就是第4行,而不是:

class

应该是这样的:

class Game

但为什么呢?我们怎么知道它应该是“游戏”?

在Ruby中,通常在“class”关键字后面加上一个名称。它使用此名称,您可以根据此类定义创建对象。这就是你的程序倒数第二行发生的事情:

g = Game.new

这一行说,“创建一个'Game'类的新实例并将其分配给变量'g'。”为了使这一行真正起作用,需要一个名为的“游戏”类。这是我们对这个类的名称应该是什么的线索。

你在学习Ruby方面显然已经超越了最初的困境。坚持下去!它开始变得更容易,因为你可以获得更多的语法。

祝你好运!