Author Topic: Beyond Sol  (Read 11852 times)

0 Members and 1 Guest are viewing this topic.

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #30 on: December 30, 2019, 09:28:39 pm »
Okay, I have a couple of name ideas.

Et Go Home
We're Not Alone
Star Trak
It's a Cookbook
Deep Space
Planet of the Rabbits
We Should Not Have Sent That Probe Out
Aliens? Just Pretend They Aren't Real
Journey to the Center of the Galaxy
Stupid Aliens
Annoy the Aliens Until They leave
Those Human Hybrids Sure Look Funny
That Should Have Been Our Planet
Let's Irradiate Our Entire Planet With Nuclear Waste So They Won't Want It
Your Step Father is a What
They Are preparing a Stew and We Are Invited
Final Frontier (probably taken)
Time to Move
Mandela Effect
Earth and Beyond (?)
The Sky's the Limit
Beware the Wife Swappers (snatchers?)

Still working on it. I'll need some time!
My name is Michael, but you can call me Mike :)

Offline Kazman

  • Newbie
  • Posts: 14
    • View Profile
Re: Beyond Sol
« Reply #31 on: December 31, 2019, 05:03:48 am »
Hi Romichess! As I said before, I'm trying now your game at my home's desktop PC. It runs very much faster! :D
I love it, and I can't wait until the new update ;)
Thank u very much :)

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #32 on: December 31, 2019, 06:00:19 pm »
Hi Romichess! As I said before, I'm trying now your game at my home's desktop PC. It runs very much faster! :D
I love it, and I can't wait until the new update ;)
Thank u very much :)
You are very welcome Kazman! And thank you for the feedback. Feedback is extremely important for development. So anything you can tell me, what you like, what you don't like, any suggestions, anything. I can't promise I'll add a suggestion but I will certainly consider whether or not it should be added. I'm working on a game menu so save and load game can be added as well as other options like playing with a different color, etc.
My name is Michael, but you can call me Mike :)

Offline Kazman

  • Newbie
  • Posts: 14
    • View Profile
Re: Beyond Sol
« Reply #33 on: January 02, 2020, 05:24:55 am »
Ok, I will try to send you feedback as long as I can :P

One thing, I don't know if it is important. Remember my work PC? I said that the game and clicks were slow. Well, today I tried it on QB64 64 BITS and OMG speed has increased!!! And mouse behaviour! ;)

I like your idea of a game menu :)

What are your plans of graphics? I read before that these are not the final ones...

Happy 2020 ;)
« Last Edit: January 02, 2020, 05:27:43 am by Kazman »

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #34 on: January 02, 2020, 12:39:48 pm »
Ok, I will try to send you feedback as long as I can :P

One thing, I don't know if it is important. Remember my work PC? I said that the game and clicks were slow. Well, today I tried it on QB64 64 BITS and OMG speed has increased!!! And mouse behaviour! ;)

I like your idea of a game menu :)

What are your plans of graphics? I read before that these are not the final ones...

Happy 2020 ;)

For graphics I have downloaded some nice Hubble pictures. One is a nice star background. And the others have some really nice stars. The plan is to make sprites out of the stars. The next update will have a game menu! It is tedious to make panels by hand using trial and small adjustments. So I am working on a visual panel designer. It won't produce code, but it will give me all the x, y coordinates!
My name is Michael, but you can call me Mike :)

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #35 on: January 05, 2020, 06:55:39 pm »
There was a request for some kind of a save and load so I added a quick save "q" and quick restore "r". IT DOES NOT SAVE TO DISK. The new game is saved so one can restart the exact game by pressing "r". But once "q" is pressed the start is replaced by a new save. See attached readme for some minor changes.

Code: QB64: [Select]
  1. TYPE stars
  2.     n AS STRING * 10 '                 Name of star
  3.     x AS INTEGER '                     x-position
  4.     y AS INTEGER '                     y-position
  5.     o AS INTEGER '                     Owner
  6.     c AS INTEGER '                     Color
  7.     s AS INTEGER '                     Size
  8.     t AS LONG '                        Ships
  9.     p AS INTEGER '
  10.     d AS INTEGER '                   (Population) For now ships production
  11.  
  12. TYPE FLEETS
  13.     t AS LONG
  14.     x1 AS INTEGER
  15.     y1 AS INTEGER
  16.     x2 AS INTEGER
  17.     y2 AS INTEGER
  18.     o AS INTEGER
  19.     d AS INTEGER
  20.  
  21. TYPE ORDERS
  22.     src AS LONG
  23.     ovr AS LONG
  24.     shp AS LONG
  25.     dst AS LONG
  26.  
  27. ' Global variables shared because they are needed in more than one routine
  28. DIM SHARED sw AS INTEGER '             Screen Width
  29. DIM SHARED sh AS INTEGER '             Screen Height
  30. DIM SHARED sww AS INTEGER '            Screen Width Wide margin
  31. DIM SHARED swn AS INTEGER '            Screen Width Narrow adjustment
  32. DIM SHARED shw AS INTEGER '            Screen Height Wide margine
  33. DIM SHARED shn AS INTEGER '            Screen Height Narrow adjustment
  34. DIM SHARED nw AS INTEGER '             games Natural screen Width
  35. DIM SHARED nh AS INTEGER '             games Natural screen Height
  36. DIM SHARED ratio AS _FLOAT '           the Ratio of the games natural screen width to the actual
  37. DIM SHARED star(100) AS stars '        100 stars - may change
  38. DIM SHARED qstar(100) AS stars
  39. DIM SHARED names(200) AS STRING * 10 ' 200 star names
  40. DIM SHARED seed AS INTEGER '           Seed to prime the Randomizer to display identical background each frame
  41. DIM SHARED home(7) AS INTEGER '        The starting star for each player. The human always has star(0), Sol
  42. DIM SHARED qhome(7) AS INTEGER
  43. DIM SHARED tt AS INTEGER '             tt = 0 star names displayed, tt = 0 star names not didplayed
  44. DIM SHARED ch AS STRING * 1 '          Game loop key input variable
  45. DIM SHARED repeat AS INTEGER '         Game loop control variable
  46. DIM SHARED fleet(2000) AS FLEETS
  47. DIM SHARED qfleet(2000) AS FLEETS
  48. DIM SHARED panx, pany AS INTEGER
  49. DIM SHARED oanx, oany AS INTEGER
  50. DIM SHARED strng AS STRING * 14
  51. DIM SHARED strng0 AS STRING * 10
  52. DIM SHARED strng1 AS STRING * 10
  53. DIM SHARED order(100) AS ORDERS
  54. DIM SHARED qorder(100) AS ORDERS
  55. DIM SHARED ord AS ORDERS
  56. DIM SHARED hate(7, 7) AS LONG
  57. DIM SHARED qhate(7, 7) AS LONG
  58.  
  59.  
  60. sw = _DESKTOPWIDTH '                   native video with of syatem
  61. sww = sw / 24 '                        margin based on native video width to keep stars away from edge
  62. swn = sw / 48 '                        adjustment that works with sww to keep stars away from left and top of screen
  63. nw = 1920
  64.  
  65. ratio = sw / 1920 '                    Used to adjust distances and sizes for various screen modes
  66.  
  67. shw = sh / 20
  68. shn = sh / 40
  69. nh = 1080
  70.  
  71. tt = 0
  72. lcx = sw
  73. rcx = sw
  74. cp = 100
  75. h = 100
  76. ar = 0
  77. rng = 200
  78. slct = 0
  79. strng = ""
  80. strng0 = ""
  81. strng1 = ""
  82. src = 100
  83. dst = 100
  84. ord.src = 100
  85.  
  86. SCREEN _NEWIMAGE(sw, sh, 256) '        creates a screen the resolution of the users native system
  87.  
  88.  
  89. sp = _NEWIMAGE(400 * ratio, 540 * ratio, 256)
  90. op = _NEWIMAGE(400 * ratio, 225 * ratio, 256)
  91.  
  92. StarNames '                            Routine to load star names into string array stars(200)
  93.  
  94. NewGame
  95.  
  96. ttf16 = _LOADFONT("cyberbit.ttf", 16 * ratio, "BOLD")
  97. ttf24 = _LOADFONT("cyberbit.ttf", 24 * ratio, "BOLD")
  98. ttf36 = _LOADFONT("cyberbit.ttf", 36 * ratio, "BOLD")
  99. ttf72 = _LOADFONT("cyberbit.ttf", 72 * ratio, "BOLD")
  100.  
  101. repeat = 1
  102.  
  103. WHILE repeat
  104.  
  105.     id = INT(RND * 5 + 2)
  106.  
  107.     CLS
  108.  
  109.     PaintBackground
  110.  
  111.     PaintStars
  112.  
  113.     PaintFleet
  114.  
  115.     FOR it = 0 TO speed
  116.  
  117.         GetInput
  118.  
  119.         Player
  120.  
  121.         Computer
  122.  
  123.     NEXT
  124.  
  125.     _DISPLAY
  126.  
  127.  
  128.  
  129. SUB Computer
  130.  
  131.     IF paused = 0 THEN
  132.         RANDOMIZE TIMER
  133.         FOR i = 0 TO 99
  134.             r = INT(RND * 60)
  135.             IF r < star(i).p THEN
  136.                 IF star(i).o > 0 THEN
  137.                     star(i).t = star(i).t + 1
  138.                 ELSE
  139.                     IF INT(RND * 10) < 3 THEN
  140.                         star(i).t = star(i).t + 1
  141.                     END IF
  142.                 END IF
  143.             END IF
  144.         NEXT
  145.  
  146.         i = home(id)
  147.         IF star(i).o <> id THEN
  148.             FOR j = 0 TO 99
  149.                 IF star(j).o = id THEN home(id) = j: i = j: EXIT FOR
  150.             NEXT
  151.         END IF
  152.  
  153.         dis = 0
  154.         hid = 0
  155.         FOR j = 1 TO 6
  156.             IF j <> id THEN
  157.                 IF hate(id, j) > dis THEN
  158.                     dis = hate(id, j)
  159.                     hid = j
  160.                 END IF
  161.             END IF
  162.         NEXT
  163.  
  164.         FOR p = 0 TO 3
  165.  
  166.             IF p = 0 THEN
  167.                 IF star(i).t > LL THEN
  168.                     away = 10000
  169.                     jay = 100
  170.                     FOR j = 0 TO 99
  171.                         IF star(j).d > 0 THEN
  172.                             star(j).d = star(j).d - 1
  173.                         ELSE
  174.                             IF star(j).o = hid THEN th = 3 ELSE th = 4
  175.                             IF star(j).o <> id AND star(i).t > star(j).t * th THEN
  176.                                 ok = 0
  177.                                 FOR k = 0 TO 99
  178.                                     IF star(k).o = id THEN
  179.                                         dist = SQR(ABS(star(j).x - star(k).x) ^ 2 + ABS(star(j).y - star(k).y) ^ 2)
  180.                                         IF dist < 251 THEN
  181.                                             ok = 1
  182.                                             EXIT FOR
  183.                                         END IF
  184.                                     END IF
  185.                                 NEXT
  186.                                 IF ok = 1 THEN
  187.                                     dist = SQR(ABS(star(j).x - star(i).x) ^ 2 + ABS(star(j).y - star(i).y) ^ 2)
  188.                                     IF dist < away THEN
  189.                                         away = dist
  190.                                         jay = j
  191.                                     END IF
  192.                                 END IF
  193.                             END IF
  194.                         END IF
  195.                     NEXT
  196.                     IF jay < 100 THEN
  197.                         SendFleet i, jay, star(i).t / 1.6
  198.                         star(jay).d = 1000
  199.                     END IF
  200.                 END IF
  201.             END IF
  202.  
  203.             IF p = 1 THEN
  204.                 sf2 = 100
  205.                 FOR i = 0 TO 99
  206.                     IF star(i).o = id AND i <> home(id) AND star(i).t > LL * 1.6 THEN
  207.                         sf3 = star(i).t / 2.5
  208.                         FOR j = 0 TO 99
  209.                             IF star(j).d > 0 THEN
  210.                                 star(j).d = star(j).d - 1
  211.                             ELSE
  212.                                 IF star(j).o <> id AND star(i).t > star(j).t * 4 THEN
  213.                                     FOR k = 0 TO 99
  214.                                         IF star(k).o = id THEN
  215.                                             dist = SQR(ABS(star(k).x - star(j).x) ^ 2 + ABS(star(k).y - star(j).y) ^ 2)
  216.                                             IF dist <= 250 * ratio THEN
  217.                                                 sf1 = i
  218.                                                 sf2 = j
  219.                                                 EXIT FOR
  220.                                             END IF
  221.                                         END IF
  222.                                     NEXT
  223.                                 END IF
  224.                             END IF
  225.                         NEXT
  226.                         IF sf2 < 100 THEN EXIT FOR
  227.                     END IF
  228.                 NEXT
  229.                 IF sf2 < 100 THEN
  230.                     SendFleet sf1, sf2, sf3
  231.                     star(sf2).d = 1000
  232.                     EXIT FOR
  233.                 END IF
  234.             END IF
  235.  
  236.             IF p = 2 THEN
  237.                 FOR i = 0 TO 99
  238.                     IF i <> home(id) AND star(i).o = id THEN
  239.                         IF star(i).t > LL / 2 THEN
  240.                             ok = 1
  241.                             FOR j = 0 TO 99
  242.                                 IF star(j).o <> id AND star(j).o <> 0 THEN
  243.                                     dist = SQR(ABS(star(i).x - star(j).x) ^ 2 + ABS(star(i).y - star(j).y) ^ 2)
  244.                                     IF dist <= 350 * ratio THEN
  245.                                         ok = 0
  246.                                         EXIT FOR
  247.                                     END IF
  248.                                 END IF
  249.                             NEXT
  250.                             IF ok = 1 THEN
  251.                                 SendFleet i, home(id), star(i).t / 2
  252.                                 EXIT FOR
  253.                             END IF
  254.                         END IF
  255.                     END IF
  256.                 NEXT
  257.                 IF ok = 1 THEN EXIT FOR
  258.             END IF
  259.  
  260.             IF p = 3 THEN
  261.                 ok = 0
  262.                 FOR i = 0 TO 99
  263.                     IF i <> home(id) AND star(i).o = id THEN
  264.                         IF star(i).t > LL * 1.5 + star(i).p * 50 THEN
  265.                             ok = 1
  266.                             EXIT FOR
  267.                         END IF
  268.                     END IF
  269.                 NEXT
  270.                 IF ok = 1 THEN
  271.                     SendFleet i, home(id), star(i).t / 4
  272.                     EXIT FOR
  273.                 END IF
  274.             END IF
  275.  
  276.         NEXT
  277.  
  278.         count = fltcnt
  279.         i = 0
  280.         WHILE count
  281.             IF fleet(i).o <> 0 THEN
  282.                 count = count - 1
  283.                 IF fleet(i).x2 > fleet(i).x1 THEN
  284.                     fleet(i).x1 = fleet(i).x1 + 1
  285.                 END IF
  286.                 IF fleet(i).x2 < fleet(i).x1 THEN
  287.                     fleet(i).x1 = fleet(i).x1 - 1
  288.                 END IF
  289.                 IF fleet(i).y2 > fleet(i).y1 THEN
  290.                     fleet(i).y1 = fleet(i).y1 + 1
  291.                 END IF
  292.                 IF fleet(i).y2 < fleet(i).y1 THEN
  293.                     fleet(i).y1 = fleet(i).y1 - 1
  294.                 END IF
  295.                 IF fleet(i).x1 = fleet(i).x2 AND fleet(i).y1 = fleet(i).y2 THEN
  296.                     dest = fleet(i).d
  297.                     IF star(dest).o = fleet(i).o THEN
  298.                         star(dest).t = star(dest).t + fleet(i).t
  299.                         fleet(i).o = 0
  300.                         fltcnt = fltcnt - 1
  301.                     ELSE
  302.                         o = star(dest).o
  303.                         IF o > 0 AND star(dest).t < fleet(i).t * 0.6 THEN
  304.                             SendFleet dest, home(o), star(dest).t * 0.9
  305.                             star(dest).t = 0
  306.                             star(dest).o = fleet(i).o
  307.                             star(dest).t = fleet(i).t
  308.                             star(dest).o = fleet(i).o
  309.                             fleet(i).o = 0
  310.                             fltcnt = fltcnt - 1
  311.                         ELSE
  312.                             IF fleet(i).t * 1.1 > star(dest).t THEN
  313.                                 alive = 1
  314.                                 WHILE alive
  315.                                     alive = 0
  316.                                     damorg = fleet(i).t / 10 + 1
  317.                                     damdst = star(dest).t / 8 + 1
  318.                                     fleet(i).t = fleet(i).t - damdst
  319.                                     star(dest).t = star(dest).t - damorg
  320.                                     IF fleet(i).t > 0 AND star(dest).t > 0 THEN
  321.                                         alive = 1
  322.                                     END IF
  323.                                 WEND
  324.                                 IF star(dest).t < 1 THEN
  325.                                     star(dest).t = fleet(i).t
  326.                                     star(dest).o = fleet(i).o
  327.                                 END IF
  328.                                 fleet(i).o = 0
  329.                                 fltcnt = fltcnt - 1
  330.                             ELSE
  331.                                 k = 100
  332.                                 shortest = 10000
  333.                                 FOR j = 0 TO 99
  334.                                     IF star(j).o = fleet(i).o THEN
  335.                                         dist = SQR(ABS(star(j).x - fleet(i).x1) ^ 2 + ABS(star(j).y - fleet(i).y1) ^ 2)
  336.                                         IF dist < shortest THEN
  337.                                             shortest = dist
  338.                                             k = j
  339.                                         END IF
  340.                                     END IF
  341.                                 NEXT
  342.                                 IF k < 100 THEN
  343.                                     fleet(i).x2 = star(k).x
  344.                                     fleet(i).y2 = star(k).y
  345.                                     fleet(i).d = k
  346.                                 ELSE
  347.                                     fleet(i).o = 0
  348.                                     fltcnt = fltcnt - 1
  349.                                 END IF
  350.                             END IF
  351.                         END IF
  352.                     END IF
  353.                 END IF
  354.             END IF
  355.             i = i + 1
  356.         WEND
  357.     END IF
  358.  
  359. SUB GetInput
  360.  
  361.     IF ch = CHR$(27) THEN repeat = 0
  362.     IF ch = "n" THEN NewGame
  363.     IF ch = "t" THEN tt = 1 - tt
  364.     IF ch = "p" THEN paused = 1 - paused
  365.     IF ch = "+" THEN
  366.         IF speed < 10 THEN speed = speed + 1
  367.     END IF
  368.     IF ch = "-" THEN
  369.         IF speed > 0 THEN speed = speed - 1
  370.     END IF
  371.     IF ch = "q" THEN QuickSave
  372.     IF ch = "l" THEN QuickRestore
  373.     ch = INKEY$
  374.  
  375.  
  376.     lclk = 0
  377.     rclk = 0
  378.  
  379.  
  380.         x = _MOUSEX
  381.         y = _MOUSEY
  382.         lmb = _MOUSEBUTTON(1)
  383.         rmb = _MOUSEBUTTON(2)
  384.  
  385.         IF lmb AND lcx = sw THEN lcx = x
  386.         IF rmb AND rcx = sw THEN rcx = x
  387.     WEND
  388.  
  389.     IF lmb = 0 AND lcx < sw THEN lclk = 1
  390.     IF rmb = 0 AND rcx < sw THEN rclk = 1
  391.  
  392.     lcx = sw
  393.     rcx = sw
  394.  
  395.     x = _MOUSEX
  396.     y = _MOUSEY
  397.  
  398.     IF rclk = 1 THEN
  399.         i = Identify
  400.         IF i = 100 THEN
  401.             IF src = 100 THEN
  402.                 paused = 1 - paused
  403.                 ch = ""
  404.             ELSE
  405.                 src = 100
  406.                 oact = 0
  407.                 pact = 0
  408.             END IF
  409.             rclk = 0
  410.         END IF
  411.         IF pact = 1 OR oact = 1 THEN
  412.             rclk = 0
  413.         END IF
  414.     END IF
  415.  
  416.  
  417. FUNCTION Identify
  418.     ii = 100
  419.     FOR i = 0 TO 99
  420.         dx = star(i).x - x
  421.         dy = star(i).y - y
  422.         IF ABS(dx) <= star(i).s + 8 AND ABS(dy) <= star(i).s + 8 THEN
  423.             ii = i
  424.             EXIT FOR
  425.         END IF
  426.     NEXT
  427.     Identify = ii
  428.  
  429. SUB OrderPanel (i)
  430.     x1 = star(i).x - 420 * ratio
  431.     IF star(i).x < sw / 2 THEN x1 = star(i).x + 20 * ratio
  432.     x2 = x1 + 400 * ratio
  433.     y1 = star(i).y
  434.     IF y1 > sh - 225 * ratio THEN y1 = sh - 225 * ratio
  435.     y2 = y1 + 225 * ratio
  436.     _DEST op
  437.     CLS 0, 8
  438.     COLOR 0, 8
  439.     _FONT ttf72
  440.     n$ = RTRIM$(star(i).n)
  441.     l = _PRINTWIDTH(n$)
  442.     _PRINTSTRING ((400 * ratio - l) / 2, 4 * ratio), n$, op
  443.     LINE (20 * ratio, 76 * ratio)-(380 * ratio, 76 * ratio), 0
  444.     _PRINTSTRING (20 * ratio, 80 * ratio), "0123456789", op
  445.     COLOR 7, 8
  446.     _FONT ttf36
  447.     IF box = 0 THEN
  448.         _PRINTSTRING (20 * ratio, 166 * ratio), "If Over", op
  449.         xo = 142 * ratio: xd = 250 * ratio: yo = 166 * ratio: yd = 200 * ratio
  450.         LINE (xo, yo)-(xd, yd), 7, BF
  451.         xo = 268 * ratio: xd = 314 * ratio: yo = 166 * ratio: yd = 200 * ratio
  452.         LINE (xo, yo)-(xd, yd), 7, BF
  453.         xo = 332 * ratio: xd = 366 * ratio: yo = 166 * ratio: yd = 200 * ratio
  454.         LINE (xo, yo)-(xd, yd), 7, BF
  455.         n$ = RTRIM$(strng0)
  456.         COLOR 0, 7
  457.         _FONT ttf24
  458.         _PRINTSTRING (148 * ratio, 172 * ratio), n$, op
  459.         _PRINTSTRING (273 * ratio, 172 * ratio), "OK", op
  460.         _PRINTSTRING (341 * ratio, 172 * ratio), "X", op
  461.     END IF
  462.     IF box = 1 THEN
  463.         _PRINTSTRING (20 * ratio, 166 * ratio), "Then Send", op
  464.         xo = 198 * ratio: xd = 278 * ratio: yo = 166 * ratio: yd = 200 * ratio
  465.         LINE (xo, yo)-(xd, yd), 7, BF
  466.         xo = 294 * ratio: xd = 340 * ratio: yo = 166 * ratio: yd = 200 * ratio
  467.         LINE (xo, yo)-(xd, yd), 7, BF
  468.         xo = 356 * ratio: xd = 390 * ratio: yo = 166 * ratio: yd = 200 * ratio
  469.         LINE (xo, yo)-(xd, yd), 7, BF
  470.         n$ = RTRIM$(strng1)
  471.         COLOR 0, 7
  472.         _FONT ttf24
  473.         _PRINTSTRING (200 * ratio, 172 * ratio), n$, op
  474.         _PRINTSTRING (299 * ratio, 172 * ratio), "OK", op
  475.         _PRINTSTRING (365 * ratio, 172 * ratio), "X", op
  476.     END IF
  477.     _PUTIMAGE (x1, y1), op, 0, (0, 0)-(400 * ratio, 225 * ratio)
  478.     _DEST 0
  479.     oanx = x1: oany = y1
  480.  
  481. SUB PaintBackground
  482.     x = RND * sw
  483.     y = RND * sh
  484.     c = RND * 14 + 1
  485.     PSET (x, y), c
  486.     RANDOMIZE USING seed
  487.     FOR i = 1 TO 600 * ratio
  488.         x = RND * sw
  489.         y = RND * sh
  490.         c = RND * 14 + 1
  491.         PSET (x, y), c
  492.     NEXT
  493.  
  494. SUB PaintFleet
  495.     count = fltcnt
  496.     i = 0
  497.     WHILE count
  498.         IF fleet(i).o <> 0 THEN
  499.             CIRCLE (fleet(i).x1, fleet(i).y1), 3, fleet(i).o + 8
  500.             count = count - 1
  501.         END IF
  502.         i = i + 1
  503.     WEND
  504.  
  505. SUB PaintStars
  506.     FOR i = 0 TO 99
  507.         c = star(i).c
  508.         x = star(i).x
  509.         y = star(i).y
  510.         o = star(i).o
  511.         CIRCLE (x, y), (star(i).s + 8) * ratio, c
  512.         COLOR 15
  513.         IF o > 0 THEN
  514.             PAINT (x, y), o + 8, c
  515.         END IF
  516.         _FONT ttf16
  517.         IF tt THEN
  518.             n$ = star(i).n
  519.             n$ = RTRIM$(n$)
  520.             l = _PRINTWIDTH(n$)
  521.             _PRINTSTRING (x + 10, y), STR$(star(i).p), 0
  522.         ELSE
  523.             n$ = STR$(star(i).t)
  524.             l = _PRINTWIDTH(n$)
  525.         END IF
  526.         _PRINTSTRING (x - l / 2, y + 14), n$, 0
  527.     NEXT
  528.  
  529. SUB Player
  530.     'Add new order to standing orders
  531.     IF ord.src <> 100 THEN
  532.         i = ord.src
  533.         IF ord.shp = 0 THEN
  534.             order(i).src = 100
  535.         ELSE
  536.             order(i) = ord
  537.         END IF
  538.         src = 100
  539.         ord.src = 100
  540.     END IF
  541.  
  542.     'execute standing orders
  543.     FOR i = 0 TO 99
  544.         IF order(i).src <> 100 THEN
  545.             IF star(i).o <> 1 OR star(order(i).dst).o <> 1 THEN
  546.                 order(i).src = 100
  547.             ELSE
  548.                 LINE (star(i).x, star(i).y)-(star(order(i).dst).x, star(order(i).dst).y), 17
  549.                 IF star(i).t >= order(i).ovr THEN
  550.                     SendFleet order(i).src, order(i).dst, order(i).shp
  551.                 END IF
  552.             END IF
  553.         END IF
  554.     NEXT
  555.  
  556.     IF pact = 0 AND oact = 0 THEN
  557.  
  558.         'If there is no source star see if we can get one
  559.         IF src = 100 THEN
  560.             IF lclk = 1 OR rclk = 1 THEN
  561.                 lclk = 0
  562.                 rclk = 0
  563.                 src = Identify
  564.             END IF
  565.         END IF
  566.  
  567.         ' If there is a source star then draw a range line that snaps to center of destination, if one
  568.         IF src <> 100 THEN
  569.             c = 12
  570.             FOR i = 0 TO 99
  571.                 IF star(i).o = 1 THEN
  572.                     dist = SQR(ABS(star(i).x - x) ^ 2 + ABS(star(i).y - y) ^ 2)
  573.                     IF dist <= 251 * ratio THEN
  574.                         c = 10
  575.                         EXIT FOR
  576.                     END IF
  577.                 END IF
  578.             NEXT
  579.             i = Identify
  580.             IF i <> 100 THEN
  581.                 x = star(i).x
  582.                 y = star(i).y
  583.             END IF
  584.             rang = SQR(ABS(star(src).x - x) ^ 2 + ABS(star(src).y - y) ^ 2)
  585.             LINE (star(src).x, star(src).y)-(x, y), c
  586.             n$ = STR$(INT(rang))
  587.             _FONT ttf16
  588.             _PRINTSTRING (x + 20, y), n$, 0
  589.         END IF
  590.  
  591.         'If we have a source star see if we clicked on a destination star
  592.         IF src <> 100 THEN
  593.             IF lclk = 1 OR rclk = 1 THEN
  594.                 i = Identify
  595.                 IF i = src THEN
  596.                     lclk = 0
  597.                     src = 100
  598.                     IF rclk = 1 THEN
  599.                         rclk = 0
  600.                         order(i).src = 100
  601.                     END IF
  602.                 ELSE
  603.                     IF i < 100 AND i <> src THEN
  604.                         IF lclk = 1 THEN
  605.                             lclk = 0
  606.                             FOR j = 0 TO 99
  607.                                 IF star(j).o = 1 THEN
  608.                                     dist = SQR(ABS(star(i).x - star(j).x) ^ 2 + ABS(star(i).y - star(j).y) ^ 2)
  609.                                     IF dist <= 250 THEN
  610.                                         dst = i
  611.                                         pact = 1
  612.                                         EXIT FOR
  613.                                     END IF
  614.                                 END IF
  615.                             NEXT
  616.                         ELSE
  617.                             rclk = 0
  618.                             dst = i
  619.                             IF star(i).o = 1 THEN
  620.                                 oact = 1
  621.                             END IF
  622.                         END IF
  623.                     END IF
  624.                 END IF
  625.             END IF
  626.         END IF
  627.     END IF
  628.  
  629.     'If the star standing orders panel is active
  630.     IF oact = 1 THEN
  631.  
  632.         IF star(src).o = 1 THEN
  633.             OrderPanel dst
  634.         END IF
  635.  
  636.         IF rclk = 1 THEN oact = 0
  637.  
  638.         IF box = 0 THEN
  639.             tmp$ = RTRIM$(strng0)
  640.         ELSE
  641.             tmp$ = RTRIM$(strng1)
  642.         END IF
  643.  
  644.         IF lclk = 1 THEN
  645.  
  646.             x1 = oanx: x2 = oanx + 400 * ratio
  647.             y1 = oany: y2 = oany + 540 * ratio
  648.  
  649.             IF y > y1 + 80 * ratio AND y < y1 + 152 * ratio THEN
  650.                 IF x > x1 + 20 * ratio AND x < x1 + 380 * ratio THEN
  651.                     dig = (x - x1 - 32 * ratio) / (37 * ratio)
  652.                     IF box = 0 THEN
  653.                         n$ = RTRIM$(strng0)
  654.                         l = LEN(n$)
  655.                         IF l < 8 THEN strng0 = tmp$ + STR$(dig)
  656.                     ELSE
  657.                         n$ = RTRIM$(strng1)
  658.                         l = LEN(n$)
  659.                         IF l < 8 THEN strng1 = tmp$ + STR$(dig)
  660.                     END IF
  661.                 END IF
  662.             END IF
  663.  
  664.             IF y > y1 + 166 * ratio AND y < y1 + 200 * ratio THEN
  665.  
  666.                 IF box = 0 THEN
  667.  
  668.                     IF x > x1 + 268 * ratio AND x < x1 + 314 * ratio THEN
  669.                         ord.ovr = INT(VAL(strng0))
  670.                         box = 1
  671.                     END IF
  672.  
  673.                     IF x > x1 + 332 * ratio AND x < x1 + 366 * ratio THEN
  674.                         strng0 = ""
  675.                     END IF
  676.  
  677.                 ELSE
  678.  
  679.                     IF x > x1 + 294 * ratio AND x < x1 + 340 * ratio THEN
  680.                         IF INT(VAL(strng1)) > ord.ovr THEN
  681.                             strng1 = ""
  682.                         ELSE
  683.                             box = 0
  684.                             oact = 0
  685.                             ord.src = src
  686.                             ord.dst = dst
  687.                             ord.shp = VAL(strng1)
  688.                             strng0 = ""
  689.                             strng1 = ""
  690.                         END IF
  691.                     END IF
  692.  
  693.                     IF x > x1 + 356 * ratio AND x < x1 + 390 * ratio THEN
  694.                         strng0 = ""
  695.                         strng1 = ""
  696.                         box = 0
  697.                     END IF
  698.  
  699.                 END IF
  700.  
  701.             END IF
  702.         END IF
  703.         x1 = 10000: y1 = 10000
  704.  
  705.     END IF
  706.  
  707.  
  708.     'If the fleet send panel is active
  709.     IF pact = 1 THEN
  710.         IF rclk = 1 THEN pact = 0
  711.         IF star(src).o = 1 THEN
  712.             ShowPanel dst
  713.         END IF
  714.         IF lclk = 1 THEN
  715.             tmp$ = RTRIM$(strng)
  716.  
  717.             x1 = panx: x2 = panx + 400 * ratio
  718.             y1 = pany: y2 = pany + 540 * ratio
  719.  
  720.             IF y > y1 + 256 * ratio AND y < y1 + 328 * ratio THEN
  721.                 IF x > x1 + 20 * ratio AND x < x1 + 380 * ratio THEN
  722.                     dig = (x - x1 - 32 * ratio) / (37 * ratio)
  723.                     strng = tmp$ + STR$(dig)
  724.                 END IF
  725.             END IF
  726.  
  727.             IF y > y1 + 334 * ratio AND y < y1 + 374 * ratio THEN
  728.                 IF x > x1 + 20 * ratio AND x < x1 + 84 * ratio THEN
  729.                     pact = 0
  730.                     value = star(src).t
  731.                     SendFleet src, dst, value
  732.                     src = 100
  733.                 END IF
  734.                 IF x > x1 + 102 * ratio AND x < x1 + 184 * ratio THEN
  735.                     pact = 0
  736.                     value = star(src).t / 2
  737.                     SendFleet src, dst, value
  738.                     src = 100
  739.                 END IF
  740.                 IF x > x1 + 202 * ratio AND x < x1 + 282 * ratio THEN
  741.                     pact = 0
  742.                     value = star(src).t / 3
  743.                     SendFleet src, dst, value
  744.                     src = 100
  745.                 END IF
  746.                 IF x > x1 + 300 * ratio AND x < x1 + 380 * ratio THEN
  747.                     strng = ""
  748.                 END IF
  749.             END IF
  750.  
  751.             IF y > y1 + 460 * ratio AND y < y1 + 530 * ratio THEN
  752.                 IF x > x1 + 32 * ratio AND x < x1 + 182 * ratio THEN
  753.                     value = VAL(strng)
  754.                     strng = ""
  755.                     pact = 0
  756.                     IF value <= star(src).t AND star(src).t <> o THEN
  757.                         SendFleet src, dst, value
  758.                     END IF
  759.                     src = 100
  760.                 END IF
  761.                 IF x > x1 + 212 * ratio AND x < x1 + 362 * ratio THEN
  762.                     pact = 0
  763.                     src = 100
  764.                     strng = ""
  765.                 END IF
  766.             END IF
  767.         END IF
  768.     END IF
  769.  
  770. SUB QuickSave
  771.     FOR i = 0 TO 99: qstar(i) = star(i): qorder(i) = order(i): NEXT
  772.     FOR i = 0 TO 1999: qfleet(i) = fleet(i): NEXT
  773.     FOR i = 0 TO 6
  774.         qhome(i) = home(i)
  775.         FOR j = 0 TO 7
  776.             qhate(i, j) = hate(i, j)
  777.         NEXT
  778.     NEXT
  779.     qfltcnt = fltcnt
  780.     qLL = LL
  781.  
  782. SUB QuickRestore
  783.     FOR i = 0 TO 99: star(i) = qstar(i): order(i) = qorder(i): NEXT
  784.     FOR i = 0 TO 1999: fleet(i) = qfleet(i): NEXT
  785.     FOR i = 0 TO 6
  786.         home(i) = qhome(i)
  787.         FOR j = 0 TO 7
  788.             hate(i, j) = qhate(i, j)
  789.         NEXT
  790.     NEXT
  791.     fltcnt = qfltcnt
  792.     LL = qLL
  793.     paused = 1
  794.  
  795. SUB SendFleet (src, dst, ships)
  796.     IF fltcnt < 2000 THEN
  797.         hate(star(src).o, star(dst).o) = hate(star(src).o, star(dst).o) + 1
  798.         FOR i = 0 TO 1999
  799.             IF fleet(i).o = 0 THEN
  800.                 fleet(i).o = star(src).o
  801.                 fleet(i).d = dst
  802.                 fleet(i).x1 = star(src).x
  803.                 fleet(i).y1 = star(src).y
  804.                 fleet(i).x2 = star(dst).x
  805.                 fleet(i).y2 = star(dst).y
  806.                 fleet(i).t = ships
  807.                 star(src).t = star(src).t - ships
  808.                 fltcnt = fltcnt + 1
  809.                 EXIT FOR
  810.             END IF
  811.         NEXT
  812.         IF fleet(i).o > 1 AND LL < 10000 THEN LL = LL + 1
  813.     END IF
  814.  
  815. SUB ShowPanel (i)
  816.     x1 = star(i).x - 420 * ratio
  817.     IF star(i).x < sw / 2 THEN x1 = star(i).x + 20 * ratio
  818.     x2 = x1 + 400 * ratio
  819.     y1 = star(i).y
  820.     IF y1 > sh - 560 * ratio THEN y1 = sh - 560 * ratio
  821.     y2 = y1 + 540 * ratio
  822.     _DEST sp
  823.     CLS 0, 8
  824.     COLOR 0, 8
  825.     _FONT ttf72
  826.     n$ = RTRIM$(star(src).n)
  827.     l = _PRINTWIDTH(n$)
  828.     _PRINTSTRING ((400 * ratio - l) / 2, 12 * ratio), n$, sp
  829.     n$ = "to"
  830.     l = _PRINTWIDTH(n$)
  831.     _PRINTSTRING ((400 * ratio - l) / 2, 80 * ratio), n$, sp
  832.     n$ = RTRIM$(star(dst).n)
  833.     l = _PRINTWIDTH(n$)
  834.     _PRINTSTRING ((400 * ratio - l) / 2, 152 * ratio), n$, sp
  835.     LINE (20 * ratio, 239 * ratio)-(380 * ratio, 239 * ratio), 0
  836.     _PRINTSTRING (20 * ratio, 256 * ratio), "0123456789", sp
  837.     n$ = RTRIM$(strng)
  838.     l = _PRINTWIDTH(n$)
  839.     _PRINTSTRING ((400 * ratio - l) / 2, 383 * ratio), n$, sp
  840.     xo = 20 * ratio: xd = 84 * ratio: yo = 334 * ratio: yd = 374 * ratio
  841.     LINE (xo, yo)-(xd, yd), 7, BF
  842.     xo = 102 * ratio: xd = 184 * ratio: yo = 334 * ratio: yd = 374 * ratio
  843.     LINE (xo, yo)-(xd, yd), 7, BF
  844.     xo = 202 * ratio: xd = 282 * ratio: yo = 334 * ratio: yd = 374 * ratio
  845.     LINE (xo, yo)-(xd, yd), 7, BF
  846.     xo = 300 * ratio: xd = 380 * ratio: yo = 334 * ratio: yd = 374 * ratio
  847.     LINE (xo, yo)-(xd, yd), 7, BF
  848.     xo = 32 * ratio: xd = 182 * ratio: yo = 458 * ratio: yd = 530 * ratio
  849.     LINE (xo, yo)-(xd, yd), 7, BF
  850.     xo = 212 * ratio: xd = 362 * ratio: yo = 458 * ratio: yd = 530 * ratio
  851.     LINE (xo, yo)-(xd, yd), 7, BF
  852.     _FONT ttf24
  853.     COLOR 7, 8
  854.     n$ = RTRIM$(STR$(star(src).t))
  855.     l = _PRINTWIDTH(n$)
  856.     _PRINTSTRING (120 * ratio - l, 112 * ratio), n$, sp
  857.     n$ = RTRIM$(STR$(star(dst).t))
  858.     l = _PRINTWIDTH(n$)
  859.     _PRINTSTRING (300 * ratio - l, 112 * ratio), n$, sp
  860.     _FONT ttf16
  861.     COLOR 0, 7
  862.     _PRINTSTRING (38 * ratio, 347 * ratio), "ALL", sp
  863.     _PRINTSTRING (122 * ratio, 347 * ratio), "HALF", sp
  864.     _PRINTSTRING (214 * ratio, 347 * ratio), "THIRD", sp
  865.     _PRINTSTRING (312 * ratio, 347 * ratio), "CLEAR", sp
  866.     _FONT ttf72
  867.     _PRINTSTRING (60 * ratio, 458 * ratio), "Ok", sp
  868.     _PRINTSTRING (216 * ratio, 458 * ratio), "Quit", sp
  869.     _PUTIMAGE (x1, y1), sp, 0, (0, 0)-(400 * ratio, 540 * ratio)
  870.     panx = x1: pany = y1
  871.     _DEST 0
  872.  
  873. SUB NewGame
  874.     DIM k AS INTEGER
  875.     DIM r AS INTEGER
  876.     DIM dx AS INTEGER
  877.     DIM dy AS INTEGER
  878.     DIM n AS STRING * 10
  879.     paused = 1
  880.     FOR i = 0 TO 999
  881.         fleet(i).o = 0
  882.     NEXT
  883.     slct = 0
  884.     fltcnt = 0
  885.     LL = 25
  886.     seed = RND * 1000
  887.     FOR i = 0 TO 99
  888.         k = 1
  889.         WHILE k
  890.             k = 0
  891.             x = RND * (sw - sww) + swn
  892.             y = RND * (sh - shw) + shn
  893.             r = INT(RND * 200)
  894.             n = names(r)
  895.             FOR j = 0 TO i - 1
  896.                 dx = x - star(j).x
  897.                 dy = y - star(j).y
  898.                 IF ABS(dx) < sww AND ABS(dy) < shw THEN
  899.                     k = 1
  900.                 END IF
  901.                 IF n = star(j).n THEN
  902.                     k = 1
  903.                 END IF
  904.             NEXT
  905.         WEND
  906.         star(i).n = n
  907.         star(i).x = x
  908.         star(i).y = y
  909.         star(i).c = RND * 6 + 9
  910.         star(i).s = RND * 5
  911.         star(i).o = 0
  912.         star(i).p = star(i).s + (RND * 5) + 3
  913.         star(i).t = 0
  914.         order(i).src = 100
  915.     NEXT
  916.     FOR i = 1 TO 6
  917.         ok = 0
  918.         WHILE (ok < 1)
  919.             ok = 1
  920.             j = RND * 100
  921.             FOR k = 1 TO i - 1
  922.                 dist = SQR(ABS(star(j).x - star(home(k)).x) ^ 2 + ABS(star(j).y - star(home(k)).y) ^ 2)
  923.                 IF dist < 500 * ratio THEN
  924.                     ok = 0
  925.                     EXIT FOR
  926.                 END IF
  927.             NEXT
  928.             IF ok = 1 THEN
  929.                 ok = -1
  930.                 FOR k = 0 TO 99
  931.                     dist = SQR(ABS(star(j).x - star(k).x) ^ 2 + ABS(star(j).y - star(k).y) ^ 2)
  932.                     IF dist <= 200 THEN ok = ok + 1
  933.                     IF ok = 2 THEN EXIT FOR
  934.                 NEXT
  935.             END IF
  936.         WEND
  937.         home(i) = j
  938.         star(j).o = i
  939.         star(j).p = 10
  940.         star(j).t = 100
  941.         star(j).s = 4
  942.     NEXT
  943.     star(home(1)).n = "Sol"
  944.     star(home(1)).c = 14
  945.     QuickSave
  946.  
  947. ' A lot of star names I made up
  948.  
  949. SUB StarNames
  950.     names(0) = "Acamar"
  951.     names(1) = "Arcab"
  952.     names(2) = "Acrux"
  953.     names(3) = "Adhara"
  954.     names(4) = "Arneb"
  955.     names(5) = "Antares"
  956.     names(6) = "Arcturus"
  957.     names(7) = "Atria"
  958.     names(8) = "Beid"
  959.     names(9) = "Betelgeuse"
  960.     names(10) = "Botein"
  961.     names(11) = "Beemim"
  962.     names(12) = "Bellatrix"
  963.     names(13) = "Bharani"
  964.     names(14) = "Biham"
  965.     names(15) = "Brachium"
  966.     names(16) = "Canopus"
  967.     names(17) = "Capella"
  968.     names(18) = "Castor"
  969.     names(19) = "Chara"
  970.     names(20) = "Cursa"
  971.     names(21) = "Copernicus"
  972.     names(22) = "Chalawan"
  973.     names(23) = "Chertan"
  974.     names(24) = "Dabih"
  975.     names(25) = "Dalim"
  976.     names(26) = "Deneb"
  977.     names(27) = "Denebola"
  978.     names(28) = "Diadem"
  979.     names(29) = "Diphda"
  980.     names(30) = "Dschubba"
  981.     names(31) = "Dziban"
  982.     names(32) = "Edasich"
  983.     names(33) = "Electra"
  984.     names(34) = "Elgafar"
  985.     names(35) = "Elkurud"
  986.     names(36) = "Elnath"
  987.     names(37) = "Eltanin"
  988.     names(38) = "Enif"
  989.     names(39) = "Errai"
  990.     names(40) = "Fafnir"
  991.     names(41) = "Fang"
  992.     names(42) = "Fawaris"
  993.     names(43) = "Felis"
  994.     names(44) = "Fomalhaut"
  995.     names(45) = "Fulu"
  996.     names(46) = "Fumal"
  997.     names(47) = "Furud"
  998.     names(48) = "Garnet"
  999.     names(49) = "Giausar"
  1000.     names(50) = "Gienah"
  1001.     names(51) = "Ginan"
  1002.     names(52) = "Gomeisa"
  1003.     names(53) = "Graffias"
  1004.     names(54) = "Grumium"
  1005.     names(55) = "Gudja"
  1006.     names(56) = "Hadar"
  1007.     names(57) = "Haedus"
  1008.     names(58) = "Hamal"
  1009.     names(59) = "Hassaleh"
  1010.     names(60) = "Hatysa"
  1011.     names(61) = "Helvetios"
  1012.     names(62) = "Heze"
  1013.     names(63) = "Homan"
  1014.     names(64) = "Iklil"
  1015.     names(65) = "Imai"
  1016.     names(66) = "Intercrus"
  1017.     names(67) = "Izar"
  1018.     names(68) = "Iccar"
  1019.     names(69) = "Inar"
  1020.     names(70) = "Iaeth"
  1021.     names(71) = "Imaous"
  1022.     names(72) = "Jabbah"
  1023.     names(73) = "Jishui"
  1024.     names(74) = "Jax"
  1025.     names(75) = "Jalae"
  1026.     names(76) = "Jewel"
  1027.     names(77) = "Jumbo"
  1028.     names(78) = "Jerue"
  1029.     names(79) = "Jabear"
  1030.     names(80) = "Kakkab"
  1031.     names(81) = "Kang"
  1032.     names(82) = "Kekouan"
  1033.     names(83) = "Keid"
  1034.     names(84) = "Kitalpha"
  1035.     names(85) = "Kochab"
  1036.     names(86) = "Kolob"
  1037.     names(87) = "Kobol"
  1038.     names(88) = "Larawag"
  1039.     names(89) = "Lesath"
  1040.     names(90) = "Libertas"
  1041.     names(91) = "Lich"
  1042.     names(92) = "Lilly"
  1043.     names(93) = "Laddel"
  1044.     names(94) = "Luminous"
  1045.     names(95) = "Lasacious"
  1046.     names(96) = "Mizar"
  1047.     names(97) = "Markab"
  1048.     names(98) = "Matar"
  1049.     names(99) = "Mintaka"
  1050.     names(100) = "Meleph"
  1051.     names(101) = "Menkar"
  1052.     names(102) = "Merga"
  1053.     names(103) = "Merope"
  1054.     names(104) = "Nahn"
  1055.     names(105) = "Naos"
  1056.     names(106) = "Nashira"
  1057.     names(107) = "Navi"
  1058.     names(108) = "Nekkar"
  1059.     names(109) = "Nembus"
  1060.     names(110) = "Nihal"
  1061.     names(111) = "Nunki"
  1062.     names(112) = "Ogma"
  1063.     names(113) = "Okab"
  1064.     names(114) = "Ohmy"
  1065.     names(115) = "Oragami"
  1066.     names(116) = "Origen"
  1067.     names(117) = "Omanii"
  1068.     names(118) = "Obytewa"
  1069.     names(119) = "Oglok"
  1070.     names(120) = "Phact"
  1071.     names(121) = "Pherkad"
  1072.     names(122) = "Pleione"
  1073.     names(122) = "Polaris"
  1074.     names(123) = "Pollux"
  1075.     names(124) = "Procyon"
  1076.     names(125) = "Proxima"
  1077.     names(126) = "Polis"
  1078.     names(127) = "Quaint"
  1079.     names(128) = "Quazzat"
  1080.     names(129) = "Quetzal"
  1081.     names(130) = "Qussol"
  1082.     names(131) = "Quella"
  1083.     names(132) = "Quyaeo"
  1084.     names(133) = "Ququdas"
  1085.     names(134) = "Quekak"
  1086.     names(135) = "Rasalas"
  1087.     names(136) = "Regor"
  1088.     names(137) = "Regulus"
  1089.     names(138) = "Rigel"
  1090.     names(139) = "Revati"
  1091.     names(140) = "Rotenev"
  1092.     names(141) = "Rukbat"
  1093.     names(142) = "Rastaban"
  1094.     names(143) = "Sabik"
  1095.     names(144) = "Sadr"
  1096.     names(145) = "Saiph"
  1097.     names(146) = "Sargas"
  1098.     names(147) = "Sarin"
  1099.     names(148) = "Syrma"
  1100.     names(149) = "Spica"
  1101.     names(150) = "Sirius"
  1102.     names(151) = "Tarazed"
  1103.     names(152) = "Taygeta"
  1104.     names(153) = "Tejat"
  1105.     names(154) = "Thabit"
  1106.     names(155) = "Thuban"
  1107.     names(156) = "Tiaki"
  1108.     names(157) = "Toliman"
  1109.     names(158) = "Torcular"
  1110.     names(157) = "Umala"
  1111.     names(158) = "Ulatte"
  1112.     names(159) = "Ubbessa"
  1113.     names(160) = "Unoless"
  1114.     names(161) = "Umaddem"
  1115.     names(162) = "Ummbra"
  1116.     names(162) = "Uniqu"
  1117.     names(163) = "Uzzaal"
  1118.     names(164) = "Vega"
  1119.     names(165) = "Veritate"
  1120.     names(166) = "Vindetrix"
  1121.     names(167) = "Vedas"
  1122.     names(168) = "Vergg"
  1123.     names(169) = "Vacant"
  1124.     names(170) = "Vucae"
  1125.     names(171) = "Vicar"
  1126.     names(172) = "Wasat"
  1127.     names(173) = "Wazn"
  1128.     names(174) = "Wezen"
  1129.     names(175) = "Waiten"
  1130.     names(176) = "Wachar"
  1131.     names(177) = "Wheelz"
  1132.     names(178) = "Whatsp"
  1133.     names(179) = "Wassand"
  1134.     names(180) = "Xenno"
  1135.     names(181) = "Xyphod"
  1136.     names(182) = "Xu"
  1137.     names(183) = "Xaal"
  1138.     names(184) = "Xyross"
  1139.     names(185) = "Xiggot"
  1140.     names(186) = "Xirrks"
  1141.     names(187) = "Yed"
  1142.     names(188) = "Yildun"
  1143.     names(189) = "Yundun"
  1144.     names(190) = "Yavyo"
  1145.     names(191) = "Yotrac"
  1146.     names(192) = "Yxzoqu"
  1147.     names(193) = "Ynnot"
  1148.     names(194) = "Zaniah"
  1149.     names(195) = "Zaurak"
  1150.     names(196) = "Zhang"
  1151.     names(197) = "Zibal"
  1152.     names(198) = "Zosma"
  1153.     names(199) = "Zuben"
  1154.  
« Last Edit: January 06, 2020, 02:51:18 am by romichess »
My name is Michael, but you can call me Mike :)

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #36 on: January 06, 2020, 02:57:41 am »
It was too easy to hit the "r" by mistake when pressing the "t".  So the above source was edited to "l" for Quick Load but now it is next to the "p" for pause. SO if it is a problem then just change it to anything best for you before compiling. It is in get input. The subroutines are alphabetized.
My name is Michael, but you can call me Mike :)

Offline dajan

  • Newbie
  • Posts: 41
    • View Profile
Re: Beyond Sol
« Reply #37 on: January 06, 2020, 11:47:22 am »
If the "Beyond Sol" is already taken, just name it "Beyond two Sols".

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Beyond Sol
« Reply #38 on: January 06, 2020, 11:58:28 am »
If the "Beyond Sol" is already taken, just name it "Beyond two Sols".

I like, "Beyond The Beyond!!!"
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #39 on: January 06, 2020, 09:34:01 pm »
Very cool names, but you can only help name the game if you play it! :)
My name is Michael, but you can call me Mike :)

Offline Kazman

  • Newbie
  • Posts: 14
    • View Profile
Re: Beyond Sol
« Reply #40 on: January 07, 2020, 04:30:04 am »
"Beyond Stars", maybe? ;)

Offline Cobalt

  • QB64 Developer
  • Forum Resident
  • Posts: 878
  • At 60 I become highly radioactive!
    • View Profile
Re: Beyond Sol
« Reply #41 on: January 07, 2020, 11:31:25 am »
I like, "Beyond The Beyond!!!"

made me think of this...
"From the land beyond beyond.
  From the world past hope and fear.
  I bid you, genie, now appear."

Anyway, how about "QB64 Beyond Sol!" ?
Granted after becoming radioactive I only have a half-life!

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #42 on: January 07, 2020, 11:57:03 am »
If I add a QB64 star, it can be called Master of QB64! Whoever takes QB64 first wins the game. But beware it will be protected by a powerful starbase. "Beyond the Stars", maybe? I don't think people here would like, "Beyond QB64". Or maybe just, "The Beyond". Or, "Yonder Star".
My name is Michael, but you can call me Mike :)

Offline Kazman

  • Newbie
  • Posts: 14
    • View Profile
Re: Beyond Sol
« Reply #43 on: January 14, 2020, 08:07:33 am »
Any game update news? Me want !!! :P

I like "Beyond the stars" :)

Offline romichess

  • Forum Regular
  • Posts: 145
    • View Profile
Re: Beyond Sol
« Reply #44 on: January 14, 2020, 12:41:12 pm »
Any game update news? Me want !!! :P

I like "Beyond the stars" :)

Thanks Kazman! Yes, Beyond the Stars seems pretty good. It was really your suggestion anyway. All I did was add the, "the". I do have an updated version. Except, I have not added the game menu yet like I said I was going to do. I've not been feeling very well and I'm a bit burned out. However, for my game's only fan I will load up on caffeine and work on it today. And here is the latest version. The computer's playing AI is finalized for the alpha version. As always if the human gets off to a good start the game is easy but maybe not as easy. And if one of the computer players gets off to a good start then it can be a real bear. The only cosmetic change is that now the stars paint over the standing order lines and therefore the lines only go to the edge of the star. I have to say that if it weren't for your support I'd have stopped working on it by now!

Code: QB64: [Select]
  1. TYPE stars
  2.     n AS STRING * 10 '                 Name of star
  3.     x AS INTEGER '                     x-position
  4.     y AS INTEGER '                     y-position
  5.     o AS INTEGER '                     Owner
  6.     c AS INTEGER '                     Color
  7.     s AS INTEGER '                     Size
  8.     t AS LONG '                        Ships
  9.     p AS INTEGER '
  10.     d AS INTEGER '                   (Population) For now ships production
  11.  
  12. TYPE FLEETS
  13.     t AS LONG
  14.     x1 AS INTEGER
  15.     y1 AS INTEGER
  16.     x2 AS INTEGER
  17.     y2 AS INTEGER
  18.     o AS INTEGER
  19.     d AS INTEGER
  20.  
  21. TYPE ORDERS
  22.     src AS LONG
  23.     ovr AS LONG
  24.     shp AS LONG
  25.     dst AS LONG
  26.  
  27. ' Global variables shared because they are needed in more than one routine
  28. DIM SHARED sw AS INTEGER '             Screen Width
  29. DIM SHARED sh AS INTEGER '             Screen Height
  30. DIM SHARED sww AS INTEGER '            Screen Width Wide margin
  31. DIM SHARED swn AS INTEGER '            Screen Width Narrow adjustment
  32. DIM SHARED shw AS INTEGER '            Screen Height Wide margine
  33. DIM SHARED shn AS INTEGER '            Screen Height Narrow adjustment
  34. DIM SHARED nw AS INTEGER '             games Natural screen Width
  35. DIM SHARED nh AS INTEGER '             games Natural screen Height
  36. DIM SHARED ratio AS _FLOAT '           the Ratio of the games natural screen width to the actual
  37. DIM SHARED star(100) AS stars '        100 stars - may change
  38. DIM SHARED qstar(100) AS stars
  39. DIM SHARED names(200) AS STRING * 10 ' 200 star names
  40. DIM SHARED seed AS INTEGER '           Seed to prime the Randomizer to display identical background each frame
  41. DIM SHARED home(7) AS INTEGER '        The starting star for each player. The human always has star(0), Sol
  42. DIM SHARED qhome(7) AS INTEGER
  43. DIM SHARED tt AS INTEGER '             tt = 0 star names displayed, tt = 0 star names not didplayed
  44. DIM SHARED ch AS STRING * 1 '          Game loop key input variable
  45. DIM SHARED repeat AS INTEGER '         Game loop control variable
  46. DIM SHARED fleet(2000) AS FLEETS
  47. DIM SHARED qfleet(2000) AS FLEETS
  48. DIM SHARED panx, pany AS INTEGER
  49. DIM SHARED oanx, oany AS INTEGER
  50. DIM SHARED strng AS STRING * 14
  51. DIM SHARED strng0 AS STRING * 10
  52. DIM SHARED strng1 AS STRING * 10
  53. DIM SHARED order(100) AS ORDERS
  54. DIM SHARED qorder(100) AS ORDERS
  55. DIM SHARED ord AS ORDERS
  56.  
  57.  
  58. sw = _DESKTOPWIDTH '                   native video with of syatem
  59. sww = sw / 24 '                        margin based on native video width to keep stars away from edge
  60. swn = sw / 48 '                        adjustment that works with sww to keep stars away from left and top of screen
  61. nw = 1920
  62.  
  63. ratio = sw / 1920 '                    Used to adjust distances and sizes for various screen modes
  64.  
  65. shw = sh / 20
  66. shn = sh / 40
  67. nh = 1080
  68.  
  69. tt = 0
  70. lcx = sw
  71. rcx = sw
  72. cp = 100
  73. h = 100
  74. ar = 0
  75. rng = 200
  76. slct = 0
  77. strng = ""
  78. strng0 = ""
  79. strng1 = ""
  80. src = 100
  81. dst = 100
  82. ord.src = 100
  83.  
  84. SCREEN _NEWIMAGE(sw, sh, 256) '        creates a screen the resolution of the users native system
  85.  
  86.  
  87. sp = _NEWIMAGE(400 * ratio, 540 * ratio, 256)
  88. op = _NEWIMAGE(400 * ratio, 225 * ratio, 256)
  89.  
  90. StarNames '                            Routine to load star names into string array stars(200)
  91.  
  92. NewGame
  93.  
  94. ttf16 = _LOADFONT("cyberbit.ttf", 16 * ratio, "BOLD")
  95. ttf24 = _LOADFONT("cyberbit.ttf", 24 * ratio, "BOLD")
  96. ttf36 = _LOADFONT("cyberbit.ttf", 36 * ratio, "BOLD")
  97. ttf72 = _LOADFONT("cyberbit.ttf", 72 * ratio, "BOLD")
  98.  
  99. repeat = 1
  100.  
  101. WHILE repeat
  102.  
  103.     CLS
  104.  
  105.     PaintBackground
  106.  
  107.     PaintStars
  108.  
  109.     PaintFleet
  110.  
  111.     FOR it = 0 TO speed
  112.  
  113.         Update
  114.  
  115.         GetInput
  116.  
  117.         Player
  118.  
  119.         Computer
  120.  
  121.     NEXT
  122.  
  123.     _DISPLAY
  124.  
  125.  
  126.  
  127. SUB Computer
  128.  
  129.     IF paused = 0 THEN
  130.         id = INT(RND * 5) + 2
  131.         i = home(id)
  132.         IF star(i).o <> id THEN
  133.             FOR j = 0 TO 99
  134.                 IF star(j).o = id THEN home(id) = j: i = j: EXIT FOR
  135.             NEXT
  136.         END IF
  137.  
  138.         FOR p = 0 TO 3
  139.  
  140.             IF p = 0 THEN
  141.                 IF star(i).t > LL THEN
  142.                     away = 10000
  143.                     jay = 100
  144.                     FOR j = 0 TO 99
  145.                         IF star(j).o <> id THEN
  146.                             IF star(j).d > 0 THEN
  147.                                 star(j).d = star(j).d - 1
  148.                             ELSE
  149.                                 ok = 0
  150.                                 FOR k = 0 TO 99
  151.                                     IF star(k).o = id THEN
  152.                                         dist = SQR(ABS(star(j).x - star(k).x) ^ 2 + ABS(star(j).y - star(k).y) ^ 2)
  153.                                         IF dist < 251 THEN
  154.                                             ok = 1
  155.                                             EXIT FOR
  156.                                         END IF
  157.                                     END IF
  158.                                 NEXT
  159.                                 IF ok = 1 THEN
  160.                                     dist = SQR(ABS(star(j).x - star(i).x) ^ 2 + ABS(star(j).y - star(i).y) ^ 2)
  161.                                     IF dist < away THEN
  162.                                         IF LL > 299 THEN
  163.                                             away = dist
  164.                                             jay = j
  165.                                         ELSE
  166.                                             IF star(i).t > star(j).t * 3 + dist / 4 - star(j).p ^ 2 THEN
  167.                                                 away = dist
  168.                                                 jay = j
  169.                                             END IF
  170.                                         END IF
  171.                                     END IF
  172.                                 END IF
  173.                             END IF
  174.                         END IF
  175.                     NEXT
  176.                     IF LL > 299 AND star(i).t < star(jay).t * 3 THEN jay = 100
  177.                     IF jay < 100 THEN
  178.                         SendFleet i, jay, star(i).t / 2
  179.                         star(jay).d = 400
  180.                     END IF
  181.                 END IF
  182.             END IF
  183.  
  184.             IF p = 1 THEN
  185.                 sf2 = 100
  186.                 FOR i = 0 TO 99
  187.                     IF star(i).o = id AND i <> home(id) AND star(i).t > LL * 1.6 THEN
  188.                         sf3 = star(i).t / 2.5
  189.                         FOR j = 0 TO 99
  190.                             IF star(j).d > 0 THEN
  191.                                 star(j).d = star(j).d - 1
  192.                             ELSE
  193.                                 IF star(j).o <> id AND star(i).t > star(j).t * 4 THEN
  194.                                     FOR k = 0 TO 99
  195.                                         IF star(k).o = id THEN
  196.                                             dist = SQR(ABS(star(k).x - star(j).x) ^ 2 + ABS(star(k).y - star(j).y) ^ 2)
  197.                                             IF dist <= 250 * ratio THEN
  198.                                                 sf1 = i
  199.                                                 sf2 = j
  200.                                                 EXIT FOR
  201.                                             END IF
  202.                                         END IF
  203.                                     NEXT
  204.                                 END IF
  205.                             END IF
  206.                         NEXT
  207.                         IF sf2 < 100 THEN EXIT FOR
  208.                     END IF
  209.                 NEXT
  210.                 IF sf2 < 100 THEN
  211.                     SendFleet sf1, sf2, sf3
  212.                     star(sf2).d = 400
  213.                     EXIT FOR
  214.                 END IF
  215.             END IF
  216.  
  217.             IF p = 2 THEN
  218.                 FOR i = 0 TO 99
  219.                     IF i <> home(id) AND star(i).o = id THEN
  220.                         IF star(i).t > 49 THEN
  221.                             ok = 1
  222.                             FOR j = 0 TO 99
  223.                                 IF star(j).o <> id AND star(j).o <> 0 THEN
  224.                                     dist = SQR(ABS(star(i).x - star(j).x) ^ 2 + ABS(star(i).y - star(j).y) ^ 2)
  225.                                     IF dist <= 400 * ratio THEN
  226.                                         ok = 0
  227.                                         EXIT FOR
  228.                                     END IF
  229.                                 END IF
  230.                             NEXT
  231.                             IF ok = 1 THEN
  232.                                 SendFleet i, home(id), star(i).t
  233.                                 EXIT FOR
  234.                             END IF
  235.                         END IF
  236.                     END IF
  237.                 NEXT
  238.                 IF ok = 1 THEN EXIT FOR
  239.             END IF
  240.  
  241.             IF p = 3 THEN
  242.                 ok = 0
  243.                 FOR i = 0 TO 99
  244.                     IF i <> home(id) AND star(i).o = id THEN
  245.                         IF star(i).t > LL * 1.5 + star(i).p * 100 THEN
  246.                             ok = 1
  247.                             EXIT FOR
  248.                         END IF
  249.                     END IF
  250.                 NEXT
  251.                 IF ok = 1 THEN
  252.                     SendFleet i, home(id), star(i).t / 4
  253.                     EXIT FOR
  254.                 END IF
  255.             END IF
  256.  
  257.         NEXT
  258.  
  259.     END IF
  260.  
  261. SUB GetInput
  262.  
  263.     IF ch = CHR$(27) THEN repeat = 0
  264.     IF ch = "n" THEN NewGame
  265.     IF ch = "t" THEN tt = 1 - tt
  266.     IF ch = "p" THEN paused = 1 - paused
  267.     IF ch = "+" THEN
  268.         IF speed < 10 THEN speed = speed + 1
  269.     END IF
  270.     IF ch = "-" THEN
  271.         IF speed > 0 THEN speed = speed - 1
  272.     END IF
  273.     IF ch = "q" THEN QuickSave
  274.     IF ch = "l" THEN QuickRestore
  275.     ch = INKEY$
  276.  
  277.  
  278.     lclk = 0
  279.     rclk = 0
  280.  
  281.  
  282.         lmb = _MOUSEBUTTON(1)
  283.         rmb = _MOUSEBUTTON(2)
  284.  
  285.         x = _MOUSEX
  286.  
  287.         IF lmb AND lcx = sw THEN lcx = x
  288.         IF rmb AND rcx = sw THEN rcx = x
  289.  
  290.     WEND
  291.  
  292.     x = _MOUSEX
  293.     y = _MOUSEY
  294.  
  295.     IF lmb = 0 AND lcx < sw THEN lclk = 1
  296.     IF rmb = 0 AND rcx < sw THEN rclk = 1
  297.  
  298.     lcx = sw
  299.     rcx = sw
  300.  
  301.     IF rclk = 1 THEN
  302.         i = Identify
  303.         IF i = 100 THEN
  304.             IF src = 100 THEN
  305.                 paused = 1 - paused
  306.                 ch = ""
  307.             ELSE
  308.                 src = 100
  309.                 oact = 0
  310.                 pact = 0
  311.             END IF
  312.             rclk = 0
  313.         END IF
  314.         IF pact = 1 OR oact = 1 THEN
  315.             rclk = 0
  316.         END IF
  317.     END IF
  318.  
  319.  
  320. FUNCTION Identify
  321.     ii = 100
  322.     FOR i = 0 TO 99
  323.         dx = star(i).x - x
  324.         dy = star(i).y - y
  325.         IF ABS(dx) <= star(i).s + 8 AND ABS(dy) <= star(i).s + 8 THEN
  326.             ii = i
  327.             EXIT FOR
  328.         END IF
  329.     NEXT
  330.     Identify = ii
  331.  
  332. SUB OrderPanel (i)
  333.     x1 = star(i).x - 420 * ratio
  334.     IF star(i).x < sw / 2 THEN x1 = star(i).x + 20 * ratio
  335.     x2 = x1 + 400 * ratio
  336.     y1 = star(i).y
  337.     IF y1 > sh - 225 * ratio THEN y1 = sh - 225 * ratio
  338.     y2 = y1 + 225 * ratio
  339.     _DEST op
  340.     CLS 0, 8
  341.     COLOR 0, 8
  342.     _FONT ttf72
  343.     n$ = RTRIM$(star(i).n)
  344.     l = _PRINTWIDTH(n$)
  345.     _PRINTSTRING ((400 * ratio - l) / 2, 4 * ratio), n$, op
  346.     LINE (20 * ratio, 76 * ratio)-(380 * ratio, 76 * ratio), 0
  347.     _PRINTSTRING (20 * ratio, 80 * ratio), "0123456789", op
  348.     COLOR 7, 8
  349.     _FONT ttf36
  350.     IF box = 0 THEN
  351.         _PRINTSTRING (20 * ratio, 166 * ratio), "If Over", op
  352.         xo = 142 * ratio: xd = 250 * ratio: yo = 166 * ratio: yd = 200 * ratio
  353.         LINE (xo, yo)-(xd, yd), 7, BF
  354.         xo = 268 * ratio: xd = 314 * ratio: yo = 166 * ratio: yd = 200 * ratio
  355.         LINE (xo, yo)-(xd, yd), 7, BF
  356.         xo = 332 * ratio: xd = 366 * ratio: yo = 166 * ratio: yd = 200 * ratio
  357.         LINE (xo, yo)-(xd, yd), 7, BF
  358.         n$ = RTRIM$(strng0)
  359.         COLOR 0, 7
  360.         _FONT ttf24
  361.         _PRINTSTRING (148 * ratio, 172 * ratio), n$, op
  362.         _PRINTSTRING (273 * ratio, 172 * ratio), "OK", op
  363.         _PRINTSTRING (341 * ratio, 172 * ratio), "X", op
  364.     END IF
  365.     IF box = 1 THEN
  366.         _PRINTSTRING (20 * ratio, 166 * ratio), "Then Send", op
  367.         xo = 198 * ratio: xd = 278 * ratio: yo = 166 * ratio: yd = 200 * ratio
  368.         LINE (xo, yo)-(xd, yd), 7, BF
  369.         xo = 294 * ratio: xd = 340 * ratio: yo = 166 * ratio: yd = 200 * ratio
  370.         LINE (xo, yo)-(xd, yd), 7, BF
  371.         xo = 356 * ratio: xd = 390 * ratio: yo = 166 * ratio: yd = 200 * ratio
  372.         LINE (xo, yo)-(xd, yd), 7, BF
  373.         n$ = RTRIM$(strng1)
  374.         COLOR 0, 7
  375.         _FONT ttf24
  376.         _PRINTSTRING (200 * ratio, 172 * ratio), n$, op
  377.         _PRINTSTRING (299 * ratio, 172 * ratio), "OK", op
  378.         _PRINTSTRING (365 * ratio, 172 * ratio), "X", op
  379.     END IF
  380.     _PUTIMAGE (x1, y1), op, 0, (0, 0)-(400 * ratio, 225 * ratio)
  381.     _DEST 0
  382.     oanx = x1: oany = y1
  383.  
  384. SUB PaintBackground
  385.     x = RND * sw
  386.     y = RND * sh
  387.     c = RND * 14 + 1
  388.     PSET (x, y), c
  389.     RANDOMIZE USING seed
  390.     FOR i = 1 TO 600 * ratio
  391.         x = RND * sw
  392.         y = RND * sh
  393.         c = RND * 14 + 1
  394.         PSET (x, y), c
  395.     NEXT
  396.  
  397. SUB PaintFleet
  398.     count = fltcnt
  399.     i = 0
  400.     WHILE count
  401.         IF fleet(i).o <> 0 THEN
  402.             CIRCLE (fleet(i).x1, fleet(i).y1), 3, fleet(i).o + 8
  403.             count = count - 1
  404.         END IF
  405.         i = i + 1
  406.     WEND
  407.  
  408. SUB PaintStars
  409.  
  410.     'execute standing orders
  411.     FOR i = 0 TO 99
  412.         IF order(i).src <> 100 THEN
  413.             IF star(i).o <> 1 OR star(order(i).dst).o <> 1 THEN
  414.                 order(i).src = 100
  415.             ELSE
  416.                 LINE (star(i).x, star(i).y)-(star(order(i).dst).x, star(order(i).dst).y), 17
  417.                 IF star(i).t >= order(i).ovr THEN
  418.                     SendFleet order(i).src, order(i).dst, order(i).shp
  419.                 END IF
  420.             END IF
  421.         END IF
  422.     NEXT
  423.  
  424.     FOR i = 0 TO 99
  425.         c = star(i).c
  426.         x = star(i).x
  427.         y = star(i).y
  428.         o = star(i).o
  429.         CIRCLE (x, y), (star(i).s + 8) * ratio, c
  430.         COLOR 15
  431.         IF o > 0 THEN
  432.             PAINT (x, y), o + 8, c
  433.         END IF
  434.         _FONT ttf16
  435.         IF tt THEN
  436.             n$ = star(i).n
  437.             n$ = RTRIM$(n$)
  438.             l = _PRINTWIDTH(n$)
  439.             _PRINTSTRING (x + 10, y), STR$(star(i).p), 0
  440.         ELSE
  441.             n$ = STR$(star(i).t)
  442.             l = _PRINTWIDTH(n$)
  443.         END IF
  444.         _PRINTSTRING (x - l / 2, y + 14), n$, 0
  445.     NEXT
  446.  
  447.  
  448. SUB Player
  449.     'Add new order to standing orders
  450.     IF ord.src <> 100 THEN
  451.         i = ord.src
  452.         IF ord.shp = 0 THEN
  453.             order(i).src = 100
  454.         ELSE
  455.             order(i) = ord
  456.         END IF
  457.         src = 100
  458.         ord.src = 100
  459.     END IF
  460.  
  461.     IF pact = 0 AND oact = 0 THEN
  462.  
  463.         'If there is no source star see if we can get one
  464.         IF src = 100 THEN
  465.             IF lclk = 1 OR rclk = 1 THEN
  466.                 lclk = 0
  467.                 rclk = 0
  468.                 src = Identify
  469.             END IF
  470.         END IF
  471.  
  472.         ' If there is a source star then draw a range line that snaps to center of destination, if one
  473.         IF src <> 100 THEN
  474.             c = 12
  475.             FOR i = 0 TO 99
  476.                 IF star(i).o = 1 THEN
  477.                     dist = SQR(ABS(star(i).x - x) ^ 2 + ABS(star(i).y - y) ^ 2)
  478.                     IF dist <= 251 * ratio THEN
  479.                         c = 10
  480.                         EXIT FOR
  481.                     END IF
  482.                 END IF
  483.             NEXT
  484.             i = Identify
  485.             IF i <> 100 THEN
  486.                 x = star(i).x
  487.                 y = star(i).y
  488.             END IF
  489.             rang = SQR(ABS(star(src).x - x) ^ 2 + ABS(star(src).y - y) ^ 2)
  490.             LINE (star(src).x, star(src).y)-(x, y), c
  491.             n$ = STR$(INT(rang))
  492.             _FONT ttf16
  493.             _PRINTSTRING (x + 20, y), n$, 0
  494.         END IF
  495.  
  496.         'If we have a source star see if we clicked on a destination star
  497.         IF src <> 100 THEN
  498.             IF lclk = 1 OR rclk = 1 THEN
  499.                 i = Identify
  500.                 IF i = src THEN
  501.                     lclk = 0
  502.                     src = 100
  503.                     IF rclk = 1 THEN
  504.                         rclk = 0
  505.                         order(i).src = 100
  506.                     END IF
  507.                 ELSE
  508.                     IF i < 100 AND i <> src THEN
  509.                         IF lclk = 1 THEN
  510.                             lclk = 0
  511.                             FOR j = 0 TO 99
  512.                                 IF star(j).o = 1 THEN
  513.                                     dist = SQR(ABS(star(i).x - star(j).x) ^ 2 + ABS(star(i).y - star(j).y) ^ 2)
  514.                                     IF dist <= 250 THEN
  515.                                         dst = i
  516.                                         pact = 1
  517.                                         EXIT FOR
  518.                                     END IF
  519.                                 END IF
  520.                             NEXT
  521.                         ELSE
  522.                             rclk = 0
  523.                             dst = i
  524.                             IF star(i).o = 1 THEN
  525.                                 oact = 1
  526.                             END IF
  527.                         END IF
  528.                     END IF
  529.                 END IF
  530.             END IF
  531.         END IF
  532.     END IF
  533.  
  534.     'If the star standing orders panel is active
  535.     IF oact = 1 THEN
  536.  
  537.         IF star(src).o = 1 THEN
  538.             OrderPanel dst
  539.         END IF
  540.  
  541.         IF rclk = 1 THEN oact = 0
  542.  
  543.         IF box = 0 THEN
  544.             tmp$ = RTRIM$(strng0)
  545.         ELSE
  546.             tmp$ = RTRIM$(strng1)
  547.         END IF
  548.  
  549.         IF lclk = 1 THEN
  550.  
  551.             x1 = oanx: x2 = oanx + 400 * ratio
  552.             y1 = oany: y2 = oany + 540 * ratio
  553.  
  554.             IF y > y1 + 80 * ratio AND y < y1 + 152 * ratio THEN
  555.                 IF x > x1 + 20 * ratio AND x < x1 + 380 * ratio THEN
  556.                     dig = (x - x1 - 32 * ratio) / (37 * ratio)
  557.                     IF box = 0 THEN
  558.                         n$ = RTRIM$(strng0)
  559.                         l = LEN(n$)
  560.                         IF l < 8 THEN strng0 = tmp$ + STR$(dig)
  561.                     ELSE
  562.                         n$ = RTRIM$(strng1)
  563.                         l = LEN(n$)
  564.                         IF l < 8 THEN strng1 = tmp$ + STR$(dig)
  565.                     END IF
  566.                 END IF
  567.             END IF
  568.  
  569.             IF y > y1 + 166 * ratio AND y < y1 + 200 * ratio THEN
  570.  
  571.                 IF box = 0 THEN
  572.  
  573.                     IF x > x1 + 268 * ratio AND x < x1 + 314 * ratio THEN
  574.                         ord.ovr = INT(VAL(strng0))
  575.                         box = 1
  576.                     END IF
  577.  
  578.                     IF x > x1 + 332 * ratio AND x < x1 + 366 * ratio THEN
  579.                         strng0 = ""
  580.                     END IF
  581.  
  582.                 ELSE
  583.  
  584.                     IF x > x1 + 294 * ratio AND x < x1 + 340 * ratio THEN
  585.                         IF INT(VAL(strng1)) > ord.ovr THEN
  586.                             strng1 = ""
  587.                         ELSE
  588.                             box = 0
  589.                             oact = 0
  590.                             ord.src = src
  591.                             ord.dst = dst
  592.                             ord.shp = VAL(strng1)
  593.                             strng0 = ""
  594.                             strng1 = ""
  595.                         END IF
  596.                     END IF
  597.  
  598.                     IF x > x1 + 356 * ratio AND x < x1 + 390 * ratio THEN
  599.                         strng0 = ""
  600.                         strng1 = ""
  601.                         box = 0
  602.                     END IF
  603.  
  604.                 END IF
  605.  
  606.             END IF
  607.         END IF
  608.         x1 = 10000: y1 = 10000
  609.  
  610.     END IF
  611.  
  612.  
  613.     'If the fleet send panel is active
  614.     IF pact = 1 THEN
  615.         IF rclk = 1 THEN pact = 0
  616.         IF star(src).o = 1 THEN
  617.             ShowPanel dst
  618.         END IF
  619.         IF lclk = 1 THEN
  620.             tmp$ = RTRIM$(strng)
  621.  
  622.             x1 = panx: x2 = panx + 400 * ratio
  623.             y1 = pany: y2 = pany + 540 * ratio
  624.  
  625.             IF y > y1 + 256 * ratio AND y < y1 + 328 * ratio THEN
  626.                 IF x > x1 + 20 * ratio AND x < x1 + 380 * ratio THEN
  627.                     dig = (x - x1 - 32 * ratio) / (37 * ratio)
  628.                     strng = tmp$ + STR$(dig)
  629.                 END IF
  630.             END IF
  631.  
  632.             IF y > y1 + 334 * ratio AND y < y1 + 374 * ratio THEN
  633.                 IF x > x1 + 20 * ratio AND x < x1 + 84 * ratio THEN
  634.                     pact = 0
  635.                     value = star(src).t
  636.                     SendFleet src, dst, value
  637.                     src = 100
  638.                 END IF
  639.                 IF x > x1 + 102 * ratio AND x < x1 + 184 * ratio THEN
  640.                     pact = 0
  641.                     value = star(src).t / 2
  642.                     SendFleet src, dst, value
  643.                     src = 100
  644.                 END IF
  645.                 IF x > x1 + 202 * ratio AND x < x1 + 282 * ratio THEN
  646.                     pact = 0
  647.                     value = star(src).t / 3
  648.                     SendFleet src, dst, value
  649.                     src = 100
  650.                 END IF
  651.                 IF x > x1 + 300 * ratio AND x < x1 + 380 * ratio THEN
  652.                     strng = ""
  653.                 END IF
  654.             END IF
  655.  
  656.             IF y > y1 + 460 * ratio AND y < y1 + 530 * ratio THEN
  657.                 IF x > x1 + 32 * ratio AND x < x1 + 182 * ratio THEN
  658.                     value = VAL(strng)
  659.                     strng = ""
  660.                     pact = 0
  661.                     IF value <= star(src).t AND star(src).t <> o THEN
  662.                         SendFleet src, dst, value
  663.                     END IF
  664.                     src = 100
  665.                 END IF
  666.                 IF x > x1 + 212 * ratio AND x < x1 + 362 * ratio THEN
  667.                     pact = 0
  668.                     src = 100
  669.                     strng = ""
  670.                 END IF
  671.             END IF
  672.         END IF
  673.     END IF
  674.  
  675. SUB QuickSave
  676.     FOR i = 0 TO 99: qstar(i) = star(i): qorder(i) = order(i): NEXT
  677.     FOR i = 0 TO 1999: qfleet(i) = fleet(i): NEXT
  678.     FOR i = 0 TO 6: qhome(i) = home(i): NEXT
  679.     qfltcnt = fltcnt
  680.     qLL = LL
  681.  
  682. SUB QuickRestore
  683.     FOR i = 0 TO 99: star(i) = qstar(i): order(i) = qorder(i): NEXT
  684.     FOR i = 0 TO 1999: fleet(i) = qfleet(i): NEXT
  685.     FOR i = 0 TO 6: home(i) = qhome(i): NEXT
  686.     fltcnt = qfltcnt
  687.     LL = qLL
  688.     paused = 1
  689.  
  690. SUB SendFleet (src, dst, ships)
  691.     IF fltcnt < 2000 THEN
  692.         FOR i = 0 TO 1999
  693.             IF fleet(i).o = 0 THEN
  694.                 fleet(i).o = star(src).o
  695.                 fleet(i).d = dst
  696.                 fleet(i).x1 = star(src).x
  697.                 fleet(i).y1 = star(src).y
  698.                 fleet(i).x2 = star(dst).x
  699.                 fleet(i).y2 = star(dst).y
  700.                 fleet(i).t = ships
  701.                 star(src).t = star(src).t - ships
  702.                 fltcnt = fltcnt + 1
  703.                 EXIT FOR
  704.             END IF
  705.         NEXT
  706.         IF LL < 20000 AND fleet(i).o <> 1 THEN LL = LL + 2
  707.     END IF
  708.  
  709. SUB ShowPanel (i)
  710.     x1 = star(i).x - 420 * ratio
  711.     IF star(i).x < sw / 2 THEN x1 = star(i).x + 20 * ratio
  712.     x2 = x1 + 400 * ratio
  713.     y1 = star(i).y
  714.     IF y1 > sh - 560 * ratio THEN y1 = sh - 560 * ratio
  715.     y2 = y1 + 540 * ratio
  716.     _DEST sp
  717.     CLS 0, 8
  718.     COLOR 0, 8
  719.     _FONT ttf72
  720.     n$ = RTRIM$(star(src).n)
  721.     l = _PRINTWIDTH(n$)
  722.     _PRINTSTRING ((400 * ratio - l) / 2, 12 * ratio), n$, sp
  723.     n$ = "to"
  724.     l = _PRINTWIDTH(n$)
  725.     _PRINTSTRING ((400 * ratio - l) / 2, 80 * ratio), n$, sp
  726.     n$ = RTRIM$(star(dst).n)
  727.     l = _PRINTWIDTH(n$)
  728.     _PRINTSTRING ((400 * ratio - l) / 2, 152 * ratio), n$, sp
  729.     LINE (20 * ratio, 239 * ratio)-(380 * ratio, 239 * ratio), 0
  730.     _PRINTSTRING (20 * ratio, 256 * ratio), "0123456789", sp
  731.     n$ = RTRIM$(strng)
  732.     l = _PRINTWIDTH(n$)
  733.     _PRINTSTRING ((400 * ratio - l) / 2, 383 * ratio), n$, sp
  734.     xo = 20 * ratio: xd = 84 * ratio: yo = 334 * ratio: yd = 374 * ratio
  735.     LINE (xo, yo)-(xd, yd), 7, BF
  736.     xo = 102 * ratio: xd = 184 * ratio: yo = 334 * ratio: yd = 374 * ratio
  737.     LINE (xo, yo)-(xd, yd), 7, BF
  738.     xo = 202 * ratio: xd = 282 * ratio: yo = 334 * ratio: yd = 374 * ratio
  739.     LINE (xo, yo)-(xd, yd), 7, BF
  740.     xo = 300 * ratio: xd = 380 * ratio: yo = 334 * ratio: yd = 374 * ratio
  741.     LINE (xo, yo)-(xd, yd), 7, BF
  742.     xo = 32 * ratio: xd = 182 * ratio: yo = 458 * ratio: yd = 530 * ratio
  743.     LINE (xo, yo)-(xd, yd), 7, BF
  744.     xo = 212 * ratio: xd = 362 * ratio: yo = 458 * ratio: yd = 530 * ratio
  745.     LINE (xo, yo)-(xd, yd), 7, BF
  746.     _FONT ttf24
  747.     COLOR 7, 8
  748.     n$ = RTRIM$(STR$(star(src).t))
  749.     l = _PRINTWIDTH(n$)
  750.     _PRINTSTRING (120 * ratio - l, 112 * ratio), n$, sp
  751.     n$ = RTRIM$(STR$(star(dst).t))
  752.     l = _PRINTWIDTH(n$)
  753.     _PRINTSTRING (300 * ratio - l, 112 * ratio), n$, sp
  754.     _FONT ttf16
  755.     COLOR 0, 7
  756.     _PRINTSTRING (38 * ratio, 347 * ratio), "ALL", sp
  757.     _PRINTSTRING (122 * ratio, 347 * ratio), "HALF", sp
  758.     _PRINTSTRING (214 * ratio, 347 * ratio), "THIRD", sp
  759.     _PRINTSTRING (312 * ratio, 347 * ratio), "CLEAR", sp
  760.     _FONT ttf72
  761.     _PRINTSTRING (60 * ratio, 458 * ratio), "Ok", sp
  762.     _PRINTSTRING (216 * ratio, 458 * ratio), "Quit", sp
  763.     _PUTIMAGE (x1, y1), sp, 0, (0, 0)-(400 * ratio, 540 * ratio)
  764.     panx = x1: pany = y1
  765.     _DEST 0
  766.  
  767. SUB Update
  768.     IF paused = 0 THEN
  769.         RANDOMIZE TIMER
  770.         FOR i = 0 TO 99
  771.             r = INT(RND * 60)
  772.             IF r < star(i).p THEN
  773.                 IF star(i).o > 0 THEN
  774.                     star(i).t = star(i).t + 1
  775.                 ELSE
  776.                     IF INT(RND * 10) < 3 THEN
  777.                         star(i).t = star(i).t + 1
  778.                     END IF
  779.                 END IF
  780.             END IF
  781.         NEXT
  782.  
  783.         count = fltcnt
  784.         i = 0
  785.         WHILE count
  786.             IF fleet(i).o <> 0 THEN
  787.                 count = count - 1
  788.                 IF fleet(i).x2 > fleet(i).x1 THEN
  789.                     fleet(i).x1 = fleet(i).x1 + 1
  790.                 END IF
  791.                 IF fleet(i).x2 < fleet(i).x1 THEN
  792.                     fleet(i).x1 = fleet(i).x1 - 1
  793.                 END IF
  794.                 IF fleet(i).y2 > fleet(i).y1 THEN
  795.                     fleet(i).y1 = fleet(i).y1 + 1
  796.                 END IF
  797.                 IF fleet(i).y2 < fleet(i).y1 THEN
  798.                     fleet(i).y1 = fleet(i).y1 - 1
  799.                 END IF
  800.                 IF fleet(i).x1 = fleet(i).x2 AND fleet(i).y1 = fleet(i).y2 THEN
  801.                     dest = fleet(i).d
  802.                     IF star(dest).o = fleet(i).o THEN
  803.                         star(dest).t = star(dest).t + fleet(i).t
  804.                         fleet(i).o = 0
  805.                         fltcnt = fltcnt - 1
  806.                     ELSE
  807.                         o = star(dest).o
  808.                         IF o > 0 AND star(dest).t < fleet(i).t * 0.6 THEN
  809.                             k = 100
  810.                             shortest = 10000
  811.                             FOR j = 0 TO 99
  812.                                 IF star(j).o = o THEN
  813.                                     dist = SQR(ABS(star(j).x - star(dest).x) ^ 2 + ABS(star(j).y - star(dest).y) ^ 2)
  814.                                     IF dist < shortest THEN
  815.                                         shortest = dist
  816.                                         k = j
  817.                                     END IF
  818.                                 END IF
  819.                             NEXT
  820.                             SendFleet dest, k, star(dest).t * 0.90
  821.                             star(dest).t = 0
  822.                             star(dest).o = fleet(i).o
  823.                             star(dest).t = fleet(i).t
  824.                             star(dest).o = fleet(i).o
  825.                             fleet(i).o = 0
  826.                             fltcnt = fltcnt - 1
  827.                         ELSE
  828.                             IF fleet(i).t * 1.1 > star(dest).t THEN
  829.                                 alive = 1
  830.                                 WHILE alive
  831.                                     alive = 0
  832.                                     damorg = fleet(i).t / 10 + 1
  833.                                     damdst = star(dest).t / 8 + 1
  834.                                     fleet(i).t = fleet(i).t - damdst
  835.                                     star(dest).t = star(dest).t - damorg
  836.                                     IF fleet(i).t > 0 AND star(dest).t > 0 THEN
  837.                                         alive = 1
  838.                                     END IF
  839.                                 WEND
  840.                                 IF star(dest).t < 1 THEN
  841.                                     star(dest).t = fleet(i).t
  842.                                     star(dest).o = fleet(i).o
  843.                                 END IF
  844.                                 fleet(i).o = 0
  845.                                 fltcnt = fltcnt - 1
  846.                             ELSE
  847.                                 k = 100
  848.                                 shortest = 10000
  849.                                 FOR j = 0 TO 99
  850.                                     IF star(j).o = fleet(i).o THEN
  851.                                         dist = SQR(ABS(star(j).x - fleet(i).x1) ^ 2 + ABS(star(j).y - fleet(i).y1) ^ 2)
  852.                                         IF dist < shortest THEN
  853.                                             shortest = dist
  854.                                             k = j
  855.                                         END IF
  856.                                     END IF
  857.                                 NEXT
  858.                                 IF k < 100 THEN
  859.                                     fleet(i).x2 = star(k).x
  860.                                     fleet(i).y2 = star(k).y
  861.                                     fleet(i).d = k
  862.                                 ELSE
  863.                                     fleet(i).o = 0
  864.                                     fltcnt = fltcnt - 1
  865.                                 END IF
  866.                             END IF
  867.                         END IF
  868.                     END IF
  869.                 END IF
  870.             END IF
  871.             i = i + 1
  872.         WEND
  873.     END IF
  874.  
  875. SUB NewGame
  876.     DIM k AS INTEGER
  877.     DIM r AS INTEGER
  878.     DIM dx AS INTEGER
  879.     DIM dy AS INTEGER
  880.     DIM n AS STRING * 10
  881.     paused = 1
  882.     FOR i = 0 TO 999
  883.         fleet(i).o = 0
  884.     NEXT
  885.     slct = 0
  886.     fltcnt = 0
  887.     LL = 0
  888.     seed = RND * 1000
  889.     FOR i = 0 TO 99
  890.         k = 1
  891.         WHILE k
  892.             k = 0
  893.             x = RND * (sw - sww) + swn
  894.             y = RND * (sh - shw) + shn
  895.             r = INT(RND * 200)
  896.             n = names(r)
  897.             FOR j = 0 TO i - 1
  898.                 dx = x - star(j).x
  899.                 dy = y - star(j).y
  900.                 IF ABS(dx) < sww AND ABS(dy) < shw THEN
  901.                     k = 1
  902.                 END IF
  903.                 IF n = star(j).n THEN
  904.                     k = 1
  905.                 END IF
  906.             NEXT
  907.         WEND
  908.         star(i).n = n
  909.         star(i).x = x
  910.         star(i).y = y
  911.         star(i).c = RND * 6 + 9
  912.         star(i).s = RND * 5
  913.         star(i).o = 0
  914.         star(i).p = star(i).s + (RND * 5) + 3
  915.         star(i).t = 0
  916.         order(i).src = 100
  917.     NEXT
  918.     FOR i = 1 TO 6
  919.         ok = 0
  920.         WHILE (ok < 1)
  921.             ok = 1
  922.             j = RND * 100
  923.             FOR k = 1 TO i - 1
  924.                 dist = SQR(ABS(star(j).x - star(home(k)).x) ^ 2 + ABS(star(j).y - star(home(k)).y) ^ 2)
  925.                 IF dist < 500 * ratio THEN
  926.                     ok = 0
  927.                     EXIT FOR
  928.                 END IF
  929.             NEXT
  930.             IF ok = 1 THEN
  931.                 ok = -1
  932.                 FOR k = 0 TO 99
  933.                     dist = SQR(ABS(star(j).x - star(k).x) ^ 2 + ABS(star(j).y - star(k).y) ^ 2)
  934.                     IF dist <= 200 THEN ok = ok + 1
  935.                     IF ok = 2 THEN EXIT FOR
  936.                 NEXT
  937.             END IF
  938.         WEND
  939.         home(i) = j
  940.         star(j).o = i
  941.         star(j).p = 10
  942.         star(j).t = 100
  943.         star(j).s = 4
  944.     NEXT
  945.     star(home(1)).n = "Sol"
  946.     star(home(1)).c = 14
  947.     QuickSave
  948.  
  949. ' A lot of star names I made up
  950.  
  951. SUB StarNames
  952.     names(0) = "Acamar"
  953.     names(1) = "Arcab"
  954.     names(2) = "Acrux"
  955.     names(3) = "Adhara"
  956.     names(4) = "Arneb"
  957.     names(5) = "Antares"
  958.     names(6) = "Arcturus"
  959.     names(7) = "Atria"
  960.     names(8) = "Beid"
  961.     names(9) = "Betelgeuse"
  962.     names(10) = "Botein"
  963.     names(11) = "Beemim"
  964.     names(12) = "Bellatrix"
  965.     names(13) = "Bharani"
  966.     names(14) = "Biham"
  967.     names(15) = "Brachium"
  968.     names(16) = "Canopus"
  969.     names(17) = "Capella"
  970.     names(18) = "Castor"
  971.     names(19) = "Chara"
  972.     names(20) = "Cursa"
  973.     names(21) = "Copernicus"
  974.     names(22) = "Chalawan"
  975.     names(23) = "Chertan"
  976.     names(24) = "Dabih"
  977.     names(25) = "Dalim"
  978.     names(26) = "Deneb"
  979.     names(27) = "Denebola"
  980.     names(28) = "Diadem"
  981.     names(29) = "Diphda"
  982.     names(30) = "Dschubba"
  983.     names(31) = "Dziban"
  984.     names(32) = "Edasich"
  985.     names(33) = "Electra"
  986.     names(34) = "Elgafar"
  987.     names(35) = "Elkurud"
  988.     names(36) = "Elnath"
  989.     names(37) = "Eltanin"
  990.     names(38) = "Enif"
  991.     names(39) = "Errai"
  992.     names(40) = "Fafnir"
  993.     names(41) = "Fang"
  994.     names(42) = "Fawaris"
  995.     names(43) = "Felis"
  996.     names(44) = "Fomalhaut"
  997.     names(45) = "Fulu"
  998.     names(46) = "Fumal"
  999.     names(47) = "Furud"
  1000.     names(48) = "Garnet"
  1001.     names(49) = "Giausar"
  1002.     names(50) = "Gienah"
  1003.     names(51) = "Ginan"
  1004.     names(52) = "Gomeisa"
  1005.     names(53) = "Graffias"
  1006.     names(54) = "Grumium"
  1007.     names(55) = "Gudja"
  1008.     names(56) = "Hadar"
  1009.     names(57) = "Haedus"
  1010.     names(58) = "Hamal"
  1011.     names(59) = "Hassaleh"
  1012.     names(60) = "Hatysa"
  1013.     names(61) = "Helvetios"
  1014.     names(62) = "Heze"
  1015.     names(63) = "Homan"
  1016.     names(64) = "Iklil"
  1017.     names(65) = "Imai"
  1018.     names(66) = "Intercrus"
  1019.     names(67) = "Izar"
  1020.     names(68) = "Iccar"
  1021.     names(69) = "Inar"
  1022.     names(70) = "Iaeth"
  1023.     names(71) = "Imaous"
  1024.     names(72) = "Jabbah"
  1025.     names(73) = "Jishui"
  1026.     names(74) = "Jax"
  1027.     names(75) = "Jalae"
  1028.     names(76) = "Jewel"
  1029.     names(77) = "Jumbo"
  1030.     names(78) = "Jerue"
  1031.     names(79) = "Jabear"
  1032.     names(80) = "Kakkab"
  1033.     names(81) = "Kang"
  1034.     names(82) = "Kekouan"
  1035.     names(83) = "Keid"
  1036.     names(84) = "Kitalpha"
  1037.     names(85) = "Kochab"
  1038.     names(86) = "Kolob"
  1039.     names(87) = "Kobol"
  1040.     names(88) = "Larawag"
  1041.     names(89) = "Lesath"
  1042.     names(90) = "Libertas"
  1043.     names(91) = "Lich"
  1044.     names(92) = "Lilly"
  1045.     names(93) = "Laddel"
  1046.     names(94) = "Luminous"
  1047.     names(95) = "Lasacious"
  1048.     names(96) = "Mizar"
  1049.     names(97) = "Markab"
  1050.     names(98) = "Matar"
  1051.     names(99) = "Mintaka"
  1052.     names(100) = "Meleph"
  1053.     names(101) = "Menkar"
  1054.     names(102) = "Merga"
  1055.     names(103) = "Merope"
  1056.     names(104) = "Nahn"
  1057.     names(105) = "Naos"
  1058.     names(106) = "Nashira"
  1059.     names(107) = "Navi"
  1060.     names(108) = "Nekkar"
  1061.     names(109) = "Nembus"
  1062.     names(110) = "Nihal"
  1063.     names(111) = "Nunki"
  1064.     names(112) = "Ogma"
  1065.     names(113) = "Okab"
  1066.     names(114) = "Ohmy"
  1067.     names(115) = "Oragami"
  1068.     names(116) = "Origen"
  1069.     names(117) = "Omanii"
  1070.     names(118) = "Obytewa"
  1071.     names(119) = "Oglok"
  1072.     names(120) = "Phact"
  1073.     names(121) = "Pherkad"
  1074.     names(122) = "Pleione"
  1075.     names(122) = "Polaris"
  1076.     names(123) = "Pollux"
  1077.     names(124) = "Procyon"
  1078.     names(125) = "Proxima"
  1079.     names(126) = "Polis"
  1080.     names(127) = "Quaint"
  1081.     names(128) = "Quazzat"
  1082.     names(129) = "Quetzal"
  1083.     names(130) = "Qussol"
  1084.     names(131) = "Quella"
  1085.     names(132) = "Quyaeo"
  1086.     names(133) = "Ququdas"
  1087.     names(134) = "Quekak"
  1088.     names(135) = "Rasalas"
  1089.     names(136) = "Regor"
  1090.     names(137) = "Regulus"
  1091.     names(138) = "Rigel"
  1092.     names(139) = "Revati"
  1093.     names(140) = "Rotenev"
  1094.     names(141) = "Rukbat"
  1095.     names(142) = "Rastaban"
  1096.     names(143) = "Sabik"
  1097.     names(144) = "Sadr"
  1098.     names(145) = "Saiph"
  1099.     names(146) = "Sargas"
  1100.     names(147) = "Sarin"
  1101.     names(148) = "Syrma"
  1102.     names(149) = "Spica"
  1103.     names(150) = "Sirius"
  1104.     names(151) = "Tarazed"
  1105.     names(152) = "Taygeta"
  1106.     names(153) = "Tejat"
  1107.     names(154) = "Thabit"
  1108.     names(155) = "Thuban"
  1109.     names(156) = "Tiaki"
  1110.     names(157) = "Toliman"
  1111.     names(158) = "Torcular"
  1112.     names(157) = "Umala"
  1113.     names(158) = "Ulatte"
  1114.     names(159) = "Ubbessa"
  1115.     names(160) = "Unoless"
  1116.     names(161) = "Umaddem"
  1117.     names(162) = "Ummbra"
  1118.     names(162) = "Uniqu"
  1119.     names(163) = "Uzzaal"
  1120.     names(164) = "Vega"
  1121.     names(165) = "Veritate"
  1122.     names(166) = "Vindetrix"
  1123.     names(167) = "Vedas"
  1124.     names(168) = "Vergg"
  1125.     names(169) = "Vacant"
  1126.     names(170) = "Vucae"
  1127.     names(171) = "Vicar"
  1128.     names(172) = "Wasat"
  1129.     names(173) = "Wazn"
  1130.     names(174) = "Wezen"
  1131.     names(175) = "Waiten"
  1132.     names(176) = "Wachar"
  1133.     names(177) = "Wheelz"
  1134.     names(178) = "Whatsp"
  1135.     names(179) = "Wassand"
  1136.     names(180) = "Xenno"
  1137.     names(181) = "Xyphod"
  1138.     names(182) = "Xu"
  1139.     names(183) = "Xaal"
  1140.     names(184) = "Xyross"
  1141.     names(185) = "Xiggot"
  1142.     names(186) = "Xirrks"
  1143.     names(187) = "Yed"
  1144.     names(188) = "Yildun"
  1145.     names(189) = "Yundun"
  1146.     names(190) = "Yavyo"
  1147.     names(191) = "Yotrac"
  1148.     names(192) = "Yxzoqu"
  1149.     names(193) = "Ynnot"
  1150.     names(194) = "Zaniah"
  1151.     names(195) = "Zaurak"
  1152.     names(196) = "Zhang"
  1153.     names(197) = "Zibal"
  1154.     names(198) = "Zosma"
  1155.     names(199) = "Zuben"
  1156.  
  1157.  

My name is Michael, but you can call me Mike :)