5748239 [rkeene@sledge /home/rkeene/devel/archive/quickbasic]$ cat -n qstar.bas
   1: ' Press SHIFT-F5 to start
   2: '
   3: '
   4: ' Sorry that most of this code is cryptc or messy.  Most of it was written
   5: ' as 2:00 in the morning.  Most of this was actually written back in may of
   6: ' 94,  I'm just now getting around to releasing it.  There's not musch for
   7: ' internal comments in this thing, its not very elegant code anyway.  I don't
   8: ' really suggest for anyone to learn by looking at this.  If you want to see
   9: ' some very well written code to learn from, look for some of my other creations
  10: ' like:   QPlasma - 256 color plasma generator: Has very well written code,
  11: '                   I commented the heck out of it.  Get this if you want to
  12: '                   see some really nice pallete manipulation.
  13: '         StarField - Simple 3-D starfield - Good for starters
  14: '
  15: ' coming soon : QTris - 256 color tetris with raytraced (wow!) backgrounds.
  16: '                       NEVER before has a QBasic game accomplished what
  17: '                       QTris will
  18: '               QDraw - 256 color drawing program, uses my new file format
  19: '                       that I'll introduce with QTris.  Also can load GIF's
  20: '                       and QPlasma style palette files.  Mouse support too!
  21: '
  22: ' If any of you want to see my Path Generator that I used for the 3-D tunnel,
  23: ' write me at Skream@aol.com and I'll upload it.
  24: 
  25: DEFINT A-Z
  26: 
  27: DECLARE FUNCTION ComputerType ()
  28: DECLARE SUB Fade (ty, tx, text$)
  29: 
  30: DEF FNMove (xp%, yp%, xr%, yr%, n%, vstop%)
  31:      ul = yr: ll = xr: bl = vstop - yr: rl = 319 - xr
  32:      SELECT CASE n
  33:      CASE 1
  34:           IF yp > ul THEN IF xp > ll THEN FNMove = 1 ELSE FNMove = 2 ELSE IF xp > ll THEN FNMove = 4 ELSE FNMove = 3
  35:      CASE 2
  36:           IF yp > ul THEN IF xp < rl THEN FNMove = 2 ELSE FNMove = 1 ELSE IF xp < rl THEN FNMove = 3 ELSE FNMove = 4
  37:      CASE 3
  38:           IF yp < bl THEN IF xp < rl THEN FNMove = 3 ELSE FNMove = 4 ELSE IF xp < rl THEN FNMove = 2 ELSE FNMove = 1
  39:      CASE 4
  40:           IF yp < bl THEN IF xp > ll THEN FNMove = 4 ELSE FNMove = 3 ELSE IF xp > ll THEN FNMove = 1 ELSE FNMove = 2
  41:      END SELECT
  42: END DEF
  43: 
  44: OPTION BASE 1
  45: RANDOMIZE TIMER
  46: DIM SHARED ScrollDelay
  47: 
  48: ScrollDelay = ComputerType
  49: 
  50: SCREEN 7, , 0
  51: Fade 9, 17, "QStar!"
  52: Fade 10, 12, "by Michael Teator"
  53: Fade 12, 7, "Please wait... initializing."
  54: 
  55: Stars = 100
  56: NumBoxes = 4
  57: Dist = 5
  58: LineClr = 9
  59: DelayClr = LineClr - 8
  60: Grid3DClr = 5
  61: Counter = 1
  62: NumDelayVectors = 8
  63: NumCircles = 20
  64: 
  65: DIM ReflTxt#(124)
  66: DIM BoxXradius(NumBoxes), BoxYradius(NumBoxes), BoxX(NumBoxes), BoxY(NumBoxes), BoxDir(NumBoxes), BoxClr(NumBoxes)
  67: DIM StarX(Stars), StarY(Stars), StarSpeed(Stars), StarClr(Stars)
  68: DIM LineX(2), LineY(2), LineDir(2), DelayVector(4 * NumDelayVectors)
  69: DIM Colors(4)
  70: DIM ForeCircles(3 * NumCircles), CircleR(NumCircles * 3 + 1)
  71: 
  72: RESTORE TubeData
  73: READ NumFrames
  74: DIM CircleX(NumFrames), CircleY(NumFrames), CircleC(NumFrames)
  75: FOR num = 1 TO NumFrames
  76:      READ CircleX(num), CircleY(num)
  77: NEXT
  78: 
  79: FOR num = 1 TO NumFrames
  80:      clr = INT(RND * 2) + 1
  81:      IF clr = 1 THEN CircleC(num) = 9 ELSE CircleC(num) = 1
  82: NEXT
  83: 
  84: CircleR(1) = 40
  85: 
  86: FOR num = 1 TO NumCircles * 3 STEP 3
  87:      CircleR(num + 1) = num ^ (3 / 2) / 2 + CircleR(1)
  88: NEXT
  89: 
  90: RESTORE Colors
  91: FOR num = 1 TO 4
  92: READ Colors(num)
  93: NEXT
  94: 
  95: PickClr = 1
  96: BoxCount = 1
  97: DO
  98:      BoxClr(BoxCount) = Colors(PickClr)
  99:      IF PickClr < 4 THEN PickClr = PickClr + 1 ELSE PickClr = 1
 100:      BoxCount = BoxCount + 1
 101: LOOP UNTIL BoxCount > NumBoxes
 102: 
 103: LineX(1) = 62
 104: LineY(1) = 53
 105: LineX(2) = 120
 106: LineY(2) = 198
 107: LineDir(1) = 1
 108: LineDir(2) = 2
 109: 
 110: FOR num = 1 TO Stars
 111:      StarPlane = INT(RND * 4) + 1
 112:      SELECT CASE StarPlane
 113:           CASE 1
 114:                StarSpeed(num) = 8
 115:                StarClr(num) = 15
 116:                StarX(num) = INT(RND * 319)
 117:                StarY(num) = INT(RND * 199)
 118:           CASE 2
 119:                StarSpeed(num) = 5
 120:                StarClr(num) = 7
 121:                StarX(num) = INT(RND * 319)
 122:                StarY(num) = INT(RND * 181)
 123:           CASE 3
 124:                StarSpeed(num) = 3
 125:                StarClr(num) = 7
 126:                StarX(num) = INT(RND * 319)
 127:                StarY(num) = INT(RND * 163)
 128:           CASE 4
 129:                StarSpeed(num) = 1
 130:                StarClr(num) = 8
 131:                StarX(num) = INT(RND * 319)
 132:                StarY(num) = INT(RND * 144)
 133:      END SELECT
 134: NEXT
 135: 
 136: FOR num = 1 TO NumBoxes
 137:      BoxXradius(num) = INT(RND * 20) + 1
 138:      BoxYradius(num) = INT(RND * 20) + 1
 139:      BoxX(num) = INT(RND * (319 - BoxXradius(num) * 2)) + BoxXradius(num)
 140:      BoxY(num) = INT(RND * (158 + num * 4 - BoxYradius(num) * 2)) + BoxYradius(num)
 141:      BoxDir(num) = INT(RND * 4) + 1
 142: NEXT
 143: 
 144: RESTORE Scroller
 145: DO
 146:      READ ScrollTxt$
 147:      Scroller$ = Scroller$ + ScrollTxt$
 148: LOOP UNTIL ScrollTxt$ = ""
 149: Scroller$ = SPACE$(30) + Scroller$
 150: TxtLength = LEN(Scroller$) + 1
 151: 
 152: FOR Frames = 2 TO 6
 153:      SCREEN , , Frames, 0
 154:      SELECT CASE Frames
 155:           CASE 2: RESTORE Grid3DFrame2
 156:           CASE 3: RESTORE Grid3DFrame3
 157:           CASE 4: RESTORE Grid3DFrame4
 158:           CASE 5: RESTORE Grid3DFrame5
 159:           CASE 6: RESTORE Grid3DFrame6
 160:      END SELECT
 161:      FOR Grid3DLine = 1 TO 8
 162:           READ x1!, y1!, x2!, y2!
 163:           LINE (x1!, y1!)-(x2!, y2!), Grid3DClr
 164:      NEXT
 165:      RESTORE Grid3DCommons
 166:      FOR Grid3DLine = 1 TO 15
 167:           READ x1, y1, x2, y2
 168:           LINE (x1, y1)-(x2, y2), Grid3DClr
 169:      NEXT
 170: NEXT
 171: 
 172: SCREEN , , 1, 0
 173: RESTORE Grid3DFrame1
 174: FOR Grid3DLine = 1 TO 6
 175:      READ x1, y1, x2, y2
 176:      LINE (x1, y1)-(x2, y2), Grid3DClr
 177:      PCOPY 1, 0
 178: NEXT
 179: RESTORE Grid3DCommons
 180: FOR Grid3DLine = 1 TO 15
 181:      READ x1, y1, x2, y2
 182:      LINE (x1, y1)-(x2, y2), Grid3DClr
 183:      PCOPY 1, 0
 184: NEXT
 185: 
 186: SCREEN , , 0
 187: LOCATE 12, 18: COLOR 10: PRINT "READY!"
 188: SLEEP 1
 189: 
 190: DO
 191:      SCREEN , , 7, 0
 192:      PCOPY 1, 7
 193:      IF Counter < TxtLength THEN
 194:           LOCATE 18, 5: COLOR 4: PRINT MID$(Scroller$, Counter, 30)
 195:           TopLine = 136
 196:           BotRefl = 151
 197:           DO
 198:                GET (32, TopLine)-(270, TopLine), ReflTxt#
 199:                PUT (32, BotRefl), ReflTxt#, XOR
 200:                TopLine = TopLine + 1
 201:                BotRefl = BotRefl - 1
 202:           LOOP UNTIL TopLine = 143
 203:           IF counter2 = ScrollDelay THEN counter2 = 0:  Counter = Counter + 1 ELSE counter2 = counter2 + 1
 204:      ELSE
 205:           GOTO Part2
 206:      END IF
 207:      FOR NumStars = 1 TO Stars
 208:           StarX(NumStars) = StarX(NumStars) - StarSpeed(NumStars)
 209:           IF StarX(NumStars) < 0 THEN
 210:                StarX(NumStars) = 319
 211:                SELECT CASE StarSpeed(NumStars)
 212:                     CASE 8
 213:                          StarY(NumStars) = INT(RND * 199)
 214:                     CASE 5
 215:                          StarY(NumStars) = INT(RND * 181)
 216:                     CASE 3
 217:                          StarY(NumStars) = INT(RND * 163)
 218:                     CASE 1
 219:                          StarY(NumStars) = INT(RND * 144)
 220:                END SELECT
 221:           END IF
 222:           PSET (StarX(NumStars), StarY(NumStars)), StarClr(NumStars)
 223:      NEXT
 224:      FOR num = 1 TO NumBoxes
 225:           LINE (BoxX(num) - BoxXradius(num), BoxY(num) - BoxYradius(num))-(BoxX(num) + BoxXradius(num), BoxY(num) + BoxYradius(num)), BoxClr(num), B
 226:           BoxDir(num) = FNMove(BoxX(num), BoxY(num), BoxXradius(num), BoxYradius(num), BoxDir(num), 158 + num * 4)
 227:           SELECT CASE BoxDir(num)
 228:                CASE 4: BoxY(num) = BoxY(num) + 1: BoxX(num) = BoxX(num) - 1
 229:                CASE 1: BoxY(num) = BoxY(num) - 1: BoxX(num) = BoxX(num) - 1
 230:                CASE 3: BoxY(num) = BoxY(num) + 1: BoxX(num) = BoxX(num) + 1
 231:                CASE 2: BoxY(num) = BoxY(num) - 1: BoxX(num) = BoxX(num) + 1
 232:           END SELECT
 233:      NEXT
 234:      FOR Delays = 1 TO NumDelayVectors * 4 STEP 4
 235:           LINE (DelayVector(Delays), DelayVector(Delays + 1))-(DelayVector(Delays + 2), DelayVector(Delays + 3)), DelayClr
 236:      NEXT
 237:      FOR num = 1 TO 2
 238:           LineDir(num) = FNMove(LineX(num), LineY(num), 0, 0, LineDir(num), 199)
 239:           SELECT CASE LineDir(num)
 240:                CASE 4: LineY(num) = LineY(num) + Dist: LineX(num) = LineX(num) - Dist
 241:                CASE 1: LineY(num) = LineY(num) - Dist: LineX(num) = LineX(num) - Dist
 242:                CASE 3: LineY(num) = LineY(num) + Dist: LineX(num) = LineX(num) + Dist
 243:                CASE 2: LineY(num) = LineY(num) - Dist: LineX(num) = LineX(num) + Dist
 244:           END SELECT
 245:      NEXT
 246:      LINE (LineX(1), LineY(1))-(LineX(2), LineY(2)), LineClr
 247:      FOR Shift = NumDelayVectors * 4 TO 8 STEP -4
 248:           DelayVector(Shift) = DelayVector(Shift - 4)
 249:           DelayVector(Shift - 1) = DelayVector(Shift - 5)
 250:           DelayVector(Shift - 2) = DelayVector(Shift - 6)
 251:           DelayVector(Shift - 3) = DelayVector(Shift - 7)
 252:      NEXT
 253:      DelayVector(1) = LineX(1)
 254:      DelayVector(2) = LineY(1)
 255:      DelayVector(3) = LineX(2)
 256:      DelayVector(4) = LineY(2)
 257:      PCOPY 7, 0
 258:      SCREEN , , 0, 0
 259: LOOP
 260: 
 261: Part2:
 262: 
 263: FrameCounter = 1
 264: FOR FrameNum = 1 TO NumFrames
 265:           SCREEN , , 7, 0
 266:           PCOPY FrameCounter, 7
 267:           FrameCounter = FrameCounter + 1
 268:           IF FrameCounter > 6 THEN FrameCounter = 1
 269:           CIRCLE (CircleX(FrameNum), CircleY(FrameNum)), CircleR(1), CircleC(FrameNum)
 270:           CountEm = NumCircles + 1
 271:           FOR Tube = 1 TO NumCircles * 3 STEP 3
 272:                CountEm = CountEm - 1
 273:                IF ForeCircles(Tube) <> 0 THEN
 274:                     AdjCircleX = CINT((ForeCircles(Tube) * CountEm * 2 + 160) / (CountEm * 2 + 1))
 275:                     AdjCircleY = CINT((ForeCircles(Tube + 1) * CountEm * 2 + 99) / (CountEm * 2 + 1))
 276:                     CIRCLE (AdjCircleX, AdjCircleY), CircleR(Tube + 1), ForeCircles(Tube + 2)
 277:                END IF
 278:           NEXT
 279:           FOR Shift = NumCircles * 3 TO 6 STEP -3
 280:                ForeCircles(Shift) = ForeCircles(Shift - 3)
 281:                ForeCircles(Shift - 1) = ForeCircles(Shift - 4)
 282:                ForeCircles(Shift - 2) = ForeCircles(Shift - 5)
 283:           NEXT
 284:           ForeCircles(1) = CircleX(FrameNum)
 285:           ForeCircles(2) = CircleY(FrameNum)
 286:           ForeCircles(3) = CircleC(FrameNum)
 287:           PCOPY 7, 0
 288:           SCREEN , , 0, 0
 289:      NEXT
 290: 
 291: SCREEN 0
 292: WIDTH 80
 293: LOCATE 1, 1
 294: RESTORE Logo
 295: FOR lines = 1 TO 20
 296:      READ OneLine$
 297:      Fade lines, 1, OneLine$
 298: NEXT
 299: LOCATE 22
 300: DO: LOOP UNTIL INKEY$ <> ""
 301: SYSTEM
 302: 
 303: Scroller:
 304: DATA "Hi!  Welcome to QStar!  Like the graphics?  "
 305: DATA "Someone told me this was impossible with QBasic... "
 306: DATA "guess my poor friend was wrong!  "
 307: DATA "This is 320x200x16 graphics and runs at 30fps on a fast 486.  "
 308: DATA "Write me and tell me what you think!  "
 309: DATA "America Online: Skream.  "
 310: DATA "Internet: skream@aol.com  "
 311: DATA "Next demo: Flying into the starfield and some other tricks!  "
 312: DATA "Code by Skream.  Later... :)        "
 313: DATA ""
 314: 
 315: Grid3DFrame1:
 316: DATA   0,144,319,144,   0,146,319,146,   0,151,319,151,   0,160,319,160
 317: DATA   0,175,319,175,   0,199,319,199,   0,199,319,199,   0,199,319,199
 318: 
 319: Grid3DFrame2:
 320: DATA   0,144,319,144,   0,145,319,145,   0,146,319,146,   0,152,319,152
 321: DATA   0,162,319,162,   0,178,319,178,   0,199,319,199,   0,199,319,199
 322: 
 323: Grid3DFrame3:
 324: DATA   0,144,319,144,   0,145,319,145,   0,147,319,147,   0,153,319,153
 325: DATA   0,164,319,164,   0,182,319,182,   0,199,319,199,   0,199,319,199
 326: 
 327: Grid3DFrame4:
 328: DATA   0,144,319,144,   0,146,319,146,   0,148,319,148,   0,154,319,154
 329: DATA   0,166,319,166,   0,186,319,186,   0,199,319,199,   0,199,319,199
 330: 
 331: Grid3DFrame5:
 332: DATA   0,144,319,144,   0,146,319,146,   0,149,319,149,   0,156,319,156
 333: DATA   0,169,319,169,   0,190,319,190,   0,199,319,199,   0,199,319,199
 334: 
 335: Grid3DFrame6:
 336: DATA   0,144,319,144,   0,145,319,145,   0,147,319,147,   0,150,319,150
 337: DATA   0,158,319,158,   0,172,319,172,   0,194,319,194,   0,199,319,199
 338: 
 339: Grid3DCommons:
 340: DATA 280,144,319,153, 200,144,225,199, 220,144,275,199, 240,144,319,189
 341: DATA 260,144,319,167, 300,144,319,147, 140,144,130,199, 120,144, 95,199
 342: DATA 100,144, 45,199,  80,144,  0,189,  60,144,  0,167,  40,144,  0,153
 343: DATA  20,144,  0,147, 160,144,160,199, 180,144,190,199
 344: 
 345: Colors:
 346: DATA 10,11,12,14
 347: 
 348: Logo:
 349: DATA "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 350: DATA "³   ú            ú         ú         ú        ú   .  ú       ú           .     ³
 351: DATA "³ú      ÛÛÛÛÛÛÛ» ÛÛ»  ÛÛ» ÛÛÛÛÛÛ» .ÛÛÛÛÛÛÛ»  ÛÛÛÛÛ». ÛÛÛ»   ÛÛÛ» ÛÛ» .     ú   ³
 352: DATA "³    ú  ÛÛÉÍÍÍͼúÛÛº ÛÛɼ ÛÛÉÍÍÛÛ» ÛÛÉÍÍÍͼ ÛÛÉÍÍÛÛ» ÛÛÛÛ» ÛÛÛÛº ÛÛº           ³
 353: DATA "³       ÛÛÛÛÛÛÛ» ÛÛÛÛÛɼ  ÛÛÛÛÛÛɼ ÛÛÛÛÛ»  úÛÛÛÛÛÛÛº ÛÛÉÛÛÛÛÉÛÛº ÛÛº   ú       ³
 354: DATA "³ ú     ÈÍÍÍÍÛÛº ÛÛÉÍÛÛ»  ÛÛÉÍÍÛÛ» ÛÛÉÍͼ.  ÛÛÉÍÍÛÛº ÛÛºÈÛÛɼÛÛº Èͼ        ú  ³
 355: DATA "³       ÛÛÛÛÛÛÛº ÛÛº  ÛÛ» ÛÛº úÛÛº ÛÛÛÛÛÛÛ» ÛÛº  ÛÛº ÛÛº.Èͼ ÛÛº ÛÛ»    ú      ³
 356: DATA "³    ú  ÈÍÍÍÍÍͼ Èͼ  Èͼ.Èͼ  Èͼ ÈÍÍÍÍÍͼ Èͼ. Èͼ.Èͼ   ú Èͼ Èͼ      ú    ³
 357: DATA "³          .  ú      ú         .         ú      ú        ú    ú                ³
 358: DATA "³    ú  ÖÄÄÄÄÄ¿ ÒÄ¿ .ÖÄÄ¿  ÖÄ¿ ÄÒÄ ÖÄÄ¿    ÒÄÄ¿ ÒÄÄ¿ ÖÄÒÄ¿ ÖÄÄ¿  ÖÄ¿   ú       ³
 359: DATA "³ú      º ú   ³ ÇÄÁ¿ ÇÄÄ´. ÓÄ¿  º  º    ú  º  ³ ÇÄ ú º º ³ º ú³  ÓÄ¿      ú    ³
 360: DATA "³  ú    º   ú ³ ÐÄÄÙ Ð  Á ÓÄÄÙ ÄÐÄ ÓÄÄÙ    ÐÄÄÙ ÐÄÄÙ Ð Ð Á ÓÄÄÙ ÓÄÄÙ           ³
 361: DATA "³       º     ³     ú       write to:       ú        ú         .        ú      ³
 362: DATA "³ú      ÓÄÄÄÅÄÙ         skream@aol.com           .               ú          ú  ³
 363: DATA "³  ú   ú                     ú   ú      ú                 ú           ú        ³
 364: DATA "³                ú       ú                  See ya later...       ú       ú    ³
 365: DATA "³      Look for more demos soon!      ú          ú                             ³
 366: DATA "³           ú      ú      This has been a presentation of Skream! design  ú  ú ³
 367: DATA "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 368: DATA "                             press a key . . .
 369: 
 370: 
 371: TubeData:
 372: ' Data created by Path Generator Version 1.0
 373: '    by Michael Teator in May 1994
 374: ' Comment: This one should look great!  -Skream
 375: ' Date: 05-24-1994 Time: 08:32:11
 376: ' Number of points
 377: DATA  474
 378: ' ------ Path data ------
 379: DATA 159,99,159,99,159,99,159,99,159,99,159,99,159,99,158,100,157,100,156,101,154,102,153,103,152,105,149,107,147,108,145,110,144,112,139,114,136,116,130,119
 380: DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121
 381: DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82
 382: DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100
 383: DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152
 384: DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124
 385: DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125
 386: DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98
 387: DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66
 388: DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116
 389: DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44
 390: DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40
 391: DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108
 392: DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146
 393: DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67
 394: DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132
 395: DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42
 396: DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156
 397: DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93
 398: DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67
 399: DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106
 400: DATA 94,108,82,109,75,110,86,112,103,111,124,109,145,107,172,102,194,97,210,90,220,83,237,70,245,64,244,74,232,90,218,103,206,111,189,115,171,117,154,112
 401: DATA 141,103,136,88,136,66,136,55,137,47,135,56,133,70,125,81,112,87,92,91,87,85,97,76,109,76,119,85,123,100,124,113,126,124,131,127,143,125,152,118
 402: DATA 156,112,159,107,162,103,163,100,164,100,166,99,167,99,168,99,169,99,169,99,169,99,169,99,169,99,169,99
 403: 
 404: FUNCTION ComputerType
 405: 
 406:      CLS
 407:      PRINT "Welcome to QStar!"
 408:      PRINT
 409:      PRINT "Please select the speed computer you are using:"
 410:      PRINT "  (1) 286"
 411:      PRINT "  (2) Slow 386"
 412:      PRINT "  (3) Fast 386 or slow 486"
 413:      PRINT "  (4) Fast 486"
 414:      PRINT "  (5) Pentium"
 415:      PRINT : PRINT
 416:      PRINT "Please note that these settings only affect the scroller."
 417:      DO
 418:           selection$ = INKEY$
 419:           SELECT CASE selection$
 420:                CASE "1" TO "5"
 421:                     ComputerType = VAL(selection$) - 1
 422:                     EXIT FUNCTION
 423:           END SELECT
 424:      LOOP
 425: 
 426: END FUNCTION
 427: 
 428: SUB Fade (ty, tx, text$)
 429: 
 430:     LOCATE ty, tx: COLOR 8: PRINT text$
 431:     FOR n = 1 TO (ScrollDelay * 5000): NEXT
 432:     LOCATE ty, tx: COLOR 7: PRINT text$
 433:     FOR n = 1 TO (ScrollDelay * 5000): NEXT
 434:     LOCATE ty, tx: COLOR 15: PRINT text$
 435:     FOR n = 1 TO (ScrollDelay * 5000): NEXT
 436: 
 437: END SUB
 438: 
5748240 [rkeene@sledge /home/rkeene/devel/archive/quickbasic]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2000-05-09 21:08:06