Rosetta Code task- "Create a function that given a variable representing size, generates a Yin and yang also known as a Taijitu symbol scaled to that size. Generate and display the symbol generated for two different (small) sizes. Rosetta Code, Yin & Yang
Generalised to give colour options, and callable as a function, see second version below.....
Note that the first version uses the less efficient up -goto -down, while the second uses 'place'. (Thanks, Stefan) and replaces the boxfilled with piefilled, allowing more than one YinYang to be placed on a window ( thanks Alyce!).
nomainwin WindowWidth =410 WindowHeight =440 open "Yin & Yang" for graphics_nf_nsb as #w #w "trapclose [quit]" call YinYang 200, 200, 200 call YinYang 120, 50, 50 wait sub YinYang x, y, size #w "up ; goto "; x; " "; y #w "backcolor black ; color black" #w "down ; circlefilled "; size /2 #w "color 255 255 255 ; backcolor 255 255 255" #w "up ; goto "; x -size /2; " "; y -size /2 #w "down ; boxfilled "; x; " "; y +size /2 #w "up ; goto "; x; " "; y -size /4 #w "down ; backcolor black ; color black ; circlefilled "; size /4 #w "up ; goto "; x; " "; y -size /4 #w "down ; backcolor white ; color white ; circlefilled "; size /12 #w "up ; goto "; x; " "; y +size /4 #w "down ; backcolor white ; color white ; circlefilled "; size /4 #w "up ; goto "; x; " "; y +size /4 #w "down ; backcolor black ; color black ; circlefilled "; size /12 #w "up ; goto "; x; " "; y #w "down ; color black ; circle "; size /2 #w "flush" end sub scan wait [quit] close #w end
nomainwin WindowWidth =410 WindowHeight =440 open "Yin & Yang" for graphics_nf_nsb as #w #w "trapclose [quit]" #w "down" for i =1 to 100 x =20 +400 *rnd( 1) y =20 +400 *rnd( 1) size =20 + 50 *rnd( 1) r =int( 256 *rnd( 1)) g =int( 256 *rnd( 1)) b =int( 256 *rnd( 1)) c1$ =str$( r) +" " +str$( g) +" " +str$( b) c2$ =str$( 255 -r) +" " +str$( 255 -g) +" " +str$( 255 -b) call YinYang x, y, size, c1$, c2$ next i wait ' ________________________________________________________________ sub YinYang x, y, size, c1$, c2$ #w "place "; x; " "; y #w "backcolor "; c1$; " ; color "; c1$ #w "circlefilled "; size /2 #w "color "; c2$; " ; backcolor "; c2$ #w "piefilled "; size; " "; size; " 90 180" #w "rule "; _R2_COPYPEN #w "place "; x; " "; y -size /4 #w "backcolor "; c1$; " ; color "; c1$; " ; circlefilled "; size /4 #w "place "; x; " "; y -size /4 #w "backcolor "; c2$; " ; color "; c2$; " ; circlefilled "; size /12 #w "place "; x; " "; y +size /4 #w "backcolor "; c2$; " ; color "; c2$; " ; circlefilled "; size /4 #w "place "; x; " "; y +size /4 #w "backcolor "; c1$; " ; color "; c1$; " ; circlefilled "; size /12 #w "place "; x; " "; y #w "color black ; circle "; size /2 #w "flush" end sub scan wait [quit] close #w end