Nyaatrap

アダルト百合ゲー開発ブログ。一部記事は18歳未満閲覧禁止です。

Home どれぱら デーモンマスタークリス 商用ゲーム フリーゲーム

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ren'py で Spritesheet と Spreadsheet を使って Tilemap を表示する

Ren'py Tilemap (http://nyaatrap.blog.fc2.com/blog-entry-110.html) の応用技です。タイルマップはプログラムにガシガシ書きこんだりせず、 Tile Map Editer などのGUIツールで作成したデータをインポートするほうが効果的です。そのためのコードを書きました。
コードは続きから。

まずは Spritesheet と Spreadsheet を読み込むクラスを作成します。
init -2 python:

class Spritesheet():

@staticmethod
def create(file, sprite_width, sprite_height, columns, rows, spacing=0, margin=0):

# This creates a list of displayables from one spritesheet.

list = []
for j in xrange(rows):
for i in xrange(columns):
list.append(LiveCrop(((sprite_width+spacing)*i+margin, (sprite_height+spacing)*j+margin, sprite_width, sprite_height), file))

return list


class Spreadsheet():

@staticmethod
def create(file, integer=True):

# This creates a 2-dimentional list from one csv or tsv file.
# If integer is True, default, strings are converted into integers

map=[]
f = renpy.file(file)
for l in f:
if file.endswith(".csv"):
a = l.rstrip().split(",")
else:
a = l.rstrip().split("\t")
mapline=[]
for c in a:
if integer:
c = int(c)
mapline.append(c)
map.append(mapline)
f.close()

return map

あとはこんな感じで定義して使います。
init python:

# displayables のリストを spritesheet から以下の引数で定義。
# (file, sprite_width, sprite_height, columns, rows, spacing=0, margin=0)
tileset = Spritesheet.create("tiles.png", 32, 32, 8, 6, 1, 1)

# 整数の二次元配列を spreadsheet から定義。
map = Spreadsheet.create("map.csv")

# Tilemap クラスのインスタンスを、以下の引数で作成。
# (map, tileset, tile_width, tile_height).
tilemap = Tilemap(map, tileset, 32, 32)

# 以下同様

コメント

コメントの投稿


管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。