02-14-2006, 03:48 PM
You can make it a bit shorter and faster. In your text printing routine you are calculating Mid$(text, a, 1) a lot of times - you can precalculate this. Plus all those lines can be shortened::
Replace this:
With:
---
Though it could have been shortened significally using some leet function shredding - nice one-liner, which replace all those IFs:
What the above line does is:
1.- get the current character with Mid$ (text, a, 1)
2.- look for it in the "ABCDEF... string. Instr will return a number with its position within the string or 0 if it is not found.
3.- We substract 1.
That way if Mid$ (text, a, 1) = "B", Instr returns "2", we substract 1 and we get l_num = 1, for example. Or if Mid$ (text, a, 1) = " " ,Instr returns "0", we substract 1 and we get l_num = -1.
Replace this:
Code:
IF MID$(text,a,1) = "A" THEN l_num = 0
IF MID$(text,a,1) = "B" THEN l_num = 1
IF MID$(text,a,1) = "C" THEN l_num = 2
IF MID$(text,a,1) = "D" THEN l_num = 3
IF MID$(text,a,1) = "E" THEN l_num = 4
IF MID$(text,a,1) = "F" THEN l_num = 5
IF MID$(text,a,1) = "G" THEN l_num = 6
IF MID$(text,a,1) = "H" THEN l_num = 7
IF MID$(text,a,1) = "I" THEN l_num = 8
IF MID$(text,a,1) = "J" THEN l_num = 9
IF MID$(text,a,1) = "K" THEN l_num = 10
IF MID$(text,a,1) = "L" THEN l_num = 11
IF MID$(text,a,1) = "M" THEN l_num = 12
IF MID$(text,a,1) = "N" THEN l_num = 13
IF MID$(text,a,1) = "O" THEN l_num = 14
IF MID$(text,a,1) = "P" THEN l_num = 15
IF MID$(text,a,1) = "Q" THEN l_num = 16
IF MID$(text,a,1) = "R" THEN l_num = 17
IF MID$(text,a,1) = "S" THEN l_num = 18
IF MID$(text,a,1) = "T" THEN l_num = 19
IF MID$(text,a,1) = "U" THEN l_num = 20
IF MID$(text,a,1) = "V" THEN l_num = 21
IF MID$(text,a,1) = "W" THEN l_num = 22
IF MID$(text,a,1) = "X" THEN l_num = 23
IF MID$(text,a,1) = "Y" THEN l_num = 24
IF MID$(text,a,1) = "Z" THEN l_num = 25
IF MID$(text,a,1) = "0" THEN l_num = 26
IF MID$(text,a,1) = "1" THEN l_num = 27
IF MID$(text,a,1) = "2" THEN l_num = 28
IF MID$(text,a,1) = "3" THEN l_num = 29
IF MID$(text,a,1) = "4" THEN l_num = 30
IF MID$(text,a,1) = "5" THEN l_num = 31
IF MID$(text,a,1) = "6" THEN l_num = 32
IF MID$(text,a,1) = "7" THEN l_num = 33
IF MID$(text,a,1) = "8" THEN l_num = 34
IF MID$(text,a,1) = "9" THEN l_num = 35
IF MID$(text,a,1) = "!" THEN l_num = 36
IF MID$(text,a,1) = "?" THEN l_num = 37
IF MID$(text,a,1) = "." THEN l_num = 38
IF MID$(text,a,1) = "@" THEN l_num = 39
IF MID$(text,a,1) = "," THEN l_num = 40
IF MID$(text,a,1) = "_" THEN l_num = 41
With:
Code:
m$ = Mid$ (text, a, 1)
If m$ >= "A" And m$ <= "Z" Then
l_num = Asc (m$) - Asc ("A")
Else If m$ >= "0" And m$ <= "9" Then
l_num = 26 + Val (m$)
Else If m$ = "!" Then
l_num = 36
Else If m$ = "?" Then
l_num = 37
Else If m$ = "." Then
l_num = 38
Else If m$ = "@" Then
l_num = 39
Else If m$ = "," Then
l_num = 40
Else If m$ = "_" Then
l_num = 41
End If
---
Though it could have been shortened significally using some leet function shredding - nice one-liner, which replace all those IFs:
Code:
l_num = Instr ("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?.@,_", Mid$ (text, a, 1)) - 1
What the above line does is:
1.- get the current character with Mid$ (text, a, 1)
2.- look for it in the "ABCDEF... string. Instr will return a number with its position within the string or 0 if it is not found.
3.- We substract 1.
That way if Mid$ (text, a, 1) = "B", Instr returns "2", we substract 1 and we get l_num = 1, for example. Or if Mid$ (text, a, 1) = " " ,Instr returns "0", we substract 1 and we get l_num = -1.
SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i