2023-07-23 14:45:28 +01:00
|
|
|
# Standard I/O
|
|
|
|
|
|
|
|
One of Lune's most useful libraries for writing scripts is the standard I/O library, also known as
|
|
|
|
`stdio`, which will be the first one we introduce here. The pages following this one will introduce
|
|
|
|
several others.
|
|
|
|
|
|
|
|
## Prompting for User Input
|
|
|
|
|
|
|
|
The easiest way to get started and being productive using Lune is to prompt the person running your
|
|
|
|
script for some text input, which you can do using the [`stdio`](../../api-reference/stdio.md)
|
|
|
|
library. Let's make a script called `hello.luau`:
|
|
|
|
|
|
|
|
```lua copy filename="hello.luau"
|
|
|
|
local stdio = require("@lune/stdio")
|
|
|
|
|
|
|
|
local name = stdio.prompt("text", "Hello there! What's your name?")
|
|
|
|
|
|
|
|
print("Hello, " .. name .. "!")
|
|
|
|
```
|
|
|
|
|
|
|
|
Now you can place this script in your current directory, and run it using Lune:
|
|
|
|
|
|
|
|
```sh copy filename="Bash"
|
2024-01-14 18:07:03 +00:00
|
|
|
lune run hello
|
2023-07-23 14:45:28 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
You can also prompt for more than just text. Let's extend the above script and ask the person
|
|
|
|
running the script if that was really their name:
|
|
|
|
|
|
|
|
```lua copy filename="hello.luau"
|
|
|
|
local confirmed = stdio.prompt("confirm", "Is that really your name?")
|
|
|
|
if confirmed then
|
|
|
|
print("Nice to meet you, " .. name .. "!")
|
|
|
|
print("Have a great day!")
|
|
|
|
else
|
|
|
|
print("You lied to me! Goodbye 😡")
|
|
|
|
end
|
|
|
|
```
|
|
|
|
|
|
|
|
There are more options for prompting for user input than what we covered in this example, but these
|
|
|
|
two basic prompting methods should cover most of your use cases and get you started with making
|
|
|
|
interactive scripts.
|
|
|
|
|
|
|
|
Next, head on over to the following section on [Script Arguments](./4-script-arguments.md) or check
|
|
|
|
out the bonus game below!
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>Bonus</summary>
|
|
|
|
|
|
|
|
## Guessing Game
|
|
|
|
|
|
|
|
Here's a tiny game you can play versus the computer, using nothing but Lune's
|
|
|
|
[`stdio`](../../api-reference/stdio.md) library and Luau's `math` library. This is a bit longer of a
|
|
|
|
script, but don't worry, it is still only using the same functions as the script above, albeit this
|
|
|
|
time together with a `while ... do` loop and a couple `if ... then` statements:
|
|
|
|
|
|
|
|
```lua copy filename="guessing-game.luau"
|
|
|
|
local stdio = require("@lune/stdio")
|
|
|
|
|
|
|
|
print("")
|
|
|
|
print("Let's play a game! Whoever guesses the correct number between 1 and 10 first will win.")
|
|
|
|
print("")
|
|
|
|
|
|
|
|
local answer = tostring(math.random(1, 10))
|
|
|
|
|
|
|
|
local guess = stdio.prompt("text", "Input a number between 1 and 10")
|
|
|
|
while guess ~= answer do
|
|
|
|
print("Incorrect! Computer's turn...")
|
|
|
|
|
|
|
|
local computer = tostring(math.random(1, 10))
|
|
|
|
print("The computer guessed", computer)
|
|
|
|
|
|
|
|
if computer == answer then
|
|
|
|
break
|
|
|
|
end
|
|
|
|
|
|
|
|
print("Incorrect! Your turn...")
|
|
|
|
guess = stdio.prompt("text", "Input a number between 1 and 10")
|
|
|
|
end
|
|
|
|
|
|
|
|
print("")
|
|
|
|
print(if guess == answer then "You won the game! 🎉" else "The computer won the game! 😭")
|
|
|
|
print("")
|
|
|
|
```
|
|
|
|
|
|
|
|
Just like before, you can place this script in your current directory, and run it using Lune:
|
|
|
|
|
|
|
|
```sh copy filename="Bash"
|
2024-01-14 18:07:03 +00:00
|
|
|
lune run guessing-game
|
2023-07-23 14:45:28 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|