【未完成】ジェスチャ入力 - Kivy Advent Calendar 2013

(※編集中です...) Kivyはジェスチャ認識のライブラリも持っています。 サンプルコード (https://github.com/kivy/kivy/tree/master/examples/gestures) もあり簡単なテストができますが、これは4種類の一筆書きシンボル(check、circle、square、cross)を固…

cymunkを使って雪を降らせる - Kivy Advent Calendar 2013

cymunkは2次元物理エンジンChipMunk (http://chipmunk-physics.net/) のCython実装で、KivyLauncerにもデフォルトで入っています。 https://cymunk.readthedocs.org/en/latest/ オブジェクトの重力、衝突、弾性の計算処理をやってくれるもので、cymunkのサン…

スクリーンショットを撮る/タイマーを使う

端末のスクリーンショットを撮る機能、Nexus7-2013では[電源]+[音量小]を同時に0.3秒くらい押すと撮れますが、まあこれがやりにくい。失敗してボリューム表示まで撮れてしまったり… Kivy自体にもスクリーンショットを取る機能があって、「from kivy.modules…

【未完成】RPG風にキャラクタを動かす (2) - Kivy Advent Calendar 2013

今度は「背景がスクロール+キャラクタが足踏み」で移動しているように見せます。背景をScrollViewにして、これをAnimationでコントロールできるかどうか、という実験です。 FloatLayout (背景) Image (キャラクタ) ... 位置&画像を変更 ↓ FloatLayout Scro…

イベント処理 - Kivy Advent Calendar 2013

相変わらずネタ切れ/時間切れで申し訳ないです。イベント処理の問題で少し加筆 (http://d.hatena.ne.jp/cheeseshop/20131205) したので、その件で少し書くことにします。 Kivyのイベント処理は、各ウィジェットクラスが「あるタイミング」で「イベントに結び…

KivyLauncherとSL4A+Py4Aの比較 - Kivy Advent Calendar 2013

さて今回KivyLauncherをいろいろといじってきましたが、2年前はSL4A+Py4Aをいろいろと試していました。 http://d.hatena.ne.jp/cheeseshop/20110326 http://d.hatena.ne.jp/cheeseshop/20110226 http://d.hatena.ne.jp/cheeseshop/20110225 となると、この2…

RPG風にキャラクタを動かす - Kivy Advent Calendar 2013

Animationオブジェクトの実験ですが、無駄にゲーム機っぽいインタフェースにしてみました。 でもA/B/X/Yキーはダミーです。動くのは上下左右キーだけ。 エラーチェック何もしてませんので、平気で画面外へ出て行っちゃいます... ※spellyonさんのサイト「点睛…

アプリからKivyLauncherを呼び出す - Kivy Advent Calendar 2013

Android/pyjniusばっかりは飽きたって? ごめんなさい。今回で最後にします。 KivyLauncherを使っていて今とは別のアプリを実行したい場合、終了させるとHome画面に戻って、再度KivyLauncherを立ち上げないといけないですよね。 結構気になりますよね? はい…

Androidアプリを一覧表示 - Kivy Advent Calendar 2013

本当はアプリ起動まで持って行きたかったんですけどねー。ちょっと時間的に無茶でした… 現状はAndroidアプリの一覧を表示するだけです。まあソートしてないので、起動できたところで使いづらいったらありゃしませんが… しかしAndroidのパッケージマネージャ…

pyjniusを使ってWebブラウザを起動 - Kivy Advent Calendar 2013

ボタンを押すとブラウザで特定のWebページを開くだけ。 from kivy.uix.button import Button from kivy.app import App from jnius import autoclass, cast class BrowserApp(App): PythonActivity = autoclass('org.renpy.android.PythonActivity') Intent …

テキストの共有 - Kivy Advent Calendar 2013

風邪を引いてしまいました。 体調が復帰してから解説書きます。ごめんなさい... (/sdcard/kivy/sender/) android.txt お約束 main.py スクリプト本体 fonts_ja.py 使い回し (android.txt) title=sendere author=cheeseshop orientation=portrait (main.py) #…

pyjniusを使って写真を撮る - Kivy Advent Calendar 2013

KivyにはCameraというウィジェットがあるのですが、これは写真撮影ではなくて動画を画面上に映すものでした。しかもAndroidでは未実装とのこと。仮にこれが動けばスクリーンショットを取る機能と組み合わせて写真撮影できなくもないですが... できれば内蔵の…

pyjniusを使って喋らせる - Kivy Advent Calendar 2013

今回は日本語を喋らせるので、N2 TTS (https://play.google.com/store/apps/details?id=jp.kddilabs.n2tts) をインストールしてください。 さあ、今年の流行語大賞は...? いやまあ、単に「へぇーボタン」の拡張版だったりするんだけど… (/sdcard/kivy/speec…

twistedを使ってFTPサーバを立てる - Kivy Advent Calendar 2013

PCとAndroid端末とのファイルのやり取りには、USBつなぐのも面倒なのでDroidOverWifi (http://www.droidoverwifi.com/) なんかを使っています。いわばファイル編集機能特化のHTTPサーバです。 でもKivyLauncherだってtwistedが入っているんだし、それを使っ…

atlasを使って画像表示 / ドラッグで移動可能なウィジェット - Kivy Advent Calendar 2013

何となくカードゲームを作ってみたかったので、カードの画像が1枚に収まってる素材を探してきて、それをatlasで表示してみます。 カードはドラッグで移動させたいので、Scatterをあわせてみました。 ランダムにばらまいてみました。まだ全然ゲームにはなって…

別のアプリを使ってから復帰する - Kivy Advent Calendar 2013

KivyLauncherでテキスト入力だけのアプリを作り、何か入力してから別のアプリに切り替えてみます。しかしその後KivyLauncherに戻ってもランチャ画面になってしまい、入力した内容は失われてしまいます。 (main.py) from kivy.app import App from kivy.uix.t…

画面を転換する - Kivy Advent Calendar 2013

5日目にCarouselを使いましたが、これはユーザのスライド操作で複数のウィジェットを見せていくことができます。これに対しScreenManagerは、それ自体はスライド操作を受け付けませんが、フェードイン、ワイプなどのさまざまな効果を持たせた画面転換ができ…

ポップアップ - Kivy Advent Calendar 2013

(※ビルドの話をしましたが、再びKivyLauncherで出来る範囲での話に戻ります) 5日目の「スライドっぽい...」でも使ったので、今回はポップアップについて解説します。 Kivyの中で、ポップアップに当たるものは次のようなものがあります。 Popup タイトルバー…

Python for Androidのビルド (2) - Kivy Advent Calendar 2013

VMも動いたのでいよいよビルド作業に入りますが、その前にやっておく作業があります。 ビルド環境の修正 基本的にこのVMイメージは初期状態でPython for Androidのビルドに必要なコマンドはすべてインストールされているため、apt-getやyumで環境構築する必…

Python for Androidのビルド (1) - Kivy Advent Calendar 2013

(※Python for Androidは後半の記事ですが、時間切れのため先行して公開します) KivyLauncherではopensslやPILなどのモジュールが導入されていて、せいぜいWebサーバと連携して何かやる程度の軽いアプリならあまり困らないのですが、それでも自分でモジュール…

【修正】スライドっぽいものを作る - Kivy Advent Calendar 2013

Carouselというウィジェットは、ドラッグしてウィジェットを次々と表示できます。すでに2日目 (Tofu issue) で何の解説もなく使ってますが... これとRstDocumentを組み合わせればスライドっぽいものができますね。 ということで作ってみました。横方向にスラ…

アプリケーションの設定画面 - Kivy Advent Calendar 2013

Kivyでアプリケーションを起動した後、F1キーやメニューボタン等の操作をすると設定画面が表示されます。これはKivy自体の設定画面で、エラーログのオンオフ、ダブルタップのタイミングなどの調整ができます。この設定画面は、アプリケーション用にカスタマ…

QRコード作成 - Kivy Advent Calendar 2013

※「QRコード」はデンソーウェーブの登録商標ですPython for Androidの中の「recipes」フォルダには、ビルドして組み込むためのモジュールが多数収められていますが、なぜかこの中にPythonで書かれているのでビルドの必要がないモジュールも含まれています。p…

Tofu issue 日本語フォントの表示 - Kivy Advent Calendar 2013

さて、Kivyで一番残念に思うのは日本語がトウフになることでしょう。多くのプラットフォームは日本語フォントを持っていますし、Androidも4.0からは日本語フォントがシステムフォントとして取り込まれています。しかし、いくら日本語フォントを持っていても…

ファイル選択ダイアログ - Kivy Advent Calendar 2013

去年 @ytakeuch さんがブログ「人は歴史を創り出し、人は歴史を語り継ぐ」で「Kivy Advent Calendar」を書いておられました。今年は、それを引き継いで私も書いてみようかなと思います。タイトルは「Kivy Advent Calendar 2013」とします。メインターゲット…

テキスト端末のサイズを調べる

25日間やって今さら気づいたのですが... 海外のプログラマやオタクのページ見てたら、「Twelve days of blah blah: Day n」とか言って12月13日から12日間だけやってる人もいるんですね。 なんだー、25日間も頑張んなくていいじゃんか。 いやもうadvent calen…

シーケンスの順番を維持したままuniq化する

リストの順番を維持したままユニーク化(=後に出てくる同じ要素はカットする)を行う方法です。 >>> # (Python 2.6) >>> L = [5,2,6,5,2,3,6,1,4,2] >>> list(set(L)) [1, 2, 3, 4, 5, 6] >>> [x for x in L if x not in locals()['_[1]'] ] [5, 2, 6, 3, 1…

簡単なゲーム木探索

もはや裏技とか関係なく、単なるPythonネタのお蔵出し(私が大昔にやった趣味のBASICプログラミングの焼き直し)になってしまいますが、簡単なゲームを作ってみることにします。 ゲームといっても、PCで完全読み切りをやっても数秒で終わるくらいの軽いもの…

a or b or c or ... 続き

(えー、ネタが思いつかないのでコメントネタで) 以前最初の真値を返すというので next(ifilter(None, iter(x)), None) てのをやりましたが、これって厳密には「a or b or c or ...」と仕様が違うんじゃね、というコメントいただきました ...まあ、そうなんで…

既存クラスにメソッドを追加

Rubyっぽく、datetime.dateにtomorrowメソッドを追加してみたり。 from datetime import date as _date, timedelta class date(_date): def tomorrow(self): return self + timedelta(days=1) doomsday = date(2012, 12, 21) print doomsday.tomorrow() 2012…