我正在独自开发一个python游戏,第三方库为pygame
这是我用来绘制元素时用的类中的一部分:
import pygame
import random
class Resources():
def __init__(self, screen):
self.screen = screen
self.image_dirt = pygame.image.load('images\Dirt.gif')
self.image_grass = pygame.image.load("images\Grass.gif")
self.image_water = pygame.image.load("images\Water.gif")
self.image_brick = pygame.image.load("images\Brick.gif")
self.image_wood = pygame.image.load("images\Wood.gif")
self.image_sand = pygame.image.load("images\Sand.gif")
self.image_plank = pygame.image.load("images\Plank.gif")
self.image_glass = pygame.image.load("images\Glass.gif")
self.image_granite = pygame.image.load("images\Granite.gif")
self.willbeblit = []
self.willbeblit_2 = []
def blitme_tubes(self, tubes, lines):
# 开始绘制第二行元素
for i in range(1, tubes + 1):
randomNumber = random.randint(0, 10)
if randomNumber == 1:
self.willbeblit.append(self.image_grass)
elif randomNumber == 2:
self.willbeblit.append(self.image_plank)
elif randomNumber in [3, 4]:
self.willbeblit.append(self.image_wood)
elif randomNumber in [5, 6]:
self.willbeblit.append(self.image_sand)
else:
self.willbeblit.append(self.image_dirt)
for blit_res in range(0, tubes - 1):
for lines_res in range(0, lines):
# self.screen.blit(self.willbeblit[blit_res], (0 + (20 * blit_res), 260 + (20 * lines_res)))
self.screen.blit(self.willbeblit[blit_res], (0 + (20 * blit_res), 260))
# 开始绘制第二行元素
if lines > 1:
for i_2 in range(1, tubes + 1):
randomNumber_2 = random.randint(0, 10)
if randomNumber_2 == 1:
self.willbeblit_2.append(self.image_grass)
elif randomNumber_2 == 2:
self.willbeblit_2.append(self.image_plank)
elif randomNumber_2 in [3, 4]:
self.willbeblit_2.append(self.image_wood)
elif randomNumber_2 in [5, 6]:
self.willbeblit_2.append(self.image_sand)
else:
self.willbeblit_2.append(self.image_dirt)
# print(len(self.willbeblit))
for blit_res_2 in range(0, tubes - 1):
for lines_res_2 in range(0, lines):
# 选取于绘制第一行self.screen.blit(self.willbeblit[blit_res], (0 + (20 * blit_res), 260 + (20 * lines_res)))
self.screen.blit(self.willbeblit_2[blit_res_2], (0 + (20 * blit_res_2), 280))
目前运行结果如下:

我仅仅只让它绘制了两行的元素(每个元素都是20*20的正方形,每一行的元素都是要随机绘制的),方法blitme_tubes的两个实参已在main.py中传递,tubes是一行的总共的单个元素数量,lines是绘制的行数,我现在传递的两个实参分别是31和2,但是我以后还需要让它多绘制几行,因此这个方法会越来越长,可见,绘制第二行元素就只是有了一个新的列表以及将Y坐标往下推了20。
我想要简化这个方法,但我又不知道应该如何简化,故在这里请问各位开发者。