Я создаю редактор карт для плитки, которую я создаю.Я пытаюсь создать прозрачный прямоугольник вокруг плитки в редакторе карт по какой-то причине, хотя она покрывает большую часть плитки, а не все.Так как же заставить курсор пигмея оставаться в середине прозрачного прямоугольника и чтобы он покрывал всю плитку целиком?Я попытался изменить переменные mouse_x и mouse_y только на положение мыши, но оно находится на краю курсора и не прилипает к плитке.Итак, как мне получить курсор в середине прямоугольника, а затем оставить прямоугольник в плитке, где находится большая часть прямоугольника, но заполнить весь прямоугольник вместо большинства.Вот мой код редактора карт
import pygame, math
from scripts.Textures import *
from scripts.Dexti_GUI import *
pygame.init()
screen = pygame.display.set_mode((600,600), pygame.RESIZABLE)
n = []
next = False
tile_data = []
# Get Map Dimensions
MapWidth = 1
MapHeight = 1
camera_x, camera_y = 0,0
mouse_x, mouse_y = 0,0
# CREATE THE MAP WITH USERS DIMENSIONS
for x in range(0, MapWidth * 32, 32):
for y in range(0, MapHeight * 32, 32):
tile_data.append([x, y, "1"])
selector = pygame.Surface((32, 32), pygame.HWSURFACE|pygame.SRCALPHA)
selector.fill(Color.WithAlpha(100, Color.RoyalBlue)) #CREATES A SEE THROUGH BLUE RECTANGLE THE SIZE OF A TILE
while True:
screen.fill(Color.Black)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.VIDEORESIZE:
screen = pygame.display.set_mode((event.w, event.h), pygame.RESIZABLE)
width = event.w
height = event.h
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
n.append("1")
elif event.key == pygame.K_2:
n.append("2")
elif event.key == pygame.K_3:
n.append("3")
elif event.key == pygame.K_4:
n.append("4")
elif event.key == pygame.K_5:
n.append("5")
elif event.key == pygame.K_6:
n.append("6")
elif event.key == pygame.K_7:
n.append("7")
elif event.key == pygame.K_8:
n.append("8")
elif event.key == pygame.K_9:
n.append("9")
elif event.key == pygame.K_0:
n.append("0")
elif event.key == pygame.K_BACKSPACE:
try:
del n[-1]
except:
pass
elif event.key == pygame.K_RETURN:
next = True
move = pygame.key.get_pressed()
if move[pygame.K_w]:
camera_y += 1
elif move[pygame.K_s]:
camera_y -= 1
elif move[pygame.K_a]:
camera_x += 1
elif move[pygame.K_d]:
camera_x -= 1
#Display Map
for tile in tile_data:
try:
screen.blit(Tiles.Texture_Tags[tile[2]], (tile[0] + camera_x, tile[1] + camera_y))
except:
print("Error creating Default Map! Be sure that a textures.py file exists in scripts")
#Display cursor
mouse = pygame.mouse.get_pos()
mouse_x = math.floor(mouse[0] / 32) * 32
mouse_y = math.floor(mouse[1] / 32) * 32
screen.blit(selector, (mouse_x,mouse_y))
pygame.display.flip()
Файл текстур:
import pygame
class Tiles:
TileSize = 32
Blocked = []
Blocked_Types = [] # "Add Tile Number to block that tile
def Load_texture(self, file, size):
bitmap = pygame.image.load(file)
bitmap = pygame.transform.scale(bitmap, (size, size))
surface = pygame.Surface((size, size), pygame.HWSURFACE|pygame.SRCALPHA)
surface.blit(bitmap, (0,0))
return surface
Grass = Load_texture(Load_texture, "Tiles\\Grass.png", 32)
Texture_Tags = {"1": Grass} #Add texture tag here
Модуль Dexti_GUI - это просто модуль с цветами и функциями для создания текста и кнопок.
Вот как я хочу, чтобы мой курсор был таким, чтобы при наведении курсора на плитку он полностью покрывал его Это мой редактор карт, в котором курсор находится надплитка, но плитка курсора не покрывает всю плитку