2014-11-11 2 views
0

텍스트 기반 RPG를 만들고 있는데, 한 번에 두 명 이상의 전투기를 갖는 것이 좋을 것 같습니다.함수가 값순으로 정렬됩니다.

내 전투 기능에는 attack()의 기능이 있습니다. 내 프로그램이 attack("player")과 같은 공격자의 이름으로이 함수를 호출하도록 만들고 싶습니다. 전투에 참가한 모든 사람들과 속도에 따라 순서대로 (정수 변수).

나는이 다음과 같이 만들 수 있습니다 알고

if playerspeed<enemyspeed: 
    attack(enemyname) 
    attack("player") 
if playerspeed>enemyspeed: 
    attack("player") 
    attack(enemyname) 

그러나 예를 들어,이있는 경우 네명의 전투기,이 일은 고통 스러울 것입니다. 이렇게 할 수있는 합리적인 방법이 있습니까?

답변

2

당신은 목록에서 이름을 넣어 공격 속도로 주문을 할 수 있습니다 : 당신이, 당신은 객체의 속성에 자신의 속도를 저장할 수 대신 선수들과 원수 클래스를 사용하는 경우

fighters = [(playerspeed, 'player'), (enemyspeed, enemyname)] 
fighters.sort() 
for speed, fighter in fighters: 
    attack(fighter) 

및 대신 정보 터플 생성하는 데이 속성에 의해 분류 :

fighters = [player, enemy] 
fighters.sort(key=lambda f: f.speed) 
for fighter in fighters: 
    fighter.attack(fighters) 

개체도 attack() 방법이있다; 여기 나는 아마도 그 방법이 모두 누가 싸움에 관련되어 있는지 알고 싶다고 가정했다.