Skip to content

Instantly share code, notes, and snippets.

@nrichards
Created December 27, 2024 21:39
Show Gist options
  • Select an option

  • Save nrichards/edb3b3b42154340cdb52af6a2d09c787 to your computer and use it in GitHub Desktop.

Select an option

Save nrichards/edb3b3b42154340cdb52af6a2d09c787 to your computer and use it in GitHub Desktop.
Christmas Tree Generator in Minimal BASIC
10 REM SCALABLE CHRISTMAS TREE GENERATOR
11 REM RUN WITH BAS55 (PREFERRABLY)
12 REM .. OR QUITEBASIC.COM (NO XMAS DECORATIONS)
13 REM BAS55 = HTTPS://GITHUB.COM/JORGICOR/BAS55
15 REM MIT LICENSE
16 REM BUILT BY AI, INPUT ART TO CLAUDE.AI AND DISCUSS
20 REM SET DESIRED HEIGHT (MUST BE AT LEAST 5)
30 LET H = 15
40 REM TOP OF TREE
50 LET W = H * 2
60 FOR I = 1 TO W + 3 - (7 / 2)
70 PRINT " ";
80 NEXT I
90 PRINT " > <"
100 FOR I = 1 TO W + 2 - (7 / 2)
110 PRINT " ";
120 NEXT I
129 REM NOTE: TOP OF TREE STRING WIDTH IS 6
130 PRINT "-->*<--"
140 REM MAIN TREE BODY
150 FOR L = 1 TO H
160 REM CALCULATE SPACES FOR THIS ROW
170 LET S = W - L + 1
180 FOR I = 1 TO S
190 PRINT " ";
200 NEXT I
210 PRINT "<";
220 REM PATTERN INSIDE TREE
230 FOR I = 1 TO L * 2 - 1
240 REM CHOOSE DECORATION BASED ON POSITION
250 REM UNCOMMENT 255 IF RUNNING WITH QUITEBASIC.COM
251 REM UNCOMMENT 256 IF RUNNING WITH BAS55 PACKAGE
255 REM LET R = INT(RND(1) * 10)
256 LET R = INT(RND * 10)
260 IF R = 1 THEN 310
270 IF R = 2 THEN 330
280 IF R = 3 THEN 350
290 PRINT "_";
300 GOTO 370
310 PRINT "O>";
320 GOTO 370
330 PRINT "0>";
340 GOTO 370
350 PRINT "*>";
360 REM CONTINUE ROW
370 NEXT I
380 PRINT
390 NEXT L
400 REM TREE BASE
410 FOR I = 1 TO W - (7/2) + (H/2) - 2
420 PRINT " ";
430 NEXT I
440 PRINT "(";
450 FOR I = 1 TO H/2
460 PRINT "_";
470 NEXT I
480 PRINT ")"
490 END

Using bas55 package

                              > <
                            -->*<--
                              <_
                             <O>__
                            <_0>___
                           <_*>_____
                          <__*>______
                         <_______0>__*>
                        <___*>0>_______0>
                       <___0>0>*>O>_______*>
                      <__0>____*>0>________
                     <O>________0>*>*>_____0>_
                    <__0>O>O>___________O>0>_O>_
                   <0>_____0>O>*>__O>_*>*>_O>_____O>
                  <__O>_0>___O>O>*>_O>___0>_*>0>___O>_
                 <_O>__O>_*>0>O>__*>____0>__0>_______
                <_________0>__O>________________
                                (_______)

Using quitebasic.com

                              > <
                            -->*<--
                              <_
                             <___
                            <_____
                           <_______
                          <_________
                         <___________
                        <_____________
                       <_______________
                      <_________________
                     <___________________
                    <_____________________
                   <_______________________
                  <_________________________
                 <___________________________
                <_____________________________
                                (_______)
@nrichards
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment