我正在尝试制作2人游戏

  • 本文关键字:2人 游戏 python
  • 更新时间 :
  • 英文 :


你好,我想让2人猜数字游戏,但我不知道如何显示获胜消息有人可以帮助吗?

guessp1 = int(input(player1 + "'s turn = "))
if guessp1 > answer:
print(player1,"has to guess lower!")
time.sleep(2)
else:
print(player1,"has to guess higher!")
time.sleep(2)
guessp2 = int(input(player2 + "'s turn = "))
if guessp2 > answer:
print(player2,"has to guess lower!")
time.sleep(2)
else:
print(player2,"has to guess higher!")
time.sleep(2)
guessp1 = int(input(player1 + "'s turn = "))
while guessp1 & guessp2 != answer:
if guessp1 > answer:
print(player1,"has to guess lower!")
time.sleep(2)
else:
print(player1,"has to guess higher!")
time.sleep(2)
guessp2 = int(input(player2 + "'s turn = "))
if guessp2 > answer:
print(player2,"has to guess lower!")
time.sleep(2)
else:
print(player2,"has to guess higher!")
time.sleep(2)
guessp1 = int(input(player1 + "'s turn = "))

总是第一个玩家赢。

如果你想保留你所拥有的,因为你写了它并理解它,只需将所有的If和else更改为:

if guessp1 == answer:
print("You win")
quit()
elif guessp1 > answer:
print(player1,"has to guess lower!")
time.sleep(2)
else:
print(player1,"has to guess higher!")
time.sleep(2)

您也可以将while循环更改为'guessp1或guessp2'而不是'guessp1和guessp2'。好运!

这一切都可以做得更简单,如果你学会如何编写自己的函数,以摆脱重复的代码。这里我创建了一个函数,它接受当前玩家的名字和答案,在函数中我请求输入并检查答案。如果正确,则从函数返回True,否则返回False。然后在函数外检查是否找到赢家,并在每一步交换players

import time
import random
def make_turn_and_check(current_player, answer):
time.sleep(2)
guess = int(input(current_player + "'s turn = "))
if guess > answer:
print(current_player, "has to guess lower!")
elif guess < answer:
print(current_player, "has to guess higher!")
else:
return True # winner!
return False # not winner
answer = random.randint(1,100)
current_player, next_player = 'Bob', 'Alice'
while True:
# make next player current, and current player next
current_player, next_player = next_player, current_player
if make_turn_and_check(current_player, answer):
break # winner found
print('The winner is', current_player)

评论:

while True:意味着无限循环,它不会停止循环,直到你执行break

语法a, b = b, a表示同时赋值a = bb = a,但如果是2行,例如:

a = 'Alice'
b = 'Bob'
a = b
b = a

则结果将是错误的,因为a在第一行已经被赋值给Bob,所以在第二行之后,ab都将是Bob。使用语法a, b = b, a,值将被交换,b将是Alice,a将是Bob

在我的代码中,我使用它将当前玩家从下一个玩家中分离出来,并将当前玩家分配给下一个玩家。

最后一行

if make_turn_and_check(current_player, answer):
break

调用上面的函数,因为如果找到获胜者,函数返回True,那么在if语句中,我们可以执行break行,结束游戏。否则,我们跳过break,进入循环的下一次迭代。

为了更好地理解,您可以将函数产生的True/False值赋给一个中间变量:

is_current_winner = make_turn_and_check(current_player, answer)
if is_current_winner:
break

is_current_winner将是包含TrueFalse的布尔变量

最新更新