SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

レトロ風ゲームを作って学ぶPython入門

【作って学ぶPython】クラスとスプライトを学んでメンテナンスしやすいコードを書こう!

レトロ風ゲームを作って学ぶPython入門 第6回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 自動化やAIなどさまざまな分野で活用され、需要が高いPython。この連載では、小さなレトロ風ゲームを作りながら、Pythonを学ぶことができます。第6回は、応用編です。クラスとスプライトについて学びます。これを覚えることで、よりメンテナンスをしやすいプログラムを書くことができるようになります。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 前回は、非常に小さなレトロ風RPGの、バトル画面を作りました。今回は、Pythonのクラスと、Pygameのスプライトについて学びます。

クラスとインスタンス

 クラスは多くのプログラミング言語に存在している仕様です。Pythonにもクラスがあります。クラスはデータと処理をまとめてグループ化できる仕組みです。他にも便利な仕組みを持っています。

 クラスは整数やテキストなどと同じような「型」になります。そして、クラスという設計図のようなものから、インスタンス(実体)と呼ばれるオブジェクト(物)を作ることができます。

クラスとインスタンス
クラスとインスタンス

 実際にどのようなものか、Pythonのプログラムで見てみましょう。class_1.pyというファイルを作り、プログラムを書いて実行します。

class_1.py
class Chara:
    # コンストラクター、第一引数はself
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # インスタンス メソッド、第一引数はself
    def get_prof(self):
        res = f"{self.name} {self.age}"
        return res

chara = Chara("勇者", 16)   # インスタンスを生成
print(chara.name)           # 「勇者」と表示
print(chara.age)            # 「16」と表示
print(chara.get_prof())     # 「勇者 16」と表示
print(type(chara))          # 「<class '__main__.Chara'>」と表示
print(type(Chara))          # 「<class 'type'>」と表示

 class Chara:に続くインデントしたグループが、クラスの定義です。定義が終わったあと、Chara("勇者", 16)のように、Chara()を付けて関数として実行すると、インスタンスが生成されて戻り値として得られます。

クラスの定義とインスタンスの生成
クラスの定義とインスタンスの生成

 Charaクラス内のdef __init__(self, ~):とは、クラスの特別な関数で、コンストラクターと呼ばれます。コンストラクターを日本語に訳すと、製造者や建設者という意味になります。プログラミングの文書では構築子とも訳されます。Chara(~)のように書いてクラスのインスタンスを作ると、このコンストラクターが実行されます。

 コンストラクターの第1引数はselfです。この変数は、インスタンス自身を表します。self.nameself.ageのように、self.~と書いて値を代入することで、インスタンス変数を作れます。

 こうして作ったインスタンス変数は、chara = Chara("勇者", 16)のようにインスタンスを作ったあとに、chara.namechara.ageのように利用できます。

 続くdef get_prof(self):インスタンス メソッドと呼ばれるものです。クラスに付属する関数は、特別にメソッドと呼ばれます。これまでこうしたメソッドも、説明の簡易化のために関数と呼んできました。メソッドは関数でもあるので、関数と呼んでも不都合はありません。インスタンス メソッドは、chara.get_prof()という形で利用できます。

 インスタンス メソッドの第一引数は、コンストラクターと同じようにselfです。この変数selfを利用して、インスタンス変数やメソッドを利用できます。

次のページ
クラス変数とクラス メソッド

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
レトロ風ゲームを作って学ぶPython入門連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19460 2024/07/17 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング