UglyMike's Web Lair



Disclaimer

I do not claim to be or to have ever been a 'real' programmer. The quality of the code here certainly is debatable to say the least. I am just doing this for fun and think it would be nice if other would get some satisfaction from these little programs... Feel free to use them as you want.

!! Big Update !!

Some time back, I noted that most of my older programs had major issues or no longer ran due to the intervening changes to the evolving Basic-256 codebase.
I'm happy to inform you that all programs have been updated so that they run correctly in the latest version (currently 0.9.9.64)

A second update is the addition of an Aqua-inspired set of BTK2 routines which you can see/download on the "BTK-256 widgets" area. None of my 'real' programs have been ported, but the Toolkit Demo program took only an hour or so to port

Missing picture...

Type of Program

BTK-256 Demo Programs


These are some programs that I wrote to try to show that Basic-256 can already be used to write quite nice looking programs. They use the BTK-256 subroutines to handle the graphical interface making it easier to concentrate on the functionality of the programs.

  • Basic Paint (click to download)
  • Well, after my initial tries at writing programs with a more or less normal-looking GUI, I decided to go one step further and write enough functionality for a real program instead of the one-off graphical demos I did till now. Of course, the program still make intensive use of the updated BTK routines
    So, without further ado, I present you with Basic Paint, a basic paint program written in Basic-256. Of course, the functionality on offer here is pretty.... basic.

  • Screenshot:
    Missing picture...


  • Critters! (click to download)
  • You might remember my Pondlife program.Well, after Basic265 v0.9.9.1 came out with functions and subroutines, I decided to rewrite my BTK routines to use subroutines instead of gosubs and to add my new interface items as controls for Pondlife. Thus Critters! was born. It's important to note that Basic-256 version HAS to be 0.9.9.1 for this program to work. (v0.9.9.1 is backward compatible so my older programs also keep working)
  • Screenshot:
    Missing picture...


  • Percolation (click to download)
  • Somewhere in the forums is a small, non-BTK2 program I made about Percolation grids. Well, I decided to bolt on a BTK2 GUI and add it to my site. Hope you enjoy it...
  • Screenshot:
    Missing picture...


  • Perlin Mountains (click to download)
  • Here is a little something I made the other day after coming across some text talking about Perlin Noise (link in the code and in the output). I posted it some time back without a GUI. You can find it hereand, as promised back then, here is the GUIfied version.
  • Screenshot:
    Missing picture...


    Life!(click to download)
  • The other day, I was looking through my links when I found a site talking about Life, the cellular automaton. So I decided to try it out in Basic-256... This turned out to be pretty easy and a basic, text-input program resulted which can be found here I read about other veriants to Life and decided to incorporate some of them as well. For this, I started to build a simple GUI framework around it with basic action buttons and a 'settings' button. This one can be looked at here The settings screen turned out to be too small for all the options I wanted to put in and the radio buttons were too limited. So I created a new BTK element, the spinner box, and rewrote the interface with a lot more options. The basic program can be found here Finally I created a Splash screen with some info and tried to optimize the program. The final result is the Life! program above....
  • Screenshot:
    Missing picture...


  • MANDELBROT-256 (click to download)
  • Mandelbrot-256 aims to be a fun little program which shows that Basic-256 is already able to create full-featured programs if you so want....
    It is not intended to be a 'real' fractal program, but just uses the Mandelbrot set as a foundation to give you a 'visual' Basic-256 experience based on BTK-256
    It's not really an intuitive program, so I have written a short manual that can be found in PDF format here or, if you want to look at it online, there's a .html version here
  • Screenshot:
    Missing picture...


  • DOL BOL L-Systems (click to download)
  • This program features some examples of Deterministic and Bracketed Context-free L-Systems.
    It also features a slide-out menu system.
    The parameter strings can easily be changed for experimentation.
    These and other examples can be found in the seminal book "The Algorithmic Beauty of Plants" by Aristid Lindenmayer and Przemyslaw Prusinkiewicz. A free (not pirated) .pdf can be found here
  • Screenshot:
    Missing picture...

BTK-256 Widgets v2


Although Basic-256 is quite a simple basic dialect and does not have the concept of a widget based layout, nothing stops you from creating your own widgets in Basic-256 itself! That is what I tried to do when I created BTK-256, a set of subroutines to draw standard buttons, radio-buttons, spin-boxes, sliders, tab-bars, 3D groupers and canvas elements for text & graphics output. This lets you concentrate on the program logic and leaves most of the drudgery of painting widgets to these routines.
The first release of BTK-256 was based entirely on GOSUB/RETURN because, well, there wasn't anything else...
As of Basic-256 v0.9.9.1 however, the CALL/SUBROUTINE functionality has been implemented, bringing the much desired advantages of local & global variables. In view of this major development, I decided to rewrite my BTK-256 subroutines, using the CALL/SUBROUTINE exclusively and even eliminating BASIC's much hated GOTO's. I also took advantage of this rewrite to improve the functionality (Buttons especially saw an overhaul: very small buttons are now possible, you don't need to specify button borders and buttons now have 3 states (off, on and in/out). The other elements also were improved)
I have now even added a version of BTK2 that tries to copy a bit the MacOS Aqua-like interface style. Feel free to let me knwo where this could be improved... Things could be improved especially in resizing the interface elements. This doesn't work on all elements
The first mini-program here is a demo grouping all BTK-256 v2 GUI elements in a single, simple program. The mini-programs following this each illustrate a separate widget with comments embedded in the code for easier understanding.






  • Spinner element (right-click to download)
  • This widget can be used for program input of numeric or string values when the amount of choice is too large for Radio buttons. No aqua version yet....
  • Screenshot:
    Missing picture...





Particle Effects


I love simple particle systems: they're pretty easy to program and can be made to look rather impressive. At least I think so... Here are some of my favorites. Mind you, the simple screenshot do not do them justice as they offer pretty dynamic visuals


  • Particle Pointer (click to download)
  • Particle Pointer shoots a stream of particles from your mouse locatio. As they age they fade from white to red while falling and bouncing. It has a calming, mesmerising feel to it. The screenshot shows only part of the screen. This example is pretty well documented.
  • Screenshot:
    Missing picture...


  • Polygon Particles (click to download)
  • Polygon Particles fires a dual stream of yellow, star shaped polygons that fade to red. It has a lot more energy than the particle pointer effect. It has to be seen in action. The screenshot doesn't do it justice
  • Screenshot:
    Missing picture...


  • Diffusion limited Aggregation (click to download)
  • This is a less whimsical program and it takes a lot of time to run!! Diffusion-limited aggregation (DLA) is the process whereby particles with Brownian motion stick to the sides of their 'container' to form aggregates of such particles. This leads to rather organic forms being created
    This program predates the BTK-256 toolkit and still uses the text area to gather user input.
  • Screenshot:
    Missing picture...


  • Particle Text (click to download)
  • The text and the button turn to sand and desintegrate.... Not much of a wow factor but pretty nice to embed somewhere else (like in the Mandelbrot-256 splash screen....)
  • Screenshot:
    Missing picture...


  • Photo Effect 1 (click to download)
  • The .7z file contains 3 files. Just extract and dump them in the same directory and run the particle203.kbs file. The others are just renamed .png files. This silly transition is one effect of many I'm going to try in a series of 'image manipulation' effects. These are to be incorporated in a larger, single program.
  • Screenshot:
    Missing picture...

Other programs


Here are some programs that are neither BTK-256 centric (although they might use some BTK-256 elements) nor particle related. There just some programs that I like the feel of. Some of them even are based on code snippets from other free Basic dialects


  • Pliant Grid (click to download)
  • I found this program as a samle LUA program in a Löve project. I loved it and just HAD to get it into Basic-256. Not obvious as they are different beasts... The code has been formatted to give you easy access to the different tunable parameters. I might come around to GUI-fying the parameters so they can be changed on the fly, but we'll see... In the mean time, enjoy!
  • Screenshot:
    Missing picture...


  • Spinning Sphere (click to download)
  • This program shows a sphere with hidden line removal which can be rotated manually around its X- and Y-axis with the sliders. It can also be set to auto-rotate along any of its three axes (or a combination of axes) at variable speeds with the push butttons.
  • Screenshot:
    Missing picture...


  • Dancing Tentacles (click to download)
  • This program came about more or less by accident as I was looking at Bezier curve generation. I kept adding things like animation, a second, mirrored tentacle and shadows. In the end it has a nice 3D-look with a soothing movement (well, until it explodes...). This was one of the fist Basic-256 programs that I was proud to show off....
  • Screenshot:
    Missing picture...


Recent feedbacks:

08/09/2013: Love having you involved in the BASIC256 community. Jim

04/08/2013: This is one awesome blog.Really looking forward to read more. Will read on...

24/07/2013: Great stuff, man. Keep up the good work!

24/07/2013: Thank you ever so for you article post.Thanks Again. Great.

04/07/2013: Thanks a lot for the blog.Really looking forward to read more. Will read on...

20/04/2013: Thanks for sharing, this is a fantastic article. Keep writing.

25/03/2013: Excellent work!

01/02/2013: Hey, thanks for the article post.Thanks Again. Great

25/11/2012: On the particle Tutorial: Thanks for sharing, this is a fantastic article post. Really Great.

26/08/2012: Thanks for a Basic, so simple yet so hard. lrcvs

28/02/2012: Thanks for the nice programming tutorials. I appreciate your efforts!!

16/02/2012: Awesome, I found it Basic256 by accident while reading through stackoverflow.com recommendations for new programmers. You are doing a great job demonstrating advanced programming concepts in KB256! Thanks & all the best!

18/10/2011: Excellent work - keep it up, please.


11/09/2013
Added Aqua inspired BTK2 routines to the site.

23/08/2013
Lots of older programs were horribly broken. Everything now runs ok again under 0.9.9.64.

22/08/2013
Added "Percolation" to the "BTK-256 Demo Programs" section.

06/03/2013
Added "Basic Paint" to the "BTK-256 Demo Programs" section.

23/11/2012
Added "Critters" to the "BTK-256 Demo Programs" section to and a Flood-It game to "Other Programs".

27/10/2012
Updated BTK-256 to version 2 (CALL/SUBROUTINE) and added a BTK-256 overall demo program.

20/05/2012
Added a GUI to the small experiment with Perlin Noise and put it in "BTK-256 Demo Programs"

16/04/2012
Added a small experiment with Perlin Noise in "Other Programs"

02/12/2011
Added a nice program to perturbe a grid in "Other Programs"

13/11/2011
Added a Foto Effect in the "Particle based Programs"

08/11/2011
Added a Life! Cellular Automaton program to "BTK-256 Demo programs"

26/10/2011
Added a BTK Checkbox GUI element
Added a BTK Grouper GUI element

19/10/2011
Added a BTK Spinner GUI element

03/10/2011
Added a first tutorial on Basic-256 Particle systems

25/09/2011
Added a page counter and a feedback-field
Time to announce it...

22/09/2011
It's alive! Alive!!

11/09/2011
Start website update