目前,我正在创建基于文本的RPG。我想知道如何才能创建一个有点互动的地图,定义特定的图块来保存某些世界信息,例如敌人的AI和战利品或城镇和地牢等地方,如何为这些地方创建基于文本的地图,以及如何跟踪玩家的运动遍及世界。

我希望世界是无边界的,以便玩家可以假设永远玩游戏。如果要创建一些定义城镇的类,我如何将随机的城镇对象拉到世界环境中的某个图块上,以便玩家进行交互?

我应该如何构建玩家类,敌人和角色AI类以及房间类?

最后,我该如何创建一个基于文本的视觉地图供玩家使用?

谢谢你的帮助

最佳答案

这个问题肯定太广泛了,因此我将范围缩小了一点。为了专注于我所解决的问题,我将首先陈述问题:'我如何制作地图-主要是从列表中-包含可以与玩家互动的某些属性,例如敌人的AI和战利品,并保留有关就基于文本的RPG而言,诸如城镇和地牢之类的地方?

我这样解决了这个问题:

class Player(object):
    def __init__(self, name):
        self.name = name

    def movement(self):
        while True:
            print room.userpos
            move = raw_input("[W], [A], [S], or [D]: ").lower() #Movement WASD.
            while True:
                if move == 'w':  #Have only coded the 'w' of the wasd for simplicity.
                    x, y = (1, 0)   #x, y are column, row respectively.  This is done
                    break           ##to apply changes to the player's position on the map.
            a = room.column + x  #a and b represent the changes that take place to player's
            b = room.row + y  ##placement index in the map, or 'tilemap' list.
            room.userpos = tilemap[a][b]
            if room.userpos == 3:
                print "LOOT!"   #Representing what happens when a player comes across
            return room.userpos ##a tile with the value 3 or 'loot'.
            break

class Room(object):
    def __init__(self, column, row):
        self.userpos = tilemap[column][row]
        self.column = column    #Column/Row dictates player position in tilemap.
        self.row = row

floor = 0
entry = 1
exit = 2
loot = 3                #Tile map w/ vairbale names.
tilemap = [[0, 1, 0],   #[floor, entry, floor],
           [3, 0, 0],   #[loot, floor, floor],
           [0, 2, 0]]   #[floor, exit, floor]

room = Room(0, 0)       #Player position for 'room' and 'Room' class -- too similar names
user = Player('Bryce')  #for larger exercices, but I figure I could get away with it here.

def main():     #Loads the rest of the program -- returns user position results.
    inp = raw_input("Press any button to continue.: ")
    if inp != '':
        user.movement()
        print room.userpos
main()


如果我要加载此程序,并用'w'将字符值“向前”移动,从索引[0] [0]到列表的索引[1] [0]-向上一行-它返回值3。这是通过将Room类的userpos变量映射到映射列表内的特定索引,并通过Player函数移动来跟踪所有更改来完成的。

关于python - 为基于文本的RPG创建基于文本的 map ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35121930/

10-11 21:46