//Syötteen arvioinnissa pelaajan syötettä verrataan arvottuun listaan public void Syotteenarviointi() { try { //Jos arvottu lista on tyhjä TAI lista on yhtä pitkä kun pelaajalla on pisteitä ja hän antaa syötteen -> game over if (Arvotutnumerot.Count == 0 || Arvotutnumerot.Count == PeliTiedot.PojoTallennus) { tila = PeliState.GameOver; lblPisteet.Content = "Game over"; } //Jos pelaaja on listaa jäljessä ja syöte on oikein pisteet +1 else if ((syote - 1) == Arvotutnumerot[PeliTiedot.PojoTallennus]) { PeliTiedot.PojoTallennus++; lblPisteet.Content = PeliTiedot.PojoTallennus; syote = 0; } //Syöte on väärin -> game over else { tila = PeliState.GameOver; lblPisteet.Content = "Game over"; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//Ohjaa tilakoneen arvontaan ja pienentää valotimerin intervallia private void valotimer_Tick(object sender, EventArgs e) { try { if (tila != PeliState.GameOver) { if (indeksi < 200) { indeksi++; int x = 700 - (indeksi * 3); valotimer.Interval = new TimeSpan(0, 0, 0, 0, x); lblAika.Content = "Aikaväli: " + x.ToString(); } else { valotimer.Interval = new TimeSpan(0, 0, 0, 0, 100); lblAika.Content = "Aikaväli: 100"; } tila = PeliState.Arvonta; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//Asettaa tilakoneen tilan ja aloittaa timerit private void Startbutton_Click(object sender, RoutedEventArgs e) { try { Startbutton.IsEnabled = false; indeksi = 0; PeliTiedot.PojoTallennus = 0; PeliTiedot.PeliId = 2; tila = PeliState.Arvonta; TimerInit(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//tilakone, jota kutsutaan joka systemtimerin tickillä public void Arvonta() { try { switch (tila) { case PeliState.Arvonta: // Arpoo mikä nappi syttyy, jos sama nappi syttyisi 2. peräkkäin arpoo ohjelma uudestaan. int tarkistus = 0; do { arvottuvari = rng.Next(0, 4); //Jos lista on tyhjä lisätään arvottu listaan if (Arvotutnumerot.Count == 0) { tarkistus = 1; Arvotutnumerot.Add(arvottuvari); tila = PeliState.Valopaalla; } //Jos arvottuvari = listan viimeinen elementti arvotaan uudestaan else if (arvottuvari == Arvotutnumerot[Arvotutnumerot.Count - 1]) { tarkistus = 0; tila = PeliState.Arvonta; } //ei ole ensimmäinen listassa, eikä sama else { tarkistus = 1; Arvotutnumerot.Add(arvottuvari); tila = PeliState.Valopaalla; } } while (tarkistus != 1); this.Dispatcher.Invoke(() => { Button1.Background = Brushes.Lime; Button2.Background = Brushes.Blue; Button3.Background = Brushes.Gold; Button4.Background = Brushes.Salmon; }); break; //Sytyttää arvottua varia vastaavan napin case PeliState.Valopaalla: if (arvottuvari == 0) { this.Dispatcher.Invoke(() => { Button1.Background = Brushes.White; }); } else if (arvottuvari == 1) { this.Dispatcher.Invoke(() => { Button2.Background = Brushes.White; }); } else if (arvottuvari == 2) { this.Dispatcher.Invoke(() => { Button3.Background = Brushes.White; }); } else if (arvottuvari == 3) { this.Dispatcher.Invoke(() => { Button4.Background = Brushes.White; }); } break; case PeliState.GameOver: valotimer.Stop(); systemtimer.Stop(); GameOver peliikkuna = new GameOver(); peliikkuna.Show(); Music.PlayPause(); this.Close(); break; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }