コード例 #1
0
ファイル: pyhack.py プロジェクト: pennyarcade/pyhack
    def __init__(self):
        """initialize game"""
        super(PyHack, self).__init__()

        self.screen = Crt()
        self.screen.clr_scr()

                # 0   1    2    3    4    5    6    7
                # 8   9   10   11   12   13   14   15
        self.room = {
            1:[
                '#', '#', '#', '#', '#', '#', '#', '#',   # ^
                '#', '#', '#', '#', '#', '#', '#', '#'
            ],
            2:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '.', '.', '.', '.', '.', '.', '#'
            ],
            3:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '#', '#', '#', '#', '.', '.', '#'
            ],
            4:[
                '#', '.', '.', '.', '.', '.', '.', '#',   # |
                '.', '#', '.', '.', '.', '.', '.', '#'
            ],
            5:[
                '#', '.', '.', '.', '.', '.', '@', '#',   # |
                '.', '#', '.', '.', '#', '.', '.', '#'
            ],
            6:[
                '#', '.', '.', '.', '.', '.', '.', '#',   # x
                '.', '.', '.', '.', '#', '.', '.', '#'
            ],
            7:[
                '#', '.', '.', '.', '.', '#', '#', '#',   # |
                '.', '#', '#', '.', '#', '.', '.', '#'
            ],
            8:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '.', '#', '#', '#', '.', '.', '#'
            ],
            9:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '.', '.', '.', '.', '.', '.', '#'
            ],
            10:[
                '#', '#', '#', '#', '#', '#', '#', '#',   # |
                '#', '#', '#', '#', '#', '#', '#', '#'
            ]
        }
        # <---------------------y---------------------------->

        self.stuff = {
            'wall' : "#",
            'player' : "@",
            'empty' : ".",
            'money' : "$",
            'chest' : "C"
        }
        # self.potion = ['hp','xp','dmg']
        # self.weapon = ['sword','nuclear bomb','TNT']

        self.pos = [] # 0 is X,1 is Y

        self.updater()
コード例 #2
0
ファイル: pyhack.py プロジェクト: pennyarcade/pyhack
class PyHack(object):
    """main game class"""

    def __init__(self):
        """initialize game"""
        super(PyHack, self).__init__()

        self.screen = Crt()
        self.screen.clr_scr()

                # 0   1    2    3    4    5    6    7
                # 8   9   10   11   12   13   14   15
        self.room = {
            1:[
                '#', '#', '#', '#', '#', '#', '#', '#',   # ^
                '#', '#', '#', '#', '#', '#', '#', '#'
            ],
            2:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '.', '.', '.', '.', '.', '.', '#'
            ],
            3:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '#', '#', '#', '#', '.', '.', '#'
            ],
            4:[
                '#', '.', '.', '.', '.', '.', '.', '#',   # |
                '.', '#', '.', '.', '.', '.', '.', '#'
            ],
            5:[
                '#', '.', '.', '.', '.', '.', '@', '#',   # |
                '.', '#', '.', '.', '#', '.', '.', '#'
            ],
            6:[
                '#', '.', '.', '.', '.', '.', '.', '#',   # x
                '.', '.', '.', '.', '#', '.', '.', '#'
            ],
            7:[
                '#', '.', '.', '.', '.', '#', '#', '#',   # |
                '.', '#', '#', '.', '#', '.', '.', '#'
            ],
            8:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '.', '#', '#', '#', '.', '.', '#'
            ],
            9:[
                '#', '.', '.', '.', '.', '.', '.', '.',   # |
                '.', '.', '.', '.', '.', '.', '.', '#'
            ],
            10:[
                '#', '#', '#', '#', '#', '#', '#', '#',   # |
                '#', '#', '#', '#', '#', '#', '#', '#'
            ]
        }
        # <---------------------y---------------------------->

        self.stuff = {
            'wall' : "#",
            'player' : "@",
            'empty' : ".",
            'money' : "$",
            'chest' : "C"
        }
        # self.potion = ['hp','xp','dmg']
        # self.weapon = ['sword','nuclear bomb','TNT']

        self.pos = [] # 0 is X,1 is Y

        self.updater()


    def updater(self):
        """update game screen"""
        # self.screen.clr_scr()
        self.screen.goto_xy(0, 0)
        self.gamemap()
        self.player_pos()


    def gamemap(self):
        """draw game mask"""
        for i in range(1, len(self.room) + 1):
            self.screen.write_ln("".join(self.room[i]))


    def player_pos(self):
        """get player position"""
        for i in range(1, len(self.room) + 1):
            if self.stuff['player'] in self.room[i]:
                x_axis = i
                y_axis = self.room[i].index(self.stuff['player'])
                del self.pos[:]
                self.pos.append(x_axis)
                self.pos.append(y_axis)


    def game_loop(self):
        """main game loop"""
        while True:
            pressedkey = self.screen.read_key()

            if pressedkey == 'w' or pressedkey == 'W':
                self.do_up()
            elif pressedkey == 's' or pressedkey == 'S':
                self.do_down()
            elif pressedkey == 'a' or pressedkey == 'A':
                self.do_left()
            elif pressedkey == 'd' or pressedkey == 'D':
                self.do_right()
            elif pressedkey == '#':
                quit()


    def do_up(self):
        """process up movement"""
        if self.room[self.pos[0]-1][self.pos[1]] != self.stuff['wall']:
            self.move_up(self.stuff['empty'], self.stuff['player'])
            self.updater()
            self.screen.write_ln(self.pos)
        else:
            self.screen.write_ln("Bump! Wall : up")


    def do_down(self):
        """process down movement"""
        if self.room[self.pos[0]+1][self.pos[1]] != self.stuff['wall']:
            self.move_down(self.stuff['empty'], self.stuff['player'])
            self.updater()
            self.screen.write_ln(self.pos)
        else:
            self.screen.write_ln("Bump! wall : down")


    def do_right(self):
        """process right movement"""
        if self.room[self.pos[0]][self.pos[1]+1] != self.stuff['wall']:
            self.move_right(self.stuff['empty'], self.stuff['player'])
            self.updater()
            self.screen.write_ln(self.pos)
        else:
            self.screen.write_ln("Bump! wall : right")


    def do_left(self):
        """process right movement"""
        if self.room[self.pos[0]][self.pos[1]-1] != self.stuff['wall']:
            self.move_left(self.stuff['empty'], self.stuff['player'])
            self.updater()
            self.screen.write_ln(self.pos)
        else:
            self.screen.write_ln("Bump! wall : left")


    def move_up(self, inst_replace, inst_player):
        """move player up"""
        (self.room[self.pos[0]]).pop(self.pos[1])
        (self.room[self.pos[0]]).insert(self.pos[1], inst_replace)
        (self.room[self.pos[0] - 1]).pop(self.pos[1])
        (self.room[self.pos[0] - 1]).insert(self.pos[1], inst_player)


    def move_down(self, inst_replace, inst_player):
        """move player down"""
        (self.room[self.pos[0]]).pop(self.pos[1])
        (self.room[self.pos[0]]).insert(self.pos[1], inst_replace)
        (self.room[self.pos[0] + 1]).pop(self.pos[1])
        (self.room[self.pos[0] + 1]).insert(self.pos[1], inst_player)


    def move_left(self, inst_replace, inst_player):
        """move player left"""
        (self.room[self.pos[0]]).pop(self.pos[1])
        (self.room[self.pos[0]]).insert(self.pos[1], inst_replace)
        (self.room[self.pos[0]]).pop(self.pos[1] - 1)
        (self.room[self.pos[0]]).insert(self.pos[1] - 1, inst_player)


    def move_right(self, inst_replace, inst_player):
        """move player right"""
        (self.room[self.pos[0]]).pop(self.pos[1])
        (self.room[self.pos[0]]).insert(self.pos[1], inst_replace)
        (self.room[self.pos[0]]).pop(self.pos[1] + 1)
        (self.room[self.pos[0]]).insert(self.pos[1] + 1, inst_player)