見出し画像

pyxelでpython勉強帳(3)

さて、今回はpythonのデータ型から文字列型を取り上げてみたいと思います。ただpyxelでは日本語表記はできないので、表示するのはアルファベットのみです。
単純な文字表示のプログラムを作ってみます。

# -*- coding: utf-8 -*-

import pyxel

class APP:
  def __init__(self):
      pyxel.init(128, 128, caption="pyxel")
      
      self.str1 = "HELLO"
      self.str2 = "World"
      self.str3 = "pyxel"      
      
      pyxel.run(self.update, self.draw)
     
  def update(self):
      pass

  def draw(self):
      pyxel.cls(0)
      pyxel.text(20, 20, self.str1, 6)
      pyxel.text(20, 30, self.str2, 6)
      pyxel.text(20, 40, self.str3, 6)      
      
      pyxel.text(20, 50, self.str1 + " " + self.str2, 11)      
      pyxel.text(20, 60, self.str1 + " " + self.str3, 11)      
      
      pyxel.text(20, 70, self.str1[0], 14)      
      pyxel.text(30, 70, self.str1[1], 14)      
      pyxel.text(40, 70, self.str1[2], 14)      
      pyxel.text(50, 70, self.str1[3], 14)      
      pyxel.text(60, 70, self.str1[4], 14)      
      
      pyxel.text(20, 80, self.str1.lower(), 13)      
      pyxel.text(20, 90, self.str3.upper(), 13)      
      
APP()

▲基本の形は前回とほとんど変わりません。
※2021/12/14追記
pyxelの新バージョン「pyxel 1.5.0」がリリースされました。1.5.0ではウィンドウタイトルの指定は「caption」ではなく「title」となっています

▲実行するとこんな感じ。プログラミング学習では定番の「Hello World」です。

コードの中身を少し見ていきます。


  def __init__(self):
      pyxel.init(128, 128, caption="pyxel")
      
      self.str1 = "HELLO"
      self.str2 = "World"
      self.str3 = "pyxel"      
      
      pyxel.run(self.update, self.draw)

▲init部分で変数str1、str2、str3を宣言しています。それぞれ文字を入れていますが、文字列は「“」で囲む必要があります。つまり、 と “1” は別物として扱われるということです。

  def draw(self):
      pyxel.cls(0)
      pyxel.text(20, 20, self.str1, 6)
      pyxel.text(20, 30, self.str2, 6)
      pyxel.text(20, 40, self.str3, 6)      
      
      pyxel.text(20, 50, self.str1 + " " + self.str2, 11)      
      pyxel.text(20, 60, self.str1 + " " + self.str3, 11)      
      
      pyxel.text(20, 70, self.str1[0], 14)      
      pyxel.text(30, 70, self.str1[1], 14)      
      pyxel.text(40, 70, self.str1[2], 14)      
      pyxel.text(50, 70, self.str1[3], 14)      
      pyxel.text(60, 70, self.str1[4], 14)      
      
      pyxel.text(20, 80, self.str1.lower(), 13)      
      pyxel.text(20, 90, self.str3.upper(), 13)      

▲draw部分です。

      pyxel.text(20, 20, self.str1, 6)
      pyxel.text(20, 30, self.str2, 6)
      pyxel.text(20, 40, self.str3, 6)   

▲まずは上3行。シンプルに変数(文字列)を出力します。前回は数字を出力したため、文字列型に変換する必要がありましたが、今回はそのまま出せます。

      pyxel.text(20, 50, self.str1 + " " + self.str2, 11)      
      pyxel.text(20, 60, self.str1 + " " + self.str3, 11)      

▲次の2行は文字列の連結を試しています。文字列同士は「+」でつなげることができます。今回は間に半角スペースを挟んで連結しています。

      pyxel.text(20, 70, self.str1[0], 14)      
      pyxel.text(30, 70, self.str1[1], 14)      
      pyxel.text(40, 70, self.str1[2], 14)      
      pyxel.text(50, 70, self.str1[3], 14)      
      pyxel.text(60, 70, self.str1[4], 14)      

▲続いて、文字列を配列のように添え字で操作してみます。配列についてはいずれ書こうと思いますが、文字列は先頭から各文字に番号が振られています。例えば「Hello」であれば「H(0) e(1) l(2) l(3) o(4)」のような形です。0から始まる点は注意。

      pyxel.text(20, 80, self.str1.lower(), 13)      
      pyxel.text(20, 90, self.str3.upper(), 13)      

▲最後に文字列型が持っている機能(メソッド)で小文字化、大文字化を試します。「.」ドットでつなげてメソッドを呼び出します。「lower」で小文字に、upperで大文字になります。

今回はここまで。
読んでいただきありがとうございました。

次回は「リスト・タプル・辞書型」辺りを取り上げようと思います。

ここまで読んでいただきありがとうございます!