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年07月14日

Cataclysm:DDA を 32bit Linux でコンパイル

前回の続き。make の引数を追加することで、日本語化できました。 ビルドとコンパイルの違いがいまいちよくわかってない。 以下、手順です。

lua がインストールされていない場合は以下の三行を実行する。 lua を使わない場合は不要。

sudo apt install lua5.2

sudo apt-get install liblua5.2-0-dev

sudo apt install luajit

clang が速いらしいので、今回はこっちを使ってみる。 使わない場合、既に入っている場合は必要のない一行。

sudo apt install clang

SDL2 をインストールする。

sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev

最新版をダウンロードし、コンパイルする。 CLANG=1 で clang、無い場合は gcc を使うのだと思う。 LUA=1 が無いと、lua で書かれた MOD が使えなくなる?-j オプションは、シングルコアだし古い PC だしということで使わなかった。

git clone --depth 1 https://github.com/CleverRaven/Cataclysm-DDA.git -b master --single-branch

cd Cataclysm-DDA/

make NATIVE=linux32 RELEASE=1 TILES=1 SOUND=1 LOCALIZE=1 LANGUAGES="ja" CLANG=1 LUA=1

起動。

./cataclysm-launcher

今回も、コンパイルに 50 分かかった。

CataclysmTitleJP.png

日本語化に成功。

CataclysmStart.png

タイルも表示されているし、音も鳴る。ただ、日本語入力ができない。よくある事だけど。

参考ページ

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

2018年07月12日

Cataclysm DDA をビルドしてみた

18/07/14 追記
この記事は不完全なので、もしコンパイルの参考にされる場合、次回の記事をご覧ください。
追記終わり。

Cataclysm という Roguelike が気になっていたんですが, 規模が大きそうだったので, いままで敬遠していました. 最近になって手を出してみようと思ったのですが, 32 Bit Linux 版だけは更新されていないようです. Win 機が不調なため, 主に古い Linux 機を使用しているのです. 1 週間程度, 古いバージョンで遊んでいたんですが, 最新版をやってみたくなり, 最新版(多分)をビルドしてみました. 約 50 分もかかったので, またビルドすることがあるかどうか微妙ですが, 手順をメモしておきます.

sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev

git clone --depth 1 https://github.com/CleverRaven/Cataclysm-DDA.git -b master --single-branch

cd Cataclysm-DDA/

make -j2 TILES=1 RELEASE=1

SDL2 をインストールしている最初の一行は一度だけでいいはず. 引数の -j の値はコア数 *2 にするといいとあったけど, シングルコアの場合はどうなんだろう.

./cataclysm-launcher

で起動します.

CataclysmTitle.png

Language を日本語にしても日本語にならない. 開発版の日本語化方法 を見つけたけど, これでもダメだった. どこを変更すればいいんだろうか.

参考ページ

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

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