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.

!! Back from the dead !!


Missing picture...

A bit more than a decade ago, I wrote a set of small programs in Basic-256. Some time later (still more than a decade ago), 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 now again been updated from version 0.9.9.64 (again, from a decade ago...) to the latest version (currently 2.0.0.11)

I also wrote a series of subroutines to draw standard interface elements (buttons, sliders, radio buttons, checkboxes...) which I called BTK (Basic-256 Tool Kit)
These also needed an update and are now called BTK2. The elements are loosely inspired by the Win32 interface (from a decade ago...)
I have also added an Aqua-inspired set of BTK2 routines which you can see/download on the "BTK2 widgets" area. None of my 'real' programs have been ported to this Aqua-like interface except for the Toolkit Demo program below which took only an hour or so to port


Type of Program

BTK2


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 BTK2, 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 obvious advantage is that you can change a program on the fly without having to stop it, enter the code window, look for whatever it is you want to change, change it and run the program again.
The first release of BTK 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 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 and BTK has been renamed BTK2 (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 old 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

  • BTK2 Demo Program (right-click to download)Aqua inspired BTK2 Demo Program (right-click to download)
  • The first mini-program here is a demo grouping all BTK2 GUI elements in a single, simple program.(Actuallly two simple programs...) The mini-programs following this each illustrate a separate widget with comments embedded in the code for easier understanding.
    Both versions of this mini program are functional, simple and lighthearted. They aim to show that all elements can be easily pulled into a single program. I hope to entice people to use these to give their sample programs a bit more flourish. Of course, I forgot to update the link in the intro as that one no longer exists...
  • Screenshot:
    Missing picture...Missing picture...






  • 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. There is no fully adapted aqua version yet....
  • Screenshot:
    Missing picture... Missing picture...





BTK2 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 BTK2 subroutines to handle the graphical interface making it easier to concentrate on the functionality of the programs.


  • 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 BTK2
    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...


  • Critters! (click to download)
  • Critters is a simple program simulating pondlife with small critters being chased by a large, yellow predator. BTK2 routines are used to adapt the different parameters of the simulation. There is even a (dumb) gaming element involved!! Right-pressing will make the critters have the same aversion to the mouse, while left clicking will draw the critters towards the mouse. Try to collect them all!!
  • Screenshot:
    Missing picture...



  • Percolation (click to download)
  • I also bolted the BTL2 routines to a Percolation grid program to influence the compactness of the grid. 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).
  • 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 then 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. 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. Finally I created a small Splash screen with some info and tried to optimize the program. The final result is the Life! program above....
  • Splash Screenshot:
    Missing picture...
  • Screenshots:
    Missing picture... Missing picture... 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...


  • 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. The changes in color handling withng Basic256 have broken things here and there...

  • 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 BTK2 toolkit and still uses the text area to gather user input.
  • Screenshot:
    Missing picture...


  • Particle Text (click to download)
  • The text will 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...

Other programs


Here are some programs that are neither BTK2 centric (although they might use some BTK2 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


  • Flood It!(click to download)
  • Here is a Basic-256 version of the famous Flood-It game. It is quite playable and looks pretty nice.
  • Screenshot:
    Missing picture... Missing picture...



  • BasicBlox!(click to download)
  • Here is a primitive Basic-256 version of the famous Breakout game. It is a bit playable and looks rather nice although blocks sometimes do not disappear. It is also very limited in functionality. (Arkanoid it is definitely not....) Just a plaything....

  • Screenshots:
    Missing picture... Missing picture...


  • Pliant Grid (click to download)
  • I found this program as a samle LUA program in a Love 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. This was one of the fist Basic-256 programs that I was proud to show off....
  • Screenshot:
    Missing picture...




Very Old 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.


20/01/2025
Added "ParticleFun" to the "Particle Based Programs" section.

19/01/2025
Added "CobwebPlot" to the "BTK2 Demo Programs" section.

10/0/2024
Resurrected the site and updated most of the programs to be compatible with 2.0.0.11.

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 "BTK2 Demo Programs" section.

06/03/2013
Added "Basic Paint" to the "BTK2 Demo Programs" section.

23/11/2012
Added "Critters" to the "BTK2 Demo Programs" sectionto and a Flood-It game to "Other Programs".

27/10/2012
Updated BTK to BTK2 (CALL/SUBROUTINE) and added a BTK2 overall demo program.