Python learning

本文最后更新于:8 个月前

  • python可以用来帮助我们做很多事情,比如说帮我们通过两张50*50的小图片随机生成一张好看的游戏地图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import cv2
import numpy as np
import csv
from typing import Tuple, List
import random
import os


def csv_read(csv_name):
map_mat: List[List] = list()
with open(csv_name)as f:
f_csv = csv.reader(f)
for row in f_csv:
map_mat.append(list(map(lambda item: int(item), row)))
return map_mat


def main() -> None:
image_grass_list = list()
bg_name_list = os.listdir("./newS/bg")
image_soil_list = list()
soil_name_list = os.listdir("./newS/soil")
for bg_name in bg_name_list:
image_grass_list.append(cv2.imread("./newS/bg/" + bg_name))
for soil_name in soil_name_list:
image_soil_list.append(cv2.imread("./newS/soil/" + soil_name))
print(soil_name_list)
csv_name_list = os.listdir("./mapCSVTemp")

# sorted(csv_name_list, key=lambda item: int(item[3:-4]))
for csv_name in csv_name_list:
map_mat = np.array(csv_read("./mapCSVTemp/" + csv_name))
height, width = map_mat.shape
map = np.zeros((height*50, width*50, 3), dtype=int)
for i, row in enumerate(map_mat):
for j, sign in enumerate(row):
if sign:
soil_sign = random.randint(0, len(soil_name_list)-1)
map[i*50:(i*50+50), j*50:(j*50 + 50)
] = image_soil_list[soil_sign]
else:
bg_sign = random.randint(0, len(bg_name_list)-1)
map[i*50:(i*50+50), j*50:(j*50 + 50)
] = image_grass_list[bg_sign]
cv2.imwrite('./mapTemp/' + "map30.png",
map, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
print("Map Ready Ok !")
return None


if __name__ == "__main__":
main()

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!