2010-10-28 31 views
6

Có cách nào tốt hơn để thực hiện việc này không? Tôi cảm thấy như tôi đang làm điều gì đó sai trái bằng cách lặp lại quá nhiều.Có cách nào tốt hơn để viết bài này không?

O = viz.pick(1, viz.WORLD) 

BackSetts = ["set_b1b", "set_b2a", "set_b1a", "set_b2b"] 
LeftSetts = ["set_l1a", "set_l1b", "set_l2a", "set_l1b"] 
NormSetts = ["set_nr_a", "set_nr_b"] 
Maps = ["MapA","MapB"] 

if O.name in BackSetts: 
    for i in set(BackSetts)|set(Maps): 
     WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 

elif O.name in LeftSetts: 
    for i in set(LeftSetts)|set(Maps): 
     WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 

elif O.name in NormSetts: 
    for i in NormSetts: 
     WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 
+2

Bạn đang cố gắng làm gì? – katrielalex

+0

Đoạn mã này cho công cụ 3D của tôi (tương tự như panda3d) để kiểm tra xem "bản đồ" nào có thể nhìn thấy (alpha) dưới dạng họa tiết trên đa giác của tôi khi một đối tượng chuyển đổi được nhấp chuột (viz.pick); nó đảo ngược trạng thái trong suốt của texture được áp dụng. – relima

Trả lời

3

Việc chuyển đổi không đáng kể là:

O = viz.pick(1, viz.WORLD) 

BackSetts = ["set_b1b", "set_b2a", "set_b1a", "set_b2b"] 
LeftSetts = ["set_l1a", "set_l1b", "set_l2a", "set_l1b"] 
NormSetts = ["set_nr_a", "set_nr_b"] 
Maps = ["MapA","MapB"] 
anyset = [] 

if O.name in BackSetts: 
    anyset = set(BackSetts)|set(Maps) 

elif O.name in LeftSetts: 
    anyset = set(LeftSetts)|set(Maps) 

elif O.name in NormSetts: 
    anyset = NormSetts 

for i in anyset: 
    WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 

này sẽ chăm sóc như vậy NormSetts không union'd với Maps, như trong mã gốc của bạn.

Các vấn đề liên quan