Rock, Paper, Scissor game - how to end game when one wins three times? [duplicate]

旧时模样 提交于 2019-12-13 20:51:52

问题


I am writing a Rock, Paper, Scissor game, that plays against the computer. It works and all but I want to break the game when one off the two wins three times. But it keeps looping... I'm really new to programming so excuse if the code is messy... :(

And a big sorry for the double post, but my first post was pushed back to far to get some help after I changed it to English...

This is the Main:

static void Main(string[] args)
{

    Game ssp = new Game();

    Interaction.MsgBox("Welcome!");

    string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:");
    ssp.Start();
    ssp.Seewicharethevinner(Choice);
 }

This is the class with the methods that handels the game:

string CompusterChoice;

    //Starts the game
    public void Start()
    {
        //Computers hand
        Random rnd = new Random();
        int x = rnd.Next(0, 3);
        if (x == 0)
        { DatornsVal = "Rock"; }
        else if (x == 1)
        { DatornsVal = "Paper"; }
        else if (x == 2)
        { DatornsVal = "Scissor"; }

    }

    //Look who will win
    public void Seewicharethewinner(string _Choice)
    {
        string PlayerChoice = _Choice;
        string _PlayerChoice = _Choice.ToUpper();
        string _ComputerChoice = ComputerChoice.ToUpper(); 

        if (_PlayerChoice == _ComputerChoice)
        {
            Interaction.MsgBox("Tie!\nYour choice was: " + _Choice + "\n" + "Computer choice was: " + _ComputerChoice);
        string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:");
        ssp.Start();
        ssp.Seewicharethevinner(Choice);
        }

        else if (_ComputerChoice == "ROCK" && _PlayerChoice == "SCISSOR" || _ComputerChoice == "SICSSOR" && _PlayerChoice == "PAPER" || _ComputerChoice == "PAPER"
            && _PlayerChoice == "ROCK")

        {
            Interaction.MsgBox("You Lose!\nYour choice was: " + _Choice + "\n" + "Computer choice was: " + _ComputerChoice);

            int player = 0;
            int computer = 1;
            Points(computer, player);

        string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:");
        ssp.Start();
        ssp.Seewicharethevinner(Choice);
        }

        else if (_ComputerChoice == "ROCK" && _PlayerChoice == "PAPER" || _ComputerChoice == "SICSSOR" && _PlayerChoice == "ROCK" || _ComputerChoice == "PAPER"
            && _PlayerChoice == "SICSSOR")
        {

            Interaction.MsgBox("You won!\nYour choice was: " + _Choice + "\n" + "Computer choice was: " + _ComputerChoice);
            int player = 1;
            int computer = 0;
            Points(computer, player);

        string Choice = Interaction.InputBox("Chose Rock, Scissor eller Paper:");
        ssp.Start();
        ssp.Seewicharethevinner(Choice);
        }


    }
    public void Points(int _computer, int _player)
    {
        int computerpoints = 0;
        int playerpoints = 0;
        if (_computer > _player)
        {
            computerpoints++;
        }
        else
        {
            playerpoints++;
        }
        if (computerpoints == 3)
        {
          Interaction.MsgBox("Computer won three times!");
        }
        if (playerpoints == 3)
        {
            Interaction.MsgBox("You won three times!");
        }
    }

回答1:


Inside of your Points method:

int computerpoints = 0;
int playerpoints = 0;

If I am reading this correctly, you keep calling this Points function and resetting both of those locally declared int's.

These variables will initialize to be 0 every time you call the function.

You should try to use this instead:

    static int computerpoints = 0;
    static int playerpoints = 0;

This way your int's will not get initialized with 0 again. Make sure to declare these variables as global variables, so they don't go out of scope (don't declare them inside the method).

Hope this helps.



来源:https://stackoverflow.com/questions/22391753/rock-paper-scissor-game-how-to-end-game-when-one-wins-three-times

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!