RSS

GTK+でプログラミング

GTK+を使ってゲームを作ってみた。

まずダウンロード元を紹介するがgithubなのであとはまかせた。 ( takaki/gsvolley - GitHub )

さて今回はGTK+のプログラミングをやってみようという試みである。GTK+自体は随分と昔に…1.0ぐらいのときにごちゃごちゃやったことはある。結局Hello World++ぐらいしかやらなかったのだが。今回はある程度真面目にやってみた。作ってみたのはミニゲーム。オリジナリティは全くない。昔ベーマガで見たことがあるものを記憶を頼りに実装したものである。

以前 X11プログラミングを勉強をしたときに Xlib だけで書いたことがある。今見るとかなりひどいソースなんだがそれをさらにGTK+に移植したとも言える。

Anjutaの導入

今回はAnjutaを使ってみた。今まではIDEなんぞ使わずEmacsで…ということを続けていたのだが便利かと思って使ってみた。まあ、確かに便利だ。今まではIDEのエディタの操作にイライラすることに耐えられなかったのだがまずまず問題なく使える操作性だった。さてIDEの本分だが…ファイルをプロジェクトに追加すると automake や autoconf のファイルが自動的に更新されるあたりは便利だ。コードの補完機能もまずまず参考になった。リファクタリングに使える機能はまだ不十分だと感じる。変数の名前変更もできない。Eclipseでできるところまでは遠いか…。

GTK+

まず 2.24 で作ってみた。いや、Wizardが2.xにしか対応してなかっただけなんだけど。

まず描画は cairo を使ってくれということに。Gdkでごちゃごちゃやった記憶があるが今は違うようだ。難しいのかと思ったらあっさり。expose-eventのところでwidgetからgdk_cairo_create でcairo_t を引っ張り出せばあとは描画APIを普通に使っていくだけだった。愛想のないゲームなんでトップレベルのウィンドウしか作らないので非常にシンプル。ロジックでごちゃごちゃはあっても widgetの関係で困ることはかった。

3.0

一通り完成してから 3.0 に移植を開始。configure.ac を書き直して 3.0 を見るようにする。そこでコンパイル…。ふーむ、private扱いになった構造体を直接見ちゃダメとか変化があった。調べよとしてもドキュメント自体が間違った書き方になっていたり…。まだまだだなあ…。あとはexposeイベント が廃止になっていた。おーい。drawイベントを使ってってなんか書き方が違うぞ。挙動が変わるぞ。ちょっと悩みながらも 3.0 への移植は無事終了。