From 006a4102eb0473b1c4258635b14f835ab8165046 Mon Sep 17 00:00:00 2001 From: ssuzzukki Date: Wed, 16 Apr 2025 17:40:24 +0900 Subject: [PATCH 1/7] =?UTF-8?q?map=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=81=8B=E3=82=89png=E3=82=92=E7=94=9F=E6=88=90=E3=81=99?= =?UTF-8?q?=E3=82=8B=E6=A9=9F=E8=83=BD=E3=82=92=E4=BD=9C=E6=88=90=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageGenerator.py | 98 ++++++++++++++++++++++++++++++++++++++++++ src/icons/cool.png | Bin 0 -> 10048 bytes src/icons/hot.png | Bin 0 -> 10075 bytes src/icons/item.png | Bin 0 -> 11164 bytes src/icons/kabe.png | Bin 0 -> 1458 bytes src/icons/yuka.png | Bin 0 -> 5777 bytes 6 files changed, 98 insertions(+) create mode 100644 src/ImageGenerator.py create mode 100644 src/icons/cool.png create mode 100644 src/icons/hot.png create mode 100644 src/icons/item.png create mode 100644 src/icons/kabe.png create mode 100644 src/icons/yuka.png diff --git a/src/ImageGenerator.py b/src/ImageGenerator.py new file mode 100644 index 0000000..8e4a031 --- /dev/null +++ b/src/ImageGenerator.py @@ -0,0 +1,98 @@ +import re +import os +import sys +from PIL import Image +from typing import List + + +#mapファイルのテキストデータを2次元配列に変換するメソッド +def _change2arr(map_data: str) -> List: + map_list = [] + #各行を一マスごとに分割して配列に格納 + for i in range(len(map_data)): + if map_data[i] != "" and map_data[i][0] == "D": + map_list.append(re.split(",|\n", map_data[i].replace("D:", ""))) + elif map_data[i] != "" and map_data[i][0] == "H": + hot = re.split(",|\n", map_data[i].replace("H:", "")) + elif map_data[i] != "" and map_data[i][0] == "C": + cool = re.split(",|\n", map_data[i].replace("C:", "")) + + map_list[int(cool[1])][int(cool[0])] = "C" + map_list[int(hot[1])][int(hot[0])] = "H" + + return map_list + + + +#一つのmapファイルをpngに変換するメソッド +def _draw_png(file_name: str) -> None: + #mapファイルを開いてmap_dataにテキストを格納 + #print(file_name) + file = open("../" + file_name, "r") + map_data = file.read().split("\n") + file.close + + map_list = _change2arr(map_data) + + #アイコン用の画像を開く + yuka = Image.open("../../icons/yuka.png") + kabe = Image.open("../../icons/kabe.png") + item = Image.open("../../icons/item.png") + hot = Image.open("../../icons/hot.png") + cool = Image.open("../../icons/cool.png") + + icon_size = yuka.width + + #画像の下地を描く + size = (len(map_list[0])*icon_size,len(map_list)*icon_size) + img = Image.new("RGB", size, (255,255,255)) + + #各マスのデータに応じて画像を敷き詰める + for i in range(len(map_list)): + for j in range(len(map_list[i])): + if map_list[i][j] == "2": + #壁 + img.paste(kabe, (j*icon_size, i*icon_size)) + elif map_list[i][j] == "3": + #アイテム + img.paste(item, (j*icon_size, i*icon_size)) + elif map_list[i][j] == "C": + #cool + img.paste(cool, (j*icon_size, i*icon_size)) + elif map_list[i][j] == "H": + #hot + img.paste(hot, (j*icon_size, i*icon_size)) + else: + #それ以外(床) + img.paste(yuka, (j*icon_size, i*icon_size)) + + + + #画像を保存 + img.save(file_name.split(".")[0] + ".png") + #img.show("test.png") + + +#全てのmapファイルをpngに変換するメソッド +def _draw_all() -> None: + + + dir_name = sys.argv[1] + file_list = os.listdir(dir_name) + + #mapファイルが入ったディレクトリに移動 + os.chdir(dir_name) + + #画像を格納するディレクトリを作成し移動 + os.mkdir("map_images") + os.chdir("map_images") + + for i in range(len(file_list)): + _draw_png(file_list[i]) + + + #もとのディレクトリに戻る + os.chdir("../../") + print("完了しました") + +_draw_all() \ No newline at end of file diff --git a/src/icons/cool.png b/src/icons/cool.png new file mode 100644 index 0000000000000000000000000000000000000000..454ba51c845d1b03eac926c3a13f164d4e8db2ea GIT binary patch literal 10048 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%0A{JJ* zwiFSB#U$ix+7ox%NeLHstC*$l^cfBJ7Y*lPR&d9VnLC4`)=%t@bE31$@23-nxrZnw zxLQyrkMVWiJyTfIEGSS19eDZlsGEHyeoRP7K^I;mO*X9U*T<$`K1xlLuTOOLG6b4Z zP_>6^KlqH-x8azlBrw#`W7Hdz^O^6si9l90SG_)4T*TczlgwSWs4gutXp)^J=ZpLx z4YB1uo6Nz-1KNFB&J{;q$So z*Sl8z8(DyPo6l;S$D2rtox}qJt*AR#Uyz>{n~HjU+Ez&U&&K1?y(w>mLUf5d@8vsj z0p#o3K4*-XdN3BQWr%@ND44Z`u7c7Z5STYRE-uc;59R}dK^O^;tCu4h>IrgmWx0a*jiCT{wL&4B(Fi9;;1wp+(#Z`i z&CHDH2ma|F(isBz3*OQ74;Cg*72Po)e>n6%YPjlSPGR_T z;jT_@C@ahtMz|xI<)08RtH1P}-B1p{!hu=w!5!d8jHoNds=$AkR91y(|D|z7feixb z{7VZ%_J2sC5!Qc`^&h@n_52FwpN?SE|HAzb=|5xtC5(}RKqM5LtlX~LQ&o^=zOpX? zbFxCfBz`?wiHnMeii`7uM8K9%kdU>d2uPe?6bcfz7PS-=g~O~Yg`od{Qgw7iLmjQ) zS5O#mUIYe5z)DDrUszlO1mg$8K|*i=L6Df0ARJ_AB`PKWwgig`Si$}Qp@l+VsuJq( zPp__^U>GQ2L1AGLYb!yJwXhIBNJvBg3=$XR$AH2tp#lO{{6dxjzrBH3Nhmp?kWfrI z5lE;FoX^?O=9i5t!X@r&t4cG2dHMft(RP5MtuYFiF@SJ{IeEDL-KCE}!u8P5D?SB8 zg@i=Jg~bF#ghlxI`Gx-$GJvC8F|~MwD!|VxDE6!8Dlrn6a4^(DuPPM-@T(mYjf6Z3 z4n;em^qrg>q?xar0$yqU)eXT6C>RtCRe+-57*Kw&umr!5gn+QVfRKccpoB1(n_pal z{~z*BFod<&|4aI6_yDDTCtU^Mim~tYtLgWc(u2GFe*69EfcQ0-fWTkFLIP^_I|Ns# zJN$RLFj&94tZbo*6BYzPt%bxuB0|=1 z5kV+a2oC!l)nDkYPS$7-C<=bx2E!wUD@=j@;tI&|N2)k~vG$j|hb{an4;aco{6e6= zDHCDl`y*Jss~O|ZXr=i6FFvGx3H)PW(DMd*(yEgI4i|$ zvxuBkj9mc$UY4s1%d_B~JEoBUtqM^jSjWAA$1O(KHDZBjqC+bhq2-;BS1WM9uVo<| z2J}FnZGl(ILc;)38qD^ZQdQx;zF2>OJ|wOKNO}7X$UxgpD$VoY`Q>F?`b*VP&b}F( zsZob}vxg!5`3%+;_)qxM02W^_fg#V|GCdov$wwE9y;tMpz_XfWI~kbN9FYj?!geFc zGqA{tuVz9c}IFwR=a1pi1M^qp?#KA}-mKU*;C zQ-&8QY;hBh8IwgJpM3;<7Ib0?gtc$xB7ksmt=)VdlVPK6zvgyPvHs8JMMR7$Q(pjp z@{iZS;yt*xrKTK}C!T3?5O29J9W}nP7zjH$F6sW9X-Igl<3@xmuIbYT42b|$MNNe= IIg7ym1Cn`J?EnA( literal 0 HcmV?d00001 diff --git a/src/icons/item.png b/src/icons/item.png new file mode 100644 index 0000000000000000000000000000000000000000..9564720d7ff9bee32cd0ada5b19aef5fc8e0e418 GIT binary patch literal 11164 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 literal 0 HcmV?d00001 diff --git a/src/icons/kabe.png b/src/icons/kabe.png new file mode 100644 index 0000000000000000000000000000000000000000..b30664167d683ef09fbfc5033dd76e7f52bb3e49 GIT binary patch literal 1458 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 GOa3n)1HUu? literal 0 HcmV?d00001 From 22df12c510b704bd1fc5f2c69f87f999af2e2533 Mon Sep 17 00:00:00 2001 From: ssuzzukki Date: Wed, 16 Apr 2025 21:59:26 +0900 Subject: [PATCH 2/7] =?UTF-8?q?make=20check=E3=81=AE=E9=81=A9=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageGenerator.py | 75 +++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/src/ImageGenerator.py b/src/ImageGenerator.py index 8e4a031..1b7069a 100644 --- a/src/ImageGenerator.py +++ b/src/ImageGenerator.py @@ -1,14 +1,15 @@ -import re import os +import re import sys -from PIL import Image from typing import List +from PIL import Image + -#mapファイルのテキストデータを2次元配列に変換するメソッド -def _change2arr(map_data: str) -> List: +# mapファイルのテキストデータを2次元配列に変換するメソッド +def changEArray(map_data: List[str]) -> List[List[str]]: map_list = [] - #各行を一マスごとに分割して配列に格納 + # 各行を一マスごとに分割して配列に格納 for i in range(len(map_data)): if map_data[i] != "" and map_data[i][0] == "D": map_list.append(re.split(",|\n", map_data[i].replace("D:", ""))) @@ -23,18 +24,17 @@ def _change2arr(map_data: str) -> List: return map_list - -#一つのmapファイルをpngに変換するメソッド -def _draw_png(file_name: str) -> None: - #mapファイルを開いてmap_dataにテキストを格納 - #print(file_name) +# 一つのmapファイルをpngに変換するメソッド +def draWPng(file_name: str) -> None: + # mapファイルを開いてmap_dataにテキストを格納 + # print(file_name) file = open("../" + file_name, "r") map_data = file.read().split("\n") file.close - map_list = _change2arr(map_data) + map_list = changEArray(map_data) - #アイコン用の画像を開く + # アイコン用の画像を開く yuka = Image.open("../../icons/yuka.png") kabe = Image.open("../../icons/kabe.png") item = Image.open("../../icons/item.png") @@ -43,56 +43,53 @@ def _draw_png(file_name: str) -> None: icon_size = yuka.width - #画像の下地を描く - size = (len(map_list[0])*icon_size,len(map_list)*icon_size) - img = Image.new("RGB", size, (255,255,255)) + # 画像の下地を描く + size = (len(map_list[0]) * icon_size, len(map_list) * icon_size) + img = Image.new("RGB", size, (255, 255, 255)) - #各マスのデータに応じて画像を敷き詰める + # 各マスのデータに応じて画像を敷き詰める for i in range(len(map_list)): for j in range(len(map_list[i])): if map_list[i][j] == "2": - #壁 - img.paste(kabe, (j*icon_size, i*icon_size)) + # 壁 + img.paste(kabe, (j * icon_size, i * icon_size)) elif map_list[i][j] == "3": - #アイテム - img.paste(item, (j*icon_size, i*icon_size)) + # アイテム + img.paste(item, (j * icon_size, i * icon_size)) elif map_list[i][j] == "C": - #cool - img.paste(cool, (j*icon_size, i*icon_size)) + # cool + img.paste(cool, (j * icon_size, i * icon_size)) elif map_list[i][j] == "H": - #hot - img.paste(hot, (j*icon_size, i*icon_size)) + # hot + img.paste(hot, (j * icon_size, i * icon_size)) else: - #それ以外(床) - img.paste(yuka, (j*icon_size, i*icon_size)) - - + # それ以外(床) + img.paste(yuka, (j * icon_size, i * icon_size)) - #画像を保存 + # 画像を保存 img.save(file_name.split(".")[0] + ".png") - #img.show("test.png") + # img.show("test.png") - -#全てのmapファイルをpngに変換するメソッド -def _draw_all() -> None: +# 全てのmapファイルをpngに変換するメソッド +def draWAll() -> None: dir_name = sys.argv[1] file_list = os.listdir(dir_name) - #mapファイルが入ったディレクトリに移動 + # mapファイルが入ったディレクトリに移動 os.chdir(dir_name) - #画像を格納するディレクトリを作成し移動 + # 画像を格納するディレクトリを作成し移動 os.mkdir("map_images") os.chdir("map_images") for i in range(len(file_list)): - _draw_png(file_list[i]) + draWPng(file_list[i]) - - #もとのディレクトリに戻る + # もとのディレクトリに戻る os.chdir("../../") print("完了しました") -_draw_all() \ No newline at end of file + +draWAll() From 48e2db737f1ce192fb5b07567edfa7864a54abcb Mon Sep 17 00:00:00 2001 From: ssuzzukki Date: Thu, 17 Apr 2025 13:42:58 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=E5=8B=95=E4=BD=9C=E3=81=AB=E5=BD=B1?= =?UTF-8?q?=E9=9F=BF=E3=81=AE=E3=81=AA=E3=81=84=E7=B4=B0=E3=81=8B=E3=81=AA?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageGenerator.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ImageGenerator.py b/src/ImageGenerator.py index 1b7069a..bf37c8b 100644 --- a/src/ImageGenerator.py +++ b/src/ImageGenerator.py @@ -1,13 +1,12 @@ import os import re import sys -from typing import List from PIL import Image # mapファイルのテキストデータを2次元配列に変換するメソッド -def changEArray(map_data: List[str]) -> List[List[str]]: +def changeList(map_data: list[str]) -> list[list[str]]: map_list = [] # 各行を一マスごとに分割して配列に格納 for i in range(len(map_data)): @@ -25,14 +24,14 @@ def changEArray(map_data: List[str]) -> List[List[str]]: # 一つのmapファイルをpngに変換するメソッド -def draWPng(file_name: str) -> None: +def drawMapImage(file_name: str) -> None: # mapファイルを開いてmap_dataにテキストを格納 # print(file_name) file = open("../" + file_name, "r") map_data = file.read().split("\n") file.close - map_list = changEArray(map_data) + map_list = changeList(map_data) # アイコン用の画像を開く yuka = Image.open("../../icons/yuka.png") @@ -72,7 +71,7 @@ def draWPng(file_name: str) -> None: # 全てのmapファイルをpngに変換するメソッド -def draWAll() -> None: +def main() -> None: dir_name = sys.argv[1] file_list = os.listdir(dir_name) @@ -85,11 +84,12 @@ def draWAll() -> None: os.chdir("map_images") for i in range(len(file_list)): - draWPng(file_list[i]) + drawMapImage(file_list[i]) # もとのディレクトリに戻る os.chdir("../../") print("完了しました") -draWAll() +if __name__ == "__main__": + main() From 2bcabbb5693e18bb00a1d5e68943b41d22837d11 Mon Sep 17 00:00:00 2001 From: ssuzzukki Date: Thu, 17 Apr 2025 14:20:15 +0900 Subject: [PATCH 4/7] =?UTF-8?q?if=E6=96=87=E3=81=AE=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=96=87=E3=81=AE=E4=BF=AE=E6=AD=A3=E3=80=81with=E6=A7=8B?= =?UTF-8?q?=E6=96=87=E3=81=AE=E4=BD=BF=E7=94=A8=E3=80=81.readlines?= =?UTF-8?q?=E3=81=AE=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageGenerator.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/ImageGenerator.py b/src/ImageGenerator.py index bf37c8b..11efc8e 100644 --- a/src/ImageGenerator.py +++ b/src/ImageGenerator.py @@ -10,11 +10,13 @@ def changeList(map_data: list[str]) -> list[list[str]]: map_list = [] # 各行を一マスごとに分割して配列に格納 for i in range(len(map_data)): - if map_data[i] != "" and map_data[i][0] == "D": + if map_data[i] == "": + break + elif map_data[i][0] == "D": map_list.append(re.split(",|\n", map_data[i].replace("D:", ""))) - elif map_data[i] != "" and map_data[i][0] == "H": + elif map_data[i][0] == "H": hot = re.split(",|\n", map_data[i].replace("H:", "")) - elif map_data[i] != "" and map_data[i][0] == "C": + elif map_data[i][0] == "C": cool = re.split(",|\n", map_data[i].replace("C:", "")) map_list[int(cool[1])][int(cool[0])] = "C" @@ -25,11 +27,9 @@ def changeList(map_data: list[str]) -> list[list[str]]: # 一つのmapファイルをpngに変換するメソッド def drawMapImage(file_name: str) -> None: - # mapファイルを開いてmap_dataにテキストを格納 - # print(file_name) - file = open("../" + file_name, "r") - map_data = file.read().split("\n") - file.close + # mapファイルを開いてmap_dataにテキストを格納、行ごとに配列にする + with open("../" + file_name, "r") as file: + map_data = file.readlines() map_list = changeList(map_data) @@ -88,7 +88,6 @@ def main() -> None: # もとのディレクトリに戻る os.chdir("../../") - print("完了しました") if __name__ == "__main__": From 7e277f136e1ab5e7fa08ab762204993e7f6f5bf1 Mon Sep 17 00:00:00 2001 From: ssuzzukki Date: Tue, 22 Apr 2025 14:14:14 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=85=83=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=83=AC=E3=82=AF=E3=83=88=E3=83=AA=E3=82=92=E3=83=91?= =?UTF-8?q?=E3=82=B9=E3=81=A7=E6=8C=87=E5=AE=9A=E3=81=A7=E3=81=8D=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4=E3=80=81=E5=86=85=E9=83=A8?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=82=E3=83=91=E3=82=B9=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=84=E3=81=93=E3=81=AE=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E6=9C=AC=E4=BD=93=E3=81=AE=E7=A7=BB=E5=8B=95=E3=82=92=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageGenerator.py | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/ImageGenerator.py b/src/ImageGenerator.py index 11efc8e..6c94514 100644 --- a/src/ImageGenerator.py +++ b/src/ImageGenerator.py @@ -26,19 +26,22 @@ def changeList(map_data: list[str]) -> list[list[str]]: # 一つのmapファイルをpngに変換するメソッド -def drawMapImage(file_name: str) -> None: +def drawMapImage( + file_name: str, + dir_path: str, +) -> None: # mapファイルを開いてmap_dataにテキストを格納、行ごとに配列にする - with open("../" + file_name, "r") as file: + with open(dir_path + file_name, "r") as file: map_data = file.readlines() map_list = changeList(map_data) # アイコン用の画像を開く - yuka = Image.open("../../icons/yuka.png") - kabe = Image.open("../../icons/kabe.png") - item = Image.open("../../icons/item.png") - hot = Image.open("../../icons/hot.png") - cool = Image.open("../../icons/cool.png") + yuka = Image.open("./icons/yuka.png") + kabe = Image.open("./icons/kabe.png") + item = Image.open("./icons/item.png") + hot = Image.open("./icons/hot.png") + cool = Image.open("./icons/cool.png") icon_size = yuka.width @@ -66,28 +69,21 @@ def drawMapImage(file_name: str) -> None: img.paste(yuka, (j * icon_size, i * icon_size)) # 画像を保存 - img.save(file_name.split(".")[0] + ".png") + img.save(dir_path + "/map_images/" + file_name.split(".")[0] + ".png") # img.show("test.png") # 全てのmapファイルをpngに変換するメソッド def main() -> None: - dir_name = sys.argv[1] - file_list = os.listdir(dir_name) + dir_path = sys.argv[1] + file_list = os.listdir(dir_path) - # mapファイルが入ったディレクトリに移動 - os.chdir(dir_name) - - # 画像を格納するディレクトリを作成し移動 - os.mkdir("map_images") - os.chdir("map_images") + # 画像を格納するディレクトリを作成 + os.mkdir(dir_path + "/map_images") for i in range(len(file_list)): - drawMapImage(file_list[i]) - - # もとのディレクトリに戻る - os.chdir("../../") + drawMapImage(file_list[i], dir_path) if __name__ == "__main__": From c2537109a124f20e7d789deffbc41a9d3bc05d88 Mon Sep 17 00:00:00 2001 From: ssuzzukki Date: Tue, 22 Apr 2025 14:31:57 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E7=94=A8=E7=94=BB=E5=83=8F=E3=81=AE=E5=90=8D=E5=89=8D=E3=81=AE?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageGenerator.py | 10 +++++----- src/icons/{yuka.png => floor.png} | Bin src/icons/{kabe.png => wall.png} | Bin 3 files changed, 5 insertions(+), 5 deletions(-) rename src/icons/{yuka.png => floor.png} (100%) rename src/icons/{kabe.png => wall.png} (100%) diff --git a/src/ImageGenerator.py b/src/ImageGenerator.py index 6c94514..190b429 100644 --- a/src/ImageGenerator.py +++ b/src/ImageGenerator.py @@ -37,13 +37,13 @@ def drawMapImage( map_list = changeList(map_data) # アイコン用の画像を開く - yuka = Image.open("./icons/yuka.png") - kabe = Image.open("./icons/kabe.png") + floor = Image.open("./icons/floor.png") + wall = Image.open("./icons/wall.png") item = Image.open("./icons/item.png") hot = Image.open("./icons/hot.png") cool = Image.open("./icons/cool.png") - icon_size = yuka.width + icon_size = floor.width # 画像の下地を描く size = (len(map_list[0]) * icon_size, len(map_list) * icon_size) @@ -54,7 +54,7 @@ def drawMapImage( for j in range(len(map_list[i])): if map_list[i][j] == "2": # 壁 - img.paste(kabe, (j * icon_size, i * icon_size)) + img.paste(wall, (j * icon_size, i * icon_size)) elif map_list[i][j] == "3": # アイテム img.paste(item, (j * icon_size, i * icon_size)) @@ -66,7 +66,7 @@ def drawMapImage( img.paste(hot, (j * icon_size, i * icon_size)) else: # それ以外(床) - img.paste(yuka, (j * icon_size, i * icon_size)) + img.paste(floor, (j * icon_size, i * icon_size)) # 画像を保存 img.save(dir_path + "/map_images/" + file_name.split(".")[0] + ".png") diff --git a/src/icons/yuka.png b/src/icons/floor.png similarity index 100% rename from src/icons/yuka.png rename to src/icons/floor.png diff --git a/src/icons/kabe.png b/src/icons/wall.png similarity index 100% rename from src/icons/kabe.png rename to src/icons/wall.png From e5c71275b719142fddc107c5a17b5445eae8b0db Mon Sep 17 00:00:00 2001 From: ssuzzukki Date: Thu, 24 Apr 2025 22:22:01 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=E5=90=84=E3=83=9E=E3=82=B9=E3=81=AE?= =?UTF-8?q?=E7=8A=B6=E6=85=8B=E3=82=92=E5=88=A4=E5=AE=9A=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=81=AB=E5=88=97=E6=8C=99=E5=9E=8B=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20=E5=88=97=E6=8C=99=E5=9E=8B=E3=81=AE=E6=B4=BB?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E6=B3=95=E3=81=AF=E3=81=93=E3=82=8C=E3=81=A7?= =?UTF-8?q?=E3=81=82=E3=81=A3=E3=81=A6=E3=82=8B=E3=82=93=E3=81=A7=E3=81=97?= =?UTF-8?q?=E3=82=87=E3=81=86=E3=81=8B=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ImageGenerator.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/ImageGenerator.py b/src/ImageGenerator.py index 190b429..e48505c 100644 --- a/src/ImageGenerator.py +++ b/src/ImageGenerator.py @@ -1,6 +1,7 @@ import os import re import sys +from enum import Enum from PIL import Image @@ -13,7 +14,8 @@ def changeList(map_data: list[str]) -> list[list[str]]: if map_data[i] == "": break elif map_data[i][0] == "D": - map_list.append(re.split(",|\n", map_data[i].replace("D:", ""))) + map_list.append(re.split(",|D:|\n", map_data[i])[1:-1]) + # print(map_data[i]) elif map_data[i][0] == "H": hot = re.split(",|\n", map_data[i].replace("H:", "")) elif map_data[i][0] == "C": @@ -30,8 +32,17 @@ def drawMapImage( file_name: str, dir_path: str, ) -> None: + + # 各マスの状態を定義 + class Status(Enum): + FLOOR = "0" + WALL = "2" + ITEM = "3" + HOT = "H" + COOL = "C" + # mapファイルを開いてmap_dataにテキストを格納、行ごとに配列にする - with open(dir_path + file_name, "r") as file: + with open(dir_path + "/" + file_name, "r") as file: map_data = file.readlines() map_list = changeList(map_data) @@ -52,16 +63,18 @@ def drawMapImage( # 各マスのデータに応じて画像を敷き詰める for i in range(len(map_list)): for j in range(len(map_list[i])): - if map_list[i][j] == "2": + if Status(map_list[i][j]) == Status.FLOOR: + img.paste(floor, (j * icon_size, i * icon_size)) + elif Status(map_list[i][j]) == Status.WALL: # 壁 img.paste(wall, (j * icon_size, i * icon_size)) - elif map_list[i][j] == "3": + elif Status(map_list[i][j]) == Status.ITEM: # アイテム img.paste(item, (j * icon_size, i * icon_size)) - elif map_list[i][j] == "C": + elif Status(map_list[i][j]) == Status.COOL: # cool img.paste(cool, (j * icon_size, i * icon_size)) - elif map_list[i][j] == "H": + elif Status(map_list[i][j]) == Status.HOT: # hot img.paste(hot, (j * icon_size, i * icon_size)) else: