それからのPython


civ4のMOD作成を通して、Pythonの基礎を学習します。

扱っている題材

  • 変数と値・型
  • クラス・メソッド
  • 複数ファイル構成・モジュール
  • リスト・リスト操作・リスト内包表記
  • 画面上へのメッセージ表示
  • ユニットへの昇進付与
  • 簡易スペルシステム

それからのPython 10

はじめに

  • その9のつづき
  • 簡単なスペルの仕組みをつくってみる
  • 4部作のうちの4回目
  • ついに各スペルの実装へ

湧き水

お待たせしました!個別のスペル処理です。まず湧き水を見てみましょう。

続きを読む →

それからのPython 9

はじめに

  • その8のつづき
  • 簡単なスペルの仕組みをつくってみる
  • 4部作のうちの3回目・Python共通編
  • クラスを活用する

スペル情報クラス

スペル情報クラスです。BuildingInfoやUnitInfoのスペル版のようなイメージで、
このクラスを通してスペルのいろいろな情報を取得することができるようにします。

続きを読む →

それからのPython 8

はじめに

  • その7のつづき
  • 簡単なスペルの仕組みをつくってみる
  • 4部作のうちの2回目・Python準備編
  • オブジェクト
  • リスト操作

Pythonファイル

Python側のファイル構成はいつもの感じです。
EntryPoints\CvEventInterface.pyはいずれかのKujira MODから使いまわします。
忘れてしまった方はこちらにも置いてあります。

└─kujira_promospell
    └─Assets
        ├─Python
        │  ├─KujiraEventManager.py
        │  │
        │  └─Entrypoints
        │      └─CvEventInterface.py
        └─XML
            ├─Text
            │  └─Text_Kujira.xml
            └─Units
                └─CIV4PromotionInfos.xml

続きを読む →

それからのPython 7

はじめに

  • その6のつづき
  • 簡単なスペルの仕組みをつくってみる
  • 4部作のうちの1回目・XML編

設計しよう

実際のMODの例として、簡単なスペルをつくっていきたいと思います。
簡単のために、以下の仕様でつくることにします。

  • スペルと昇進を1対1で対応させる
  • 発動条件は昇進を取得したとき一回きりとする
  • スペル昇進を取れるのは火器ユニットとする
  • 具体的なスペル効果は以下の3種類とする
  • 湧き水:砂漠が平原に変化する
  • 毒散布:周囲1マスの敵対ユニットに弱体化昇進『毒』(戦闘力-20%)を与える
  • 火炎幕:周囲1マスの敵対ユニットに最大HPの10%のダメージを与える
    ただしこれによって最大HPの60%を切ることはないようにする
  • 湧き水において砂漠以外で発動したときは不発になるが、昇進は戻ってこないようにする

続きを読む →

それからのPython 6

はじめに

  • その5のつづき
  • もっともっとクラスをつかう
  • 別ファイルからもつかう

コードを読む

Civ4からあらかじめ提供されているクラスはまだまだあります。
今回はその中から比較的簡単で読みやすいクラスを例に
実際にコードを読み解いてみたいと思います。

続きを読む →

それからのPython 5

はじめに

  • その4のつづき
  • もっとクラスをつかう
  • 変数のスコープ

インスタンスの中のインスタンス

インスタンス変数にクラス型の変数を使う例を見てみましょう。

題材は、ちょっと賢い建造物クラスKujiraBuildingと、
それを用いて
《建造された都市で生産されたユニットだけでなく、
その都市で立ち止まったユニットにも衛生兵Ⅰを付与する赤十字》
をつくることです。

続きを読む →

それからのPython 4

はじめに

提供されているクラスを探訪してみる

新しいクラスをつくる体験をしたところで、
既存のクラスを使ってみる体験もしてみます。
APIリファレンスを見ながら、すすめていきましょう。

左上フレームにリストされているのが、クラス名(型名)です。
ためしにCyCityをクリックしてみましょう。
すると、右フレームにCyCity型のインスタンスメソッドがずらずらーっと出てきます。
CyCity型のメソッドだけでもずいぶん数があります。
流し読みしつつ、気になったのを見ていきましょう。

なお、色付き文字になっているのはです。例えば、
BOOL - ブール型(真と偽の2択)
INT - 数値型
VOID - なし(戻り値を返さないもの)
茶色 - なにかのID(基本的なふるまいはINTと同じ)
緑色 - クラス型
こんな具合です。

続きを読む →

それからのPython 3

はじめに

準備

kujira_classというMODを新しく作ります。

フォルダ構成

└─kujira_class
    └─Assets
        └─Python
            │─KujiraEventManager.py
            └─Entrypoints
                 └─CvEventInterface.py

続きを読む →

それからのPython 2

はじめに

  • その1のつづき
  • いろいろ表示してみる

-4000年

gc.getGame().getGameTurnYear()により現在の年を取得します。
これによって得られる値は数値型ですから、フォーマット文字列により埋め込んで
Unicode文字列を作り、表示してあげます。

コードはこうなります…

続きを読む →

それからのPython 1

はじめに

これは何か

これは、
「はじめてのPythonMOD」シリーズの続きです。
もうちょっとPythonの書き方について勉強して、
より思い通りに記述できるようになろう、というのが大きな目的です。

これは何でないか

これは、前シリーズよりもさらに技術的な解説、Pythonの文法の解説に偏重しています。
また、「はじめてのPythonMOD」程度のMOD制作経験を前提としています。
コピペですぐ動くコードはあまりないかもしれません。

続きを読む →