我正在尝试制作一个基于回合制的角色扮演游戏,我正在研究转弯系统。
为了保持现在的简单,我试图按照他们的速度命令每个角色/敌人,然后以最高速度先行。下面是我的转弯系统代码的开始。
我想要做的一个例子是阅读Order[0]
(这将是禁食角色/敌人)并找出与之相关的角色/敌人。 Speed[0]
到Speed[3]
给出了我4个字符的速度,enemySpeed[0]
到enemySpeed[4]
给出了5个敌人的速度。
def Turn():
Turn = [int(Speed[0]), int(Speed[1]), int(Speed[2]), int(Speed[3]), int(enemySpeed[0]), int(enemySpeed[1]),int(enemySpeed[2]), int(enemySpeed[3]), int(enemySpeed[4])]
Order = sorted(Turn, key = int, reverse = True)
编辑:以下是有关玩家统计信息的一些信息。 在main()中:
name = ['Ben','Ellis','Curt','Jen']
HP = [100,100,100,100]
exp = [0,0,0,0]
lvl = [1,1,1,1]
player1 = [name[0],HP[0],exp[0],lvl[0]]
player2 = [name[1],HP[1],exp[1],lvl[1]]
player3 = [name[2],HP[2],exp[2],lvl[2]]
player4 = [name[3],HP[3],exp[3],lvl[3]]
PLAYERS = [player1, player2, player3, player4]
REGION = 'start'
POS = '[x, y]'
ITEMS = None
SIGEVENTS = False
gameData = [PLAYERS, REGION, POS, ITEMS, SIGEVENTS]
out of main():
def playerStats():
global Attack, Defense, Speed, MaxHP
Attack = [0,0,0,0]
Defense = [0,0,0,0]
Speed = [0,0,0,0]
MaxHP = [0,0,0,0]
for i in range(0,4):
Attack[i] = lvl[i] * 1
Defense[i] = lvl[i] * 2
Speed[i] = lvl[i] * 3
MaxHP[i] = lvl[i] * 4
return Attack, Defense, Speed, MaxHP
答案 0 :(得分:2)
不要只看只是的速度,而是看看你的玩家和敌人,然后设计一把钥匙来确定玩家的速度。
您没有分享有关如何定义玩家和速度的任何细节;我现在在这里使用一个数字:
players_and_enemies = range(8)
fastest = max(players_and_enemies, key=lambda p: int(Speed[i] if i < 4 else enemySpeed[i - 4]))
您可以根据数据结构简化此操作;例如,如果每个玩家和敌人拥有具有速度属性的对象,则可以在键功能中访问该属性。
max()
返回key
的最高值;如果您需要的只是最快的驱动程序,则无需对所有速度进行排序。
答案 1 :(得分:0)
我会详细说明一下,也许我可以给你一些想法。
角色,无论是NPC还是PC,都是类的一个对象,看起来像这样:
class Character:
def __init__ (self, name, xp = 0, level = 1, hp = 4, speed = 3, atk = 1, def_ = 2):
self.name = name
self.xp = xp
self.level = level
self.hp = self.curHp = hp
self.speed = speed
self.atk = atk
self.def_ = def_
self.inventory = []
现在使用此类可以实例化您的PC和NPC:
npcs = [Character (name) for name in ['Baldur', 'Lord Never', 'Ashyra'] ]
向您的班级添加方法可让您与其进行互动,例如:
class Character:
[....]
def takeDamage (self, dmg):
self.curHp -= min (0, dmg - self.def_)
def gainXP (self, xp):
self.xp += xp
#check for level up
def takeItem (self, item):
self.inventory.append (item)
def useItem (self, item):
item.activate ()
self.inventory.remove (item)
或者为了按照速度排列所有角色,您可以使用:
charactersBySpeed = sorted (characters, key = -character.speed)
等等等等。我们的想法是使用面向对象的编程来为您的代码中的现实建模(甚至是游戏的虚拟现实)。