その時々

その時々で違うんです。特に決まっていないんです。

PygameでAndroidアプリ作成

Pygameを使ってAndroidアプリが作成出来ることが分かったのでメモ。

環境

・Ubuntu11.04
・xoom

事前に入れとくもの

・python2.6 or 2.7
Android SDK
Java JDK
Apache Ant
python-pygame
python-jinja2

環境設定

JAVA_HOMEの設定

JAVA_HOMEのパス確認方法

$ dpkg -l | grep java # jdkのパッケージ名確認
$ dpkg -L sun-java6-jdk

.bashrcに追加

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26

反映

$ source ~/.bashrc
ADV Managerのシンボリックリンク作成
$ cd /usr/bin
$ sudo ln -s ~/android-sdk-linux_x86/tools/android android

android-sdkがhome直下にあるものとする

Ubuntu上でpygameテスト

ここを参考にmain.pyを作成
http://www.halb-katze.jp/pygt/pygt0500.html

char.bmpも一緒に入れておく

main.py

# -*- coding:utf-8 -*-
import pygame
from pygame.locals import *

SCR_W = 200 # 表示ウィンドウの横幅
SCR_H = 100 # 表示ウィンドウの縦幅

def main():
    pygame.init() # pygameの初期化
    screen = pygame.display.set_mode( (SCR_W, SCR_H) ) # 画面を作る
    pygame.display.set_caption('Hello pygame') # タイトル

    image = pygame.image.load('char.bmp') # 絵を読み込む
    image = image.convert() # 環境にあわせ最適化
    imagerect = image.get_rect() # imageのrectを取得
    clock = pygame.time.Clock()

    while 1:
        clock.tick(60) # keep the 60 fps
        screen.fill((0,0,0)) # 画面のクリア
        screen.blit(image, imagerect) # 絵を画面に貼り付ける
        pygame.display.flip() # 画面を反映
        imagerect.x += 1 # 画像を移動
        for event in pygame.event.get(): # イベントチェック
            if event.type == QUIT: # 終了が押された?
                return
            if (event.type == KEYDOWN and
                event.key  == K_ESCAPE): # ESCが押された?
                return

if __name__ == '__main__': main()

テスト

$ python main.py


こんな感じで出来る。

Pygame Subset for Androidを使ってテスト

配布するのでなければPygame Subsetを使えば簡単に出来る。
AndroidマーケットからPygame Subsetを端末にインストール
後述のapkのみ作成するならPygame Subsetはいらない

Ubuntu上でゲーム名(ここではmygame)のディレクトリを作成
その中に次の4つのファイルを作成
android.txt

title=Pygamedesu
author=Pygame Subset for Android
api=1
orientation=portrait

orientationはportraitかlandscapeを指定
横か縦かってこと

・icon.png
イコン画像。なければデフォルトのものになる

・.nomedia
空ファイル

・main.py
本体。名前は常にmain.pyにすること
今回は、さっき作ったものをそのまま使う。
なのでchar.bmpも同じディレクトリに入れておく。

ファイルの準備が出来たら端末をUSBで繋いで、ファイルを転送する。

$ adb push mygame /sdcard/pygame/mygame

Android端末上でPygame Subset for Androidを起動すると、リストの中にmygameがあるので選択すると実行出来る

apk作成

Pygame Subsetを介さない場合はapkを作成する。

pygame-packageを準備

http://pygame.renpy.org/dl/
ここからpygame-package-0.9.3.tar.bz2をDL・解凍

スプラッシュ画像の準備

スプラッシュ画像を準備しておかないとpygameデフォルトのスプラッシュ画像になる
jpegで適当なのを準備
pygame-packageの解凍したディレクトリに置く

debug
./build.py --dir ../mygame --name "mygame1" --package com.domain.exsample --version 1.0 --presplash splash.jpg debug

エラーが出なければ、端末をUSBで繋いで

./build.py --dir ../mygame --name "mygame1" --package com.domain.exsample --version 1.0 --presplash splash.jpg install

これで完成。

署名なしのapkは

./build.py --dir ../mygame --name "mygame1" --package com.domain.exsample --version 1.0 --presplash splash.jpg release

で出来る



参考サイト
http://www.halb-katze.jp/pygt/
http://pygame.renpy.org/
https://forums.ubuntulinux.jp/viewtopic.php?id=5970https://forums.ubuntulinux.jp/viewtopic.php?id=5970
https://forums.ubuntulinux.jp/viewtopic.php?id=5970