John Doe

John Doe

  • NA
  • 7
  • 1.1k

Why does the count jump 2 numbers WindowsForms C#

Oct 25 2023 12:49 PM

using System;
using System.Windows.Forms;

namespace Shotgunna
{
    public partial class Form1 : Form
    {
        int playerShots = 0;
        int computerShots = 0;
        
        Random random = new Random();

        public Form1()
        {
            InitializeComponent();
        }

        private void PlayRound(int playerChoice)
        {
            // Slumpmässigt val för datorn (0 för load, 1 för shot, 2 för block)
            int computerChoice = random.Next(3);

            // Kolla om spelaren har skott innan de kan skjuta
            if (playerChoice == 1 && playerShots == 0)
            {
                MessageBox.Show("Spelaren kan inte skjuta, de har inga skott kvar.");
                return;
            }

            // Kolla om datorn har skott innan den kan skjuta
            if (computerChoice == 1 && computerShots == 0)
            {
                MessageBox.Show("Datorn kan inte skjuta, den har inga skott kvar.");
                return;
            }

            // Utför valen och uppdatera antalet laddade skott (om spelaren laddar)
            if (playerChoice == 0)
            {
                playerShots++;
                UpdateShotsCounts();
            }

            if (computerChoice == 0)
            {
                computerShots++;
                UpdateShotsCounts();
            }

            // Skjuta mot ladda regeln (spelaren vinner om de skjuter)
            if (playerChoice == 1 && computerChoice == 0)
            {
                MessageBox.Show("Spelaren vinner genom att skjuta mot ladda!");
                ResetGame();
            }
            if (computerChoice == 1 && playerChoice == 0)
            {
                MessageBox.Show("Datorn vinner genom att skjuta mot ladda!");
                ResetGame();
            }

            // Skjuta mot blocka (block) regeln
            if (playerChoice == 1 && computerChoice == 2)
            {
                MessageBox.Show("Spelaren förlorar ett skott genom att skjuta mot block!");
                playerShots--; // Spelaren förlorar ett skott
                UpdateShotsCounts();
            }
            if (computerChoice == 1 && playerChoice == 2)
            {
                MessageBox.Show("Datorn förlorar ett skott genom att skjuta mot block!");
                computerShots--; // Datorn förlorar ett skott
                UpdateShotsCounts();
            }

            // Ladda mot blocka regeln (den som laddar får ett skott om den andra blockar)
            if (playerChoice == 0 && computerChoice == 2)
            {
                MessageBox.Show("Spelaren får ett skott eftersom datorn blockade.");
                playerShots++;
                UpdateShotsCounts();
            }
            else if (computerChoice == 0 && playerChoice == 2)
            {
                MessageBox.Show("Datorn får ett skott eftersom spelaren blockade.");
                computerShots++;
                UpdateShotsCounts();
            }

            // Skjuta mot skjuta regeln (båda förlorar ett skott om de båda skjuter)
            if (playerChoice == 1 && computerChoice == 1)
            {
                MessageBox.Show("Båda förlorar ett skott genom att skjuta mot skjuta!");
                playerShots--;
                computerShots--;
                UpdateShotsCounts();
            }

            // Kolla om någon vinner med "shotgun" (spelaren vinner om de har 3 skott och skjuter)
            if (playerShots >= 3 && playerChoice == 1)
            {
                MessageBox.Show("Spelaren vinner med shotgun!");
                ResetGame();
            }
            else if (computerShots >= 3 && computerChoice == 1)
            {
                MessageBox.Show("Datorn vinner med shotgun!");
                ResetGame();
            }
        }


        private void ResetGame()
        {
            playerShots = 0;
            computerShots = 0;
            UpdateShotsCounts();
        }


        private void UpdateShotsCounts()
        {
            playerShotsLabel.Text = "Player Shots: " + playerShots;
            computerShotsLabel.Text = "Computer Shots: " + computerShots;
        }

        private void ShootBtn_Click(object sender, EventArgs e)
        {

            int playerChoice = 1; // Spelaren väljer "Shoot"
            PlayRound(playerChoice);


        }

        private void BlockBtn_Click(object sender, EventArgs e)
        {
            int playerChoice = 2; // Spelaren väljer "Block"
            PlayRound(playerChoice);
        }

        private void ReloadBtn_Click(object sender, EventArgs e)
        {
            int playerChoice = 0; // Spelaren väljer "Reload"
            PlayRound(playerChoice);
        }
    }
}


Answers (1)