Tôi đang làm việc trên chương trình pacman viết bằng python. Một trong các mô-đun xử lý việc trình bày đồ họa của trò chơi ăn đậu. Tất nhiên đây là một số màu của bảng điều khiển. Danh sách như sau:
GHOST_COLORS = [] ## thiết lập danh sách các màu ma
GHOST_COLORS.append(formatColor(.9,0,0)) # Đỏ
GHOST_COLORS.append(formatColor(0,.3,.9)) # Blue
GHOST_COLORS.append(formatColor(.98,.41,.07)) # Cam
GHOST_COLORS.append(formatColor(.1,.75,.7)) # Xanh
GHOST_COLORS.append(formatColor(1.0,0.6,0.0)) # Vàng
GHOST_COLORS.append(formatColor(.4,0.13,0.91)) # Tím
Những màu này sau đó được ánh xạ:
GHOST_VEC_COLORS = bản đồ(colorToVector, GHOST_COLORS)
Đây là colorToVector:
def colorToVector(màu):
return map(lambda x: int(x, 16) / 256.0, [color[1:3], color[3:5], color[5:7]])
Tôi nghĩ tôi hiểu cách hoạt động của lambdas. Nhưng tôi bối rối về cách cắt màu:
- Được tích hợp vào bộ dữ liệu (x,16),
- Chuyển đổi sang int --> Điều này không thể thực hiện được
- Sau đó chia cho 256,0?
Tôi dường như gặp lỗi bất cứ khi nào tôi cố gắng tạo một bộ dữ liệu và chuyển đổi nó thành int trong python.
Tôi đang thiếu gì ở đây?
Bất kỳ trợ giúp sẽ được đánh giá rất cao.
PS: Khi tôi giới thiệu
in (màu)
Và
print map(lambda x: int(x, 16) / 256.0, [color[1:3], color[3:5], color[5:7]])
Trong quá trình kết hợp, tôi nhận được các giá trị sau của GHOST_COLORS[0] dưới dạng màu:
>>#e50000
>>[0,89453125, 0,0, 0,0]
#e50000
là một chuỗi có 7 ký tự. Vì thế,
color[1:3] == "e5" # Giá trị thập lục phân
color[3:5] == "00" # Giá trị thập lục phân
color[5:7] == "00" # Giá trị thập lục phân
Bây giờ, chúng được chuyển từng cái một đến lambda
chức năng int(x, 16)/256.0
. Hiện nay,x
将有 e5
. int
Tham số thứ hai của hàm chỉ ra rằng tham số đầu tiên dựa trên hệ thập lục phân. Vì vậy,int
Sẽ e5
Chuyển đổi sang số thập phân tương đương, sau đó chia cho 256.
Tôi là một lập trình viên xuất sắc, rất giỏi!