2010-01-06 5 views
1

나는 뱀이 다른 종류의 음식을 먹을 수있는 추가 기능을 가진 뱀 게임을 만들려고 노력하고있다. 음식의 일부는 얼마 동안 특별한 힘을 줄 것이다. like스네이크 게임 디자인

diff를 디자인 할 때. 음식 나는 음식 인터페이스를 만들고있어. 그리고 모든 종류의 음식이 그것을 구현합니다. 그래서 오직 Food 's ref. 나는 어떤 종류의 음식이라도 만들 수있다.

유일한 문제는 힘을 나타내는 것입니다. 나는 그것을 선상에서 또는 뱀에서 나타낼 수 있습니다. 뱀은 논리적 인 것처럼 보이는 가장 좋은 옵션입니다. 어느 누구도 내가 그것을 어떻게 표현할 수 있을까요?

+2

, 나는 좋은 답변도 어떻게 보이는지 모른다. 그러므로 나는 진짜 질문이 아니라는 결론을 내리고있다. –

+2

그는 모든 nokia 전화에 존재하는 '뱀 게임'을 언급하고 있습니다. (게임은 이전에 존재 했었지만, 노키아는 정말 유명하고 잘 알려졌습니다.) – Toad

+3

그리고 여기 도스는 인기 있고 유명 해졌다 고 생각했습니다. :( –

답변

4

당신은 Template Pattern 또는 Decorator Pattern을 살펴 할 수 있습니다.

기본 아이디어는 "Snake"가 호출 된 모듈 트리로 작업을 내 보내야한다는 것입니다. 예를 들어 Snake.Move()가 실제로 이동 수정 자 ("힘"에서 제공 한 것)가 있는지 확인하는 것입니다. 그렇지 않으면 자체 내부 이동 객체가 기본값이됩니다. 구현 방법에 따라 전원이 해당 효과를 대체하거나 일시적으로 무시하거나 계단식으로 연결할 수 있습니다.

7

모든 음식에 참조가있는 기본 powerclass를 만들 수 있습니다. 이런 식으로 모든 음식은 어떤 힘을 가질 수 있습니다.

모든 권한에 대해이 기본 powerclass 형식을 상속합니다.

음식을 먹는 순간 파워 클래스가 뱀에게 전송됩니다. 뱀은 하나의 참조 (마지막 먹은 힘까지) 또는 권력 목록 (여러 권력이 동시에 활성화 될 수있는 경우)을 보유 할 수 있습니다.

2

예, 뱀마다 더욱 유연합니다. 멀티 플레이어 게임으로 만들려면 각 뱀이 그 힘을 갖습니다.

전원 -> 음식 매핑이 누락 된 것 같습니다. 그러나 그것은 하나의 음식이 많은 힘을 주느냐 아니면 하나의 힘이 다른 음식을 가질 수 있는지에 달려 있습니다.

글쎄 어떻게 할 수있는 많은 방법이 있습니다. 내가 생각할 수있는 가장 기본적인 것은 다른 유형의 음식을 전달할 때 다른 힘을 낼 정적 인 방법을 사용하는 것입니다. 뱀이 뭔가를 먹을 때마다 SuperPower.onNomNom(FoodEaten)라고 부릅니다. 예 :

class SuperPower 
{ 
    public static SuperPower omNomNom(Food f) 
    { 
     if(f==InvisibilityFruit) /*You can use switch but it depends on language*/ 
     { 
     return InvisibilityPower() 
     } 
     else if 
     { 
     ... 
     } 

    } 

} 

class InvisibilityPower extends SuperPower{...} 
1

유연한 솔루션은이 같은 수준의 음식을 만드는 것입니다 :

class Food(object): 
    def __init__(self, icon, [...], power): 
     self.icon = icon 
     self.[...] = [...] 
     self.power = power 

이 방법은 당신의 독립적으로 전원/값/아이콘의 당신의 세트를 만들 수 있습니다. 새로운 권한이 있다면 아무 것도 다시 코딩 할 필요가 없습니다. 뱀 클래스에서

: 질문의 모호성을 감안할 때

def eat_food(self, food): 
    self.score += food.value 
    self.apply_power(food.power) 

def apply_power(self, power): 
    power.apply(self) 
관련 문제