- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在调用玩家的 x 位置和 y 位置时遇到问题。当我用 Projectile 类调用 origin_object.x 和 origin_object.y 时,它给我这个错误:
asteroids.rb:35:in `update': undefined method `x' for #<Player:0x007fa7c307c520> (NoMethodError)
from /usr/local/lib/ruby/gems/2.2.0/gems/gosu-0.10.4/lib/gosu/patches.rb:135:in `tick'
from /usr/local/lib/ruby/gems/2.2.0/gems/gosu-0.10.4/lib/gosu/patches.rb:135:in `tick'
from asteroids.rb:68:in `<main>'
这是我的代码:
class Player
attr_accessor :x, :y, :angle, :lives, :score
def initialize
@image = Gosu::Image.new("assets/nave1.png")
@x = @y = @vel_x = @vel_y = @angle = 0.0
@score = 0 #Puntaje
@lives = 5 #Vida
end
end
这是弹丸文件
class Projectile
attr_reader :x, :y, :angle
def initialize(origin_object)
@alive = true
@x, @y = origin_object.x, origin_object.y
@angle = origin_object.angle
@speed_modifier = 7
@image = Gosu::Image.new('assets/projectile.png')
@distance_traveled, @max_distance = 0, 50
end
end
这是主文件(我用它来运行项目)
require 'gosu'
require './lib/Player.rb'
require './lib/Projectile.rb'
class GameWindow < Gosu::Window
def initialize
super(1000, 700, false) #Creacion Pantalla
self.caption = "Asteroids Redes" #Titulo Pantalla
@font = Gosu::Font.new(self, "assets/victor-pixel.ttf", 34)
end
def setup_game
@player = Player.new
@player.warp(650, 350)
@game_in_progress = true
@projectiles = []
end
#--------------------------------------#
def update
if Gosu::button_down? Gosu::KbQ #Salir con tecla Q
close
end
if button_down? Gosu:: KbP
setup_game unless @game_in_progress
end
if @player #si existe jugador permite moverlo
if Gosu::button_down? Gosu::KbSpace
p @player.x
#@projectiles << Projectile.new(p @player)
end
if Gosu::button_down? Gosu::KbLeft or Gosu::button_down? Gosu::GpLeft then
@player.turn_left
end
if Gosu::button_down? Gosu::KbRight or Gosu::button_down? Gosu::GpRight then
@player.turn_right
end
if Gosu::button_down? Gosu::KbUp or Gosu::button_down? Gosu::GpButton0 then
@player.accelerate
end
@player.move
@projectiles.each {|projectile| projectile.move}
end
end
#--------------------------------------#
def draw
unless @game_in_progress #Si el no se esta ejecutando muestra el menu
@font.draw("ASTEROIDS", 260, 220, 50, 3, 3, Gosu::Color::rgb(255, 255, 255))
@font.draw("Presiona 'p' Para Jugar", 300, 320, 50, 1, 1, Gosu::Color::rgb(13, 123, 255))
@font.draw("Presiona 'q' Para Salir", 305, 345, 50, 1, 1, Gosu::Color::rgb(13, 123, 255))
end
if @player #Si existe jugador lo dibuja
@player.draw
@projectiles.each {|projectile| projectile.draw}
end
end
#--------------------------------------#
end
#........................................#
window = GameWindow.new
window.show
最佳答案
我已经从你的三个文件中复制了代码,为 move
、draw
、accelerate
、turn_left< 添加了空方法 stub
/turn_right
这样代码就不会立即崩溃。
当我开始游戏并按 P,然后按空格键时,我在终端中看到“0.0”作为 p @player.x
的结果。
您是否正在运行与问题中包含的代码不同的代码版本?
关于ruby - 未定义方法(NoMethodError)ruby 和 Gosu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33247595/
上下文: 我从存储库中提取了最新的代码,并尝试确保我将要推送的更改能够与该版本的代码一起使用。这是一个 Ruby on Rails 应用程序。另外值得注意的是,在运行我从网络上提取的主应用程序时,不会
让我们考虑以下代码: class Try CONST = xxx("42") private_class_method def self.xxx(str) str.to_i end end
我一直在寻找解决方案,但最相关的答案似乎规定使用 self. ,我已经在做;我无法用我可以找到我做错了什么的方式来表达我的搜索。我正在定义一个类,如下所示,但是当我尝试创建一个实例时,我得到了 NoM
我向 String 类添加了一个额外的方法。我想稍后使用此方法,但出现 no Method 错误。 class String def as_file_full_path NSSear
我尝试使用 ruby on Rails 请求数据库中的日期时间条目。这在 Linux 环境中工作得很好,但在我的 Windows 环境中我得到了 NoMethodError。调试时,我发现将日期时
我正在努力学习 ruby。我卡在第 26 课了。Here是文件的链接。这是错误所在的代码片段: five = 10 - 2 + 3 - 6 puts "This should be five: #
我不想在某个地方引发 NoMethodError 而只是针对某个类(例如 NilClass)。 例如 begin maybe_nil_maybe_not_nil = nil maybe_nil
我有一个正在编写的 sinatra 应用程序。我正在尝试编写一个页面来显示存储在数据库中的各个模式。使用 datamapper 我创建了一个类: require 'dm-core' require '
不确定是否有很多人熟悉 Ruby 的脚手架扩展,但我查看了他们的文档、论坛,甚至 Heroku 测试站点的源代码,但没有找到答案。 我制作了一个基本的 Sinatra 应用程序并按照 RDoc 的说明
我正在创建一个 Die 类,它具有输出骰子编号的功能。它已被命名为 printout 和 output,但由于 NoMethodError,函数继续失败。这是我的代码: class Die def
Whole source code here 我觉得我的程序流程有逻辑错误,返回NoMethodError 首先,一段导致错误的代码。 " /> #Error Text NoMethodError a
我正在尝试从我的一个规范助手中的模块访问方法 我将模块包含在测试助手中 module Support class RestHelper include Rest::Rest def
我在学习 Ruby 的时候正在做一个简单的 Pi Generator,但是我在 RubyMine 6.3.3 上一直遇到 NoMethodError,所以我决定用尽可能简单的方式创建一个新项目和新类,
我有一个这样的模块: module Prober def probe_invoke(type, data = {}) p = Probe.new({:probe_type => type.
我有一个 ruby 程序,它在特定的命名空间中创建部署、服务和 ing。当我想创建一个命名空间时,它会提示 NoMethodError。 这是代码: namespace = Kubeclient:
context 'with event_type is available create event' do let(:event_type) { EventType.where( name: '
我在 Ruby 中发现了一个奇怪的问题,我不太确定这是一个问题还是最近 Ruby 版本中引入的一个功能。 基本上当我们调用一个未定义的方法时,我们会得到一个 undefined method Ruby
我有以下 Ruby 代码,其中 BigClass 的每个实例创建一个具有 BigClass 实例的数组(直到最大深度)。 class BigClass # Increase this depend
我正在尝试 ror 教程,我遇到了以下代码行: index.html.erb: @players %> _player.html.erb: players_controller.rb: de
当我的 DeltaSynWorker 运行时,我收到 NoMethodErrors。这发生在作为当前工作应用程序的修订版构建的应用程序中。我不是最初的程序员,我是从 Java 背景开始的(我提到这一点
我是一名优秀的程序员,十分优秀!