Feed The Beast Wiki

Follow the Feed The Beast Wiki on Discord or Mastodon!

(sitenotice-read-more)

Feed The Beast Wiki
Advertisement
(tpt-translation-intro-fuzzy)

De Basis

Inleiding

"'ComputerCraft'" bestaat voornamelijk uit drie hoofdcomponenten: de Computer, Turtles en de Randapparaten die aan beiden kunnen worden bevestigd om hun functionaliteit uit te breiden. Het is mogelijk om deze drie items te maken zonder ooit een daadwerkelijk programma te schrijven door gebruik te maken van de ingebouwde programma's van de mod...maar door dit te doen laat je het echte potentieel van "'ComputerCraft'" niet tot z'n recht komen. Deze gids gaat ervan uit dat de gebruiker geen of zeer weinig ervaring heeft met Lua, de programmeertaal die "'ComputerCraft'" gebruikt en zal enkele basis principes geven naar gelang je door deze gids gaat. Houd er echter wel rekening mee dat deze gids alleen maar heel oppervlakkig enkele basisconcepten en componenten van "'ComputerCraft'" zal behandelen; aanvullende informatie kan worden gevonden op de Officiële ComputerCraft Website alsook op deze hele wiki en gidsen die later nog zullen worden toegevoegd.

De Computer

De eerste en belangrijkste component van "'ComputerCraft'" is de Computer. Het recept is vrij gemakkelijk en kan al vrij vroeg in het spel gemaakt worden als je zo gelukkig bent om redstone te vinden. De computer kan overal waar je wilt geplaatst worden en kan weer worden opgepakt door hem te breken met elk gereedschap.


Door rechts te klikken op de Computer krijg je de command prompt van "'CraftOS'" ("'CraftOS'" is het standaard besturingssysteem voor Computers); Vanaf deze plek zullen de meeste gebruikers programma's draaien op hun Computers.

Basis CraftOS Commando's

Voor het grootste deel zijn de basis commando's die gebruikt worden in "'CraftOS'" ofwel identiek aan of vrij gelijkwaardig aan vrijwel alle distributies van *nix besturingssystemen. Het is juist hierdoor dat de meeste gebruikers (zelfs zij die slechts zeer af en toe een command prompt hebben gebruikt in andere besturingssystemen zoals Windows of OSX) bekend zijn met of er snel bekend mee kunnen worden. Alle commando's worden gegeven vanuit de "'CraftOS'". Hou er wel rekening mee dat parameters die "schuin gedrukt" zijn, optioneel zijn.

command/command alias <parameters> Command description/use
help <topic name> On its 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 <directory> Lists the contents of a directory. If no directory is given lists the contents of the current one.
cd <directory> Changes the current directory; can be used to go to the parent directory of where the command is issued.
mkdir <directory name> Creates a new directory with the given name.
mv/move/rename <source file> <destination file> If used without a directory path in the destination, renames the file; otherwise, will move and rename the file.
edit <filename> Opens a simple text editor to edit the file named. If the file doesn't exist, it will be created when the contents are saved. Pressing CTRL will switch to the command menu, where one can save or exit the editor.
reboot Restarts CraftOS.
pastebin <get/put> Important: This command will only work if the HTTP API is enabled (it is by default with most FTB packs, but it may be turned off for various reasons by server admins or mod pack creators).

Retrieves the contents of the supplied Pastebin code and saves it as the file specified. The code is typically the numbers/letters found in the Pastebin link after http://pastebin.com (for example, if the link is http://pastebin.com/NotValid1 then NotValid1 is the code). This command is immensely useful for sharing code that one has created as well as allowing one to write code in an external editor and importing it into the game. Pastebin has 2 main arguments, put and get. Pastebin get <code> <filename> allows you to save Pastebins to the computer, whereas Pastebin put <filename> will put the file specified on Pastebin as a public post made by a guest, and will also tell you the code needed to use to get it.

Er zijn nog veel meer commando's maar hierover kun je heel makkelijk meer informatie krijgen door het "help" commando te gebruiken.

Toetsenbord Snelkoppelingen

De volgende toetsenbord snelkoppelingen kunnen worden gebruikt om de computer te bedienen en zijn handig om, bijv. een oneindige loop te doorbreken of om startup scrips te testen.

Key Combination Result
CTRL + T Dit zal een lopend programma beëindigen.
CTRL + R Dit zal de Computer forceren een herstart te doen.
CTRL + S Dit zal de Computer forceren zichzelf uit te schakelen.

Programmeren

Om een nieuw programma te maken type je simpelweg "edit" gevolgd door de filenaam. Deze gids zal starten met de twee meest voor de hand liggende programma's om de eerste stapjes te wagen maar zal snel overstappen naar specifieke voorbeelden die van toepassing zijn op "'CraftOS'" en de interactie tussen ComputerCraft en andere objecten in de wereld. Functies en API methoden die in voorbeelden worden gebruikt zullen links hebben naar verdere uitleg.

Hallo Wereld

De eerste, traditionele stap in vrijwel elke programmeertaal is leren hoe je een simpele regel met tekst (meestal "Hallo wereld") kunt weergeven op het scherm. Dit voorbeeld zal de lezer laten zien hoe dit te doen is door het gebruik van de basisfunctie print().

Open a new program file in the editor (recommended name: hello), and type the following:

print("Hello world.")

Simpel, toch? Sla de file op, sluit de tekstverwerker en type dan de naam van het programma in. Als alles klopt zal het volgende getoond worden in het "'CraftOS'" scherm...

> hallo
Hallo wereld.
>

Gefeliciteerd met je eerst stapjes in een programmeertaal. Ondanks dat dit maar 1 regel is, laat het programma zien hoe het iets kan uitvoeren naar het scherm. Normaal gesproken is dit de primaire manier om informatie aan een gebruiker te laten zien (behalve grafisch maar dat ligt niet binnen het bereik van deze gids).

Hallo Gebruikersnaam

Ondanks dat het tonen van tekst belangrijk is, is het ook belangrijk om invoer te kunnen ontvangen (informatie die door een programma gebruikt moet worden of door de interface van een programma navigeren). Dit programma zal dieper ingaan op de print() functie en zal variabelen introduceren alsmede de lees() en schrijf() functies.

Open een nieuwe programmafile in de tekstverwerker (aanbevolen naam: "hallo2"). Voer het volgende in:

write("Voer alsjeblieft je naam in: ")
local username = read()
print("Hallo ", username, ".")

Sla de file op en sluit de tekstverwerker. Het zal enige invoer verwachten van de gebruiker maar het zo er ongeveer als volgt uit moeten zien:

> hallo2
Voer alsjeblieft je naam in: CoderJ
Hallo CoderJ.
>
De print functie uit dit voorbeeld brengt de verschillende argumenten (dus
print("Hallo "..username..".")
is hetzelfde als
print("Hallo ", username, ".")
.

Dit voorbeeld laat zien oe je een programma maakt, hoe je informatie print naar het scherm, hoe je invoer leest en hoe je informatie in een variabele opslaat.

Computer Lichtknop

Dit voorbeeld heeft wat meer nodig dan alleen de basis Computer. Plaats ofwel een stukje redstone or Red Alloy Wire links van de computer (er is maar één block nodig). Plaats er een lamp naast (het type maakt niet uit). Let op dat deze opstelling aan elke zijde van de computer gezet kan worden maar dat dit wel de manier zal veranderen waarop de code geschreven moet worden (dit is echter zeer vanzelfsprekend).

In dit voorbeeld, worden redelijk wat functies/verklaringen geïntroduceerd waaronder de while loop, if...then...else statements, os.pullEvent(), print() wat is, redstone.setOutput(), en opmerkingen (om gemakkelijker te navigeren of identificeren van code secties). Opmerkingen zijn de stukjes tekst na een --

Voer de volgende code in (je kunt natuurlijk opmerkingen achterwege laten aangezien ze alleen nodig zijn om de leesbaarheid van code te verhogen maar het is begrijpelijk als je vindt dat het teveel typewerk is):

-- Computer Lichtknop
local side = "left"      -- Stel de zijde in voor de redstone uitvoer
local userinput = ""     -- Initialiseer de invoer van de gebruiker
local event = ""         -- Initialiseer het event

redstone.setOutput(side, false)    -- Maak de invoer vrij, voor het geval dat.

while true do

-- Eerste deel van de loop, lamp is uit.
  term.clear()                       -- Maak het scherm leeg
  term.setCursorPos(1,1)             -- Plaats de cursor in de linkerbovenhoek.
  print("Om de lamp aan te doen, druk op L.")
  print("Druk op een andere toets om het programma te verlaten.")
 
-- Wacht op invoer van de gebruiker (een karakter) en converteer het naar hoofdletters.
  event, userinput = os.pullEvent("char")
  userinput = string.upper(userinput)

-- Controleer of de input een L is, anders moet de lus gestopt worden.
  if userinput == "L" then
    redstone.setOutput(side, true) -- Schakel het redstone signaal in
  else
    term.clear()
    break
  end

  term.clear()                     -- Maak het scherm leeg
  term.setCursorPos(1,1)           -- Plaats de cursor in de linkerbovenhoek
  print("Om de lamp uit te doen, druk op L.")
  print("Druk op een andere toets om het programma te verlaten")

-- Wacht op invoer van de gebruiker (een karakter) en converteer het naar hoofdletters.
  event, userinput = os.pullEvent("char")
  userinput = string.upper(userinput)

-- Controleer of de invoer een L is, stop anders de lus.
  if userinput == "L" then
    redstone.setOutput(side, false) -- Schakel het redstone signaal uit
  else
    term.clear()
    break
  end

end -- Einde van de while true lus.

Deze code laten draaien zal ongeveer iets als volgt laten zien op het scherm:

 Om de lamp aan te doen, druk op L.
 Druk op een andere toets om het programma te verlaten.

"(Aannemend dat de gebruiker op L drukt gaat de lamp aan en wordt het volgende getoond:)"

Om de lamp uit te doen, druk op L.
Druk op een andere toets om het programma te verlaten.

Elke andere toetsaanslag zal de gebruiker terug sturen naar de "'CraftOS'" prompt. Dit programma ziet er misschien gecompliceerd uit maar in realiteit is het rommelig (en houdt zich niet aan een aantal conventies). Het laat de gebruiker echter wel zien wat de essentie is, wat er gebeurt en maakt het volgende voorbeeld mogelijk.

Computer Lichtknop Mk. II

Dit voorbeeld zal de opstelling uit het vorige voorbeeld gebruiken. Deze keer zal de gebruiker leren om definities te gebruiken, alsmede ander aspecten van de Redstone API om de lamp te besturen en om "omvangrijke" code te voorkomen. Het is aan te raden om een nieuw programma file te maken i.p.v. die uit het vorige voorbeeld te bewerken (vanwege de manier waarop de"'CraftOS'" tekstverwerker werkt). Om het eenvoudig te ouden zal ik het merendeel van de opmerkingen uit het vorige voorbeeld weglaten zodat de code makkelijker te zien is. Dit programma gebruikt een nieuw onderdeel van de redstone API, redstone.getOutput("side"), wat de computer in staat stelt te bepalen of hij een redstone signaal afgeeft. Dit commando heeft maar één argument: zijde.

local side = "left"      
local userInput = ""     
local event = ""      
 
redstone.setOutput(side, false)   
 
-- aangezien we iets herhaaldelijk aan het doen zijn uit het vorige programma kan een functie dit vergemakkelijken.
-- echter, de functie is als een nieuwe kamer: hij kan 
geen variabelen aanroepen als deze niet worden ingegeven. In dit geval wordt het eerste argument in deze kamer whichSide genoemd. 

local function redraw(whichSide)
                         
  --term.setCursorPos(1,1)             
  if redstone.getOutput(whichSide) then -- hier wordt de redstone status gecontroleerd door te bepalen of de redstone aan staat.
    print("Druk op L om de lamp uit te doen.")
  else -- als de lamp niet aan staat dan
    print("Druk op L om de lamp aan te doen.")
  end
  print("Druk op een andere toets om het programma te verlaten.")
end
while true do
  -- dit zal de code in de functie uitvoeren maar de functie moet wel eerst weten aan welke zijde voordat hij kan controleren of de lamp aan is. Dus het eerste argument dat we invoeren is side (zijde) wat de kamer vertelt dat whichSide gelijk staat aan side.

  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) -- Zet de redstone uitvoer aan
  elseif userInput == "L" and redstone.getOutput(side) then
    redstone.setOutput(side, false) -- Zet de redstone uitvoer uit
  end
  if event=="char" and userInput~="L" then
    break
  end
 
end

Slimme Computer Lichtknop

"Inhoud volgt nog."

Geavanceerde Concepten

Geavanceerde Voorbeelden

Slimme Verlichting voor het hele Huis

Wat Te Doen Als Iets Niet Werkt

Dit zal zeker gebeuren. Je zult tijd spenderen aan het zeer nauwkeurig schrijven van een stukje code om vervolgens deze code op te slaan en het programma uit te voeren om er dan achter te komen dat...het niet werkt. Normaliter zijn er een paar belangrijke dingen die je moet controleren voordat je je muis naar de dichtstbijzijnde, onschuldige voorbijganger gooit...

  1. Controleer de foutmelding...99,999% van de tijd zal die exact vertellen waar de fout is gemaakt (onjuiste syntaxis, ontbrekende end declaratie, etc.)
  2. Controleer het gebruik van hoofd- en kleine letters. Onthoudt dat functies over het algemeen beginnen met een kleine letter maar dat aanvullende 'woorden' meestal een hoofdletter hebben (bijv. redstone."'s'"et"'O'"uitput).
  3. Controleer beheer statements (while, for, if, etc.). Zorg ervoor dat ze juist aangegeven en beeïndigd worden (soms wordt een gemiste end declaratie niet pas enkele regels later geregistreerd.
  4. Als je twijfelt, schrijf het dan voluit. Het is verbazingwekkend hoe duidelijk een fout is als je iets aan het herschrijven bent...ondanks dat je het de eerste keer ook al miste.
  5. Vraag het de Gemeenschap. Soms zijn dingen net wat lastiger dan ze op het eerste gezicht lijken. De kans dat iemand anders dezelfde fout al eens eerder heeft gemaakt en heeft opgelost is er echter ook. Een nieuwe blik op het probleem van een ander kan ervoor zorgen dat iedereen het kan leren...en misschien zelfs een betere oplossing bedenken! Denk er alleen wel aan dat je even de forums doorzoekt voordat je een nieuw forum draadje maakt.

Zie ook

Advertisement