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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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(" http://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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
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.