Author Topic: Clicker  (Read 5194 times)

0 Members and 1 Guest are viewing this topic.

This topic contains a post which is marked as Best Answer. Press here if you would like to see it.

FellippeHeitor

  • Guest
Clicker
« on: December 27, 2018, 10:56:50 am »
Here's an endless game with a ridiculously large mouse pointer.

clicker.png

Code: QB64: [Select]
  1. _TITLE "Clicker"
  2.  
  3. TYPE Object
  4.     x AS INTEGER
  5.     y AS INTEGER
  6.     w AS INTEGER
  7.     h AS INTEGER
  8.     xv AS INTEGER
  9.     yv AS INTEGER
  10.     fg AS INTEGER
  11.     bg AS INTEGER
  12.     state AS _BYTE
  13.  
  14. DIM SHARED obj(1 TO 10) AS Object
  15. DIM SHARED mouse(1 TO 8) AS STRING
  16. DIM SHARED activeObjects AS INTEGER
  17. DIM SHARED score AS LONG, level AS LONG
  18.  
  19. createObjects
  20. createMouse
  21.  
  22. level = 1
  23.  
  24.     pollMouse
  25.     checkMouseAction
  26.  
  27.     COLOR , 0
  28.     CLS
  29.     updateObjects
  30.     showObjects
  31.  
  32.     top$ = "Level:" + STR$(level) + "  *  Score:" + STR$(score)
  33.     COLOR 15, 0
  34.     _PRINTSTRING (1, 1), top$
  35.  
  36.     IF _MOUSEX > 0 AND _MOUSEY > 0 THEN
  37.         showMouse
  38.     END IF
  39.     _DISPLAY
  40.     limit = 60 * (level / 2)
  41.     IF limit < 200 THEN _LIMIT limit
  42.  
  43. SUB pollMouse
  44.  
  45. SUB checkMouseAction STATIC
  46.         IF mouseDown = 0 THEN
  47.             mouseDown = -1
  48.         END IF
  49.     ELSE
  50.         IF mouseDown THEN
  51.             mouseDown = 0
  52.             destroyObject _MOUSEX, _MOUSEY
  53.             IF activeObjects = 0 THEN
  54.                 PLAY "T120 L16 O3 E G C"
  55.                 createObjects
  56.                 level = level + 1
  57.             END IF
  58.         END IF
  59.     END IF
  60.  
  61. SUB createObjects
  62.     FOR i = 1 TO UBOUND(obj)
  63.         obj(i).x = _CEIL(RND * 70)
  64.         obj(i).y = _CEIL(RND * 20)
  65.         obj(i).w = 10
  66.         obj(i).h = 5
  67.         obj(i).xv = 1 - RND * 2
  68.         obj(i).yv = 1 - RND * 2
  69.         obj(i).fg = _CEIL(RND * 15)
  70.         obj(i).bg = _CEIL(RND * 7)
  71.         IF obj(i).bg = 0 THEN obj(i).bg = 1
  72.         obj(i).state = -1
  73.     NEXT
  74.     activeObjects = UBOUND(obj)
  75.  
  76. SUB destroyObject (x AS INTEGER, y AS INTEGER)
  77.     FOR i = UBOUND(obj) TO 1 STEP -1
  78.         IF x >= obj(i).x AND x <= obj(i).x + obj(i).w - 1 THEN
  79.             IF y >= obj(i).y AND y <= obj(i).y + obj(i).h - 1 THEN
  80.                 IF obj(i).state THEN
  81.                     FOR z = 1 TO 5
  82.                         obj(i).x = obj(i).x - 2
  83.                         obj(i).y = obj(i).y - 1
  84.                         obj(i).w = obj(i).w + 4
  85.                         obj(i).h = obj(i).h + 2
  86.                         pollMouse
  87.                         showObjects
  88.                         showMouse
  89.                         _DISPLAY
  90.                         _LIMIT 30
  91.                     NEXT
  92.                     obj(i).state = 0
  93.                     score = score + obj(i).bg
  94.                     activeObjects = activeObjects - 1
  95.                     EXIT FOR
  96.                 END IF
  97.             END IF
  98.         END IF
  99.     NEXT
  100.  
  101. SUB createMouse
  102.     RESTORE mouseData
  103.     i = 1
  104.     DO
  105.         READ a
  106.         IF a = -1 THEN EXIT DO
  107.         IF a = 0 THEN i = i + 1: _CONTINUE
  108.         mouse(i) = mouse(i) + CHR$(a)
  109.     LOOP
  110.  
  111.     mouseData:
  112.     DATA 220,0
  113.     DATA 219,219,220,0
  114.     DATA 219,219,219,219,220,0
  115.     DATA 219,219,219,219,219,219,220,0
  116.     DATA 219,219,219,219,219,219,219,219,220,0
  117.     DATA 219,219,219,219,219,219,223,223,223,223,0
  118.     DATA 219,223,32,32,223,219,219,0
  119.     DATA 32,32,32,32,32,32,219,219,0
  120.     DATA -1
  121.  
  122. SUB showObjects
  123.     FOR i = 1 TO UBOUND(obj)
  124.         IF obj(i).state = -1 THEN
  125.             box obj(i).x, obj(i).y, obj(i).w, obj(i).h, obj(i).fg, obj(i).bg
  126.  
  127.             COLOR obj(i).fg, obj(i).bg
  128.             _PRINTSTRING (obj(i).x + (obj(i).w \ 2), obj(i).y + obj(i).h \ 2), LTRIM$(STR$(obj(i).bg))
  129.         END IF
  130.     NEXT
  131.  
  132. SUB updateObjects STATIC
  133.     IF TIMER - lastUpdate! < .5 THEN EXIT SUB
  134.     lastUpdate! = TIMER
  135.  
  136.     FOR i = 1 TO UBOUND(obj)
  137.         IF obj(i).state = -1 THEN
  138.             obj(i).x = obj(i).x + obj(i).xv
  139.             IF obj(i).x < 1 OR obj(i).x + obj(i).w > _WIDTH THEN obj(i).xv = obj(i).xv * -1
  140.  
  141.             obj(i).y = obj(i).y + obj(i).yv
  142.             IF obj(i).y < 1 OR obj(i).y + obj(i).h > _HEIGHT THEN obj(i).yv = obj(i).yv * -1
  143.         END IF
  144.     NEXT
  145.  
  146. SUB showMouse
  147.     FOR i = 1 TO 8
  148.         IF (_MOUSEY + i) - 1 <= 25 THEN
  149.             FOR j = _MOUSEX TO _MOUSEX + LEN(mouse(i)) - 1
  150.                 IF j > 80 THEN EXIT FOR
  151.                 m$ = MID$(mouse(i), (j - _MOUSEX) + 1, 1)
  152.                 IF m$ <> " " THEN
  153.                     COLOR 15, SCREEN((_MOUSEY + i) - 1, j, 1) \ 16
  154.                     _PRINTSTRING (j, (_MOUSEY + i) - 1), m$
  155.                 END IF
  156.             NEXT
  157.         END IF
  158.     NEXT
  159.  
  160.     prevFG = _DEFAULTCOLOR
  161.     prevBG = _BACKGROUNDCOLOR
  162.     COLOR fg, bg
  163.  
  164.     FOR i = x TO x + w - 1
  165.         IF i < 1 OR i > _WIDTH THEN _CONTINUE
  166.         FOR j = y TO y + h - 1
  167.             IF j < 1 OR j > _HEIGHT THEN _CONTINUE
  168.             IF (i = x OR i = x + w - 1) AND (j > y AND j < y + h - 1) THEN
  169.                 _PRINTSTRING (i, j), CHR$(186)
  170.             ELSE
  171.                 IF j = y OR j = y + h - 1 AND (i > x AND i < x + w - 1) THEN
  172.                     _PRINTSTRING (i, j), CHR$(205)
  173.                 ELSE
  174.                     _PRINTSTRING (i, j), CHR$(32)
  175.                 END IF
  176.             END IF
  177.         NEXT
  178.     NEXT
  179.  
  180.     IF x >= 1 AND x <= _WIDTH AND y >= 1 AND y <= _HEIGHT THEN _PRINTSTRING (x, y), CHR$(201)
  181.     IF x + w - 1 >= 1 AND x + w - 1 <= _WIDTH AND y >= 1 AND y <= _HEIGHT THEN _PRINTSTRING (x + w - 1, y), CHR$(187)
  182.     IF x >= 1 AND x <= _WIDTH AND y + h - 1 >= 1 AND y + h - 1 <= _HEIGHT THEN _PRINTSTRING (x, y + h - 1), CHR$(200)
  183.     IF x + w - 1 >= 1 AND x + w - 1 <= _WIDTH AND y + h - 1 >= 1 AND y + h - 1 <= _HEIGHT THEN _PRINTSTRING (x + w - 1, y + h - 1), CHR$(188)
  184.  
  185.     COLOR prevFG, prevBG

Offline TempodiBasic

  • Forum Resident
  • Posts: 1792
    • View Profile
Re: Clicker
« Reply #1 on: December 27, 2018, 05:49:02 pm »
Great and fun!

A fine example for
_DEFAULTCOLOR
_BACKGROUNDCOLOR
_CONTINUE
_CEIL
etc etc etc..
Thanks
Programming isn't difficult, only it's  consuming time and coffee

Offline TempodiBasic

  • Forum Resident
  • Posts: 1792
    • View Profile
Re: Clicker
« Reply #2 on: December 27, 2018, 07:29:11 pm »
Fellippe I'm sorry but your creature is so fine that has put me into creative status so I find this MOD in my imagination:

Code: QB64: [Select]
  1. _TITLE "Boundaries: a X-mutant of Clicker"
  2.  
  3. TYPE Object
  4.     x AS INTEGER
  5.     y AS INTEGER
  6.     w AS INTEGER
  7.     h AS INTEGER
  8.     xv AS INTEGER
  9.     yv AS INTEGER
  10.     fg AS INTEGER
  11.     bg AS INTEGER
  12.     state AS _BYTE
  13.  
  14. DIM SHARED obj(1 TO 10) AS Object
  15. DIM SHARED mouse(1 TO 8) AS STRING
  16. DIM SHARED activeObjects AS INTEGER
  17. DIM SHARED score AS LONG, level AS LONG
  18.  
  19. Lives = 5
  20. createObjects
  21. createMouse
  22.  
  23. level = 1
  24.  
  25.     pollMouse
  26.     checkMouseAction
  27.  
  28.     COLOR , 0
  29.     CLS
  30.     updateObjects
  31.  
  32.  
  33.     top$ = "[Level:" + STR$(level) + "  *  Score:" + STR$(score) + "  *  Lives:" + STR$(Lives) + "]"
  34.     COLOR 15, 0
  35.     box 1, 1, _WIDTH, _HEIGHT, 15, 0
  36.     _PRINTSTRING (2, 1), top$
  37.     showObjects
  38.  
  39.     IF Lives = 0 THEN Again
  40.     IF _MOUSEX > 0 AND _MOUSEY > 0 THEN
  41.         showMouse
  42.     END IF
  43.     _DISPLAY
  44.     limit = 60 * (level / 2)
  45.     IF limit < 200 THEN _LIMIT limit
  46.  
  47. SUB RestartLevel
  48.     IF Lives > 0 THEN Lives = Lives - 1
  49.     box _WIDTH / 2 - 11, _HEIGHT / 2, 22, 5, 31, 0
  50.     COLOR 15, 0
  51.     _PRINTSTRING (_WIDTH / 2 - 5, _HEIGHT / 2 + 2), "BOX ESCAPED"
  52.     _DISPLAY
  53.     SLEEP 3
  54.     _PRINTSTRING (_WIDTH / 2 - 9, _HEIGHT / 2 + 2), "YOU DIE, TRY AGAIN"
  55.     _DISPLAY
  56.     SLEEP 2
  57.     createObjects
  58.  
  59. SUB Again
  60.     box _WIDTH / 2 - 12, _HEIGHT / 2, 24, 5, 31, 0
  61.     COLOR 15, 0
  62.     _PRINTSTRING (_WIDTH / 2 - 4, _HEIGHT / 2 + 2), "GAME OVER"
  63.     _DISPLAY
  64.     SLEEP 3
  65.     _PRINTSTRING (_WIDTH / 2 - 6, _HEIGHT / 2 + 2), "GAME RESTART"
  66.     _DISPLAY
  67.     SLEEP 3
  68.     Lives = 5
  69.     showObjects
  70.  
  71. SUB pollMouse
  72.         IF INKEY$ <> "" THEN EXIT WHILE
  73.     WEND
  74.  
  75. SUB checkMouseAction STATIC
  76.         IF mouseDown = 0 THEN
  77.             mouseDown = -1
  78.         END IF
  79.     ELSE
  80.         IF mouseDown THEN
  81.             mouseDown = 0
  82.             destroyObject _MOUSEX, _MOUSEY
  83.             IF activeObjects = 0 THEN
  84.                 PLAY "T120 L16 O3 E G C"
  85.                 createObjects
  86.                 level = level + 1
  87.             END IF
  88.         END IF
  89.     END IF
  90.  
  91. SUB createObjects
  92.     FOR i = 1 TO UBOUND(obj)
  93.         obj(i).x = _CEIL(RND * 55) + 10
  94.         obj(i).y = _CEIL(RND * 10) + 8
  95.         obj(i).w = 10
  96.         obj(i).h = 5
  97.         obj(i).xv = 1 - RND * 2
  98.         obj(i).yv = 1 - RND * 2
  99.         obj(i).fg = _CEIL(RND * 15)
  100.         obj(i).bg = _CEIL(RND * 7)
  101.         IF obj(i).bg = 0 THEN obj(i).bg = 1
  102.         IF obj(i).fg = obj(i).bg THEN obj(i).fg = obj(i).bg + 8
  103.         obj(i).state = -1
  104.     NEXT
  105.     activeObjects = UBOUND(obj)
  106.  
  107. SUB destroyObject (x AS INTEGER, y AS INTEGER)
  108.     FOR i = UBOUND(obj) TO 1 STEP -1
  109.         IF x >= obj(i).x AND x <= obj(i).x + obj(i).w - 1 THEN
  110.             IF y >= obj(i).y AND y <= obj(i).y + obj(i).h - 1 THEN
  111.                 IF obj(i).state THEN
  112.                     FOR z = 1 TO 5
  113.                         obj(i).x = obj(i).x - 2
  114.                         obj(i).y = obj(i).y - 1
  115.                         obj(i).w = obj(i).w + 4
  116.                         obj(i).h = obj(i).h + 2
  117.                         pollMouse
  118.                         showObjects
  119.                         showMouse
  120.                         _DISPLAY
  121.                         _LIMIT 30
  122.                     NEXT
  123.                     obj(i).state = 0
  124.                     score = score + obj(i).bg
  125.                     activeObjects = activeObjects - 1
  126.                     EXIT FOR
  127.                 END IF
  128.             END IF
  129.         END IF
  130.     NEXT
  131.  
  132. SUB createMouse
  133.     RESTORE mouseData
  134.     i = 1
  135.     DO
  136.         READ a
  137.         IF a = -1 THEN EXIT DO
  138.         IF a = 0 THEN i = i + 1: _CONTINUE
  139.         mouse(i) = mouse(i) + CHR$(a)
  140.     LOOP
  141.  
  142.     mouseData:
  143.     DATA 220,0
  144.     DATA 219,219,220,0
  145.     DATA 219,219,219,219,220,0
  146.     DATA 219,219,219,219,219,219,220,0
  147.     DATA 219,219,219,219,219,219,219,219,220,0
  148.     DATA 219,219,219,219,219,219,223,223,223,223,0
  149.     DATA 219,223,32,32,223,219,219,0
  150.     DATA 32,32,32,32,32,32,219,219,0
  151.     DATA -1
  152.  
  153. SUB showObjects
  154.     FOR i = 1 TO UBOUND(obj)
  155.         IF obj(i).state = -1 THEN
  156.             box obj(i).x, obj(i).y, obj(i).w, obj(i).h, obj(i).fg, obj(i).bg
  157.  
  158.             COLOR obj(i).fg, obj(i).bg
  159.             _PRINTSTRING (obj(i).x + (obj(i).w \ 2), obj(i).y + obj(i).h \ 2), LTRIM$(STR$(obj(i).bg))
  160.         END IF
  161.     NEXT
  162.  
  163. SUB updateObjects STATIC
  164.     IF TIMER - lastUpdate! < .5 THEN EXIT SUB
  165.     lastUpdate! = TIMER
  166.  
  167.     FOR i = 1 TO UBOUND(obj)
  168.         IF obj(i).state = -1 THEN
  169.             obj(i).x = obj(i).x + obj(i).xv
  170.             IF obj(i).x < 1 OR obj(i).x + obj(i).w > _WIDTH THEN RestartLevel 'obj(i).xv = obj(i).xv * -1
  171.  
  172.             obj(i).y = obj(i).y + obj(i).yv
  173.             IF obj(i).y < 1 OR obj(i).y + obj(i).h > _HEIGHT THEN RestartLevel 'obj(i).yv = obj(i).yv * -1
  174.         END IF
  175.     NEXT
  176.  
  177. SUB showMouse
  178.     FOR i = 1 TO 8
  179.         IF (_MOUSEY + i) - 1 <= 25 THEN
  180.             FOR j = _MOUSEX TO _MOUSEX + LEN(mouse(i)) - 1
  181.                 IF j > 80 THEN EXIT FOR
  182.                 m$ = MID$(mouse(i), (j - _MOUSEX) + 1, 1)
  183.                 IF m$ <> " " THEN
  184.                     COLOR 15, SCREEN((_MOUSEY + i) - 1, j, 1) \ 16
  185.                     _PRINTSTRING (j, (_MOUSEY + i) - 1), m$
  186.                 END IF
  187.             NEXT
  188.         END IF
  189.     NEXT
  190.  
  191.     prevFG = _DEFAULTCOLOR
  192.     prevBG = _BACKGROUNDCOLOR
  193.     COLOR fg, bg
  194.  
  195.     FOR i = x TO x + w - 1
  196.         IF i < 1 OR i > _WIDTH THEN _CONTINUE
  197.         FOR j = y TO y + h - 1
  198.             IF j < 1 OR j > _HEIGHT THEN _CONTINUE
  199.             IF (i = x OR i = x + w - 1) AND (j > y AND j < y + h - 1) THEN
  200.                 _PRINTSTRING (i, j), CHR$(186)
  201.             ELSE
  202.                 IF j = y OR j = y + h - 1 AND (i > x AND i < x + w - 1) THEN
  203.                     _PRINTSTRING (i, j), CHR$(205)
  204.                 ELSE
  205.                     _PRINTSTRING (i, j), CHR$(32)
  206.                 END IF
  207.             END IF
  208.         NEXT
  209.     NEXT
  210.  
  211.     IF x >= 1 AND x <= _WIDTH AND y >= 1 AND y <= _HEIGHT THEN _PRINTSTRING (x, y), CHR$(201)
  212.     IF x + w - 1 >= 1 AND x + w - 1 <= _WIDTH AND y >= 1 AND y <= _HEIGHT THEN _PRINTSTRING (x + w - 1, y), CHR$(187)
  213.     IF x >= 1 AND x <= _WIDTH AND y + h - 1 >= 1 AND y + h - 1 <= _HEIGHT THEN _PRINTSTRING (x, y + h - 1), CHR$(200)
  214.     IF x + w - 1 >= 1 AND x + w - 1 <= _WIDTH AND y + h - 1 >= 1 AND y + h - 1 <= _HEIGHT THEN _PRINTSTRING (x + w - 1, y + h - 1), CHR$(188)
  215.  
  216.     COLOR prevFG, prevBG
  217.  

the X-mutant brings these news:
changed goal: don't let escape the box out of the borders
no simple box with no borders and no caption (it can appear in your creature when Fg and Bg are the same)
you have only 5 lives to accomplish this goal, after you die and restart

I have a real trouble...
also if the program is in SCREEN 0 and I force using _BLINK statement I have got no blinking message boxes...
? ? ?
Why? I don't understand.
Thanks to awaking my imagination
Programming isn't difficult, only it's  consuming time and coffee

FellippeHeitor

  • Guest
Re: Clicker
« Reply #3 on: December 27, 2018, 09:29:22 pm »
Quote
I have a real trouble...
also if the program is in SCREEN 0 and I force using _BLINK statement I have got no blinking message boxes...
? ? ?
Why? I don't understand.

_BLINK is on by default, no need to turn it on again.

You’re trying to make blinking colors by adding 8 to the background colors. However, they originally only go up to 8. Eight + 8 = 16, which would be blinking BLACK. Real blinking colors start after 16 (17 is blinking blue, which is color 1 + 16).

Now I don’t remember if you can have blinking background or only blinking foreground. It may error out.

Offline TempodiBasic

  • Forum Resident
  • Posts: 1792
    • View Profile
Re: Clicker
« Reply #4 on: December 28, 2018, 07:16:18 am »
Hi Fellippe
sorry for my bad comunication...
if you see at rows 56 and 68 of my X-mutant MOD I pass the light white blinking code to sub BOX for foreground color

but if you run my code you cannot see any blinking box, for this reason I have forced using _BLINK ON, but with no results.

Thanks
« Last Edit: December 28, 2018, 08:43:46 am by TempodiBasic »
Programming isn't difficult, only it's  consuming time and coffee

Marked as best answer by on Yesterday at 07:38:49 am

Offline Pete

  • Forum Resident
  • Posts: 2361
  • Cuz I sez so, varmint!
    • View Profile
Re: Clicker
« Reply #5 on: December 28, 2018, 07:12:54 pm »
  • Undo Best Answer
  • Science has determined those game boxes would multiply every bit as fast with a smaller pointer. How each box feels about that is a completely different discussion meant for the off-topic board.

    Pete :D
    Want to learn how to write code on cave walls? https://www.tapatalk.com/groups/qbasic/qbasic-f1/

    Offline TempodiBasic

    • Forum Resident
    • Posts: 1792
      • View Profile
    Re: Clicker
    « Reply #6 on: December 29, 2018, 06:10:54 am »
    Hi Pete
    what do you think of the issue of blinking in SCREEN 0 ?

    surely the issue doesn't come from PRINT  or COLOR
    as this code demonstrates
    Code: QB64: [Select]
    1. CLS , 4
    2. box 4, 4, 16, 6, 31, 1
    3. box 14, 14, 16, 6, 30, 2
    4. box 34, 14, 16, 6, 29, 3
    5. box 34, 4, 16, 6, 28, 5
    6.  
    7.     prevFG = _DEFAULTCOLOR
    8.     prevBG = _BACKGROUNDCOLOR
    9.     COLOR fg, bg
    10.  
    11.     FOR i = x TO x + w - 1
    12.         IF i < 1 OR i > _WIDTH THEN _CONTINUE
    13.         FOR j = y TO y + h - 1
    14.             IF j < 1 OR j > _HEIGHT THEN _CONTINUE
    15.             IF (i = x OR i = x + w - 1) AND (j > y AND j < y + h - 1) THEN
    16.                 _PRINTSTRING (i, j), CHR$(186)
    17.             ELSE
    18.                 IF j = y OR j = y + h - 1 AND (i > x AND i < x + w - 1) THEN
    19.                     _PRINTSTRING (i, j), CHR$(205)
    20.                 ELSE
    21.                     _PRINTSTRING (i, j), CHR$(32)
    22.                 END IF
    23.             END IF
    24.         NEXT
    25.     NEXT
    26.  
    27.     IF x >= 1 AND x <= _WIDTH AND y >= 1 AND y <= _HEIGHT THEN _PRINTSTRING (x, y), CHR$(201)
    28.     IF x + w - 1 >= 1 AND x + w - 1 <= _WIDTH AND y >= 1 AND y <= _HEIGHT THEN _PRINTSTRING (x + w - 1, y), CHR$(187)
    29.     IF x >= 1 AND x <= _WIDTH AND y + h - 1 >= 1 AND y + h - 1 <= _HEIGHT THEN _PRINTSTRING (x, y + h - 1), CHR$(200)
    30.     IF x + w - 1 >= 1 AND x + w - 1 <= _WIDTH AND y + h - 1 >= 1 AND y + h - 1 <= _HEIGHT THEN _PRINTSTRING (x + w - 1, y + h - 1), CHR$(188)
    31.  
    32.     COLOR prevFG, prevBG
    33.  
    so where do i search the glitch of loosing the blinking text in screen 0?

    Thanks

    PS: what is your modification (variant) of these boxes' games?
    Programming isn't difficult, only it's  consuming time and coffee

    FellippeHeitor

    • Guest
    Re: Clicker
    « Reply #7 on: December 29, 2018, 08:13:35 am »
    _DISPLAY stops blinking. I finally understand your question.

    As per the wiki:
    Quote
    IF _DISPLAY is used, blinking is disabled, even if _BLINK is ON, but high intensity backgrounds aren't enabled in this case.
    « Last Edit: December 29, 2018, 08:16:36 am by FellippeHeitor »

    Offline bplus

    • Global Moderator
    • Forum Resident
    • Posts: 8053
    • b = b + ...
      • View Profile
    Re: Clicker
    « Reply #8 on: December 29, 2018, 10:02:42 am »
    Fellippe must have had my eyesight in mind when he created this code.

    Thanks TempodiBasic, with just Fellippe's code I could see the pointer but not the point of playing. :)