Wie schreibe ich dieses Programm in Computercraft (Minecraft)?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Auslösezeiten, kurz und lang müssen festgelegt werden.

Wir sagen mal 'kurz' ist bis zu einer Sekunde,

'lang' ist alles was darüber ist.

--erstmal warten bis ein Signal kommt

while rs.getInput("right") == false do

  sleep(0.1) -- wir tun was in der schleife, damit CC nicht meckert.

end

-- jetzt liegt ein Signal an, also 'messen' wir die Dauer

dauer= 0

while rs.getInput("right")== true do

   sleep(0.1)

   dauer=dauer + 0.1

   -- wenn das Signal nach einer Sekunde immer noch anliegt, schicken wir ein Signal nach links raus

   if dauer > 1 then  -- hier wird die grenze zwischen kurz / lang definiert

       rs.setOutput("left", "true")

   end

end

--  jetzt warten wir solange, bis das Signal erlischt.

     while rs.getInput("right")== true

         sleep(0.1)

     end

-- Signal  ist wieder weg, also schalten wir auch das Redstone Signal wieder aus

     rs.setOutput("left", "false")

Spätestens hier fehlt mir die info für den 'äusseren Rahmen', soll die Funktion sich selber immer wieder aufrufen, oder was passiert da sonst noch. In welchen Kontext findet das Ganze statt ?

p.s.: ich hab nix getestet, das ist einfach so runtergeschrieben

   

  

sonnig140 
Fragesteller
 22.07.2016, 22:20

Vielen, Dank für deine Antwort. Ich habe ehrlich gesagt nicht mehr gedacht, dass jemand sich die Zeit nimmt um mir zu Helfen. Das Programm soll nach dem erfolgreichen Ablauf erneut von vorne beginnen. Wäre cool, wenn man das noch realisieren können. Danke nochmal

0
HotteKrempel  23.07.2016, 08:35
@sonnig140

Hy,

hier das fertige Programm. Es läuft in einer Endlosschleife.

Der Versuchsaufbau von links nach rechts ist

ein rs-schalter,zwei rs-leitungen,eine Turtle,zwei rs-leitungen, eine rs-lampe.

Die Kroete steht also zwischen Schalter und Lampe, verbunden durch rs Leitungen.

Gruss,

Hotte

while true do
signalverzoegerung= 2
ausloeser= false

-- warten bis ein Signal kommt
while rs.getInput("left")== false do
   sleep(0.2)
end

-- Signallänge messen
while rs.getInput("left") == true and ausloeser == false do
    sleep(0.2)
    signalverzoegerung= signalverzoegerung - 0.2
    if signalverzoegerung < 0 then
        -- Zeit ist erreicht, Ausloeser setzen,
       -- dadurch wird die Schleife verlassen
       -- Sie wird auch dann verlassen, wenn das
       -- Eingangssignal vorher abfällt, nur wurde
       -- dann der Ausloeser nicht gesetzt
    ausloeser= true
    end
end


-- wenn der Ausloeser gesetzt wurde
if ausloeser== true then
    -- Ausgangssignal setzen
    rs.setOutput("right", true)
    --warten bis der Eingang wieder abfällt
    while rs.getInput("left") == true do
       sleep(0.2)
    end
    -- Ausgang zurücksetzen
   rs.setOutput("right", false)
end

end

0

Hy,

hier das fertige Programm. Es läuft in einer Endlosschleife.

Der Versuchsaufbau von links nach rechts ist

ein rs-schalter,zwei rs-leitungen,eine Turtle,zwei rs-leitungen, eine rs-lampe.

Die Kroete steht also zwischen Schalter und Lampe, verbunden durch rs Leitungen.

Gruss,

Hotte

p.s.: Ich habe den Verdacht, das könnte auch ganz leicht mit einer Redstoneschaltung erreichen, doch da kenn ich mich nicht so mit aus.

while true do
signalverzoegerung= 2
ausloeser= false

-- warten bis ein Signal kommt
while rs.getInput("left")== false do
   sleep(0.2)
end

-- Signallänge messen
while rs.getInput("left") == true and ausloeser == false do
    sleep(0.2)
    signalverzoegerung= signalverzoegerung - 0.2
    if signalverzoegerung < 0 then
        -- Zeit ist erreicht, Ausloeser setzen,
       -- dadurch wird die Schleife verlassen
       -- Sie wird auch dann verlassen, wenn das
       -- Eingangssignal vorher abfällt, nur wurde
       -- dann der Ausloeser nicht gesetzt
    ausloeser= true
    end
end


-- wenn der Ausloeser gesetzt wurde
if ausloeser== true then
    -- Ausgangssignal setzen
    rs.setOutput("right", true)
    --warten bis der Eingang wieder abfällt
    while rs.getInput("left") == true do
       sleep(0.2)
    end
    -- Ausgang zurücksetzen
   rs.setOutput("right", false)
end

end

Aufbau - (Minecraft, Programm, Mods)
sonnig140 
Fragesteller
 24.07.2016, 15:47

Vielen Dank für die Hilfe! Finde ich super!

0
HotteKrempel  24.07.2016, 16:37
@sonnig140

gerne geschehen,

nebenbei ist mir schon oft aufgefallen, das in irgendwelchen Foren blabla geschrieben wird anstatt ein Antwort zu präsentieren, anscheinend werden nur Punkte gesammelt.

Was hilft es jemandem wenn als antwort such mal bei Google geschrieben wird, dat is doch Kuhmist.

0