Cocos2d は2次元ゲームのフレームワーク.Python で動く. (Cocos2d から派生した Cocos2d-x は iOS や Android でも動き、普及している.)
このWebページでは、次の基本的なことを、見本プログラムで演習する.
関連する資料:Cocos2d の概要 [PDF], [パワーポイント]
関連する資料:ゲームエンジン[PDF], [パワーポイント]
関連する資料:Cocos2d のイベントハンドラ、アクション
【関連する外部ページ】 http://python.cocos2d.org/doc.html
謝辞
Cocos2d の作者に感謝します.
手順は,別ページ »で説明
インストールを行わず,Google Colaboratory を利用することもありえる. Google Colaboratory の使い方などは, 別ページ »で説明
Python プログラムの実行
【サイト内の関連ページ】 Python のまとめ: 別ページ »
import random import cocos from cocos import scene from cocos.layer import Layer, ColorLayer from cocos.director import director import pyglet from pyglet.window import key from time import sleep class MyActor(cocos.text.Label): def __init__(self, text, x, y, size, rgba): super(MyActor, self).__init__( text, font_name = "Times New Roman", font_size = size, anchor_x = 'center', anchor_y = 'center', color = rgba ) self.position = cocos.euclid.Vector2(x, y) class Layer00(Layer): is_event_handler = True def __init__(self): super(Layer00, self).__init__() self.myactor = MyActor("Hello,World!", 400, 240, 32, (0, 200, 255, 255)) self.add(self.myactor) director.init(width=640, height=480) director.run( scene.Scene( Layer00() ) )
* 演習問題: 「Hello World!」のところを書き換えて、表示されるテキストを変えてみなさい.実行ボタンを押して確認すること
* 演習問題: 「font_size = 32」のところを書き換えて、フォントサイズを変えてみなさい.実行ボタンを押して確認すること
キーボードのキーが押されたり、離されたりするというイベントが起きると、 self.keys_being_pressedに「いま押されているキー(複数可)」の情報を入れる
エディタの画面にコピー&ペーストして,実行ボタンをクリック.
import random import cocos from cocos import scene from cocos.layer import Layer, ColorLayer from cocos.director import director import pyglet from pyglet.window import key from time import sleep class MyActor(cocos.text.Label): def __init__(self, text, x, y, size, rgba): super(MyActor, self).__init__( text, font_name = "Times New Roman", font_size = size, anchor_x = 'center', anchor_y = 'center', color = rgba ) self.position = cocos.euclid.Vector2(x, y) class Layer00(Layer): is_event_handler = True def __init__(self): super(Layer00, self).__init__() self.myactor = MyActor("Hello,World!", 400, 240, 32, (0, 200, 255, 255)) self.keys_being_pressed = set() self.update_text() self.add(self.myactor) def update_text(self): key_names = [key.symbol_string(k) for k in self.keys_being_pressed] self.myactor.element.text = "Keys: " + ", ".join(key_names) def on_key_press(self, key, modifiers): self.keys_being_pressed.add(key) self.update_text() def on_key_release(self, key, modifiers): self.keys_being_pressed.remove(key) self.update_text() director.init(width=640, height=480) director.run( scene.Scene( Layer00() ) )
* 演習問題: 上の手順を行いなさい
エディタの画面にコピー&ペーストして,実行ボタンをクリック.
import random import cocos from cocos import scene from cocos.layer import Layer, ColorLayer from cocos.director import director import pyglet from pyglet.window import key from time import sleep class MyActor(cocos.text.Label): def __init__(self, text, x, y, size, rgba): super(MyActor, self).__init__( text, font_name = "Times New Roman", font_size = size, anchor_x = 'center', anchor_y = 'center', color = rgba ) self.position = cocos.euclid.Vector2(x, y) class Layer00(Layer): is_event_handler = True def __init__(self): super(Layer00, self).__init__() self.position_x = 0 self.position_y = 0 self.myactor = MyActor("Hello,World!", 0, 0, 32, (0, 200, 255, 255)) self.add(self.myactor) def update_text(self, mouse_x_pos, mouse_y_pos): self.myactor.element.text = 'Mouse is at %d,%d' % (mouse_x_pos, mouse_y_pos) self.myactor.x = self.position_x self.myactor.y = self.position_y def on_mouse_motion(self, x, y, dx, dy): self.update_text(x, y) def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers): self.update_text(x, y) def on_mouse_press(self, x, y, buttons, modifiers): self.position_x, self.position_y = director.get_virtual_coordinates(x, y) self.update_text(x, y) director.init(width=640, height=480) director.run( scene.Scene( Layer00() ) )
* 演習問題: 上の手順を行いなさい
エディタの画面にコピー&ペーストして,実行ボタンをクリック.
import random import cocos from cocos import scene from cocos.layer import Layer, ColorLayer from cocos.director import director import pyglet from pyglet.window import key from time import sleep class MyActor(cocos.text.Label): def __init__(self, text, x, y, size, rgba): super(MyActor, self).__init__( text, font_name = "Times New Roman", font_size = size, anchor_x = 'center', anchor_y = 'center', color = rgba ) self.position = cocos.euclid.Vector2(x, y) class Layer00(ColorLayer): is_event_handler = True def __init__(self): super(Layer00, self).__init__(155, 89, 182, 1000) self.myactor = MyActor("Layer00", 400, 240, 32, (0, 200, 255, 255)) self.add(self.myactor) def on_key_press(self, key, modifiers): director.replace(scene.Scene(Layer01())) class Layer01(ColorLayer): is_event_handler = True def __init__(self): super(Layer01, self).__init__(231, 76, 60, 1000) self.myactor = MyActor("Layer01", 400, 240, 32, (0, 200, 255, 255)) self.add(self.myactor) def on_key_press(self, key, modifiers): director.replace(scene.Scene(Layer00())) director.init(width=640, height=480) director.run( scene.Scene( Layer00() ) )
* 演習問題: 上の手順を行いなさい