? Fuze Basic - First Impressions (Page 2) ● SmileBASIC Source Forums

Sign In

Register
*Usernames are case-sensitive
Forgot my password
Space-Restriction Challenge QSP Phase Ends on March 26!

Fuze Basic - First Impressions

1 2
  • #21 ✎ 125 amihart The Fuze Workstations look really cool like a computer from the 80s, which is quite fitting because they all ran BASIC. They're kind of overpriced tho, $100 for just the case without the Pi in it. Posted
  • #22 ✎ 106 seggiepants According to Nintendo Life http://www.nintendolife.com/news/2018/10/fuze4_nintendo_switch_will_let_you_code_your_own_games_on_switch_from_april_next_year, Fuze 4 Switch is now delayed to April 1, 2019. I guess it is no worry my game book is so far behind schedule now. (Doesn't look like their own page has the updated date yet. It was supposed to be out end of November). I am thinking that SmileBasic Switch will probably beat them to the market now. I also saw a thread response on their Fuze 4 Switch page saying that the program would be closer to Python than Fuze Basic. So maybe diving into the computer version to get a head start was a waste of time. However if it is more like Python that might help differentiate it from Smile Basic so both could co-exist. What are your thoughts, was anyone else waiting for Fuze 4 Switch? Posted
  • #23 ✎ 1695 12Me21 Syntax Highlighter Received for creating the code syntax highlighter on SBS Night Person I like the quiet night and sleep late. Express Yourself >April 1st Anyway if it's supposed to be like Python, why don't they just use Python? Posted Edited by 12Me21
  • #24 ✎ 974 Yttria Head Admin the resources.zip from November 12, 2018 contains a few demo programs one of them is "switchDemo.fuze" PROC setup PROC intro PROC runCodeAtLine(0) PROC runprog1 PROC runCodeAtLine(nextprog) PROC runprog2 PROC runCodeAtLine(nextprog) PROC runprog3 PROC runCodeAtLine(nextprog) PROC runprog4 PROC runCodeAtLine(nextprog) PROC runprog5 PROC runCodeAtLine(nextprog) END // DEF PROC runprog1 linenum = 0 WAIT (.2) PROC highlightkey("run") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE WAIT (.1) PROC clearscreen INK = White fontSize (textsize) plotText ("Hello World ", screenx + (8 * textsize), gHeight - ((10 * textsize) * linenum)) UPDATE linenum = linenum + 2 WAIT (.2) plotText ("READY>", screenx + (8 * textsize), gHeight - ((10 * textsize) * linenum)) UPDATE WAIT (1) ENDPROC DEF PROC runprog2 linenum = 0 WAIT (.2) PROC highlightkey("run") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE WAIT (.1) PROC clearscreen INK = White fontSize (textsize) WHILE (10 * textsize) * linenum < gHeight LOOP plotText ("Hello Nintendo", screenx + (8 * textsize), gHeight - ((10 * textsize) * linenum)) UPDATE linenum = linenum + 1 REPEAT WAIT (.3) PROC highlightkey("escape") playSample (keyclick(RND (3) + 1), 0, 0) COLOUR = Black RECT (screenx, 0, gWidth - getImageW (kb), 10 * textsize, 1) FOR n = 0 TO 3 LOOP scrollUp (screenx, screeny, screenw, screenh, 10 * textsize) UPDATE REPEAT WAIT (.1) linenum = linenum - 4 plotText ("ESCAPE AT LINE 2", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) UPDATE WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE linenum = linenum + 2 plotText ("READY>", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) WAIT (1) ENDPROC DEF PROC runprog3 text$ = "Hello Nintendo " linenum = 0 textsize = textsize+1 WAIT (.2) PROC highlightkey("run") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE WAIT (.1) PROC clearscreen INK = White fontSize (textsize) tx = screenx + 8 FOR i = 0 TO 340 LOOP FOR n = 0 TO LEN (text$) - 1 LOOP letter$ = MID$ (text$, n, 1) plotText (letter$, tx, gHeight - (10 * textsize) * linenum) tx = tx + 8 * textsize IF tx > gWidth - 8 * textsize THEN linenum = linenum + 1 tx = screenx + 8 ENDIF IF linenum * 10 * textsize >= gHeight THEN COLOUR = Black RECT (screenx, 0, gWidth - getImageW (kb), 10 * textsize, 1) scrollUp (screenx, screeny, screenw, screenh, 10 * textsize) UPDATE linenum = linenum - 2 ENDIF REPEAT UPDATE REPEAT FOR n = 0 TO 4 LOOP COLOUR = Black RECT (screenx, 0, gWidth - getImageW (kb), 10 * textsize, 1) scrollUp (screenx, screeny, screenw, screenh, 10 * textsize) UPDATE WAIT (.05) REPEAT linenum = linenum - 4 PROC highlightkey("escape") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotText ("ESCAPE AT LINE 3", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) UPDATE WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE linenum = linenum + 2 plotText ("READY>", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) WAIT (1) textsize=textsize-1 ENDPROC DEF PROC runprog4 text$ = "Hello Nintendo " PaperOn textsize=textsize+1 PAPER = Red INK = White linenum = 0 WAIT (.2) PROC highlightkey("run") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE WAIT (.1) PROC clearscreen fontSize (textsize) tx = screenx + 8 FOR i = 0 TO 240 LOOP FOR n = 0 TO LEN (text$) - 1 LOOP letter$ = MID$ (text$, n, 1) plotText (letter$, tx, gHeight - (10 * textsize) * linenum) tx = tx + 7 * textsize IF tx > gWidth - 7 * textsize THEN linenum = linenum + 1 tx = screenx + 8 ENDIF IF linenum * 10 * textsize >= gHeight THEN COLOUR = Black RECT (screenx, 0, gWidth - getImageW (kb), 10 * textsize, 1) scrollUp (screenx, screeny, screenw, screenh, 10 * textsize) UPDATE linenum = linenum - 2 ENDIF REPEAT UPDATE WAIT (0.01) REPEAT FOR n = 0 TO 4 LOOP COLOUR = Black RECT (screenx, 0, gWidth - getImageW (kb), 10 * textsize, 1) scrollUp (screenx, screeny, screenw, screenh, 10 * textsize) UPDATE WAIT (.05) REPEAT PaperOff linenum = linenum - 4 PROC highlightkey("escape") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotText ("ESCAPE AT LINE 3", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) UPDATE WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE linenum = linenum + 2 plotText ("READY>", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) WAIT (1) textsize=textsize-1 ENDPROC DEF PROC runprog5 text$ = "Hello Nintendo " PaperOn linenum = 0 textsize=textsize+1 WAIT (.2) PROC highlightkey("run") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE WAIT (.1) PROC clearscreen fontSize (textsize) tx = screenx + 8 FOR i = 0 TO 240 LOOP PAPER = RND (30) INK = RND (30) FOR n = 0 TO LEN (text$) - 1 LOOP letter$ = MID$ (text$, n, 1) plotText (letter$, tx, gHeight - (10 * textsize) * linenum) tx = tx + 7 * textsize IF tx > gWidth - 7 * textsize THEN linenum = linenum + 1 tx = screenx + 8 ENDIF IF linenum * 10 * textsize >= gHeight THEN COLOUR = Black RECT (screenx, 0, gWidth - getImageW (kb), 10 * textsize, 1) scrollUp (screenx, screeny, screenw, screenh, 10 * textsize) UPDATE linenum = linenum - 2 ENDIF REPEAT UPDATE WAIT (0.01) REPEAT FOR n = 0 TO 4 LOOP COLOUR = Black RECT (screenx, 0, gWidth - getImageW (kb), 10 * textsize, 1) scrollUp (screenx, screeny, screenw, screenh, 10 * textsize) UPDATE WAIT (.05) REPEAT PaperOff linenum = linenum - 4 PROC highlightkey("escape") playSample (keyclick(RND (3) + 1), 0, 0) WAIT (.1) plotText ("ESCAPE AT LINE 3", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) UPDATE WAIT (.1) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE linenum = linenum + 2 plotText ("READY>", screenx + 8 * textsize, gHeight - (10 * textsize) * linenum) WAIT (1) textsize=textsize-1 wait(1) cls Print "Cheers!" end ENDPROC DEF PROC highlightkey(keypressed$) plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE shifted = FALSE FOR shiftcheck = 0 TO maxshifted LOOP IF ASC (keypressed$) = shifted(shiftcheck) THEN shifted = TRUE BREAK ENDIF REPEAT IF ASC (keypressed$) = 34 THEN shifted = TRUE FOR ID = 0 TO maxkeys LOOP IF keypressed$ = keyboard$(ID) THEN setAlpha (70) COLOUR = White RECT (keyboard(ID, 0), keyboard(ID, 1), keyboard(ID, 2), keyboard(ID, 3), 1) IF shifted = TRUE THEN RECT (keyboard(lshiftID, 0), keyboard(lshiftID, 1), keyboard(lshiftID, 2), keyboard(lshiftID, 3), 1) setAlpha (255) UPDATE BREAK ENDIF REPEAT ENDPROC DEF PROC clearscreen rgbColour (30, 20, 20) RECT (gWidth - 8, screeny, 8, screenh, 1) boxstep = int( -8 -(scale / 100)) wait(0.1) FOR n = gWidth TO screenx STEP boxstep LOOP scrollLeft (screenx, screeny, screenw, screenh, -boxstep) UPDATE REPEAT rgbColour (0, 0, 0) RECT (screenx, screeny, 8, screenh, 1) boxstep = int(8 -(scale / 100)) wait(0.1) FOR n = screenx TO gWidth STEP boxstep LOOP scrollRight (n, screeny, screenw, screenh, boxstep) UPDATE REPEAT ENDPROC DEF PROC cleareditor COLOUR = Red boxstep = 8 - (scale / 100) wait(0.1) FOR n = getImageH (kb) TO (gHeight - getImageH (fcs)) STEP boxstep LOOP RECT (0, n, getImageW (fcs) - 1, boxstep, 1) UPDATE REPEAT COLOUR = DarkGrey boxstep = - (8 - scale / 100) wait(0.1) FOR n = (gHeight - getImageH (fcs)) TO getImageH (kb) STEP boxstep LOOP RECT (0, n, getImageW (fcs) - 1, boxstep, 1) UPDATE REPEAT ENDPROC DEF PROC intro setMusicVol (musicvol) playMusic (tune1, 99) plotImage (fcs, gWidth / 2, logoy) timer = MICROTIME WHILE MICROTIME - timer < 7500000 * (scale / 150) LOOP PROC bouncybouncy UPDATE frame = (MICROTIME - timer) / 1000 REPEAT PROC clearballs(5) FOR n = logox TO (getImageW (fcs) / 2) STEP -2 LOOP scrollLeft (0, 0, gWidth, gHeight, 2) UPDATE REPEAT plotImage (fcs, getImageW (fcs) / 2, gHeight - getImageH (fcs) / 2) intro = FALSE WHILE musicvol > 30 LOOP WAIT (0.01) musicvol = musicvol - 1 setMusicVol (musicvol) REPEAT ENDPROC DEF PROC bouncybouncy FOR n = 0 TO maxballs LOOP ball(n, 4) = ball(n, 4) + ((g / 1000) / 100) * frame ball(n, 3) = ball(n, 3) - ball(n, 4) IF ball(n, 3) <= 0 THEN ball(n, 4) = - ball(n, 4) * .9 + (RND (1) / 3) ball(n, 3) = 0 ENDIF plotSprite (ball(n, 0), ball(n, 1), ball(n, 3), 0) REPEAT ENDPROC DEF PROC clearballs(speed) FOR n = 0 TO maxballs LOOP setSpriteAngle (ball(n, 0), RND (360)) REPEAT counter = maxballs WHILE counter >= 0 LOOP FOR n = 0 TO maxballs LOOP advanceSprite (ball(n, 0), speed * (scale / 100)) IF SpriteOut (ball(n, 0)) = TRUE AND ball(n, 6) <> 99 THEN ball(n, 6) = 99 counter = counter - 1 ENDIF REPEAT IF intro = TRUE THEN IF logoy < gHeight - getImageH (fcs) / 2 THEN logoy = logoy + 1 plotImage (fcs, logox, logoy) COLOUR = White RECT (gWidth / 2 - (getImageW (fcs) / 2) - 1, logoy - (getImageH (fcs) / 2) - 1, getImageW (fcs) + 2, getImageH (fcs) + 2, 0) IF kby < getImageH (kb) / 2 THEN kby = kby + 2 plotImage (kb, kbx, kby) UPDATE ENDIF REPEAT ENDPROC DEF PROC setup updateMode = 0 //FULLSCREEN = TRUE setMode (1000,600) scale = (100 / 1920) * (gWidth / 100) * 100 textsize = int(gwidth/500) PAPER = White CLS PaperOff DIM keyclick(3) keyclick(0) = loadSample ("enterkey.wav") keyclick(1) = loadSample ("key0.wav") keyclick(2) = loadSample ("key1.wav") keyclick(3) = loadSample ("key2.wav") tune1 = loadMusic ("tune1.wav") musicvol = 80 fcs = loadImage ("fcslogo.png") scaleImage (fcs, scale) kb = loadImage ("kb.png") scaleImage (kb, scale) setImageOrigin (fcs, getImageW (fcs) / 2, getImageH (fcs) / 2) setImageOrigin (kb, getImageW (kb) / 2, getImageH (kb) / 2) logox = gWidth / 2 logoy = gHeight / 2 + (getImageH (fcs) / 2) kbx = gWidth / 2 kby = - getImageH (kb) / 2 screenx = getImageW (fcs) screeny = 0 screenw = gWidth - getImageW (fcs) screenh = gHeight maxballs = 140 g = 9.807 frame = 16 DIM ball(maxballs, 6) FOR n = 0 TO maxballs LOOP ball(n, 0) = newSprite (1) loadSprite ("gem" + CHR$ (48 + RND (5)) + ".png", ball(n, 0), 0) setSpriteSize (ball(n, 0), scale) ball(n, 1) = RND (gWidth * 0.85) + gWidth * 0.05 // x position ball(n, 2) = 0 // x direction ball(n, 3) = gHeight + RND (gHeight) // Height = 10 metres ball(n, 4) = 0 // ball velocity REPEAT intro = TRUE DIM keyword$(100) count = 0 text$ = "" WHILE text$ <> "QQQQ" LOOP READ text$ IF text$ <> "QQQQ" THEN keyword$(count) = text$ count = count + 1 maxkeywords = count - 2 REPEAT // Keywords DATA "FONTSIZE", "LOOP", "REPEAT", "END", "PRINT", "INK", "PAPER", "CLS", "RND", "COLOUR", "PLOT", "RECT", "CIRCLE", "FOR", "TO", "STEP", "DIM" DATA "WHILE", "UNTIL", "DATA", "PROC", "DEF PROC", "ENDPROC", "CLS2", "UPDATE", "TIME", "MICROTIME", "IF", "THEN", "ELSE", "ENDIF" DATA "AND", "OR", "NOT", "MOUSEY", "MOUSEX", "TOUCH", "MULTITOUCH", "LEFTCLICK", "MIDDLECLICK" DATA "QQQQ" DIM operator$(100) count = 0 text$ = "" WHILE text$ <> "QQQQ" LOOP READ text$ IF text$ <> "QQQQ" THEN operator$(count) = text$ count = count + 1 maxoperators = count - 2 REPEAT // Operators DATA "!", "$", "^", "&", "*", "(", ")", "-", "+", "=", "[", "]" DATA ";", "<", "<=", ">", ">=", "/" DATA "QQQQ" DIM systemvariable$(100) count = 0 text$ = "" WHILE text$ <> "QQQQ" LOOP READ text$ IF text$ <> "QQQQ" THEN systemvariable$(count) = text$ count = count + 1 maxsystemvariables = count - 2 REPEAT // System variables DATA "WHITE", "BLACK", "BLUE", "LIGHTBLUE", "RED", "PINK", "LIGHTPINK", "GREY", "DARKGREY", "LIGHTGREY", "SILVER", "MAROON" DATA "PURPLE", "TEAL", "AQUA", "NAVY", "RASPBERRY", "ORANGE", "YELLOW", "LIGHTYELLOW", "DARKGREEN", "GREEN", "BRIGHTGREEN" DATA "BROWN", "LIGHTBROWN", "OLIVE", "LIGHTGREEN", "GOLD", "CYAN", "LIME", "TRUE", "FALSE", "GWIDTH", "GHEIGHT" DATA "LCONRUMBLE", "RCONRUMBLE", "LCONSTICKX", "LCONSTICKY", "DISTANCE", "LIGHT", "LCONSHAKE", "RCONSHAKE" DATA "LCONPAD", "RCONPAD", "RCONSTICKX", "RCONSTICKY", "TWIDTH", "THEIGHT", "INKEY", "PI" DATA "TILTX", "TILTY", "TILTZ", "ACCELX", "ACCELY", "ACCELZ", "LCONBUTTON", "RCONBUTTON" DATA "QQQQ" maxlines = 100 text$ = "" count = 0 DIM progs$(maxlines) WHILE text$ <> "ENDEND" LOOP READ text$ IF text$ <> "ENDEND" THEN progs$(count) = text$ count = count + 1 REPEAT DATA "[PRINT][ ][{34}Hello World{34}][?]" DATA "[END][?]" DATA "[??]" DATA "[LOOP][?]" DATA "[TAB][PRINT][ ][{34}Hello Nintendo {34}][?]" DATA "[REPEAT][?]" DATA "[END][?]" DATA "[??]" DATA "[LOOP][?]" DATA "[TAB][PRINT][ ][{34}Hello Nintendo {34}][;][?]" DATA "[REPEAT][?]" DATA "[END][?]" DATA "[??]" DATA "[FONTSIZE][(][3][)][?]" DATA "[LOOP][?]" DATA "[TAB][INK][ ][=][ ][WHITE][?]" DATA "[TAB][PAPER][ ][=][ ][RED][?]" DATA "[TAB][PRINT][ ][{34}Hello Nintendo {34}][;][?]" DATA "[REPEAT][?]" DATA "[END][?]" DATA "[??]" DATA "[FONTSIZE][(][3][)][?]" DATA "[LOOP][?]" DATA "[TAB][INK][ ][=][ ][RND][(][30][)][?]" DATA "[TAB][PAPER][ ][=][ ][RND][(][30][)][?]" DATA "[TAB][PRINT][ ][{34}Hello Nintendo {34}][;][?]" DATA "[REPEAT][?]" DATA "[END][?]" DATA "[??]" DATA "ENDEND" // maxkeys = 116 DIM keyboard(maxkeys, 3) DIM keyboard$(maxkeys) FOR n = 0 TO maxkeys LOOP READ key$ READ x, y, w, h IF key$ = "34" THEN key$ = CHR$ (34) keyboard$(n) = key$ keyboard(n, 0) = x * (scale / 100) keyboard(n, 1) = y * (scale / 100) keyboard(n, 2) = w * (scale / 100) keyboard(n, 3) = h * (scale / 100) IF key$ = "lshift" THEN lshiftID = n REPEAT DATA "escape", 8, 256, 72, 57 DATA "1", 85, 256, 57, 57 DATA "!", 85, 256, 57, 57 DATA "2", 148, 256, 57, 57 DATA "34", 148, 256, 57, 57 DATA "3", 211, 256, 57, 57 DATA "£", 211, 256, 57, 57 DATA "4", 274, 256, 57, 57 DATA "$", 274, 256, 57, 57 DATA "5", 338, 256, 57, 57 DATA "%", 338, 256, 57, 57 DATA "6", 401, 256, 57, 57 DATA "^", 401, 256, 57, 57 DATA "7", 465, 256, 57, 57 DATA "&", 465, 256, 57, 57 DATA "8", 528, 256, 57, 57 DATA "*", 528, 256, 57, 57 DATA "9", 591, 256, 57, 57 DATA "(", 591, 256, 57, 57 DATA "0", 655, 256, 57, 57 DATA ")", 655, 256, 57, 57 DATA "-", 718, 256, 57, 57 DATA "_", 718, 256, 57, 57 DATA "=", 781, 256, 57, 57 DATA "+", 781, 256, 57, 57 DATA "backspace", 845, 256, 85, 57 DATA "home", 935, 256, 57, 57 DATA "tab", 9, 192, 72, 57 DATA "Q", 88, 192, 57, 57 DATA "q", 88, 192, 57, 57 DATA "W", 153, 192, 57, 57 DATA "w", 153, 192, 57, 57 DATA "E", 218, 192, 57, 57 DATA "e", 218, 192, 57, 57 DATA "R", 283, 192, 57, 57 DATA "r", 283, 192, 57, 57 DATA "T", 349, 192, 57, 57 DATA "t", 349, 192, 57, 57 DATA "Y", 414, 192, 57, 57 DATA "y", 414, 192, 57, 57 DATA "U", 479, 192, 57, 57 DATA "u", 479, 192, 57, 57 DATA "I", 544, 192, 57, 57 DATA "i", 544, 192, 57, 57 DATA "O", 610, 192, 57, 57 DATA "o", 610, 192, 57, 57 DATA "P", 675, 192, 57, 57 DATA "p", 675, 192, 57, 57 DATA "[", 740, 192, 57, 57 DATA "{", 740, 192, 57, 57 DATA "]", 805, 192, 57, 57 DATA "}", 805, 192, 57, 57 DATA "#", 870, 192, 57, 57 DATA "~", 870, 192, 57, 57 DATA "page up", 936, 192, 57, 57 DATA "lshift", 9, 129, 97, 57 DATA "A", 114, 129, 57, 57 DATA "a", 114, 129, 57, 57 DATA "S", 181, 129, 57, 57 DATA "s", 181, 129, 57, 57 DATA "D", 246, 129, 57, 57 DATA "d", 246, 129, 57, 57 DATA "F", 313, 129, 57, 57 DATA "f", 313, 129, 57, 57 DATA "G", 379, 129, 57, 57 DATA "g", 379, 129, 57, 57 DATA "H", 445, 129, 57, 57 DATA "h", 445, 129, 57, 57 DATA "J", 511, 129, 57, 57 DATA "j", 511, 129, 57, 57 DATA "K", 578, 129, 57, 57 DATA "k", 578, 129, 57, 57 DATA "L", 644, 129, 57, 57 DATA "l", 644, 129, 57, 57 DATA ";", 710, 129, 57, 57 DATA ":", 710, 129, 57, 57 DATA "'", 776, 129, 57, 57 DATA "@", 776, 129, 57, 57 DATA "enter", 841, 129, 85, 57 DATA "page down", 936, 129, 57, 57 DATA "ctrl", 9, 68, 68, 57 DATA "\", 83, 68, 57, 57 DATA "|", 83, 68, 57, 57 DATA "Z", 147, 68, 57, 57 DATA "z", 147, 68, 57, 57 DATA "X", 210, 68, 57, 57 DATA "x", 210, 68, 57, 57 DATA "C", 274, 68, 57, 57 DATA "c", 274, 68, 57, 57 DATA "V", 337, 68, 57, 57 DATA "v", 337, 68, 57, 57 DATA "B", 401, 68, 57, 57 DATA "b", 401, 68, 57, 57 DATA "N", 464, 68, 57, 57 DATA "n", 464, 68, 57, 57 DATA "M", 528, 68, 57, 57 DATA "m", 528, 68, 57, 57 DATA ",", 591, 68, 57, 57 DATA "<", 591, 68, 57, 57 DATA ".", 655, 68, 57, 57 DATA ">", 655, 68, 57, 57 DATA "/", 718, 68, 57, 57 DATA "?", 718, 68, 57, 57 DATA "rshift", 782, 68, 84, 57 DATA "up", 872, 68, 57, 57 DATA "end", 936, 68, 57, 57 DATA "run", 9, 10, 72, 52 DATA "file", 89, 10, 72, 52 DATA "edit", 169, 10, 72, 52 DATA "pref", 248, 10, 72, 52 DATA " ", 328, 9, 224, 53 DATA "media", 558, 10, 72, 52 DATA "help", 638, 10, 72, 52 DATA "delete", 714, 5, 84, 57 DATA "left", 806, 5, 57, 57 DATA "down", 870, 5, 57, 57 DATA "right", 935, 5, 57, 57 maxshifted = 18 DIM shifted(maxshifted) FOR n = 0 TO maxshifted LOOP READ ascval shifted(n) = ascval REPEAT DATA 33, 34, -93, 36, 37, 94, 38, 40, 41, 95, 43, 123, 125, 126, 58, 64, 60, 62, 63 ENDPROC DEF PROC runCodeAtLine(linenumber) PaperOff PROC cleareditor fontSize (textsize - INT (scale / 100)) ink=red cursorx = 30 cursory = gHeight - getImageH (fcs) - 10 text$ = "" count = 0 RECT (cursorx + (textsize * 8), cursory - (textsize * 10), textsize * 8, (textsize * 10), 1) UPDATE WAIT (0.5) WHILE progs$(linenumber) <> "[??]" LOOP IF MID$ (progs$(linenumber), count, 1) = "[" THEN count = count + 1 WHILE MID$ (progs$(linenumber), count, 1) <> "]" LOOP IF MID$ (progs$(linenumber), count, 1) = "{" THEN temp$ = "" count = count + 1 WHILE MID$ (progs$(linenumber), count, 1) <> "}" LOOP temp$ = temp$ + MID$ (progs$(linenumber), count, 1) count = count + 1 REPEAT text$ = text$ + CHR$ (VAL (temp$)) ENDIF IF MID$ (progs$(linenumber), count, 1) <> "}" THEN text$ = text$ + MID$ (progs$(linenumber), count, 1) count = count + 1 REPEAT ENDIF found = FALSE FOR n = 0 TO maxkeywords LOOP IF text$ = keyword$(n) THEN found = TRUE INK = Raspberry BREAK ENDIF REPEAT IF found = FALSE THEN FOR n = 0 TO maxoperators LOOP IF text$ = operator$(n) THEN found = TRUE INK = Raspberry BREAK ENDIF REPEAT ENDIF IF found = FALSE THEN FOR n = 0 TO maxsystemvariables LOOP IF text$ = systemvariable$(n) THEN found = TRUE INK = BrightGreen BREAK ENDIF REPEAT ENDIF IF found = FALSE AND LEFT$ (text$, 1) = CHR$ (34) THEN INK = LightBlue found = TRUE ENDIF IF found = FALSE AND ASC (text$) >= 48 AND ASC (text$) <= 57 THEN INK = Yellow found = TRUE ENDIF IF found = FALSE AND text$ = "TAB" THEN found = TRUE text$ = " " PROC highlightkey("tab") UPDATE WAIT (0.1) ENDIF IF found = FALSE AND text$ = " " THEN found = TRUE IF text$ = "?" THEN linenumber = linenumber + 1 PROC highlightkey("enter") COLOUR = DarkGrey RECT (cursorx + (textsize * 8), cursory - (textsize * 10), textsize * 8, textsize * 10, 1) UPDATE cursory = cursory - (textsize * 10) cursorx = 30 WAIT (0.1) playSample (keyclick(0), 0, 0) COLOUR = White RECT (cursorx + textsize * 8, cursory - (textsize * 10), (textsize * 8), (textsize * 10), 1) PROC highlightkey("enter") UPDATE plotImage (kb, getImageW (kb) / 2, getImageH (kb) / 2) UPDATE WAIT (.3) text$ = "" found = FALSE count = 0 PRINT ENDIF IF found = TRUE THEN FOR n = 0 TO LEN (text$) - 1 LOOP keypress$ = MID$ (text$, n, 1) IF text$ <> " " THEN PROC highlightkey(keypress$) cursorx = cursorx + (textsize * 8) COLOUR = DarkGrey RECT (cursorx, cursory - (textsize * 10), textsize * 8, textsize * 10, 1) UPDATE plotText (keypress$, cursorx, cursory) COLOUR = White RECT (cursorx + (textsize * 8), cursory - (textsize * 10), textsize * 8, textsize * 10, 1) UPDATE playSample (keyclick(RND (3) + 1), 0, 0) WAIT ((RND (1) / 10) + 0.03) UPDATE REPEAT text$ = "" found = FALSE count = count + 1 ENDIF REPEAT linenumber = linenumber + 1 nextprog = linenumber ENDPROC conspicuous lack of blank lines. Edit: retracted; there is exactly one Posted Edited by Yttria
  • #25 ✎ 103 niconii Video Games I like to play video games! Hobbies Expert Programmer Programming no longer gives me any trouble. Come to me for help, if you like! Programming Strength Drawing I like to draw! Hobbies Looking at FUZE Basic after SmileBASIC just gives me uncanny valley vibes... What's the point if we don't have beautiful names like GSPOIT? But more seriously, some of this stuff feels weirdly inconsistent. It looks like COLOUR is a built-in variable to set the color for things like RECT(), but then we have fontSize(n) which sets the font size. Why is that a function instead of a variable? Why are some built-in functions written in ALLCAPS while others are in camelCase? Posted Edited by niconii
  • #26 ✎ 974 Yttria Head Admin if you look at that pre-tokenized program data that's fed into the highlighter, FONTSIZE is in caps... DATA "[FONTSIZE][(][3][)][?]" DATA "[LOOP][?]" I think it's the author's stylistic choice. I wish they made the stylistic choice of indenting properly. Posted
  • #27 ✎ 106 seggiepants Ouch, that sample code is hard to read without proper indentation, white space, and comments. Sample programs really should have good style and usage for others to learn from. Looks like both SmileBoom and Fuze are both guilty on that front. Anyone else notice you can't download from their site without creating a login anymore? I only wanted to check if I had the latest version or not. I was kind of hoping there would be a new version with dynamic memory allocation. Thanks for posting the cool find. Posted
  • #28 ✎ 974 Yttria Head Admin I noticed that login wall, but fortunately there's a back way: /bin/?C=M;O=A Posted
  • #29 ✎ 974 Yttria Head Admin Here's a real noggin-toggler: Fuze4NS is apparently the winner of a 2019 "Tech for Teachers Award" (collected by the Teach Second and Technology & Innovation magazines)
    Tech for Teachers is a unique awards scheme, with genuine classroom impact at its heart. In order to succeed, entries must be as effective as they are innovative, demonstrating real benefits for teaching and learning, value for money, and long-term potential. Following a call-out to individuals and organisations throughout the sector, inviting them to submit their very best products and resources for consideration, shortlists were drawn up in each of five, curriculum-linked categories. Our expert panel then assessed these using a clear list of criteria, in order to bestow five-star, four-star and three-star prizes in each category.
    okay, so most of the things up there look genuinely useful (but probably not practical for adoption), are good ideas, or are at least rehashes of progressive learning software that has been happening for a while. It's still mostly a jumble of university projects, I think. What they have in common is that it was a call for submissions, so only groups that were looking for free advertising applied. The stated purpose of the award is to try and get educators to allocate their already tight budgets on untested products, with the assumption that their sampling and awards procedure makes the best tools apparent. Now, we know that FUZE market themselves as educational technology because that's where they see a market, but while I do remember SmileBoom running SmileBASIC workshops for children using a switch build, the closest I remember with FUZE was having a workshop for their old FUZE hardware while showing a promotional image of the Switch on a screen for some reason.
    >gain familiarity with the syntax used by both BASIC and Python
    whatever the hell that means. Sounds like they just wrote the description from some of the early marketing blurbs. (they also got the 3* award for their workshops last(-last) year) If I say anything more this will just get more slanted so I think I'll stop there. Would be cool if FUZE cared enough to give an honest update rather than whatever they're doing.
    Posted
  • #30 ✎ 106 seggiepants I don't know how you figured out the login work around, but thank you. I was wondering about the python references too. I think they are just to get some points with more modern developers. I bet it is mostly the same as the pc/raspberry pi version. (By the way if any Fuze people read this Fuze Basic has graphical problems if you try to remote desktop to it running on Raspberry pi, on the PC it throws an error when switching to edit mode for every unoccupied memory card slot). I think the education market is their real bread and butter. I would bet they make most of their money with school presentations. Academia is also full of C.V. fillers, I wouldn't worry much about an award for an unreleased product, I am sure it is unfortunately common practice. Posted
1 2