- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试制作一个非常简单的点击计数器,但我坚持让点击计数器在屏幕上和代码本身中递增。
require 'rubygems'
require 'gosu'
module ZOrder
BACKGROUND, MIDDLE, TOP = *0..2
end
WIN_WIDTH = 640
WIN_HEIGHT = 400
class GameWindow < Gosu::Window
def initialize
super(WIN_WIDTH, WIN_HEIGHT, false)
@background = Gosu::Color::WHITE
@button_font = Gosu::Font.new(20)
@info_font = Gosu::Font.new(15)
end
def needs_cursor?
true
end
def draw
Gosu.draw_rect(0, 0, WIN_WIDTH, WIN_HEIGHT, @background, ZOrder::BACKGROUND, mode=:default)
Gosu.draw_rect(50, 50, 100, 50, Gosu::Color::GREEN, ZOrder::MIDDLE, mode=:default)
Gosu.draw_rect(50, 150, 100, 50, Gosu::Color::GREEN, ZOrder::MIDDLE, mode=:default)
@button_font.draw("Click me", 65, 65, ZOrder::TOP, 1.0, 1.0, Gosu::Color::BLACK)
@button_font.draw("Reset", 75, 165, ZOrder::TOP, 1.0, 1.0, Gosu::Color::BLACK)
@info_font.draw("Clicks: #{counter}", 160, 50, ZOrder::TOP, 1.0, 1.0, Gosu::Color::BLACK)
end
def counter
i += 1
i
end
def mouse_over_button?(mouse_x, mouse_y)
if ((mouse_x > 50 and mouse_x < 150) and (mouse_y > 50 and mouse_y < 100))
true
else
false
end
end
def button_down(id)
case id
when Gosu::MsLeft
if mouse_over_button?(mouse_x, mouse_y)
counter
else
counter
end
end
end
end
GameWindow.new.show
我知道我的问题很可能出在“counter”函数和“button_down”函数上,但是我一直无法弄清楚如何让它工作。任何帮助将不胜感激,谢谢。
最佳答案
您差一点就拥有了!您需要添加@counter = 0
来初始化。然后将您的 def counter
更改为如下所示
def counter
@counter += 1
end
为了让你的重置按钮起作用,我们现在可以制作另一个名为 def reset
的程序,如下所示
def reset
@counter = 0
end
然后为了使它全部正常工作,请将您的 def mouse_over_button?(mouse_x, mouse_y)
更改为以下内容:
def mouse_over_button?(mouse_x, mouse_y)
if ((mouse_x > 50 and mouse_x < 150) and (mouse_y > 50 and mouse_y < 100))
return_value = 1
return return_value
elsif ((mouse_x > 50 and mouse_x < 150) and (mouse_y > 150 and mouse_y < 200))
return_value = 2
return return_value
end
end
最后将 def button_down(id)
更改为以下内容:
def button_down(id)
case id
when Gosu::MsLeft
if mouse_over_button?(mouse_x, mouse_y) == 1
counter
elsif mouse_over_button?(mouse_x, mouse_y) == 2
reset
end
end
end
所有正确的想法都在那里!干得好!如果您不确定为什么要这样做,请告诉我,我很乐意进一步解释!希望我有所帮助:)
关于ruby - 使用 ruby/gosu 窗口增加屏幕计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575310/
最近我将我的 Guidewire 工作室从版本 8 升级到版本 9。从那时起,数据库查询在暂存器中运行时会抛出错误。相同的代码在版本 8 中工作正常。请在下面找到代码和错误。 代码 var objec
来自I gather , Gosu 只是 JVM 的 C#(这是一件好事)。这是真的吗? Gosu 和 C# 之间有什么区别(除了类库和它在 JVM 上运行的事实)? 最佳答案 我们没有将 Gosu
我的代码没有给出所需的输出并显示上述错误。 require 'gosu' def media_path(file) File.join(File.dirname(File.dirname(
我正在使用 Gosu 制作一个简单的游戏,但是我不想在我的游戏中使用外部 Sprite ,我宁愿使用代码绘制图像,是否可以像使用外部图像一样使用代码绘制的图像。 注意:我只想画基本的形状,比如正方形。
我想知道Gosu类和增强类之间的区别。因为我们在增强功能方面可以做的一切,那么我们在Gosu类中可以做到的也需要Gosu Enhancement。 最佳答案 Gosu类就像Java类一样。 使您感到困
我在 Guidewire (GOSU) 工作,我注意到互联网上没有太多关于这种语言的信息。在这里试试我的运气。 我正在 guidewire studio 中创建一个 GX 模型,我正在尝试映射一个属性
我一直无法将 Gosu 库中的文本居中放置在屏幕的绝对中间。 require 'gosu' class GameWindow < Gosu::Window def initialize (widt
我对 Gosu 不是很了解,所以这段代码让我很困惑。我用谷歌搜索等,但无济于事。这段代码中的反斜杠有什么作用? GET_STUFF.execute(\ -> { var gig = wit
它具体化了泛型……它是如何实现的?与 C# 的泛型有什么显着区别? 最佳答案 与C#泛型的区别:针对泛型类的不同实例化,C#在运行时生成类。 Gosu 没有:一个泛型类对应一个在运行时使用的类。类型信
Gosu 无法在我的 Mountain Lion (10.8.3) 上安装。这是我得到的错误: Building native extensions. This could take a while
我正在使用 Gosu gem 进行一些图形编程。问题是,当我创建一个窗口时,我的鼠标指针被隐藏了。我可以猜到鼠标在某个时刻的位置,我可以凭直觉点击,但我的用户可能不会。 如何显示指针? 最佳答案 如果
我正在尝试制作一个非常简单的点击计数器,但我坚持让点击计数器在屏幕上和代码本身中递增。 require 'rubygems' require 'gosu' module ZOrder BACK
我正在尝试在 FreeBSD 上安装这个 Ruby gem,但失败并出现以下错误: # gem install gosu Building native extensions. This could
我正在尝试在我的 Ubuntu 计算机上安装 Gosu。为了安装 gem,我尝试了“gem install gosu”,但我收到一条我无法理解的错误消息。它说“无法构建 gem native 扩展”。
Docker 总是有一个 USER 命令以特定用户身份运行进程,但通常很多东西都必须以 ROOT 身份运行。 我见过很多使用 ENTRYPOINT 和 gosu 来降低进程运行的图像。 我仍然对
我试着 gem install gosu 但我收到很多关于缺少头文件的编译器消息,包括 sndfile.h。是否有编译 gosu gem 所需的 debian 软件包列表? 最佳答案 见 https:
我坐在这里,我认为这是一个非常简单的错误,我只是想不通.. 我试图学习如何使用 Ruby 使用 Gosu gem 制作游戏,但遇到了减速带。这是我的代码。 require "gosu" class H
我想避免创建 switch case,而是使用 enum,但在编写以下代码时,我收到编译错误,提示 unexpected token public: public enum Status { IN
我在调用玩家的 x 位置和 y 位置时遇到问题。当我用 Projectile 类调用 origin_object.x 和 origin_object.y 时,它给我这个错误: asteroids.rb
我正在使用 Gosu 在 Ruby 中创建生命游戏。我的代码如下。现在,当我运行“ruby gosu.rb”时,它会打开具有适当尺寸的窗口,并按原样预填充 World。 但是一旦我取消注释“@game
我是一名优秀的程序员,十分优秀!