Welcome to the QB64 Tutorial!
Choose your lesson from the entries below.

Note: Before using this tutorial you need to first install QB64, then install the tutorial asset file, and finally configure the QB64 IDE to match the tutorial pages. Click on the "Install QB64" link at the top of this page if you have not done this yet. If you are already a QB64 programmer and have your IDE set up with your personal preferences you'll still need to download the tutorial asset file.

Side Lessons

Side lessons are meant to instruct users on subjects that will aid in the understanding of programming concepts. They're available in the lessons where they are beneficial or can be accessed here:

- Using the IDE found in Lesson 8
- Computer Numbering Systems found in Lesson 10
- The Command Line Interface found in Lesson 11

Click the image to the left to download the tutorial asset file. Place the "tutorial" folder found in the ZIP archive into your "qb64" or "qb64pe" folder. (You already did this if you followed the "Install QB64" instructions)

Time to get started! Hello Programmer.
Commands: PRINT

Learn how to store and change information for later retrieval.
Commands: CONST, DIM, INPUT, OPTION _EXPLICIT, REM

Learn how to teach your programs to make informed decisions.
Commands: AND, CASE, CASE ELSE, Colon(:), END, GOTO, IF...THEN, IS, SELECT CASE...END SELECT, TIME$, TO, VAL(), RND, RANDOMIZE, TIMER, INT

Learn how to reuse code as many times as needed.
Commands: CLS, _DELAY, DO...LOOP, FOR...NEXT, WHILE...WEND, SLEEP, STEP, SYSTEM

Learn how to use primitive graphics commands.
Commands: _AUTODISPLAY, CIRCLE, DRAW, _DISPLAY, _LIMIT, LINE, _NEWIMAGE, _PIXELSIZE, PAINT, POINT, PSET, _RGB32(), SCREEN

Learn how to create reusable code and "mini-programs".
Commands: FUNCTION...END FUNCTION, SUB...END SUB, SHARED, STATIC

Learn how to teach your programs to gather input from the real world.
Commands: CHR$(), INKEY$, _KEYDOWN, _KEYHIT, LINE INPUT, _MOUSEBUTTON, _MOUSEHIDE, _MOUSEINPUT, _MOUSEMOVE, _MOUSESHOW, _MOUSEX, _MOUSEY, SLEEP, STICK, STRIG

Learn how to manage a huge amount of variables easily.
Commands: AS, DIM, LBOUND, OPTION BASE, _PRESERVE, REDIM, TYPE...END TYPE, UBOUND

Learn how to teach your software to become a text wizard.
Commands: ASC(), COLOR, Comma(,), CSRLIN, DATE$, INSTR(), LCASE$(), LEFT$(), LOCATE, LTRIM$(), MID$(), POS, PRINT USING, RIGHT$(), RTRIM$(), Semicolon(;), STR$(), STRING$(), TAB, _TRIM$(), UCASE$()

Learn how to make your software do your math homework for you.
Commands: ABS(), AND, ATN(), CDBL(), CINT(), CLNG(), COS(), CSNG(), DATA, FIX(), INT(), MOD, NOT, OR, READ, _ROUND(), SGN(), SIN(), TAN(), XOR, Integer Division (\)

Learn how to utilize your computer's file storage spaces.
Commands: APPEND, BINARY, CHDIR, _DIREXISTS, EOF, _FILEEXISTS, FREEFILE, GET (File Statement), INPUT (File Statement), KILL, LINE INPUT (File Statement), LOF, MKDIR, NAME...AS, OPEN, OUTPUT, PRINT (File Statement), PUT (File Statement), RANDOM, RMDIR, WRITE (File Statement)

Learn how to add some jazz to your software.
Commands: BEEP, PLAY, SOUND, _SNDCLOSE, _SNDGETPOS, _SNDLEN, _SNDLIMIT, _SNDLOOP, _SNDOPEN, _SNDPAUSE, _SNDPAUSED, _SNDPLAY, _SNDPLAYCOPY, _SNDPLAYFILE, _SNDPLAYING, _SNDSETPOS, _SNDSTOP, _SNDVOL

Learn how to load and display image files within your software.
Commands: _COPYIMAGE, _DEST, _FREEIMAGE, _HEIGHT, _LOADIMAGE, _NEWIMAGE, _PUTIMAGE, _SAVEIMAGE, _SCREENIMAGE, _SOURCE, _WIDTH

Learn how to add a splash of color to your projects.
Commands: _BLUE, _BLUE32, _CLEARCOLOR, _GREEN, _GREEN32, &H, POINT, _RED, _RED32, _RGB, _RGB32, _RGBA, _RGBA32

Learn how to detect when objects collide in your software.

Learn how to load hundreds of images at once and animate them.

Learn how to get your objects moving and pointing in the right direction.
Commands: _D2R, _HYPOT, _R2D

Learn how to add a bit of magic to your graphic presentations and games.

Learn how to give your projects some depth and character.

Learn how to use, build, and maintain your own personal code libraries.
Commands: $INCLUDE, $INCLUDEONCE

Learn how to utilize game controllers to their full potential.
Commands: _AXIS, _BUTTON, _BUTTONCHANGE, _DEVICEINPUT, _DEVICES, _DEVICE$, _LASTAXIS, _LASTBUTTON, _LASTWHEEL

Learn how to use your video card's GPU to your advantage.
Commands: _COPYIMAGE(mode 33), _DISPLAYORDER, _GLRENDER, _HARDWARE, _LOADIMAGE(mode 33), _SOFTWARE

Lesson 23: Direct Memory Manipulation

Learn how to retrieve and modify data at the hardware level.
(coming soon)