2019年04月15日

kivy 一行TextInput の高さを font_size から計算して設定する

タイトルの通りです.



これで, 文字列が Left, Middle に表示されるはずです.
ラベル:Python kivy
posted by Takenoko at 15:27| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2019年04月12日

kivy ListView のアイテムが選択された時の処理を追加 続き


listadapter2.py


main.py


main.kv


ListAdapter を継承したクラス, ListAdapter2 を別ファイルに記述し, 引数を関数にして, 使い回せるようにしました. いいクラス名が浮かばなかった. SelectableListAdapter にしようかと思ったけど, 元々選択はできるわけだし. callback という単語はよく見るけど, 意味はよくわかっていません. こういう使い方でいいんだろうか.
ラベル:Python kivy
posted by Takenoko at 14:17| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2019年04月09日

kivy ListView のアイテムが選択された時の処理を追加

タイトルの通りです. アイテムの選択状態を Label に反映するサンプルです.

main.py


main.kv


19/04/12 追記: 続きを書きました.
ラベル:Python kivy
posted by Takenoko at 14:59| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2019年03月27日

kivy クラスルールと継承

クラスルールは, それを継承するクラスにも適用される.



この場合, Label を継承している Button の font_size も 24 になってしまう. ルールは上から順に適用され, 競合する場合は下のルールで上書きされるため, Label と Button の順序を逆にすれば問題ない. 当たり前の事かもしれないが, このことに気づかず, しばらく悩んだので.

19/04/02 追記: タイトル変更, 文章を少し修正.
ラベル:kivy
posted by Takenoko at 14:57| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2019年03月26日

python で迷路生成

maze256_2.png
毎回, 始点をランダムに選択した場合

0_2.png
可能な限り, 伸ばした先の点を次の始点にする

maze128_2.png
ランダム

以前に java で書いた迷路生成するコード を, 伸ばす度に始点を変更するかどうかの判定を追加し,  python に移植してみました. gui は kivy です. ソースファイル . linux と android(kivy launcher) で動作を確認しています. main.py が gui, test.py が cui です. test.py は kivy を使っておらず, python のみです.

kivy での画像生成やアニメーションの方法を覚えるために作ったので, 迷路の生成は重要ではないんですが, python2 と 3 で, 生成にかかる時間が数倍から十倍程度違うのが気になります. python2 の方が非常に遅い. 3 より 2 のが速いらしいんですが.

19/03/27 追記 : ソースファイルを差し替え. ループのネストを一つ減らしてみたり, 配列シャッフル用の配列を使いまわしたりしてみたが, 変わらず. python2 のサポート期限は 2020 年らしいので, まあいいか...
19/04/12 追記: ファイル名追加. 画像差し替え.

mazegenerator.py

xorshift128.py
ラベル:Python kivy 迷路
posted by Takenoko at 14:17| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2018年02月18日

java でコンポーネントを使わずにテキスト折り返し

タイトルの通りです。半角と全角を区別して、指定した幅で改行します。

WordWrapper.java


WordWrapCreater.java(json で設定するためのクラス)


wordwrap.json(WordWrapper のコンストラクタを使う場合は不要)


WordWrapTester.java(テスト用)


ソースコードとjarファイルのダウンロード

javadoc も頑張って書きました。
wordWrapToString で String が、wordWrapToArray で String の配列が得られます。引数については、getter/setter の javadoc で多分わかると思います。

インスタンス化の手段は二種類あります。json で設定を書く必要がなければ WordWrapper.java だけでいいです。json を使う場合は、jackson を使用しているため、Group: com.fasterxml.jackson.coreにある jackson-annotations-(バージョン).jar, jackson-core-(バージョン).jar, jackson-databind-(バージョン).jar をダウンロードし、外部ライブラリのインストールに書いてある方法などで参照できるようにする必要があります。WordWrapTester.java はテスト用とコンストラクタの設定例なので、実際に使う場合には必要ありません。

18/02/20 追記
trim部分を修正。ダウンロードを追加。

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

2018年02月05日

Processing 解像度を変更してフルスクリーンにする

タイトルの通りです。3.0 以降ではFullScreen API が使えないらしいので、なんとかしてみました。fullScreen() だと、解像度がそのままなので。バージョンは 3.3.6 です。



ESC キーで終了し、解像度が元に戻ります。レンダラがデフォルトの JAVA2D の場合のみですが、これで解像度を変更してフルスクリーンにすることができると思います。それ以外のレンダラだと、エラーが出るはずです。試してませんが。

参考ページ

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

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 | このブログの読者になる | 更新情報をチェックする