1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
def printJump(actor='ass'):
    print actor + ' jumpu'
 
def printRun(actor='ass'):
    print actor + ' run'
 
def printPoop(actor='ass'):
    print actor + ' shit...'
 
class Who:
    def __init__(self, name):
        self.name = name
 
    def jump(self):
        print self.name + ' jump'
 
    def run(self):
        print self.name + ' run'
 
    def poop(self):
        print self.name + ' poop'
 
############################## 커맨드 패턴 ##############################
# 이 패턴을 이용해서 유저와 ai의 입력 인터페이스를 동일하게 설정할 수 있다.
 
class Jump:
    def execute(self, who):
        printJump()
        who.jump()
 
class Run:
    def execute(self, who):
        printRun()
        who.run()
 
class Poop:
    def execute(self, who):
        printPoop()
        who.poop()
 
class InputHandler:
    def __init__(self, btnX, btnY, btnZ):
        self.btnX = btnX
        self.btnY = btnY
        self.btnZ = btnZ
 
    def handleInput(self):
        if key.vk == libtcod.KEY_UP:
            return self.btnX
        elif key.vk == libtcod.KEY_LEFT:
            return self.btnY
        elif key.vk == libtcod.KEY_RIGHT:
            return self.btnZ
 
###########################################################################
 
inputHandler = InputHandler(Jump(), Run(), Poop())
 
 
######################## 함수를 쓰는 커맨드 패턴 #########################
# 사실 패턴도 아냐 ㅋㅋ 개쩐당
class FInputHandler:
    def __init__(self, btnX, btnY, btnZ):
        self.btnX = btnX
        self.btnY = btnY
        self.btnZ = btnZ
 
    def handleInput(self):
        if key.vk == libtcod.KEY_UP:
            return self.btnX
        elif key.vk == libtcod.KEY_LEFT:
            return self.btnY
        elif key.vk == libtcod.KEY_RIGHT:
            return self.btnZ
########################################################################
fiHandler = FInputHandler(printJump, printRun, printPoop)
 
cs

사용
패턴적용
command = inputHandler.handleInput()
    if command is not None:
        command.execute(Who('yee'))

그런 거 없다. 함수다.
command = fiHandler.handleInput()
    if command is not None:
        command('he')

파이슨으로 커맨드 패턴을 구현해봤는데
걍 함수 주면 되더라 패턴 그딴 거 노필요

함수가 1급시민 되니 뭔가 존나... 멋있음