# Guess The Number (tutorial)

## Creating The Program

The main new things with this program are loops, and math.random.

Let's delve right in.

```term.clear()
textutils.slowPrint("Guess the Number")
print("You have 6 guesses. Guess the number before you run out of guesses.")
numb = math.random(1, 100)
```

The only new thing here other than that covered in the Hello World Tutorial and math.random is term.clear(). This clears the screen, making it blank.

Meanwhile, math.random sets a variable. Basically, it picks a number between one and one-hundred, and makes "numb" be a short name for it. It's like this because we don't know what numb really is, because it's a number between one and one-hundred, but we don't know which.

The first number in math.random's parenthesis is as small as the number can go, while the second one is as big as it can go. If we wanted to make it possible to do 1 to 400, for instance, we would type math.random(1, 400)

```term.clear()
textutils.slowPrint("Guess the Number")
print("You have 6 guesses. Guess the number before you run out of guesses.")
numb = math.random(1, 100)
while true do

end
```

This is called a while loop. While the condition is true, it does the code from the start of the while, to the part that says "end". Once it hits end, it goes back to the start of the while.

Now let's start using it, by putting code in between. (We put spaces before the lines to make it easier to read, you do not need to do this.)

```term.clear()
textutils.slowPrint("Guess the Number")
print("You have 6 guesses. Guess the number before you run out of guesses.")
numb = math.random(1, 100)
while true do
guess = tonumber(guess)
end
```

Now we can get what the player says. Variable = io.read() means to get whatever the player types in. Since we don't know what the player types in, we just give what the player types in a name that we use instead. In this case, the name is "guess", because it is the player's guess.

BUT, the player only says strings, not actual numbers, due to how io.read() works. A string is like, "cat", or "3mg", though it can also be "3305" or "2poodles1food bowl". This is easy to fix, by using tonumber(), which turns it into a -real- number. You may be confused by putting guess in parentheses after; this tells it -what- to turn into a number, and then it sets it.

Now we can start messing with the check:

```term.clear()
textutils.slowPrint("Guess the Number")
print("You have 6 guesses. Guess the number before you run out of guesses.")
numb = math.random(1, 100)
while true do
guess = tonumber(guess)
if guess == numb then
win = true
break
else
print("Incorrect!")
if guess > numb then
elseif guess < numb then
else
print("I have no idea what happened.")
end
tries = tries + 1
end
end
```

Now, this is a lot to take in, but let's take it slowly. == means to check, while = means to set. If means to only do the part in-between the if and the elseif if it exists. If not, then it only does the part in between the if and the else. If not, then the if and the end.

So if it is right, it BREAKS it. This is used to stop the loop, which makes while true do stop.

If it's wrong, it first checks if it is bigger. If it is bigger, then it says the guess is too big.

Contrariwise, if it is too small, it says it is too small.

If it's neither too big OR too small, due to some magic, it says that it has no idea what happened.

## What We Learned

We learned about breaks, loops, ifs, basic strings, and math.random.

## Final Code

This is a polished and Creative Commons licensed version.

```-- Guess the Number, coded in Lua, for ComputerCraft by Kaleb702 is licensed under a

-- Initialization --

do
numb = math.random(1,100)
tries = 1
triesmax = 7
version = 1.1
win = false
end

-- Intro --

do
term.clear()
textutils.slowPrint("-------------------------------")
textutils.slowPrint("Guess the Number V " .. version)
textutils.slowPrint("-------------------------------")
print("Enter to continue...")
print("You have 6 guesses. Guess the number before you run out of guesses.")
end

-- Main loop --

while true do
if tries > triesmax then
break
else
print("Guess. [1 - 100, whole number]")
guess = tonumber(guess)
if guess == numb then
win = true
break
else
print("Incorrect!")
if guess > numb then
elseif guess < numb then
else
print("I have no idea what happened.")
end
tries = tries + 1
end
end
end

-- Outro --

do
term.clear()
textutils.slowPrint("GAME OVER")
if win == true then
print("Winner: PLAYER")
else
print("Winner: COMPUTER")
end
textutils.slowPrint("Thank you for choosing Kapow Creations.")
end
```