Таблица Шульте. Нужно довести до ума

247
19 декабря 2021, 16:20

Таблица Шульте - таблица случайно расположенных чисел, обычно размером 5x5 элементов и обычно состоит из цифр и букв. Пример: https://cepia.ru/speedreading/schulte/.

Мне помогли реализовать таблицу. Искал информацию про все строчки кода, более менее стало понятно, но хотел бы получить разбор,чтобы точно все понять и быть готовым написать этот код самостоятельно. Пример сайта, который я использовал для поиска информации: https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms.dockstyle?view=netframework-4.8.

Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Shulte
{
    class FormShulte : Form
    {
        DataGridView gv;
        Random random = new Random();
        public FormShulte()
        {
            gv = new DataGridView()
            {
                Dock = DockStyle.Fill,
                ReadOnly = true,
                AllowUserToAddRows = false,
                AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
            };
            FillGrid(gv, 5, 5);
            this.Controls.Add(gv);
        }
        private void FillGrid(DataGridView gv, int width, int height)
        {
            gv.ColumnCount = width;
            var count = height * width;
            var stack = new Stack<int>(Enumerable.Range(1, count).OrderBy(x => random.Next(1, count)));
            gv.Rows.Add(height);
            for (int i = 0; i < height; i++)
                for (int j = 0; j < width; j++)
                    gv.Rows[i].Cells[j].Value = stack.Pop();
    }
}
        class Program
    {
        static void Main(string[] args)
        {
            new FormShulte().ShowDialog();
        }
    }
}

Она хорошо работает, но у нее нельзя менять размер после компиляции, как сделать адаптацию таблицы под экран. В остальном, вроде, все отлично. Теперь, осталось реализовать ходы. Нашел пример реализации:

int hod = 1;
private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
        {
// тут если ты кликнешь по ячейки с значением которое == hod то выполняется условие
if(datagrid.rows[e.RowIndex].cells[e.ColumnIndex].value.toString()==hod)
{
//меняет значение ячейки по которой ты кликнул на слово "нашел" ты можешь что-то другое придумать
//просто очистить ячейку от значения или перекрасить ее в другой цвет. Ограничивается только твоей фантазией
datagrid.rows[e.RowIndex].cells[e.ColumnIndex].value = "нашел";
//тут каждый раз когда ты находишь число которая равняется числу hod то hod увеличивается на 1
hod++
//ну и конец если ты нашел последнее число, то есть 9 то сразу выходит сообщение "ты справился", ну и  время, сколько тебе потребовалось что бы найти все 9 чисел, думаю ты сам разберешься как добавлять секундомер в программу. 
if(hod==10)
{
messageBox.Show("Ты справился, твой результат"+time+");
}// тут если ты кликнешь по ячейки с значением которое == hod то выполняется условие
if(datagrid.rows[e.RowIndex].cells[e.ColumnIndex].value.toString()==hod)
{
//меняет значение ячейки по которой ты кликнул на слово "нашел" ты можешь что-то другое придумать
//просто очистить ячейку от значения или перекрасить ее в другой цвет. Ограничивается только твоей фантазией
datagrid.rows[e.RowIndex].cells[e.ColumnIndex].value = "нашел";
//тут каждый раз когда ты находишь число которая равняется числу hod то hod увеличивается на 1
hod++
//ну и конец если ты нашел последнее число, то есть 9 то сразу выходит сообщение "ты справился", ну и  время, сколько тебе потребовалось что бы найти все 9 чисел, думаю ты сам разберешься как добавлять секундомер в программу. 
if(hod==10)
{
messageBox.Show("Ты справился, твой результат"+time+");
}

После того, как получится реализовать, хотелось бы еще написать код для таблицы Шульте из букв, также изменение цвета фона таблицы.

Потом сделать меню для выбора режима. Таблица Шульте из цифр или букв.

Думаю, это будет очень хороший код для курсовой. Возможно можно добавить фигуры и иероглифы, но это уже будет лишним.

P.S Буду очень благодарен за разбор кода.

READ ALSO
Программа добавленная в автозагрузку не запускаеться C#

Программа добавленная в автозагрузку не запускаеться C#

Здравствуйте кто сможет помочь мне нужно чтобы программа сама себя кидала в автозагрузкупробовал много что не помогало например:

146
Порядок foreach

Порядок foreach

Хотел сделать вызов определенного forech в зависимости от того, какой игрок ходит, но при любом случае, срабатывает только первый, не смотря...

204
Export to DOC-File

Export to DOC-File

Нашла один интересный вариант генерации файла про Word с расширением doc(docx - не получается)

104
PHP. Сортировка в строке [дубликат]

PHP. Сортировка в строке [дубликат]

Есть строка со словами $words = "animal,people,cats,mack,apple,juice,mouse,marvel,keyboard,beer,drug,gun"; Слова разделены запятыми, в конце точка

98