当前位置: 首页 > 知识库问答 >
问题:

如何在每次执行while循环时保持值不变?

颛孙博易
2023-03-14

我正在做一个双人骰子游戏,有五轮,但是我想保持前几轮的分数不变,我该怎么做?

游戏规则如下:

每个玩家骰子上滚动的分数会加到他们的分数上。如果总数是偶数,他们的分数会增加10分。如果总数是奇数,他们的分数会减去5分。如果他们掷出双倍,他们会多掷一个骰子,并将滚动的分数加到他们的分数上。玩家的分数在任何时候都不能低于0。在5轮结束时得分最高的人获胜。如果两个玩家在5轮结束时得分相同,他们每人投1个死,得分最高的人获胜(这一直重复到有人获胜)。

import random
import time


total_player2score = 0
total_player1score = 0
rounds = 0
player_1 = 0
player_2 = 0
while rounds != 5:
    total_player2score = total_player2score + player_2
    total_player1score = total_player1score + player_1
    rounds = rounds + 1
    number = random.randint(1, 6)
    number2 = random.randint(1, 6)
    total_player1score = number + number2
    print("*"*50)
    print("Round {}!".format(rounds))
    print("*"*50)
    print("Player 1's turn. Type 'roll' to roll the dice.")
    player1_input = input(">>> ")
    if player1_input == "roll":
        time.sleep(0.5)
        print("Player 1's first roll is", number)
    print("Player 1's second roll.Type 'roll' to roll the dice")
    player1_input = input(">>> ")
    if player1_input == "roll":
        time.sleep(0.5)
        print("player 1's second roll is", number2)
    if total_player1score % 2 == 0:
        total_player1score = total_player1score + 10
        print("Player 1's total is even so 10 points will be added")
        print("*"*50)
        print("Player 1 has", total_player1score, "points")
    else:
        total_player1score = total_player1score - 5
        total_player1score = max(0, total_player2score)
        print("player 1's total is odd so 5 points will be deducted")
        print("*"*50)
        print("Player 1 has", total_player1score, "points")
    number = random.randint(1, 6)
    number2 = random.randint(1, 6)
    total_player2score = number + number2
    print("*"*50)
    print("Player 2's turn. Type 'roll' to roll the dice")
    player2_input = input(">>> ")
    if player2_input == "roll":
        time.sleep(0.5)
        print("Player 2's first roll is", number)
    print("Player 2's second roll.Type 'roll' to roll the dice")
    player2_input = input(">>> ")
    if player2_input == "roll":
        time.sleep(0.5)
        print("player 2's second roll is", number2)
    if total_player2score % 2 == 0:
        total_player2score = total_player2score + 10
        print("Player 2's total is even so 10 points will be added")
        print("*"*50)
        print("Player 2 has", total_player2score, "points")
    else:
        total_player2score = total_player2score - 5
        total_player2score = max(0, total_player2score)
        print("player 2's total is odd so 5 points will be deducted")
        print("*"*50)
        print("Player 2 has", total_player2score, "points")

共有1个答案

薛华奥
2023-03-14
def writeUp(score_1,score_2,nameoffile):
    with open(f"{nameoffile}.txt","a") as logz:
        print(f"score1 {score_1}\nscore2 {score_2}",file=logz)



def readUp(nameoffile):
    with open(f"{nameoffile}.txt","r") as data:
        lines = data.readlines()
        last_2 = lines[:2]
        score_1,score_2 = None,None
        for element in last_2:
            splitt = element.split(' ')
            if element.find('score1') != -1:
                score_1 = int(splitt[1])
            elif element.find('score2') != -1:

                score_2 = int(splitt[1])

    return score_1,score_2



sci1,sci2 = 50,50
writeUp(sci1,sci2,'mysaves')

sc1,sc2 = readUp('mysaves')
print(sc1,sc2)

#这应该会有所帮助,给定的函数会创建一个txt文件并将分数存储到其中

 类似资料:
  • 问题内容: 我很难弄清楚为什么while循环实际上不会循环。它运行一次并停止。 我正在尝试使其循环,以便用户能够多次转换单位。任何帮助都欢迎! 问题答案: 问题在于,当您呼叫时,它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需在调用后放一行代码。 示例和完整说明: 假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为。 该代码获取值,并且使输入超出第一个。

  • 我试图用Java实现一个简单的客户机-服务器应用程序。 这是代码: 客户端.java 服务器.java 这是主要类: 代码的逻辑很简单:客户端和服务器都在等待< code>while(true)循环中的消息。 服务器的< code>listen方法中的< code>while循环执行得很好。但是,在< code>listenForMessages方法中,循环似乎只执行一次。我只看到一个“在循环”印

  • 问题内容: 最终它将在jLabel上显示最终编号,但不会递增更新编号。任何帮助 问题答案: Swing是单线程的 。因此, 长时间运行的任务绝不应在EDT中进行 。这包括睡觉。而是使用。这将在后台线程中延迟,然后发布要在EDT中执行的操作。 也可以看看: 如何使用摇摆计时器 该SSCCE模仿一个计数器,该计数器从每秒开始计数(即更新实例),直到应用程序终止。

  • 本文向大家介绍C#中for循环、while循环循环执行的方法,包括了C#中for循环、while循环循环执行的方法的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下C#中的循环执行for循环 在这一节练习中,我们向大家介绍一下C#中的另一种重要的循环语句,for循环。 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:逻辑表达式,循环控制条件;当条件为真时,循环执行循环体中的语句。

  • 我正在编写一个 Java 程序。它应该打印出年终账户余额,今年投资,年度回报和年度数量。前任: 第一年-投资10000美元,投资额为10%,最终投资额为11000美元第二年-在现有11000美元的基础上再投资10000美元,现在你有21000美元,年回报率为2100美元,最终投资额为23100美元,持续投资6年。 我的代码打印了所有6年,但与第一年的值相同。循环有什么问题吗?非常感谢。这里我的代码

  • 我正在使用Vagrant VirtualBox CentOS 6.5(box)创建虚拟机。每次我向VM发出命令vagrant up和SSH时,我都会收到以下消息。 请注意以下几点。 虚拟机设置为静态IP(例如10.211.55.10) 我还尝试了引导,将/etc/ssh复制到/vagrant/ssh,然后在虚拟机提供上,将/vagrant/ssh/*复制回/etc/ssh,但这似乎没有帮助。 绕过