• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Zasięgi zmiennych

Object Storage Arubacloud
0 głosów
147 wizyt
pytanie zadane 8 czerwca 2019 w C# przez MakaBresk Obywatel (1,060 p.)
zamknięte 9 czerwca 2019 przez MakaBresk

Dzień dobry, mam problem z zasięgiem zmiennej, a dokładnie do klasy generatora pseudolosowego.

 

Oto mój kod:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Zadanie_12
{
    public partial class GuessNumber : Form
    {
        public GuessNumber()
        {
            InitializeComponent();
        }

        private void Random_Number_Click(object sender, EventArgs e)
        {
            Random x = new Random(DateTime.Now.Millisecond); // Pobranie czasu systemowego i rozpoczęcie generowania liczb pseudolosowych
        }

        private void Display_History_Click(object sender, EventArgs e)
        {

        }

        private void Check_Number_Click(object sender, EventArgs e)
        {
            try
            {
                int answer = int.Parse(textBox1.Text); // Konwersja string na int
                int number = x.Next(1, 20); // Losowanie liczby pseudolosowej z przedziału <1,20>

                if (answer == number) // Sprawdzenie czy użytkownik zgadł
                    richTextBox1.Text = "Brawo zgadłeś! ";

                richTextBox1.Text = "Gramy dalej?" + Environment.NewLine
                        + "Wpisz tak/nie.";

                if (answer.ToString() == "tak")
                    number = x.Next(1, 20);
                else if (answer.ToString() == "nie")
                {
                    richTextBox1.Text = "Koniec gry." + Environment.NewLine
                        + "Sprawdź swoje statystyki z gry. ";
                }

                // Podpowiedzi
                else if (answer < number)
                    richTextBox1.Text = "Zgadywana liczba jest większa!";
                else if (answer > number)
                    richTextBox1.Text = "Zgadywana liczba jest mniejsza!";
            }
            catch (FormatException)
            {
                richTextBox1.Text = "Wpisałeś niepoprawną liczbę! Popraw ją!";
            }
        }
    }
}

Jak mogę uzyskać dostęp do x poza funkcją Random_Number_Click? A mianowicie chce mieć dostęp do tej klasy w funkcji Check_Number_Click.

komentarz zamknięcia: Problem rozwiązany

1 odpowiedź

+1 głos
odpowiedź 8 czerwca 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)
wybrane 9 czerwca 2019 przez MakaBresk
 
Najlepsza

Wystarczy, że zdefiniujesz globalnie pole random:
 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Zadanie_12
{
    public partial class GuessNumber : Form
    {
        private Random x { get; set; }
        public GuessNumber()
        {
            InitializeComponent();
        }
 
        private void Random_Number_Click(object sender, EventArgs e)
        {
            x = new Random(DateTime.Now.Millisecond); // Pobranie czasu systemowego i rozpoczęcie generowania liczb pseudolosowych
        }
 
        private void Display_History_Click(object sender, EventArgs e)
        {
 
        }
 
        private void Check_Number_Click(object sender, EventArgs e)
        {
            try
            {
                int answer = int.Parse(textBox1.Text); // Konwersja string na int
                int number = x.Next(1, 20); // Losowanie liczby pseudolosowej z przedziału <1,20>
 
                if (answer == number) // Sprawdzenie czy użytkownik zgadł
                    richTextBox1.Text = "Brawo zgadłeś! ";
 
                richTextBox1.Text = "Gramy dalej?" + Environment.NewLine
                        + "Wpisz tak/nie.";
 
                if (answer.ToString() == "tak")
                    number = x.Next(1, 20);
                else if (answer.ToString() == "nie")
                {
                    richTextBox1.Text = "Koniec gry." + Environment.NewLine
                        + "Sprawdź swoje statystyki z gry. ";
                }
 
                // Podpowiedzi
                else if (answer < number)
                    richTextBox1.Text = "Zgadywana liczba jest większa!";
                else if (answer > number)
                    richTextBox1.Text = "Zgadywana liczba jest mniejsza!";
            }
            catch (FormatException)
            {
                richTextBox1.Text = "Wpisałeś niepoprawną liczbę! Popraw ją!";
            }
        }
    }
}

 

komentarz 8 czerwca 2019 przez MakaBresk Obywatel (1,060 p.)
A czemu ma służyć podanie w klamrach { get; set; } ?
komentarz 9 czerwca 2019 przez DarthMazut Bywalec (2,990 p.)
C# ma specjalny mechanizm, który pozwala Ci tworzyć tzw. "Properties" - właściwości/własności - różnie się to tłumaczy. Generalnie chodzi o to, że napisanie w C# takiego kodu:

public string Name {get; set;}

jest odpowiednikiem w C++/Javie czegoś takiego:

private string _name;

public getName() { return _name; }

public setName(string name) { _name = name; }
komentarz 9 czerwca 2019 przez MakaBresk Obywatel (1,060 p.)
Dzięki wielkie, teraz wszystko śmiga ;)

Podobne pytania

0 głosów
3 odpowiedzi 758 wizyt
pytanie zadane 22 stycznia 2017 w C i C++ przez Marchewka900 Bywalec (2,970 p.)
0 głosów
1 odpowiedź 1,139 wizyt
pytanie zadane 7 września 2017 w C i C++ przez qlucha Obywatel (1,790 p.)
0 głosów
0 odpowiedzi 608 wizyt
pytanie zadane 17 kwietnia 2019 w C# przez WojMen Początkujący (330 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...