Освой C# играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Simon says

Игра "Саймон говорит" (Simon says) позволяет развить память. Нужно повторять последовательность цветов.

Написана после просмотра видео.

На форме нужно разместить четыре кнопки и две текстовые метки.

Код для игры.


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Threading;

using System.Windows.Forms;

namespace SimonSays
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int onInList = 0;
        List<int> pattern = new List<int>();
        Random random = new Random();
        bool playingBack = false;

        private void button_red_Click(object sender, EventArgs e)
        {
            testCorrect(0);
        }

        private void button_blue_Click(object sender, EventArgs e)
        {
            testCorrect(1);
        }

        private void button_yellow_Click(object sender, EventArgs e)
        {
            testCorrect(2);
        }

        private void button_green_Click(object sender, EventArgs e)
        {
            testCorrect(3);
        }

        void testCorrect(int color)
        {
            if (playingBack)
            {
                return;
            }
            if (pattern[onInList] == color)
            {
                onInList++;
            }
            else
            {
                MessageBox.Show("You fail! Final score: " + pattern.Count.ToString());
                pattern = new List<int>();
                new Thread(playback).Start();
            }
            if (onInList >= pattern.Count)
            {
                pattern.Add(random.Next(0, 4));
                onInList = 0;
                new Thread(playback).Start();
            }
            label_score.Text = "Score: " + pattern.Count.ToString();
            label_pattern.Text = "Item within pattern: " + onInList.ToString();
        }

        void playback()
        {
            playingBack = true;
            foreach (int color in pattern)
            {
                switch (color)
                {
                    case 0:
                        button_red.BackColor = Color.Red;
                        Thread.Sleep(200);
                        button_red.BackColor = Color.Transparent;
                        break;
                    case 1:
                        button_blue.BackColor = Color.Blue;
                        Thread.Sleep(200);
                        button_blue.BackColor = Color.Transparent;
                        break;
                    case 2:
                        button_yellow.BackColor = Color.Yellow;
                        Thread.Sleep(200);
                        button_yellow.BackColor = Color.Transparent;
                        break;
                    case 3:
                        button_green.BackColor = Color.Green;
                        Thread.Sleep(200);
                        button_green.BackColor = Color.Transparent;
                        break;
                }
                Thread.Sleep(200);
            }
            playingBack = false;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            pattern.Add(random.Next(0, 3));
            new Thread(playback).Start();
        }
    }
}

Simon says

Реклама