Getting Started (ComputerCraft)

Please note that this guide is very much a WiP (Work in Progress) at this time. Please PM CoderJ on the forums with any comments or corrections

Introduction
ComputerCraft consists primarily of three major components; the Computer, Turtles, and the Peripherals that attach to both to extend their basic functionality. It is possible to craft all three without ever writing an actual program, just using the built-in programs provided by the mod... but by doing so one ignores the true potential of ComputerCraft. This guide assumes that the user has no to little experience with Lua, the programming language used by ComputerCraft and will give some basics as it progresses. Please also note that this guide is only going to touch on some of the basic concepts and components of ComputerCraft; additional information can be found at ComputerCraft's Official Site as well as throughout this wiki and guides that will come at later dates.

The Computer
The first and most basic component of ComputerCraft is the Computer. The recipe is fairly inexpensive and can be made relatively early if one lucks out finding redstone. The computer may be placed down wherever the player likes and can be picked up again by breaking it with any tool.

Right-clicking on the Computer brings up the CraftOS command line (CraftOS is the default operating system for computers); it's from here where most users run programs on their computers.

Basic CraftOS Commands
The basic commands used in CraftOS are, for the most part, either identical or very similar to the basic commands used in nearly all distributions of *nix operating systems; as such, most users (even those who have only occasionally used a command line in other OS's, such as Windows or OSX) should be familiar or easily able to become familiar with them. All commands are run from the CraftOS. Note that parameters in italics are considered optional. {| class="wikitable" width="100%" ! command/command alias ! Command description/use
 * help  
 * On it's own, returns a list of help topics. Specifying the topic after the command returns information on that topic.
 * programs
 * Lists the available programs to be run.
 * apis
 * Returns a list of available APIs (application programming interfaces) that one can use (via Lua) from within CraftOS. More information on various APIs can be obtained by typing using the help command followed by the API name.
 * ls/list  
 * Lists the contents of a directory; if no directory is given lists the contents of the current one.
 * cd
 * Changes the current directory, .. can be used to go to the parent directory of where the command is issued.
 * mkdir
 * Creates a new directory with the given name
 * mv/move/rename
 * cd
 * Changes the current directory, .. can be used to go to the parent directory of where the command is issued.
 * mkdir
 * Creates a new directory with the given name
 * mv/move/rename
 * mv/move/rename
 * mv/move/rename

Simple, right? Save the file and exit the editor, then type in the name of the program. All going well, the following will appear in the CraftOS window...

Congratulations on taking the first step in any programming language. Although only one line, this program demonstrates how to output text to the window. This is usually the primary way to return information to a user (aside from graphics, which are beyond the scope of this guide).

Hello Username
While outputting text is important, it is also important to receive input (whether it is information to be used by the program or navigation through a program's interface). This program will expand upon the print function, as well as introduce variables and the read and write functions.

Open a new program file in the editor (recommended name: hello2). Enter the following in...

Save and exit the editor, then execute the program. It will expect some input from the user, but should overall look like this...

Computer Light Switch
This example requires a little more setup than just the basic computer. To the left of the computer, place either some redstone or red alloy wire (only one block is needed). Next to that, place a lamp (it doesn't matter which type). Please note one can place this setup on any side of the computer, however, the will affect how the code needs to be written (it is pretty self explanatory, though).

In this example, quite a few new functions/statements are introduced including the while loop, if...then...else statements, os.pullEvent, print which is, [redstone.setOutput, and comments (for ease of navigating/identifying sections of code).

Enter the following code (feel free to omit comments, they are there for ease of reading the code but it's understandable if one feels it's a bit much to type in)...

Running this code will show something like the following on the screen... To turn lamp on, press L. To exit, press any other key.

(Assuming user presses L, the lamp turns on and the following shows up...)

To turn lamp off, press L. To exit, press any other key.

Pressing any other key will return the user to the CraftOS prompt. This program looks complicated, but in reality it's just very messy (and actually violating a few conventions). However, writing this code shows the user the essence of what is happening and sets one up for the next example.

Computer Light Switch Mk. II
This example will use the setup from the previous example. Here, the user will learn to use functions as well as other aspects of the Redstone API to control the lamp and avoid "bulky" code. It is recommended to start a new program file rather than editing the old one (due to the way the CraftOS editor works). For simplicity I will omit most of the previous comments to allow the code to be seen easier. this program uses a new part of the redstone API, redstone.getOutput(side), this allows the computer to read if the computer is powering redstone or not, and takes only one argument, side.

Smart Computer Light Switch
Content coming.

What To Do When Things Don't Work
It will happen; one will spend time meticulously writing code only to save and run their program to find... it won't work. There's usually a few important things to check before throwing the mouse at the nearest innocent bystander...


 * 1) Check the error message... 99.999% of the time it will tell one exactly where the mistake was made (improper syntax, missing end statement, etc).
 * 2) Check the use of case (upper and lower case letters). Remember, functions are usually start with a lower case letter but additional 'words' will have upper case in them (for example - redstone.setOutput).
 * 3) Check control statements (while, for, if, etc). Make sure they're declared right and terminated correctly (sometimes a missing end statement won't register for quite a few lines).
 * 4) When in doubt, write it out. One can sometimes be surprised how glaring an error is when rewriting something... despite missing it the first time.
 * 5) Ask the Community. Sometimes things are trickier than they appear to be but chances are someone has made the same mistake and figured it out, however, there's also a good chance that with another pair of eyes on the problem everyone can learn how to do it... maybe even find a better way! Just remember to search the forums for previous posts before making a new thread.