0

ターン ベースの RPG を作ろうとしていて、現在ターン システムに取り組んでいます。

今のところ簡単にするために、各キャラクター/敵を速度順に並べようとしており、最高速度が最初になります。以下は、ターン システムのコードの開始部分です。

私がやりたいことの例は、Order[0](断食したキャラクター/敵になります)を読んで、どのキャラクター/敵に関連するかを見つけることです。は私の 4 人のキャラクターの速度Speed[0]を示し、 は 5 人の敵の速度を示します。Speed[3]enemySpeed[0]enemySpeed[4]

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]

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
4

2 に答える 2

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。最速のドライバーだけが必要な場合は、すべての速度を並べ替える必要はありません。

于 2013-07-29T13:46:56.377 に答える