Bardzo dawno temu interesowałem się szybkim czytaniem, mam kilka książek o tej tematyce i zaliczony kurs w szkole szybkiego czytania. Na pewno wielu z was którzy nigdy z tą tematyką nie mieli do czynienia zastanawia się czy to nie ściema z tym całym szybkim czytaniem. Otóż nie sztuka jest szybko czytać, sztuką jest rozumieć to co się czyta. Dajmy na ten przykład długi tekst, można go przeczytać szybko albo wolno jeśli ten co czytał wolno zapamiętał więcej szczegółów czytanego tekstu jego czytanie było efektywniejsze, lepiej przyswojone i zapamiętane. Co nas więc ogranicza dlaczego każdy z nas nie umie szybko czytać co stoi na przeszkodzie? Największą przeszkodą każdego szybko czytacza jest literowanie/czytanie w myślach. Każdy z nas na początku swojej edukacji był tak uczony od przedszkola. Jest takie mądre przysłowie: Jeden obraz przedstawia tysiąc słów. Jeśli potrafimy wyobrazić sobie fabułę czytanego tekstu dlaczego musimy go czytać dlaczego jeśli widzimy słowo „krowa” musimy najpierw przeczytać sobie słowo zanim wyobrazimy sobie zwierzę. Na kursach szybkiego czytania podczas czytania tekstu należało słuchać muzyki aby zagłuszyć czytanie w myślach. Ostatnio wymyśliłem ciekawy sposób na wyeliminowanie czytania w myślach i zamierzam pokazać wam jak taką aplikację zrobić abyście mogli ją spersonalizować i dostosować do swoich potrzeb. Dala tych co nie są zainteresowani tworzeniem aplikacji gotowy program do pobrania tutaj
Program działa na podstawie wyświetlania słów bądź kilku słów na raz samodzielnie przerzucanych bądź czasowo wyświetlanych. Tutaj pewnie wiele osób zauważy, że takie programy już były i można je znaleźć w internecie mój program ma pewien bajer który może pomóc w uczeniu otóż istnieje możliwość wyświetlenia napisów od tyłu. Każdy z nas został nauczony czytać słowa które zna. Mój pomysł polega wyobrażaniu sobie słów które mózg zna ale nie znał ich od tej strony. Swoją drogą jestem bardzo ciekawy waszej opinii na ten temat.
Program jest bardzo prosty w obsłudze, do głównego okna wklejamy bądź wpisujemy tekst i przyciskamy przycisk „Organizuj tekst” wprowadziłem, takie ograniczenie ponieważ tekst nie zawsze jest jednakowo formatowany i jeśli weźmiemy tekst z internetu to może posiadać spacje między znakami interpunkcyjnymi co w efekcie zamiast pojawienia się słowa pojawi się przecinek albo kropka. Na początek najlepiej wypisać sobie np nazwy zwierząt albo przedmioty i starać się zrozumieć co znaczą, wizualizować sobie w myślach dany przedmiot nie czytając go.
Pełen projekt programu dostępny tutaj: projekt-Szybkie czytanie wersja 1.1
Button2 ma ustawioną wartość „Enabled” na „False” Kod do pierwszej formy z opisem wygląda tak:
Public Class Form1
'deklarujemy pubiczne zmienne
Public ListaSlow As New List(Of String)
Public tekst As String
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TextBox1.Text.Length = 0 Then
MsgBox("Wspisz text")
Else
'czyści listę słów
ListaSlow.Clear()
'początkowo przechowuje nasze słowa
Dim wartosc As String()
tekst = TextBox1.Text
TextBox1.Clear()
' te linijki służą do podmieniania różnych wyjątków takich jak spacje między znakami interpunkcyjnymi itp
' jeśli tekst jest źle organizowany neleży dodać tutaj wyjątek
tekst = Replace(tekst, " . ", ". ")
tekst = Replace(tekst, " : ", ": ")
tekst = Replace(tekst, " ! ", "! ")
tekst = Replace(tekst, " ? ", "? ")
tekst = Replace(tekst, " , ", ", ")
tekst = Replace(tekst, vbNewLine, " ")
' wyświetla zmieniony tekst
TextBox1.Text = tekst
'dzieli tekst na słowa
wartosc = tekst.Split(" ")
' wpisuje słowa do listy
For i = 0 To wartosc.Length() - 1
ListaSlow.Add(wartosc(i))
Next
' aktywuje przycisk
Button2.Enabled = True
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Form2.Show()
Button2.Enabled = False
End Sub
Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
Process.Start(" https://visualmonsters.cba.pl/index.php/program-do-pomocy-w-szybkim-czytaniu")
End Sub
End Class
Następna forma jest trochę bardziej rozbudowana wygląda następująco:
Pełen rozkład elementów znajduje się poniżej
| Rodzaj elementu | Nazwa elementu | ustawienia |
|---|---|---|
| Form | Form2 | Name: Form2 Text: Nauka szybkiego czytania Size: 551;390 StartPosition: CenterScreen |
| Timer | Timer1 | Name: Timer1 Interval: 100 |
| Label | Label5 | Name: Label5 Anchor: Top, Left Location: 12; 17 Text: Ilość słów w liście: |
| Label | Label6 | Name: Label6 Anchor: Top, Left Location: 116; 17 Text: 0 |
| Label | Label8 | Name: Label8 Anchor: Top, Left Location: 236; 17 Text: Pokazano słów: |
| Label | Label7 | Name: Label7 Anchor: Top, Left Location: 340; 17 Text: 0 |
| Label | Label9 | Name: Label9 Anchor: Top, Left Location: 235; 85 Text: Wartość Timera: |
| Label | Label10 | Name: Label10 Anchor: Top, Left Location: 340;85 Text: 0 |
| Label | Label2 | Name: Label2 Anchor: Top, Left Location: 6; 49 Text: Text align: |
| Label | Label1 | Name: Label1 Anchor: Top, Left Location: 6; 84 Text: Text size: |
| Button | Button4 | Text: << Location: 18; 80 Anchor: Top, Left Name: Button4 |
| Button | Button2 | Text: Start Location: 448; 12 Anchor: Top, Right Name: Button2 |
| Button | Button5 | Text: Stop Location: 448; 41 Anchor: Top, Right Name: Button5 |
| Button | Button3 | Text: >> Location: 448; 80 Anchor: Top, Right Name: Button3 |
| TextBox | TextBox1 | Name: Textbox1 Location: 15; 109 Anchor: Top, Left, Right Size: 508; 20 TextAlign: Center |
| GroupBox | GroupBox1 | Text: Ustawienia Location: 12; 229 Size: 508; 111 Anchor: Top, Left, Right Name: GroupBox1 |
| Wewnątrz GroupBox’a | ||
| Label | Label4 | Name: Label4 Anchor: Top, Left Location: 239; 44 Text: Ilość wyświetlanych słów: |
| Label | Label3 | Name: Label3 Anchor: Top, Left Location: 239;18 Text: sekund |
| Button | Button1 | Text: Aktywuj ustawienia własne Location: 312; 79 Anchor: Top, Left Name: Button1 |
| NumericUpDown | NumericUpDown2 | Location: 104; 16 Size: 120; 20 Anchor: Top, Left Name: NumericUpDown2 |
| NumericUpDown | NumericUpDown1 | Location: 79; 79 Size: 120; 20 Anchor: Top, Left Name: NumericUpDown1 |
| NumericUpDown | NumericUpDown3 | Location: 375; 42 Size: 127; 20 Anchor: Top, Left Name: NumericUpDown3 |
| CheckBox | CheckBox1 | Text: Włącz timer Location: 6; 19 Anchor: Top, Left Name: CheckBox1 |
| CheckBox | CheckBox2 | Text: Tędencja odwrócona Location: 375; 19 Anchor: Top, Left Name: CheckBox2 |
| ComboBox | ComboBox1 | DropDownStyle: DropDownList Location: 69; 47 Anchor: Top, Left Name: ComboBox1Posiada trzy elementy: left right center |
Pełen kod wraz z opisem wygląda następująco:
Public Class Form2
Dim listaOdTylu As New List(Of String) ' przechowuje odwrócone słowa
Dim tendencjaOdwrocona As Boolean = False
Dim Timer As Boolean = False
Dim licznik As Integer = 0
Dim TimerTick As Integer
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Ustawienia startowe
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
NumericUpDown1.Value = TextBox1.Font.Size
NumericUpDown3.Value = 1
NumericUpDown2.Value = 3
Label6.Text = Form1.ListaSlow.Count.ToString
ComboBox1.SelectedIndex = 2
End Sub
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Aktywator ustawień użytkownika
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' zmienia wielkość czcionki w textboxie
TextBox1.Font = New Font(TextBox1.Font.FontFamily, NumericUpDown1.Value, TextBox1.Font.Style)
' zmienia położenie słów (lewo, prawo, środek) w textboxie
TextBox1.TextAlign = ComboBox1.SelectedIndex
' Generuje odwrócone słowa
If CheckBox2.Checked = True Then
listaOdTylu.Clear()
For i As Integer = 0 To Form1.ListaSlow.Count - 1
Dim zmieniony As String = ""
Dim myArray As Char() = Form1.ListaSlow(i).ToCharArray()
For k As Integer = myArray.Count - 1 To 0 Step -1
zmieniony += myArray(k).ToString
Next
listaOdTylu.Add(zmieniony)
Next
tendencjaOdwrocona = True
Else
tendencjaOdwrocona = False
End If
' Udostępnia Timer do startu (opcja w button2)
If CheckBox1.Checked = True Then
Timer = True
Else
Timer = False
End If
' odblokowuje przycisk
Button2.Enabled = True
' zeruje wartość startową
licznik = 0
End Sub
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Przycisk Startu
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' pętla sprawdzająca czy mamy do czynienia z tendencją odwróconych słów jeśli tak to ...
If tendencjaOdwrocona = True Then
' sprawdza czy Timer jest odblokowany jeśli tak...
If Timer = True Then
licznik = 0
'uruchamia timer
Timer1.Start()
TimerTick = NumericUpDown2.Value
Button5.Enabled = True
Button3.Enabled = False
Button4.Enabled = False
TextBox1.Clear()
Else
' wyświetla piersze słowo/słowa w textboxie (te odwrócone)
For i As Integer = licznik To licznik + NumericUpDown3.Value - 1
TextBox1.Text += listaOdTylu(i).ToString + " "
Next
licznik = licznik + NumericUpDown3.Value
Button3.Enabled = True
Button4.Enabled = True
TextBox1.Clear()
End If
Else
' sprawdza czy Timer jest odblokowany jeśli tak...
If Timer = True Then
licznik = 0
'uruchamia timer
Timer1.Start()
TimerTick = NumericUpDown2.Value
Button5.Enabled = True
Button3.Enabled = False
Button4.Enabled = False
TextBox1.Clear()
Else
' wyświetla piersze słowo/słowa w textboxie
For i As Integer = licznik To licznik + NumericUpDown3.Value - 1
TextBox1.Text += Form1.ListaSlow(i).ToString + " "
Next
licznik = licznik + NumericUpDown3.Value
Button3.Enabled = True
Button4.Enabled = True
TextBox1.Clear()
End If
End If
'Unieruchamia przycisk Start
Button2.Enabled = False
End Sub
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Przycisk w prawo ">>"
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
' pętla sprawdzająca czy mamy do czynienia z tendencją odwróconych słów jeśli tak to ...
If tendencjaOdwrocona = True Then
'czyści textboxa
TextBox1.Clear()
' jeśli licznik pokazanych słów z dodanymi ilościami wyświetlanych słów jest większy niż
' ilość słów w liście słów wtedy zeruje licznik słów i pokazuje pozostałe słowa
If licznik + NumericUpDown3.Value - 1 >= listaOdTylu.Count Then
For i As Integer = licznik To listaOdTylu.Count - 1
TextBox1.Text += listaOdTylu(i).ToString + " "
Next
licznik = 0
Else
'wyświetla odpowiednią ilość słów w textboxie
For i As Integer = licznik To licznik + NumericUpDown3.Value - 1
TextBox1.Text += listaOdTylu(i).ToString + " "
Next
'sumuje licznik
licznik = licznik + NumericUpDown3.Value
'wyświetla ilość pozostałych do wyświetlenia słów
Label7.Text = listaOdTylu.Count - licznik
End If
Else
TextBox1.Clear()
' jeśli licznik pokazanych słów z dodanymi ilościami wyświetlanych słów jest większy niż
' ilość słów w liście słów wtedy zeruje licznik słów i pokazuje pozostałe słowa
If licznik + NumericUpDown3.Value - 1 >= Form1.ListaSlow.Count Then
For i As Integer = licznik To Form1.ListaSlow.Count - 1
TextBox1.Text += Form1.ListaSlow(i).ToString + " "
Next
licznik = 0
Else
'wyświetla odpowiednią ilość słów w textboxie
For i As Integer = licznik To licznik + NumericUpDown3.Value - 1
TextBox1.Text += Form1.ListaSlow(i).ToString + " "
Next
'sumuje licznik
licznik = licznik + NumericUpDown3.Value
'wyświetla ilość pozostałych do wyświetlenia słów
Label7.Text = Form1.ListaSlow.Count - licznik
End If
End If
End Sub
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Zaznaczenie Checkboxa z Timerem odblokowuje NumericUpDown
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
NumericUpDown2.Enabled = True
Else
NumericUpDown2.Enabled = False
End If
End Sub
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Obsługuje czasowe wyświetlanie słów
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
TimerTick -= 1
Label10.Text = TimerTick.ToString
If TimerTick = 0 Then
' pętla sprawdzająca czy mamy do czynienia z tendencją odwróconych słów jeśli tak to ...
If tendencjaOdwrocona = True Then
'czyści textboxa
TextBox1.Clear()
TextBox1.Clear()
' jeśli licznik pokazanych słów z dodanymi ilościami wyświetlanych słów jest większy niż
' ilość słów w liście słów wtedy zeruje licznik słów i pokazuje pozostałe słowa
If licznik + NumericUpDown3.Value - 1 >= listaOdTylu.Count Then
For i As Integer = licznik To listaOdTylu.Count - 1
TextBox1.Text += listaOdTylu(i).ToString + " "
Next
'zeruje licznik
licznik = 0
'zatrzymuje Timer
Timer1.Stop()
'odblokowuje przycisk Start
Button2.Enabled = True
Else
'wyświetla odpowiednią ilość słów w textboxie
For i As Integer = licznik To licznik + NumericUpDown3.Value - 1
TextBox1.Text += listaOdTylu(i).ToString + " "
Next
'sumuje licznik
licznik = licznik + NumericUpDown3.Value
'wyświetla ilość pozostałych do wyświetlenia słów
Label7.Text = listaOdTylu.Count - licznik
'wyświetla aktualny czas
TimerTick = NumericUpDown2.Value
End If
Else
TextBox1.Clear()
' jeśli licznik pokazanych słów z dodanymi ilościami wyświetlanych słów jest większy niż
' ilość słów w liście słów wtedy zeruje licznik słów i pokazuje pozostałe słowa
If licznik + NumericUpDown3.Value - 1 >= Form1.ListaSlow.Count Then
For i As Integer = licznik To Form1.ListaSlow.Count - 1
TextBox1.Text += Form1.ListaSlow(i).ToString + " "
Next
'zeruje licznik
licznik = 0
'zatrzymuje Timer
Timer1.Stop()
'odblokowuje przycisk Start
Button2.Enabled = True
Else
'wyświetla odpowiednią ilość słów w textboxie
For i As Integer = licznik To licznik + NumericUpDown3.Value - 1
TextBox1.Text += Form1.ListaSlow(i).ToString + " "
Next
'sumuje licznik
licznik = licznik + NumericUpDown3.Value
'wyświetla ilość pozostałych do wyświetlenia słów
Label7.Text = Form1.ListaSlow.Count - licznik
'wyświetla aktualny czas
TimerTick = NumericUpDown2.Value
End If
End If
End If
End Sub
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Obsługuje przycisk Stop
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
Timer1.Stop()
Button2.Enabled = True
End Sub
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Przycisk w prawo "<<"
''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
' Przycisk cofa słowo o jeden do tyłu
' pętla sprawdzająca czy mamy do czynienia z tendencją odwróconych słów jeśli tak to ...
If tendencjaOdwrocona = True Then
'czyści TextBox
TextBox1.Clear()
'Sprawdza czy przypadkiem cofnięcie o jeden nie spowoduje wyjścia
'poza granice listy
If licznik - 1 = 0 Then
TextBox1.Text += listaOdTylu(0).ToString + " "
Else
'zmniejsza licznik o jeden
licznik = licznik - 1
For i As Integer = licznik - 1 To licznik - 1
'wyświetla slowo
TextBox1.Text += listaOdTylu(i).ToString + " "
Next
'wyświetla aktualną pozycję słowa
Label7.Text = listaOdTylu.Count - licznik
End If
Else
TextBox1.Clear()
If licznik - 1 = 0 Then
TextBox1.Text += Form1.ListaSlow(0).ToString + " "
Else
'zmniejsza licznik o jeden
licznik = licznik - 1
For i As Integer = licznik - 1 To licznik - 1
'wyświetla slowo
TextBox1.Text += Form1.ListaSlow(i).ToString + " "
Next
'wyświetla aktualną pozycję słowa
Label7.Text = Form1.ListaSlow.Count - licznik
End If
End If
End Sub
End Class
To by było na tyle, nie miałem do końca pomysłu na ten przycisk „<<” ale mam nadzieję, że sobie poradzicie sami, jeśli nie służę poradą. Pozdrawiam wszystkich czytelników.


