Воскресенье, 2025-02-02

Professor VB - примеры на VB.net и C#
Меню сайта
Вход на сайт
Категории раздела
Уроки VB.net [25]
VB.net и математика [13]
Random VB [4]
VB.net - разное [7]
VB.net - Примеры программ [2]
Главная » Статьи » VB.net » VB.net - разное

VB.net - Создаем таблицы Шульте

VB.net - Создаем таблицы Шульте



 

  Таблицы Шу́льте (англ. Schulte Table) — таблицы со случайно расположенными объектами (обычно числами или буквами), служащие для тестирования и развития быстроты нахождения этих объектов в определённом порядке. Упражнения с таблицами позволяют улучшить периферическое зрительное восприятие, что важно, например, для скорочтения.

 

В этой статье я расскажу о том, как создать интерактивные  таблицы Шульте. 

Стандартная таблица выглядит как квадрат со сторонами 5 Х 5, а внутри находятся цифры от 1 до 25.

В нашей программе будут создаваться таблицы от 2 Х 2 до 7 Х 7, при чем возможно создания таблицы 5 Х 5 в теле которой буквы.

 

 

 

Дополнительная сложность достигается изменением цвета или значений, или самих квадратов, или сразу и того и другого.

 

 

На форму помещаем такие элементы:

кнопка         - Button1
Нумератор     - num
Ярлык         - lblNext (следущая буква или цифра)
Ярлык         - lblTime (учет времени)
Ярлык         - lblByfer (временное хранение, невидимый)
ЧекБокс        - CheckBox1 (цифры \ буквы)
ЧекБокс        - chkCvet (цвет фона)
ЧекБокс        - chkCvet2 (цвет цифры \ буквы)

 

А далее переходим к коду


Public Class Form1
 
  'объявляем переменные

    Public lblN() As Label  'массив ярлыков

    Dim full As Byte        'full - размер массива, full = razmer * razmer - 1
    Dim razmer As Byte      'razmer - сторона квадрата, razmer = Val(num.Value)
    Dim xz = 0              'проверка создавался ли массив - можно сделать как исключение
    Dim r As New Random     'случайное число

    'элементы для ярлыка
    'задаем параметры наших ярлыков - можно добавить доп меню - настройки)

    Dim Wir As Byte = 120
    Dim Dlin As Byte = 120

    Dim rasst As Byte = 1 'промежуток между соседними

    Dim startPosL As Byte = 50 'начальное положение 1 ярлыка по У
    Dim startPosH As Byte = 50 'начальное положение 1 ярлыка по Х
    Dim intervalH,
        intervalW

    'Переменные для перемешивания
    Dim mass()
    Dim mass2 As String() = {"а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ"}
    Dim massOrig As String() = {"а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ"}

    Dim chislo As Byte
    Dim element1, element2, x, y

    Dim ti = 0 ' отсчет времени

    '---------------------------------------------

    'старт
    Sub start()

        intervalW = rasst + Wir 'сдвиг соседнего ярлыка по по Х
        intervalH = rasst + Dlin 'сдвиг соседнего ярлыка по по У

        razmer = Val(num.Value)      'razmer - размерность квадрата из нумерации num
        full = razmer * razmer - 1   'full - размер массива


        'меняем размер массива
        ReDim lblN(full)

        If CheckBox1.Checked Then
            shiftleL()
        Else
            shiftleN()
        End If


        'располагаем наши ярлыки на форме и задаем им числа
        For i = 0 To full             'от 0 до последнего элемента
            lblN(i) = New Label       'каждый элемент массива - новый ярлык

            'размеры у всех одинаковые)
            lblN(i).Height = Dlin
            lblN(i).Width = Wir

            Select Case i
                Case 0 To (razmer - 1)
'1 строка ярлыков
                    lblN(i).Left = startPosL + i * intervalW
                    lblN(i).Top = startPosH
                   

                Case (razmer) To (razmer * 2 - 1) '2 строка ярлыков
                    lblN(i).Left = startPosL + (i - razmer) * intervalW
                    lblN(i).Top = startPosH + intervalH

                Case (razmer * 2) To (razmer * 3 - 1) '3 строка ярлыков
                    lblN(i).Left = startPosL + (i - razmer * 2) * intervalW
                    lblN(i).Top = startPosH + intervalH * 2
                  

                Case (razmer * 3) To (razmer * 4 - 1) '4 строка ярлыков
                    lblN(i).Left = startPosL + (i - razmer * 3) * intervalW
                    lblN(i).Top = startPosH + intervalH * 3

                Case (razmer * 4) To (razmer * 5 - 1) '4 строка ярлыков
                    lblN(i).Left = startPosL + (i - razmer * 4) * intervalW
                    lblN(i).Top = startPosH + intervalH * 4

                Case (razmer * 5) To (razmer * 6 - 1) '6 строка ярлыков
                    lblN(i).Left = startPosL + (i - razmer * 5) * intervalW
                    lblN(i).Top = startPosH + intervalH * 5

                Case (razmer * 6) To (razmer * 7 - 1) '7 строка ярлыков
                    lblN(i).Left = startPosL + (i - razmer * 6) * intervalW
                    lblN(i).Top = startPosH + intervalH * 6
            End Select


            'текст на наших ярлыках берем из массива mass
            If CheckBox1.Checked Then
                lblN(i).Text = mass2(i)
            Else
                lblN(i).Text = mass(i + 1)
            End If


            'кликаем - получаем индекс элемента
            AddHandler lblN(i).Click, AddressOf lblNClick
            Me.Controls.AddRange(Me.lblN)
         
  'ЭНД --- кликаем - получаем индекс
            'обработка этого события дальше

            lblN(i).TextAlign = ContentAlignment.MiddleCenter    'выравниваем текст по центру
            lblN(i).Font = New System.Drawing.Font("Arial", 44)  'задаем шрифт

            If chkCvet2.Checked Then
                lblN(i).ForeColor = (Color.FromArgb(255 * Rnd(), 255 * Rnd(), 255 * Rnd()))                  
 'задаем фон
            Else
                lblN(i).ForeColor = Color.Black
            End If

           If chkCvet.Checked Then
                lblN(i).BackColor = (Color.FromArgb(255 * Rnd(), 255 * Rnd(), 255 * Rnd()))                  
 'задаем фон
            Else
                lblN(i).BackColor = Color.Silver                  
  'задаем фон
            End If

            lblN(i).Visible = True                               'делаем видимыми
            Me.Controls.Add(lblN(i))                             'добавляем на форму
        Next

        xz = 1 'регистрируем создание массива ярлыков
    End Sub


    'удаление массива ярлыков 
    Sub RES()
        For i = 0 To full
            Me.Controls.Remove(lblN(i))
        Next

    End Sub

    'перемешивание массива чисел
    Sub shiftleN()
        'определяем колво элементов - цифр
        chislo = (num.Value) ^ 2

        ReDim mass(chislo)

        'задаем массив последовательных чисел
        For i As Integer = 1 To chislo
            mass(i) = i
        Next

        'перемешивание 
        Randomize()
        For i = 1 To 10000
            x = Int(Rnd() * chislo + 1)
 'Определили случайный элемент массива с номером х
            y = Int(Rnd() * chislo + 1)  'Определили случайный элемент массива с номером y
            element1 = mass(x)           'Запомнили значение случайного х-элемента массива
            element2 = mass(y)           'Запомнили значение случайного y-элемента массива
            mass(y) = element1           'Присвоили случайному x элементу значение y элемента
            mass(x) = element2           'Присвоили случайному y элементу значение x элемента
        Next

    End Sub

    'перемешивание массива букв
    Sub shiftleL()
        'определяем колво элементов - цифр
        chislo = (num.Value) ^ 2
        'перемешивание 
        Randomize()
        For i = 0 To 10000
            x = Int(Rnd() * chislo)
         'Определили случайный элемент массива с номером х
            y = Int(Rnd() * chislo)          'Определили случайный элемент массива с номером y
            element1 = mass2(x)           'Запомнили значение случайного х-элемента массива
            element2 = mass2(y)           'Запомнили значение случайного y-элемента массива
            mass2(y) = element1           'Присвоили случайному x элементу значение y элемента
            mass2(x) = element2           'Присвоили случайному y элементу значение x элемента
        Next

    End Sub

 

    'кликаем - получаем индекс
    Private Sub lblNClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim i As Integer
        Dim isto4nik, nexts

        'Если надо узнать именно индекс в массиве, 
        'то ищем объект sender

        i = Array.IndexOf(lblN, sender)
        isto4nik = lblN(i).Text
        
        nexts = lblNext.Text

        If CheckBox1.Checked Then
            Dim slovo
            slovo = massOrig(i)
            lblNext.Text = massOrig(Val(lblByfer.Text))
         
  '========================
            If isto4nik = nexts Then
                lblN(i).Font = New System.Drawing.Font("Arial", 10)
 'уменьшаем шрифт!!
                lblN(i).BackColor = Color.Silver
                lblN(i).Enabled = False
                If lblNext.Text = "ш" Then '
если меньше максимального, то +1
                    lblNext.Text = "все"
                    Timer1.Enabled = False
                Else
                    lblByfer.Text += 1
                    lblNext.Text = massOrig(Val(lblByfer.Text))
                End If                                      ' 

            Else                                   ' иначе 
                ti += 5                            ' +5 сек
                Me.BackColor = Color.Red           ' фон красный
            End If
            '====================

        Else
       
'задаем условия для нажатого ярлыка
            If isto4nik = nexts Then    'если номер соответствует цифре в ярлыке lblNext.Text тогда
                lblN(i).Font = New System.Drawing.Font("Arial", 10)  'уменьшаем шрифт!!
                lblN(i).BackColor = Color.Silver
                lblN(i).Enabled = False
                If (num.Value) * (num.Value) > Val(lblNext.Text) Then
'если меньше максимального, то +1
                    lblNext.Text = Val(lblNext.Text) + 1    ' и выводим в lblNext.Text
                Else                                        'иначе
                    lblNext.Text = "все"                    'выводим в текст ВСЕ
                    Timer1.Enabled = False                  'останавливаем таймер
                End If                                      ' 

            Else                                   ' иначе 
                ti += 5                            ' +5 сек
                Me.BackColor = Color.Red           ' фон красный
            End If

        End If
    End Sub


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        lblByfer.Text = 0
        'если массив еще не создавался, то и не удаляем его
        If xz > 0 Then RES()

        'функция создания массива ярлыков заданого количества и надписи на них
        start()

        '"обнуляем" время и запускаем таймер
        ti = 1
        lblTime.Text = 1
        If CheckBox1.Checked Then
            lblNext.Text = "а"
        Else
            lblNext.Text = 1
        End If

        Timer1.Enabled = True
    End Sub

    'таймер
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Me.BackColor = Color.LightGray 'форма опять серая
        'отсчет и запись времени
        ti += 1
        lblTime.Text = ti

    End Sub


    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
 
      If CheckBox1.Checked Then
            num.Value = 5
            num.Enabled = False

        Else
            num.Enabled = True
        End If

    End Sub
End Class


 

Смотреть видео

В начало

 

 



Категория: VB.net - разное | Добавил: ProfessorVB (2015-12-03)
Просмотров: 3567 | Теги: массив элементов, Vb.net, условия, таблицы шульте, генератор случайных чисел, random, Цикл, случайный цвет | Рейтинг: 5.0/3
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    Видео Switch массивы уравнения геометрия continue forEach while Обработка событий задать цвет C# math Vb.net xml количество элементов xml поиск значений математика видеоуроки Soft системы Google pirat Proxy tor НОД нок добавление записи в xml поиск Уроки генератор hello world время деструкторы конструкторы дроби калькулятор десятичные дроби решебник сокращение дробей си шарп мнемоника тренажер random количество дней между датами professorvb дата Урок mindgames алгебра многомерные слова словарь Пароль cos SIN база timer рандом Цикл Break DO for RGB условия массив элементов xml редактирование xml создание вирус MenuStrip AntiCenz fri-gate запрещенные сайты база данных Open RichTextBox XML удалить из xml save TopMost анекдот создать XML Классы Тест OpenFileDialog английский развитие иностранные слова DateTimePicker календарь массив перемешивание массива Анаграммы Рифмоплет Сравнение дробей Меморина скорочтение Использование ребусы комплексные числа программа генератор имен
    Copyright ProfessorVB © 2025