2018/11/18

Pythonでグラフィックやるには?

最近、仕事でPythonばかり使う羽目になっていて、ふと、

「Pythonで、ゲーム作ってる人いるのかな?」

と思ったので調べてみた。(ちなみに、"Python"? "python"? どっちだろう? HP見るとロゴが小文字で記述は大文字???)

まず、Pythonに、デフォで入っているグラフィックライブラリは、TkinterというGUIライブラリになる。
TkinterはPythonのTcl/Tkインターフェースにあたるものなので、あくまでGUIライブラリであり、ウインドウに対する基本的な描画機能しか持っていない。

とりあえず、WebにあったSampleを見ながら使ってみる。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from tkinter import *

class Application(object):
 def __init__(self):
  self.__tk = Tk()
  self.__cv = Canvas(self.__tk, width=640, height=400)
  self.__cv.pack()
  return

 def run(self):
  # 矩形描画
  self.__cv.create_rectangle(0, 0, 100, 100, fill="red")
  self.__cv.create_rectangle(100, 100, 200, 200, fill="green")
  # 線描画
  self.__cv.create_line(0, 0, 100, 100, fill="blue", width=5)
  self.__cv.create_line(0, 0, 400, 0, fill="yellow", width=5)

  self.__tk.mainloop()
  return

if __name__ == "__main__":
 app = Application()
 app.run()


って、ココログって、ソースコードがうまく入らないのね。preタグ使うと無茶苦茶になるし・・・。
Gitのマークアップでも、これより数段はマシなんですが・・・。
流石は、Niftyクオリティ。相変わらず地を這ってます。
あっ、インデントするために、空白は全角になってます。ソースを、そのままコピペするとえらーになるので注意して下さい。

で、結果はこんな感じ。
Sample1

さて、PythonのGameライブラリですが、

■ PyGame
■ PySDL2
■ PyOpenGL

あたりがあるらしい。
元々は、PyGameがデファクトみたいだったが、更新が止まっているようで、その後継がPySDL2なのだそう。
で、こいつらは、インストールしてやる必要があるのだが、dnfで探してみると、PyGameとPyOpenGLはPython3版があるらしので、とりあえずインストールした。

# dnf install python3-pygame

# dnf install python3-pyopengl*

でこちらも、WebにあったPyOpenGLのSampleを見ながら使ってみる。こちらも、インデントするために空白が全角になってますのでコピペは注意です。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from OpenGL.GL import *
from OpenGL.GLUT import *

class Application(object):
 def __init__(self):
  glutInit(sys.argv)
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) # 表示設定
  glutInitWindowSize(400, 400) # 画面サイズ
  glutInitWindowPosition(100, 100) # 画面の表示位置
  glutCreateWindow("TEST") # ウィンドウの名前

  glClearColor(0.0, 0.0, 0.0, 0.0)
  glMatrixMode(GL_PROJECTION)
  glLoadIdentity()
  glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0)
  return

 def draw(self):
  # 座標(0.25,0.25)から幅0.5,高さ0.5の四角形を描く
  x, y, w, h = 0.25, 0.25, 0.5, 0.5
  glClear(GL_COLOR_BUFFER_BIT)
  # 四角形の色(緑)
  glColor3f(0.2, 0.8, 0.2)

  # 四角形の頂点座標
  glBegin(GL_POLYGON)
  glVertex3f(x, y, 0.0)
  glVertex3f(x + w, y, 0.0)
  glVertex3f(x + w, y + h, 0.0)
  glVertex3f(x, y + h, 0.0)
  glEnd()

  glFlush()
  return

 def run(self):
  glutDisplayFunc(Application.draw) # 描画
  glutMainLoop()
  return

if __name__ == "__main__":
 app = Application()
 app.run()

で結果はこちら。
Sample2


なんとなく、OpenGLは使えそうな感じです。
注意点としては、Python3用なんで、

$ python hoge.py


では動かないことでしょうか。

$ python3 hoge.py


で動かして下さい。

| | コメント (0) | トラックバック (0)

2018/09/02

Mincraft 1.12.2でctrl+bで落ちる(undefined symbol: register_cmu_us_kal16)

多分、Fedoraだけで起こる現象で、ctrl+bやJEI/NEIを操作すると、Minecraftが落ちてしまい、ログを見ると、

・・・・/libfliteWrapper.so: undefined symbol: register_cmu_us_kal16

となっている。

これは、Fedoraにインストールされているfliteが古いために発生しているようだ。
flite(正確にはCMU flite)は英語用のナレーター(スピーチ・シンセ)のようだが、バージョンが古い場合、register_cmu_us_kalが指定されregister_cmu_us_kal16が定義されない場合があったと記憶していたので、とりあえず、ソースを持ってきてインストールしてみた。

検索してみると、fliteのライブラリ群は、Fedora 28の場合、/usr/lib64下にある、libflite*で有ることが解る。また、全てsoであり、シンボルリンクを辿ると、*.so.1.3がリンク元だと解る。要するに、バージョン1.3系である。

上記のfliteのページからダウンロードを辿ると、バージョン2.1が最新らしい(だが、リンクをクリックすると2.0が出て来る。URLの最後は2.0でなく2.1なので、手動で変更すると出てきます)ので、ダウンロードする。

ビルドの方法は、上記ページのドキュメント見ればわかるので、ソースをビルドしてinstallすればよいのだが、configureファイルは、--prefixでインストール先を設定しても、xxx/libに設定しようとするため、うまくいかない。そこでconfigureファイルを書き換えた。

libdir='${exec_prefix}/lib'→libdir='${exec_prefix}'

これで、インストール出来る

$ ./confiure --enable-shared --prefix=/usr/lib64
$ make
$ sudo make install'

ふむ、Minecraftは落ちなくなりました。

それにしても、「最新」が売りのFedoraにしては、バージョン古すぎでは?

| | コメント (0) | トラックバック (0)

2018/05/06

Gnome3に戻る

Gnomeは、デスクトップへのアイコン表示が、相変わらず出来ませんが、一応、戻しました。

起動時のメモリ使用量が、Gnome:1.6G/ Cinnamon:1.8Gだったためです。
(ちなみに、XFaceは1.2GBくらいでした、もう一声小さくしたいので、LXDEでも試してみますか)

それにしても、相変わらず、Fedoraはアップデートの度にやってくれますね。
特に、偶数番は・・・。
※過去において、奇数番号がついたリリースが安定版で、偶数番号がついたリリースがテスト版と言われた時期がありました。流石に、今はないと思いますがね。。。
まぁ、今やRHELのテスト版リリース扱いなので、奇遇関係なく、やらかしてますけど(笑)


| | コメント (0) | トラックバック (0)

原因判明

Gnome端末が動かないので、XFace端末から、Gnome端末を直接起動してみたところ、

$ gnome-terminal

おや? 「指定のLocaleはサポートしてないよ」というメッセージが出て止まってますな。。。

locale確認すると、ja_JP.utf8 なんだけど・・・・。
これは、アップデート時に、日本語サポートを入れなかった?
で、ググって、ここを見つけました。

とりあえず、以下を実行して再起動。おお、Gnome端末が立ち上がる、Gnome3で日付も表示されている!

$ sudo dnf install -y langpacks-ja

$ sudo dnf group install -y japanese-support

Cinnamonも、メニューが日本語化されてますね。mozcも使用可能です。

さて、どっちを使いますかねぇ。。。

| | コメント (0) | トラックバック (0)

ログアウトして切り替え可能だが、

とりあえず、Cinnamonで動かしてます。
Gnome3は、相変わらず日付けと時間が表示できず、デスクトップも表示不能。多分、Tweekが対応していないのかも。

Fedora Cinnamonは、日本語化がイマイチで、nemoのメニュー等まで英語になっており、使い勝手は、Gnome3と変わらないですね。

また、Gnome3、Cinnamon共にGnome端末が起動不能です。

とりあえず、Gnome3がマトモになるまでCinnamonを使いましょうかね。

そろそろ、Fedoraから離れるのも良いかも。

| | コメント (0) | トラックバック (0)

2018/05/05

で、Cinnamonはシナモンで。。。

ibusが動かず、日本語入力ができなかった。
メニューのi-bus設定を有効にして、再起動してみたのだが、ibus-mozcが動かない。。。
現在、kkcを使っているのだが、正直使いたくないよなぁ。。。

あと、Gnome端末が起動できない!
こっちは、前にXFaceを入れていたので、そちらの端末が起動でき、なんとかなった。


とりあえず、しばらくは、こちらで言ってみます。

| | コメント (0) | トラックバック (0)

Fedora28にアップデート

そんな時期です(笑)

で、ダウンロード30分弱、インストール2時間でアップデートしましたが・・・

案の定、Gnome3で問題発生。
①デスクトップのファイルが表示されない(まぁ、いつものこと)
②トップバーに日付、時間が表示されない

②は、とりあえず、Tweekを使うと時間と曜日だけ出力されましたが、リブートすると、また消えます。

相変わらず、

GNOME3は使えないな!

現在Cinnamonを導入中です。

| | コメント (0) | トラックバック (0)

2016/11/27

Fedora 25 が出たので その後(一部解決編)

うーん、なんだかなぁ。

一部の問題が解決しました。

① nautilusが動画サブネイルを作らない
はい、うんともすんともですね。~/.cache/thumbnailsを削除すると、ぜ〜んぶ、映画フイルムマークですわ(嘲笑)
で、原因はというと、/usr/share/thumbnailers の下に適当なスクリプトが無いためです。
いやホント、このディレクトリ見てみましたが、ほとんどナーンにも入ってませんでした。
で、昔の記憶が蘇ってきました。

そういえば、ffmpegthumbnailer てのがあったよね。

というわけで、早速インストールです。

$ sudo dnf install ffmpegthumbnailer

これで、ちゃんと/usr/share/thumbnailers下にもスクリプトが登録されます。
おおっ! サブネールが出始めました!!

で、解決。

② tint2(起動したウインドウのリストを画面下に表示する)がfirefox以外のアプリに反応しない
これは、正確には、端末やnautilusが出てこないよで、GNOMEで提供された以外のアプリは表示されます。
これは、場当たり的に解決しました。

まず、tint2をアンインストールし、gnome-tweak-toolの拡張機能でWindow Listというのがあったので、それをONにしました。これで、GNOME2のように下側にリスト表示がされます。

まぁ、これでも、まぁ、いいかなという事で解決。


駄菓子歌詞・・・、だがしかし、
デスクトップへのアイコン表示は相変わらず出来ません。
MATEやCinnamonでどうなるか試そうと、ディスプレイマネージャー をgdmからlightdmに切り替えたら、MATEやCinnamonで、あっさり表示されたのはいいのですが、この環境では日本語が使えない。
※正確には、入力メソッド(IM)が、うまく設定できず日本語入力が出来ない。

なので、これは、ちょっと様子見です。

| | コメント (0) | トラックバック (0)

そしてGNOMEは・・・

もう一つ、Fedora25の問題点、
tweak-toolで設定しても、デスクトップにアイコンが表示されません!

まったく、何がなんでも「Macしたい病」ですな。Gnomeって、まさに死体化している気がする・・・。

| | コメント (0) | トラックバック (0)

Fedora 25が出たので

久々のFedoraの話題

かなり前に、Core2Duo搭載のマシンが悲鳴を上げたので、PCを交換しました。
で、プレインストールされていたWindows10を潰して、ubuntuの12LTS入れてみたのですが、画面周りがマズイらしく、何をやっても、1024x768以上が表示できない状態でした。

その他にも、いろいろと不具合があったので、Fedora23に乗り換えて問題解決となりました。

で、Fedora 25が出たのでFedora 23からアップデートしました。

とりあえず、一通りは動いているのですが、いくつか問題点が出ています。

① nautilusが動画サブネイルを作らない
② tint2(起動したウインドウのリストを画面下に表示する)がfirefox以外のアプリに反応しない

です。
そういえば、前にFedoraをアップデートした時も①が出ていたような。ubuntuもか・・・
Fedoraチームって、こうゆうの試さないんですかね。毎度の事ですが気が利かない。まぁ、売り物(RHL)では修正してるんでしょうが、アプデの都度、調整がいるようでは、Windowsに勝てないよねぇ。

②についてはGNOME3の「Macしたい病」で、GNOME2にあったのに、外されてしまった機能を補完しているのですが、何か変になってます。

うーん、これらって、GNOME使わなければ大丈夫な気がしてきたぞ・・・・。

| | コメント (0) | トラックバック (0)