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. :/
Nie mam pojęcia o co Ci chodzi ale może zwyczajnie:
pictureBox1.Image = null;
pomoże ?
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.
No to przypisz do pictureBox1.Image
grafikę która ma być wyświetlana... w czym problem, bo dalej nie rozumiem chyba :/
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
No to w metodzie "zerującej" wpisz pictureBox1.Image = foto2;
.
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
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" ?
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.
Pewnie, lepiej gdybać niż sprawdzić :).
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();
}
}
}
}
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]
)
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
A kiedy jest to "potem"?
Po skończonej rundzie zerujesz licznikObr
?
Tak.obrazek zmienia sie wtedy kiedy wpisana literka nie znajduje sie w wyrazie ktory jest zapisany i zakamuflowany
nie wpisalem licznikObr=0
po wpisaniu tego juz dziala
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.
Powód jest ten sam: nie "zerujesz" zmiennych.
ZakamuflowanyWyraz = string.Empty;
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)
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.
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");
}
}
}
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;
)