czyszczenie Pictureboxa

0

Jak mogę zresetowac picturebox? Otoz chcialbym aby po restarcie gry zrestartowaly sie wszystkie pola(zrobione) a takze aby wyswietlane obrazki znowu zaczynaly sie od pierwszego, a nie ostatniego.W tej chwili po rozpoczeciu nowej gry obrazki po popelnionym bledzie zaczynaja sie od ostatniej blednej odpowiedzi. :/

0

Nie mam pojęcia o co Ci chodzi ale może zwyczajnie:

pictureBox1.Image = null;

pomoże ?

0

Może niejasno się wyraziłem, już tłumacze.Napisałem grę "wisielec" zasady na pewno znasz. Podczas zgadywania literek mogę trafić lub nie, w drugim przypadku zmienia się obrazek(dorysowuje kolejna rzecz na szubienicy itp.). I chodzi mi o to żeby po zakończeniu gry, i rozpoczęciu nowej resetowaly mi się statystyki(co już zrobiłem) a także żeby obrazki były zresetowane tzn. Żeby wyswietlaly się od początku, tak jak za pierwszym razem.

0

No to przypisz do pictureBox1.Image grafikę która ma być wyświetlana... w czym problem, bo dalej nie rozumiem chyba :/

0

Problem jest taki ze po wpisaniu pictureBox1.initializeimage to co prawda ustawia się na zdjęcie które chce ale potem to kontynuluje się od zdjęcia z ostatniej gry, czyli zamiast 2 zdjęcia wyświetla się 8

0

No to w metodzie "zerującej" wpisz pictureBox1.Image = foto2;.

0

Ale wtedy po wyswietleniu się tego photo2 dalej wyświetli się to photo z ostatniej gry, czyli reasumując potrzebuje czegoś co pozwoli mu jakby zrestartowac całą tablicę zdjęć tzn niech się wszystkie wyświetlają od nowa

0

Pokaż jakiś kod, bo z Twoich opisów nic nie wynika.
Jeżeli przypiszesz pictureBox1 = foto2 to dlaczego "dalej wyświetli się to photo z ostatniej gry" ?

0

Jutro wrzucę, dzisiaj dam sobie z tym spokój. A myślę że nie zadziała bo w pamięci gdzieś komputer nie wyczyścil danych z ostatniej gry.

0

Pewnie, lepiej gdybać niż sprawdzić :).

0
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;
using System.Media;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private Image[] obrazki;//pole - tablica obrazków
        private int licznik = 0;//licznik
        private int IleLiter;
        private string SzukanyWyraz;
        private string ZakamuflowanyWyraz="";
        private string []ZakamuflowanyWyrazTab;
        private string[] TablicaZWyrazu;
        private string SzukanaLitera;
        private string NapiszWyraz;
        private bool DobraOdpowiedz;
        private int licznikObr=0;
        public Form1()

        {
            InitializeComponent();

               obrazki = new Image[11];//inicjalizacja i podanie rozmiaru tablicy

               obrazki[0] = Image.FromFile("c:/wielsiece/0.png");
               obrazki[1] = Image.FromFile("c:/wielsiece/1.png");
               obrazki[2] = Image.FromFile("c:/wielsiece/2.png");
               obrazki[3] = Image.FromFile("c:/wielsiece/3.png");
               obrazki[4] = Image.FromFile("c:/wielsiece/4.png");
               obrazki[5] = Image.FromFile("c:/wielsiece/5.png");
               obrazki[6] = Image.FromFile("c:/wielsiece/6.png");
               obrazki[7] = Image.FromFile("c:/wielsiece/7.png");
               obrazki[8] = Image.FromFile("c:/wielsiece/8.png");
               obrazki[9] = Image.FromFile("c:/wielsiece/9.png");
               obrazki[10] = Image.FromFile("c:/wielsiece/10.png");
               
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //ko
            //pictureBox1.Image = obrazki[licznik];
            //licznik++;
            
            int licznik = 0;
            //utworzenie tablicy z wyrazow
            TablicaZWyrazu = new string[IleLiter];
            SzukanyWyraz = textBox1.Text;


            while (licznik < IleLiter)
            {
                TablicaZWyrazu[licznik] = SzukanyWyraz.Substring(licznik, 1);
                licznik++;
            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            //zgadywanie
            SzukanaLitera = textBox2.Text;
           // pictureBox1.Image = Image.FromFile("f:/2015/DSC04200.JPG");
           int counter = 0;
           
           textBox3.Text = "";
          // ZakamuflowanyWyraz = "";
            while (counter < IleLiter)
            {
                if (TablicaZWyrazu[counter] == SzukanaLitera)
                {
                   
                    ZakamuflowanyWyrazTab[counter] = SzukanaLitera;
                    ZakamuflowanyWyraz = ZakamuflowanyWyraz+ SzukanaLitera;
                    DobraOdpowiedz = true;
                }
                else
                {
                  //  MessageBox.Show("tyh5tyh5y6th56th");
                    ZakamuflowanyWyraz = ZakamuflowanyWyraz + "*";            
                }

                counter++;
            }
            if (DobraOdpowiedz == false)
            {
                licznikObr++;
                txbxLicznikZlychopdpowiedzi.Text = licznikObr.ToString();
                pictureBox1.Image = obrazki[licznikObr];
            
            }
            //odzyskiwanie wyrazy z tablicy
            DobraOdpowiedz = false;
            int counter2=0;
            while (counter2 < IleLiter)
            {
                NapiszWyraz =NapiszWyraz + ZakamuflowanyWyrazTab[counter2];
                counter2++;
            }

           
            textBox3.Text = NapiszWyraz;
            NapiszWyraz = "";
           

        }

        private string ToString(int licznikObr)
        {
            throw new NotImplementedException();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //zapisanie wyrazu do zmiennej
            SzukanyWyraz = textBox1.Text;
            //policzenie liter w wyrazie
           IleLiter = SzukanyWyraz.Length;
            //utworzenie  tablicy z ta sama ilością zanków
            int licznik = 0;
         //tablica -wyraz inicjalizacja
            ZakamuflowanyWyrazTab = new string[IleLiter];
            while (licznik < IleLiter)
            {
                ZakamuflowanyWyraz = ZakamuflowanyWyraz + "*";
                ZakamuflowanyWyrazTab[licznik] = "*";
                licznik++;
            
            }

            //wyswietlenie zakamuflowanego wyrazu
            textBox3.Text = ZakamuflowanyWyraz;
            button3.Hide();
            textBox1.Hide();
            
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox3.Text = "";
            ZakamuflowanyWyraz = "";
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text == textBox3.Text)
            {
                MessageBox.Show("wygrales");
                textBox1.Clear();
                textBox2.Clear();
                textBox3.Clear();
                button3.Show();
                textBox1.Show();
                licznik = 0;
                txbxLicznikZlychopdpowiedzi.Clear();
                

            }
            
           
        }
    }
}

0

Rozumiem, że w tym PictureBox wyświetla ile nie poprawnych odpowiedzi już padło tak?
W takim razie po skończonej rudzie zerujesz licznikObr a do PictureBox wczytujesz to co chcesz (czyli jakieś pictureBox1.Image = obrazki[0])

0

i jak dopisuje w private void textBox3_TextChanged(object sender, EventArgs e) cos takiego pictureBox1.Image = obrazki[0]; to jest tak jak mowilem , czyli ten obrazek wyswietla sie jako pierwszy ale potem wyswietla sie obrazek z ostatniej gry , czyli obrazki[2] :C

0

A kiedy jest to "potem"?
Po skończonej rundzie zerujesz licznikObr?

0

Tak.obrazek zmienia sie wtedy kiedy wpisana literka nie znajduje sie w wyrazie ktory jest zapisany i zakamuflowany

0

nie wpisalem licznikObr=0 po wpisaniu tego juz dziala

0

Ale widze kolejnego buga, jak rozpoczyna sie nowa runda, to zakamuflowanelitery w textBox3 nadal gdzies tam sa.Tzn gram 1 runde , w haslo wpisuje "b", pola zgodnie z zalozeniem znikaja, teraz zgaduje. Trafiam za 1 razem czyli pole "*" zamienia sie na "b" i wyswietla sie napis wygranej.Zaczynam 2 runde wpisuje w haslo "a" i tu WTF , bo w polu do zgadywania pojawia sie cos takiego "b" nie mam pojecia czemu tak jest.

0

Powód jest ten sam: nie "zerujesz" zmiennych.

ZakamuflowanyWyraz  = string.Empty;
0

wpisalem to, i teraz tak jak juz dodam wyraz do odgadniecia to to co wczesniej opisalem nadal sie wyswietla , ALE jak juz wpisze"wyraz do odgadniecia" i klikne zgaduj to co wczesniej bylo znika i jest juz to co powinno byc wyswietlone od razu(mam nadzieje ze wiesz o co mi chodzi :D)

0

Szczerze powiedziawszy nie koniecznie wiem o czym mówisz.

Gdzie to wstawiłeś?
Rozpoczynając nową rundę musisz przypisać do zmiennych to co powinno być na początku, czyli do pictureBox grafikę z zerem, wyczyścić tablicę odgadywanych znaków itp.

0

Juz poprawilem,prawie wszystko dziala tylko napis "wygrales" wyswietla sie 2 razy po wygranej i proboje zrobic cos takiego

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;
using System.Media;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private Image[] obrazki;//pole - tablica obrazków
        private int licznik = 0;//licznik
        private int IleLiter;
        private string SzukanyWyraz;
        private string ZakamuflowanyWyraz="";
        private string []ZakamuflowanyWyrazTab;
        private string[] TablicaZWyrazu;
        private string SzukanaLitera;
        private string NapiszWyraz;
        private bool DobraOdpowiedz;
        private int licznikObr=0;
        public Form1()

        {
            InitializeComponent();

               obrazki = new Image[11];//inicjalizacja i podanie rozmiaru tablicy

               obrazki[0] = Image.FromFile("c:/wielsiece/0.png");
               obrazki[1] = Image.FromFile("c:/wielsiece/1.png");
               obrazki[2] = Image.FromFile("c:/wielsiece/2.png");
               obrazki[3] = Image.FromFile("c:/wielsiece/3.png");
               obrazki[4] = Image.FromFile("c:/wielsiece/4.png");
               obrazki[5] = Image.FromFile("c:/wielsiece/5.png");
               obrazki[6] = Image.FromFile("c:/wielsiece/6.png");
               obrazki[7] = Image.FromFile("c:/wielsiece/7.png");
               obrazki[8] = Image.FromFile("c:/wielsiece/8.png");
               obrazki[9] = Image.FromFile("c:/wielsiece/9.png");
               obrazki[10] = Image.FromFile("c:/wielsiece/10.png");
               
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //ko
            //pictureBox1.Image = obrazki[licznik];
            //licznik++;
            
            int licznik = 0;
            //utworzenie tablicy z wyrazow
            TablicaZWyrazu = new string[IleLiter];
            SzukanyWyraz = textBox1.Text;


            while (licznik < IleLiter)
            {
                TablicaZWyrazu[licznik] = SzukanyWyraz.Substring(licznik, 1);
                licznik++;
            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            //zgadywanie
            SzukanaLitera = textBox2.Text;
           // pictureBox1.Image = Image.FromFile("f:/2015/DSC04200.JPG");
           int counter = 0;
           
           textBox3.Text = "";
          // ZakamuflowanyWyraz = "";
            while (counter < IleLiter)
            {
                if (TablicaZWyrazu[counter] == SzukanaLitera)
                {
                   
                    ZakamuflowanyWyrazTab[counter] = SzukanaLitera;
                    ZakamuflowanyWyraz = ZakamuflowanyWyraz+ SzukanaLitera;
                    DobraOdpowiedz = true;
                }
                else
                {
                  //  MessageBox.Show("tyh5tyh5y6th56th");
                    ZakamuflowanyWyraz = ZakamuflowanyWyraz + "*";            
                }

                counter++;
            }
            if (DobraOdpowiedz == false)
            {
                licznikObr++;
                txbxLicznikZlychopdpowiedzi.Text = licznikObr.ToString();
                pictureBox1.Image = obrazki[licznikObr];
            
            }
            //odzyskiwanie wyrazy z tablicy
            DobraOdpowiedz = false;
            int counter2=0;
            while (counter2 < IleLiter)
            {
                NapiszWyraz =NapiszWyraz + ZakamuflowanyWyrazTab[counter2];
                counter2++;
            }

           
            textBox3.Text = NapiszWyraz;
            NapiszWyraz = "";
           

        }

        private string ToString(int licznikObr)
        {
            throw new NotImplementedException();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //zapisanie wyrazu do zmiennej
            SzukanyWyraz = textBox1.Text;
            //policzenie liter w wyrazie
           IleLiter = SzukanyWyraz.Length;
            //utworzenie  tablicy z ta sama ilością zanków
            int licznik = 0;
         //tablica -wyraz inicjalizacja
            ZakamuflowanyWyrazTab = new string[IleLiter];
            while (licznik < IleLiter)
            {
                ZakamuflowanyWyraz = ZakamuflowanyWyraz + "*";
                ZakamuflowanyWyrazTab[licznik] = "*";
                licznik++;
            
            }

            //wyswietlenie zakamuflowanego wyrazu
            textBox3.Text = ZakamuflowanyWyraz;
            button3.Hide();
            textBox1.Hide();
            
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox3.Text = "";
            ZakamuflowanyWyraz = "";
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text == textBox3.Text)
            {
                MessageBox.Show("wygrales");
                textBox1.Clear();
                textBox2.Clear();
                textBox3.Clear();
                button3.Show();
                textBox1.Show();
                licznik = 0;
                txbxLicznikZlychopdpowiedzi.Clear();
                pictureBox1.Image = obrazki[0];
                licznikObr = 0;
                ZakamuflowanyWyraz = string.Empty;

            }
     
           
        }

        private void zagrajJeszczeRazToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            button3.Show();
            textBox1.Show();
            licznik = 0;
            txbxLicznikZlychopdpowiedzi.Clear();
            pictureBox1.Image = obrazki[0];
            licznikObr = 0;
            ZakamuflowanyWyraz = string.Empty;
            MessageBox.Show("nowa gra");
        }

        private void wyjdzZGryToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }

        private void zasadyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Pierwszy gracz wymyśla słowo, ujawniając na przykład za pomocą poziomych kresek liczbę tworzących je liter. Drugi z graczy stara się odgadnąć litery słowa. Za każdym razem, gdy mu się to uda, pierwszy gracz wstawia literę w odpowiednie miejsce; w przeciwnym wypadku rysuje element symbolicznej szubienicy i wiszącego na niej ludzika. Jeżeli pierwszy gracz narysuje kompletnego „wisielca” zanim drugi odgadnie słowo, wówczas wygrywa. W zależności od wcześniej ustalonego stopnia skomplikowania rysunku „wisielca” (liczba elementów potrzebna do jego narysowania), gra pozwala na mniej lub więcej pomyłek odgadującego.",
"Zasady");
        }
    }
}
0
martis941 napisał(a):

Juz poprawilem,prawie wszystko dziala tylko napis "wygrales" wyswietla sie 2 razy po wygranej i proboje zrobic cos takiego if (licznikObr=10){MessageBox.Show=("przegrales")}ale to nie wyskakuje mi blad "cannot implify int to bool"

Przetłumacz sobie treść błędu na polski i już wiadomo o co chodzi ;).

= to przypisanie (np int x = 8)
== to porównanie (np if (x == 6) DoIt;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1