Impara ComputerCraft

From Feed The Beast Wiki
Jump to: navigation, search
This page is a translated version of the page Getting Started (ComputerCraft) and the translation is 69% complete.

Outdated translations are marked like this.

Le Basi

Introduzione

ComputerCraft consiste per la maggior parte in tre elementi fondamentali; il Computer, le Turtles, e le Peripherals che possono essere collegate ad entrambi i macchinari per estendere le loro funzionailità. E' possibile crfatare tutti e tre i macchinari senza dover scrivere nessun programma, ma usando i programmi preinstallti nella mod... ma in questo modo rinuncerai alle possibilità migliori offerte da ComputerCraft. Questa guida tiene in considerazione che l'utente non abbia nessuna, o poco, conoscenza del linguaggio Lua, il linguaggio di programmazione usato da ComputerCraft e mostrerà alcune delle basi su cui iniziare. Da notare che questa guida coprirà solo i concetti base ed i componenti basilari di ComputerCraft; ulteriori e più dettagliate informazioni si possono visionare sul sito ComputerCraft's Official Site.

Il Computer

Il primo e basilare macchinario di ComputerCraft è il Computer. La ricetta è molto semplice, ed è quindi possibile craftarlo anche ad inizio gioco se si ha la fortuna di trovare della Redstone. Il computer può essere posizionato ovunque e lo si può riprendere colpendolo con qualsiasi attrezzo.


Cliccando con il pulsante destr sul Computerfarà apparire sullo schermo la linea di comando CraftOS (CraftOS è il sistema operativo di default dei computers); è da qui che il giocatore potrà avviare i programmi nei computer.

Comandi base di CraftOS

I comandi base usati in CraftOS sono, per la maggior parte,uguali se non molto simili ai comandi di base usati in più o meno tutti i sistemi operativi *nix ; per cui, molti utentis (persino quelli che hanno occasianalmente usato il "prompt dei comandi" nel loro OS's, come in Windows or OSX) dovrebbero sentirsi fiduciosi enll'utilizzarli. Tutti i comandi partono in CraftOS. Da tenere conto che le scritte italics(in corsivo) sono da considerarsi opzionali

Lista dei comandi:

command/command alias <parameters> Command description/use
help <topic name> Se inserità ci darà una lista di aiuto per i comandi, se si aggiunge il nome del topic ci darà invece una lista dei comandi di aiuto per il topic specificato.
programs La lista dei programmi che possiamo avviare.
apis Ci mostrerà la lista delle APIs (application programming interfaces) che posso essere usate con (Lua) dal CraftOS. Informazioni dettagliate sulle varie APIs possono essere mostrate inserendo il comando help seguito dal nome della API.
ls/list <directory> Mostra i contenuti della directory; se nessuna directory viene specificata mostyrerà i contenuti dell'attuale directory.
cd <directory> Cambia la directory, .. può essere utilizzato per accedere alla directory principale di cui viene usato il comando.
mkdir <directory name> Crea una nuova directory e le si da un nome.
mv/move/rename <source file> <destination file> Se usato senza specificare il percorso della directory, rinomina il fila; altrimenti rinominerà il file specificato.
edit <filename> Apre una semplice finestra di testo per modificare il nome del file; se il file non esiste, verrà creato automaticamente quando il file verrà salvato. Premendo CTRL passeremo al menù dei comandi, dove potremo salvare e/o uscire dal programma.
reboot Restarta CraftOS.
pastebin <get/put> Importante: Questo comado funzionerà soltanto se la funzione HTTP API è abilitata (è abilitata in quasi tutti gli FTB packs, ma potrebbe anche essere stata disattivata a secondo delle esigenze).E' comunque possibile modificare questa informazione nel file .config di CompuetrCraft.

Scarica i contenuti da Pastebin e li salva con il nome specificato. Il codice è disolito un insieme di numeri e lettere posti alla fine del link http://pastebin.com (per esempio, se il link è http://pastebin.com/NotValid1 allora NotValid1 è il codice). Questo comando è estremamente utile per condividere i programmi che creerete ma anche per scaricare programmi che hanno creato altri utenti. Pastebin ha 2 comandi principali , put e get. Pastebin get <code> <filename> ti permetterà di salvare un programma da Pastebin sul tuo Computer nel gico, mentre Pastebin put <filename> caricherà il programma su Pastebin rendendolo accessibile ad altri utenti se sapranno il link.

Ci sono molti altri comandi, inserendo "help" ci verrà mostrata una lista di tutti quelli disponibili.

Scorciatoie da Tastiera

Le seguenti scorciatoie da tastiera possono essere usate per facilitare l'uso del computer.

Lista delle Scorciatoie da Tastiera:

Combinazione dei tasti Risultato
CTRL + T Forzerà la chiusura del programma.
CTRL + R Forzerà il riavvio del computer.
CTRL + S Forzerà lo spegnimento del computern.

Programmare

Per creare un nuovo programma, scrivere edit seguito dal nome che voglisamo dare al programma stesso.Questa guida inizierà mostrandovi i primi due ovvi programmi, ma poi si andranno a fare degli esempi più specifici da usare in CraftOS' e nella interazione tra ComputerCrafted i vari oggetti/blocchi che ci sono nel gioco. Tutte le funzioni e i metodi API usati in questi esempi avranno dei link con informazioni più dettagliate.

Hello World

Il solito primo passo che si fa quando si utilizza per la prima volta un programma di linguaggio è quella di far apparire una semplie scritta(di solito "Hello World") sullo schermo. In quest' esempio verrà mostrato l'uso della funzione: print . print()

Cliccare con il pulsante destro sul computer e digitare: edit hello (potete scegliere il nome del programma sostituendo hello con un nome a vostra scelta), premere invio, poi digitate:

print("Hello world.")

Facile vero? Salvate il file ed uscite(Premendo CTRL scegliendo Save e premendo Invio, poi dinuovo CTRL scegliendo stavolta Exit e premendo Invio. Adesso nella schermata principale inserite il nome del programma che avete appena creato,in questo caso: hello . Se avete fatto tutto bene nella schermata principale di CraftOS dovrebbe comparire...

> hello
Hello world.
>

Congratulazioni avete appena fatto il primo passo nel linguaggio di scrittura dei programmi. Anche se è solo una linea, questo programma dimostra come poter far comparire qualunque scritta sullio schermo del vostro computer.. Questo è comunumente il metodo usato per mostrare le informazioni che abbiamo inserito noi in un programma.

Hello Username

Per quanto mostrare del testo sullo schermo sia importante, è anche importante ricevere informazioni da un programma. Questo programma infatti espanderà la funzione: print print(), e vi introdurrà all'uso delle variabili tra cui le funzioni: read read() e la funzione: write write().

Creiamo un nuovo programma, questa volta lo chiameremo: hello2. Poi scriveremo:

write("Please enter your name: ")
local username = read()
print("Hello ", username, ".")

Salviamo il proramma ed usciamo,poi avviaremo il programma, e dovrebbe comparire una schermata che mostrerà:

> hello2
Please enter your name: CoderJ
Hello CoderJ.
>

La funzione: print in questo caso si basa su argomenti multipli(cioè

print("Hello "..username..".")
ed anche
print("Hello ", username, ".")

Questo esempio mostra come creare un programma, come stampare semplicemente le informazioni sullo schermo, come far capire al programma le funzioni che gli abbiamo dato e la memorizzazione dei dati in una variabile.

Accendere le Luci con il computer

Per questo esempio ci servià non solo un computer.Infatti sul lato sinistro del computer posizioneremo della redstone o del red alloy wire. Accanto all redtsone piazziamo una redstone lamp o qualunque fonte di luce che utilizzi un segnale redstone per funzionare. Da notare che per questo esempio piazzeremo la redstone sul lato sinistro del computer, ma in realtà lo si può posizione su di ognuno dei sei lati del computer semplicemente modificando il codice.

In questo esempio vi mostreremo alcune nuovi funzioni tra cui il: while loop while loop, le opzioni: if , then , else if...then...else statements, la: os.pullEvent os.pullEvent(), la funzione: print print() la funzione: redstone.setOutput redstone.setOutput(), ed i commenti (per facilitare/Identificare un codice). I commenti sono il testo inserito dopo il codice, preceduti da due trattini: <codice>--</codice>

Creare un nuovo programma ed inserire il il seguente codice(potete anche omettere i commenti, sono stati inseriti giusto per facilitare la comprensione dei singoli codici e le loro funzioni).

-- Computer Light Switch(questo è un esempio di commento, e non fa parte de codice)
local side = "left"      -- E' il lato da cui vogliamo emettere un segnale redstone
local userinput = ""     -- Inizializza l'input dell'utente
local event = ""         -- Inizializza l'evento

redstone.setOutput(side, false)    -- Disattiva il segnale redstone, gusto in caso vi servisse.

while true do

-- nella prima parte del loop, la lamp è spenta.
  term.clear()                       -- cancella le scritte dallo schermo
  term.setCursorPos(1,1)             -- Posiziona il cursore nel angolo in alto a sinistra.
  print("Per accendere la lamp, premere L.")
  print("per uscire, premere un tasto qualsiasi.")
 
-- Aspetta un input dall'utente.
  event, userinput = os.pullEvent("char")
  userinput = string.upper(userinput)

-- Controlla che l' input sia una L, altrimenti, interrompe il loop.
  if userinput == "L" then
    redstone.setOutput(side, true) -- Attiva un segnale redstone
  else
    term.clear()
    break
  end

  term.clear()                     -- cancella le scritte dallo schermo
  term.setCursorPos(1,1)           -- posiziona il cursore nell'angolo in alto a sinistra
  print("Per spegnere la lamp, premere L.")
  print("Per uscire, premere un tasto qualsiasi.")

-- Aspetta un input da parte dell'utente.
  event, userinput = os.pullEvent("char")
  userinput = string.upper(userinput)

--Controla se l' input sia una L, altrimenti, interrompe il loop.
  if userinput == "L" then
    redstone.setOutput(side, false) -- Interrompe il segnale redstone
  else
    term.clear()
    break
  end

end -- fine del while true loop.

Facendo partire questo programma dovrebbbe comparirvi sullo schermo...

 Per accendere la lamp, premere L.
 Per uscire, premere un tasto qualsiasi.

(Se l'utente preme L, la lamp si accende e compare una scritta nel schermo...)

Per spegnere la lamp, premere L.
Per uscire, premere un tasto qualsiasi.

Premendo un tasto qualsiasi, si tornerà alla schermata pricipale di CraftOS. Questo programma sembra complicato all'inizio, ma semplicemente è solo un po incasinato(ed in verità viola alcune convenzioni). Tuttavia, scrivendo questo programma si mostra all'utente l'essenza di quello che può accadere ed anche a prepararlo per il prossimo esempio.

Accendere le Luci con il computer Mk. II

In questo esempio useremo il setup dell'esempio precedente. Così che l'utente possa imparare ad usare le funzioni ed anche gli altri aspetti disponibili della Redstone API per controllare la lamp ed evitare codici "ingombranti". Si consiglia di creare un nuovo programma invece di modificare il programma precedente. Per semplicità non inserirò alcuni dei commenti visti prima, per facilitare la lettura del codice. Questo programma utilizza una nuova funzione della Redston API: redstone.getOutput(side), che permetterà al computer di riconoscere se sta emettendo un segnale redstone o no, tutto questo con un solo comando: side.

local side = "left"      
local userInput = ""     
local event = ""      
 
redstone.setOutput(side, false)   
 
-- visto che daremo un comando che verrà ripetuto molteplici volte, una funzione ci semplificherà il lavoro. 
-- tuttavia le funzioni sono una cosa a parte, non possono accedere alle variabili a meno che le specifichiamo, in questo caso il primo argomento che useremo si chiamerà: witchSide


local function redraw(whichSide)
                         
  --term.setCursorPos(1,1)             
  if redstone.getOutput(whichSide) then -- here the lamps state is checked by reading if the Redstone is on
    print("Per spegnere la lamp, premere L.")
  else -- if it is not on then
    print("Per accendere la lamp, premere L.")
  end
  print("Per uscire, premere un tasto qualsiasi.")
end
while true do
  -- questo ci permetterà di avviare il comando nella funzione, ma la funzione ha bisogna di saper su quale lato per controllare se la lamp è accesa, quindi il primo argomento che aggiungeremo è il lato.

  redraw(side)
 
  event, userInput = os.pullEvent("char")
  userInput = string.upper(userInput)
  print(userInput)
 
  if userInput == "L" and not redstone.getOutput(side) then
    redstone.setOutput(side, true) -- Emette un segnale Redstone
  elseif userInput == "L" and redstone.getOutput(side) then
    redstone.setOutput(side, false) -- Disattiva il segnale Redstone
  end
  if event=="char" and userInput~="L" then
    break
  end
 
end

Smart Computer Light Switch

Prossimamente.

Concetti Avanzati

Exampli Avanzati

Smart Whole House Lighting

Cosa fare quando le cose non funzionano

Può succedere; uno spende del tempo a scrivere meticolosamente un codice per poi salvarlo, avviarlo e scoprire che...non funziona. Di solito ci sono alcune cose da controllare prim di lanciare il mouse addosso al primo che capita.

  1. Controllare i messaggi di errore... nel 99.999% delle volte ti dirà esattamente dove ci sono degli errori (errori di scrittura/sintassi, mancanza del comando end t, ecc).
  2. Controlla l'uso di minuscole e delle maiuscole. Ricorda, le funzioni di solito inziano in minuscolo ma le specifiche a quest'ultime spesso sono in maiuscolo(per esempio - redstone.setOutput).
  3. Controlla gli statement (while, for, if, ecc). Assicurati di metterli nel punto giusto e di dargli un punto di fine (a volte un punto di fine mancato non viene riconosciuto per alcune righe di codice).
  4. Se hai dei dubbi, scrivili. Ti sorpenderai di quanto sia facile trovare gli errori riscrivendo qualcosa.
  5. Chiedi aiuto Community. A volte le cose sono più difficili di quello che si possa pensare ma ci sono buone probabilità che qualcuno abbia fatto lo stesso errore e lo abbia risolto. Ricorda solo di cercare prima nel forum altri post simili prima di crearne uno nuovo.

Vedi anche

Other languages:
Deutsch • ‎English • ‎français • ‎italiano • ‎Nederlands • ‎српски / srpski