Help us understand the problem. What is going on with this article?

DragonRubyで簡易タイピングゲーム

以前、DragonRuby GTK (Game Toolkit) で遊んでみた という記事を書きました。

QiitaにHello, Worldを投稿するとだいたい飽きる(!)のですが、今回は引き続き触っています。

ふと「タイピングゲームを作りたいな」と思ったので、その練習に単純なものを作ってみました。

作ったもの

tor.gif

テキストが表示されて、それを入力するだけです。
タイムオーバーとかもなく、ただそれだけです。

こちらのリンクからWebブラウザでプレイできます。
https://tnantoka.github.io/typing-on-rails/
※ Firefoxだとたまにエラーになります(ページ更新で解消するはず)

ソースコードはGitHubにあります。
https://github.com/tnantoka/typing-on-rails

タイプするテキストをRails Guidesのサンプルコードから借りたので、Typing on Railsという名前になっています。

Tips

基本的にはDragonRuby GTK (Game Toolkit) で遊んでみた の内容で作れるのですが、
一部書いてないものがあったのでメモしておきます。

背景色を変える

outputs.background_color[R, G, B] を設定すれば変更できます。

# 赤!!!
outputs.background_color = [255, 0, 0]

押されたキーの一覧を取る

前回使った inputs.keyboard.key_up.space でも入力状態は取れるのですが、
今回はキーの一覧を見る実装にしてみました。

入力されたキーはinputs.keyboard.key_down.truthy_keysで取得できます。

# aを入力
[:char, :raw_key, :a]

# A(Shift + a)を入力
[:char, :raw_key, :a, :shift]

# Command + Shift + aを入力
[:char, :raw_key, :a, :shift, :meta]

フォントによってLabelのサイズわりと違う

Labelsize_enumには -1010を指定できるのですが、同じ10を指定しても、フォントによって結構サイズが違います。

例えば、以下の4つのフォントを並べてみると…

Screen Shot 2020-06-20 at 14.10.57.png

こうなります。

使うフォントによって size_enum を調整する必要がありそうです。

公開したゲームが動かない

packageしたbuildをGitHub pagesで公開したら、動きませんでした。

原因は、

Server reported failure downloading 'app/.main.rb.swp'!

というエラーでした。
.gitignoreでGitは無視してくれますが、当然DragonRubyは無視してくれないので…。

builds/typing-on-rails-html5-0.1/manifest.json を見ると不要なファイルが含まれていることに気づけるかもしれません。
(今回の .swp ファイルもバッチリ入っていました)

まとめ

200行足らずで作れました。
(前回作ったPrimitives.rbの分は数えていませんが)
お手軽です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした