Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
32Bowling For John
#27
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:

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
Reply


Messages In This Thread
32Bowling For John - by j2krei08 - 07-16-2005, 02:53 AM
32Bowling For John - by j2krei08 - 08-21-2005, 06:42 AM
32Bowling For John - by speedlemon - 08-21-2005, 07:47 AM
32Bowling For John - by j2krei08 - 09-07-2005, 12:55 AM
32Bowling For John - by j2krei08 - 11-16-2005, 11:21 PM
32Bowling For John - by marzecTM - 11-17-2005, 12:12 AM
32Bowling For John - by NecrosIhsan - 11-17-2005, 02:15 AM
32Bowling For John - by j2krei08 - 11-18-2005, 12:59 AM
32Bowling For John - by SSC - 11-18-2005, 03:15 PM
32Bowling For John - by j2krei08 - 11-18-2005, 11:25 PM
32Bowling For John - by MystikShadows - 11-19-2005, 12:46 AM
32Bowling For John - by j2krei08 - 11-21-2005, 10:34 PM
32Bowling For John - by j2krei08 - 12-09-2005, 11:25 PM
32Bowling For John - by speedlemon - 12-10-2005, 05:57 AM
32Bowling For John - by j2krei08 - 12-10-2005, 11:34 PM
32Bowling For John - by j2krei08 - 12-15-2005, 11:26 PM
32Bowling For John - by Zack - 12-16-2005, 04:54 AM
32Bowling For John - by Josiah Tobin - 12-16-2005, 04:55 AM
32Bowling For John - by j2krei08 - 12-16-2005, 09:47 PM
32Bowling For John - by j2krei08 - 12-21-2005, 10:01 PM
32Bowling For John - by j2krei08 - 01-10-2006, 10:47 PM
32Bowling For John - by j2krei08 - 02-01-2006, 01:12 AM
32Bowling For John - by Z!re - 02-01-2006, 01:01 PM
32Bowling For John - by j2krei08 - 02-03-2006, 02:56 AM
32Bowling For John - by TheDarkJay - 02-03-2006, 09:42 PM
32Bowling For John - by j2krei08 - 02-13-2006, 11:14 PM
32Bowling For John - by na_th_an - 02-14-2006, 03:48 PM
32Bowling For John - by j2krei08 - 02-14-2006, 08:05 PM
32Bowling For John - by j2krei08 - 03-28-2006, 02:59 AM
32Bowling For John - by Torahteen - 03-28-2006, 03:09 AM
32Bowling For John - by j2krei08 - 03-28-2006, 03:26 AM
32Bowling For John - by j2krei08 - 03-28-2006, 09:31 PM
32Bowling For John - by RADIUM-V Interactive - 05-10-2006, 12:46 AM
32Bowling For John - by Mr Match - 05-10-2006, 04:14 AM
32Bowling For John - by RADIUM-V Interactive - 05-11-2006, 08:30 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)