2018年01月29日

Processing 起動時のFocus



レンダラがデフォルトの JAVA2D の時のみ確認できた現象なんですが、起動時にウィンドウがフォーカスを持っていたり失ったりと、安定しません。環境によるかもしれませんが、このコードを何度も実行すると、私の環境ではそうなりました。そこで、確実にフォーカスを持たせることにしました。



こうすると、(多分)確実にフォーカスを持ってくれると思います。

ラベル:Processing
posted by Takenoko at 19:49| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2018年01月06日

Processing で CTRLを押しながらキーを押したかどうか判別する

最近、Processing を始めました。これ、いいです。Java の経験があればスムーズに書けると思います。

で、タイトルの方法について、試行錯誤していたら解決できたので、書いておきます。バージョンは 3.3.6 です。



引数なしの keyPressed() ではなく、これを使います。
CTRL を押しながら z を押すと true が、それ以外の場合は false が出力されます。KeyEvent のメソッドで、Shift, Alt などでも取得できそうです。そっちは試していませんが。

18/01/07 追記 : スーパークラスのメソッドを呼ぶ必要があると思っていたが、呼ばなくても動いたので一行削除。

ラベル:Processing
posted by Takenoko at 20:27| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2017年12月07日

また、Java でダンジョン自動生成

dg171124_1.png

また、ダンジョン自動生成です。 以前 よりは自然な感じになったかなあと思ってます。GUI の英語は適当です。ラベルにマウスオーバーすると、値の最小と最大、場合によっては簡単な説明が表示されます。

dg171124_2.png dg171124_3.png

dg171124_4.png dg171124_5.png

生成方法ですが、簡単に言うと、

  • 1. 最初の部屋を作る
  • 2. 今まで作った部屋をランダムに選択する
  • 3. その部屋の周囲に部屋を作れそうであればドアと部屋を作る
  • 4. すでに部屋があった場合、設定した確率でドアを追加する
  • 5. 作成した面積が設定した値を超えたら終わり
  • 6. 2 へ

説明が下手ですがこんな感じです。考え方は 以前 と同じです。

ソースと実行jarのダウンロード
実行には java8 が必要です。

将来的には Swing が廃止されるらしい。いつの事かはわからないけど、FX に移行したほうがいいんだろうか。でも、まだ情報が少ないだろうし。

posted by Takenoko at 21:44| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2017年11月07日

簡単にロゴを作れるソフト、LogoMaker を作りました

scr_lm2.png

このスクリーンショットのような、簡単なロゴを作成できるツールを作りました。自分で使うために作ったのでマニュアルは書いてませんが、そんなに複雑な機能はないので、大丈夫だと思います。疑問やバグなどがあればコメントして下さい。

scr_lm1.png

こういった、複数行の文字列画像も作れます。

ダウンロード

実行には Java8 が必要です。ソースファイルも同梱してあります。

17/11/08 19:56 追記 zipファイルにマニュアルを追加して、差し替えました。lm.jar を実行することで起動します。manual.txt が簡単な説明書きです。

posted by Takenoko at 22:38| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2015年09月08日

bdf2bmp をコンパイル

bdf2bmp をコンパイルしようとしたところ、エラーが出た。cc ではダメなのかと clang にするもエラー。"‘getline’ と型が競合しています"と表示される。stdio.h に同名の関数があるらしい。そこで、bdf2bmp.c 内の getline を全て getline2 という適当な名前に置換すると無事成功。このソフトの最終更新が 2001 年なので、その間に関数が追加されたのだろうと思う。
ラベル:font C software
posted by Takenoko at 23:38| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2015年09月01日

壁のばし法で迷路生成してみた 続き

昨日の壁のばし法で迷路生成してみたでは、壁を伸ばす方向をランダムに選んでから、時計回りに判定していたんですが、それだと確率が偏ってしまうことに気づきました。配列をシャッフルして方向を選ぶ方式にしたので、今度は偏らないと思います。

maze_bl2.png

maze150831.zip

実行ファイルとソースファイルが入ってます。GUI も少しだけ手直ししました。

posted by Takenoko at 08:23| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2015年08月31日

壁のばし法で迷路生成してみた

maze_bl.png

maze_th.png

壁のばし法で迷路を生成するコードを書きました。伸ばす先が無くなるまで伸ばす方法と、その前に違う壁を伸ばす方法があるようですが、今回は前者の方法を使いました。以下は迷路生成部分のコードです。



今回は、コメントも書いて見ました。ここに載せていない GUI 部分には書いてませんが。乱数は XorShift を使っていますが、java 標準の乱数でもいいと思います。

maze150830.zip

実行ファイルとソースファイルが入っています。

続きを読む
posted by Takenoko at 08:26| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2015年03月13日

GlassPane でアニメーション

タイトルの通り。忘れないようにソースをここに。Java の Package 名は単数形でいいらしい。this は省略したほうがよかったかも。


15/03/19 追記
GlassPane は JComponent でいいらしいので修正した。

ラベル:java
posted by Takenoko at 23:40| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2015年02月01日

Java でダンジョン自動生成してみた 続き

Java でダンジョン自動生成してみた の続きの記事です。

解説はいずれ書きます。

一年経ちましたが、嘘はついてないし。

dun_gene.png


この、区画分けをしないダンジョン生成法は、

  • A. 部屋を一つ作る。
  • B. 部屋を一つ作り、ランダムに選択した部屋と通路をつなぐ。
  • C. B を繰り返す。
  • D. ランダムに選んだ二つの部屋をつなぐ。
  • E. D を何度か繰り返す。
という単純なやり方になっています。この方法は、通路を繋ぐ際、途中で他の部屋や通路に接触した時点で部屋が孤立しない事が保証されます。

実行ファイルとソースファイルをダウンロード

相変わらずマニュアルは書いていませんが、右側の『生成条件設定』の項目名にマウスを合わせると、簡単なツールチップが表示されます。

以前のコードは、java のレイアウトについて理解していなかった事もあり、linux だと表示が崩れたんですが、今回は環境によらずに表示されると思います。この PC 以外では試していませんが。

posted by Takenoko at 20:17| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2014年11月22日

JTextPane で、String 追加直後に一番下までスクロール

今までは Eclipse を使って java を書いていましたが、Eclipse が、というかWindowBuilder が非常に重いので、最近はテキストエディタで書いてます。まあ PC の性能が足りないせいなんですが。

JScrollPane 内の JTextPane を下までスクロールする方法はいくつかあるようですが、そのどれも、String を追加した直後に普通にスクロールさせると、最下のほんの少し手前までしか行きません。それで悩んだのですが、EventQueue.invokeLater を使うとうまくいきました。以下はサンプルです。



JTextPane 以外でもこういう現象は起こるかもしれません。その時は invokeLater を使えば解決できるかもしれません。invokeLater についてはまだよく理解できていません。
posted by Takenoko at 20:25| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。