add rsp, 8
iretq
我刚刚尝试将player2引入我在MU-editor中制作的python游戏中,我可以看到player2并将其移动,但是存在一些问题。敌人不追逐玩家2,玩家2无法取钱。我还想为玩家2添加一个score2变量,并在他与钱发生冲突时存储该分数。
答案 0 :(得分:2)
要提取款项,您必须在playyer2
和money
之间添加碰撞测试:
score2 = 0
def update():
global score, score2
# [...]
if money.colliderect(player2):
money.x = random.randint(0, WIDTH)
money.y = random.randint(0, HEIGHT)
score2 += 1
要追赶player
或player2
,您必须找到更接近敌人的玩家。比较Euclidean distance从敌人到玩家的平方并追逐距离更近的玩家:
def update():
dx1, dy1 = player.x - enemy.x, player.y - enemy.y
dx2, dy2 = player2.x - enemy.x, player2.y - enemy.y
dist1sq = dx1*dx1 + dy1*dy1
dist2sq = dx2*dx2 + dy2*dy2
player_near = player if dist1sq < dist2sq else player2
if enemy.x < player_near.x:
enemy.x += 1
if enemy.x > player_near.x:
enemy.x -= 1
if enemy.y < player_near.y:
enemy.y += 1
if enemy.y > player_near.y:
enemy.y -= 1
if player.colliderect(enemy):
exit()
if player2.colliderect(enemy):
exit()
# [...]
功能update
:
def update():
global score, score2
if keyboard.right:
player.x += 4
if keyboard.left:
player.x -= 4
if keyboard.down:
player.y += 4
if keyboard.up:
player.y -= 4
if player.x > WIDTH:
player.x = WIDTH
if player.x < 0:
player.x = 0
if player.y < 0:
player.y = 0
if player.y > HEIGHT:
player.y = HEIGHT
if keyboard.d:
player2.x += 4
if keyboard.a:
player2.x -= 4
if keyboard.s:
player2.y += 4
if keyboard.w:
player2.y -= 4
if player2.x > WIDTH:
player2.x = WIDTH
if player2.x < 0:
player2.x = 0
if player2.y < 0:
player2.y = 0
if player2.y > HEIGHT:
player2.y = HEIGHT
dx1, dy1 = player.x - enemy.x, player.y - enemy.y
dx2, dy2 = player2.x - enemy.x, player2.y - enemy.y
dist1sq = dx1*dx1 + dy1*dy1
dist2sq = dx2*dx2 + dy2*dy2
player_near = player if dist1sq < dist2sq else player2
if enemy.x < player_near.x:
enemy.x += 1
if enemy.x > player_near.x:
enemy.x -= 1
if enemy.y < player_near.y:
enemy.y += 1
if enemy.y > player_near.y:
enemy.y -= 1
if player.colliderect(enemy):
exit()
if player2.colliderect(enemy):
exit()
if money.colliderect(player):
money.x = random.randint(0, WIDTH)
money.y = random.randint(0, HEIGHT)
score = score + 1
if money.colliderect(player2):
money.x = random.randint(0, WIDTH)
money.y = random.randint(0, HEIGHT)
score2 += 1