MULTI TASKING: MULTITHREADED ANIMATION (2)

This example will show how to use multitasking to make a simple animation of various bats and boys on the screen.

source compile sandbox issues? back to examples

SOURCE CODE ()

    BITMAP ENABLE (16)
    CLS BLACK

    boy := LOAD IMAGES("boy.png" ) FRAME SIZE (32,32)
    bat := LOAD IMAGES("bat.png" ) FRAME SIZE (32,32)

    CONST POSITIVE batCount = 4

    DIM x(batCount)
    DIM y(batCount)
    DIM f(batCount)

    PARALLEL PROCEDURE moveBat
        SHARED bat, x, y, f
        DO
            PUT IMAGE bat FRAME [f] AT [x],[y]
            [f] = [f] + 1
            IF [f] == FRAMES(bat) THEN
                [f] = 0
            ENDIF
        LOOP
    END PROC

    PARALLEL PROCEDURE moveBoy
        SHARED bat, x, y, f, boy
        DO
            PUT IMAGE boy FRAME [f] AT [x],[y]
            [f] = [f] + 1
            IF [f] == FRAMES(boy) THEN
                [f] = 0
            ENDIF
        LOOP
    END PROC

    FOR i=0 TO (batCount-1)
        x(i) = i * (SCREEN WIDTH / batCount)
        y(i) = i * (SCREEN HEIGHT / batCount)
        f(i) = i MOD (batCount-1)
        IF ( i AND 1 ) == 0 THEN
            SPAWN moveBat
        ELSE
            SPAWN moveBoy
        ENDIF
    NEXT

How to compile and run the example

The instructions here refer to compiling the example from the command line. For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile each single example with just one click.



Are instructions for your specific home computer / console missing? First of all, check if your computer is supported by clicking here. If so, since ugBASIC is a language which does not provide abstractions, it is possible that this example will not work on your target. If you think this is an issue, please click here.

Amstrad CPC 464, Amstrad CPC 6128, Amstrad CPC 664

In order to compile the example, type this command on the command line:

Linux

ugbc.cpc -O dsk -o multitasking_example_07.dsk multitasking_example_07.bas

Windows

ugbc.cpc.exe -O dsk -o multitasking_example_07.dsk multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Atari 1200XL, Atari 130XE, Atari 600XL, Atari 65XE, Atari 800XE, Atari 800XL, Atari XEGS

In order to compile the example, type this command on the command line:

Linux

ugbc.atarixl -O xex -o multitasking_example_07.xex multitasking_example_07.bas

Windows

ugbc.atarixl.exe -O xex -o multitasking_example_07.xex multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Atari 400, Atari 800

In order to compile the example, type this command on the command line:

Linux

ugbc.atari -O xex -o multitasking_example_07.xex multitasking_example_07.bas

Windows

ugbc.atari.exe -O xex -o multitasking_example_07.xex multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Coleco Vision, Dina (Chuang Zao Zhe 50), SpectraVideo SV-603 VGA

In order to compile the example, type this command on the command line:

Linux

ugbc.coleco -O rom -o multitasking_example_07.rom multitasking_example_07.bas

Windows

ugbc.coleco.exe -O rom -o multitasking_example_07.rom multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Commodore 128 (CPU 8502)

In order to compile the example, type this command on the command line:

Linux

ugbc.c128 -O prg -o multitasking_example_07.prg multitasking_example_07.bas

Windows

ugbc.c128.exe -O prg -o multitasking_example_07.prg multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Commodore 64, Commodore Executive 64

In order to compile the example, type this command on the command line:

Linux

ugbc.c64 -O prg -o multitasking_example_07.prg multitasking_example_07.bas

Windows

ugbc.c64.exe -O prg -o multitasking_example_07.prg multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Dragon 32

In order to compile the example, type this command on the command line:

Linux

ugbc.d32 -O bin -o multitasking_example_07.bin multitasking_example_07.bas

Windows

ugbc.d32.exe -O bin -o multitasking_example_07.bin multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Dragon 64

In order to compile the example, type this command on the command line:

Linux

ugbc.d64 -O bin -o multitasking_example_07.bin multitasking_example_07.bas

Windows

ugbc.d64.exe -O bin -o multitasking_example_07.bin multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Olivetti Prodest PC128, Thomson MO6

In order to compile the example, type this command on the command line:

Linux

ugbc.pc128op -O k7 -o multitasking_example_07.k7 multitasking_example_07.bas

Windows

ugbc.pc128op.exe -O k7 -o multitasking_example_07.k7 multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

SEGA SC-3000

In order to compile the example, type this command on the command line:

Linux

ugbc.sc3000 -O rom -o multitasking_example_07.rom multitasking_example_07.bas

Windows

ugbc.sc3000.exe -O rom -o multitasking_example_07.rom multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

SEGA SG-1000

In order to compile the example, type this command on the command line:

Linux

ugbc.sg1000 -O rom -o multitasking_example_07.rom multitasking_example_07.bas

Windows

ugbc.sg1000.exe -O rom -o multitasking_example_07.rom multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

TRS-80 Color Computer, TRS-80 Color Computer 2

In order to compile the example, type this command on the command line:

Linux

ugbc.coco -O bin -o multitasking_example_07.bin multitasking_example_07.bas

Windows

ugbc.coco.exe -O bin -o multitasking_example_07.bin multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

TRS-80 Color Computer 3

In order to compile the example, type this command on the command line:

Linux

ugbc.coco3 -O bin -o multitasking_example_07.bin multitasking_example_07.bas

Windows

ugbc.coco3.exe -O bin -o multitasking_example_07.bin multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Thomson TO8

In order to compile the example, type this command on the command line:

Linux

ugbc.to8 -O k7 -o multitasking_example_07.k7 multitasking_example_07.bas

Windows

ugbc.to8.exe -O k7 -o multitasking_example_07.k7 multitasking_example_07.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Any problem?

If you have found a problem trying to run this example, if you think there is a bug or, more simply, you would like it to be improved, open an issue for this example on GitHub.
Thank you!

open an issue BACK TO EXAMPLES