2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-06-27

以前、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の分は数えていませんが)
お手軽です。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?