Το παρακάτω πρόγραμμα το έγραψα σε μια μέρα, για να ετοιμάσω μιαν άλλη φορά τον διερμηνευτή της γλώσσας Karel, μια παιδική γλώσσα που εστιάζει σε ένα ρομπότ, το Karel.
Περί της γλώσσας υπάρχουν εδώ στοιχεία Documentation
Στην εικόνα φαίνονται οι οδηγίες που εμείς δίνουμε με πλήκτρα, και από κάτω φαίνονται οι συνθήκες όπως αλλάζουν κατά την μετακίνηση, ή την περιστροφή, ή το μάζεμα πραγμάτων.
Ήθελα να δω αν θα βρω τον τρόπο να φτιάχνω αυτόματα τα εμπόδια ώστε να σχηματίζουν τοίχους. Τελικά βρήκα με λίγο πειραματισμό ότι χρειάζονταν τέσσερεις Σημαίες. Μια δηλώνει το Εμπόδιο, όπου δυο συνεχόμενα είτε κάθετα είτε οριζόντια ενώνονται, μια άλλη είναι το Άκρο που σπάει τις ενώσεις πάνω και αριστερά, μια άλλη είναι το ΔεξίΆκρο, σπάει τις ενώσεις οριζόντια δεξιά, τέλος το ΚάτωΆκρο, σπάει τις ενώσεις κάθετα στο κάτω άκρο. Σε κάθε σημείο (ενδιάμεσα από τα κουτάκια) μπαίνει ένα από τα τέσσερα ή το ΚΑΘΑΡΟ, δηλαδή δεν έχει κάτι. Υπάρχει άλλος πίνακας που κρατάει τα πραγματάκια που παίρνουμε ή αφήνουμε. Το ρομπότ είναι sprite (διαφάνεια) σε δικό του επίπεδο, δεν γράφεται στη κύρια οθόνη.
Έχω αφήσει ένα πράγμα για τον αναγνώστη που θέλει να ασχοληθεί. Στις συνθήκες μπορούμε να δείχνουμε και το προσανατολισμό του Karel.
Κάποια στιγμή στο μέλλον θα φτιαχτεί βασει αυτού του προγράμματος ο απλός διερμηνευτής της γλώσσας Karel.
Φόρμα 80, 48
Διαφυγή Όχι
Αδειασε
Ανανέωση 1000
Οθόνη 4, 0
Φαρδιά 1
Διπλά
Τύπωσε Πάνω $(6),"Κάρελ το Ρομπότ"
Τύπωσε
Κανονικά
Οθόνη 5, Γραμμή
Ανανέωση 20
// Εικόνα PNG
Δυαδικό {
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xh
BQAAAAlwSFlzAAALEwAACxMBAJqcGAAABCZpVFh0WE1MOmNvbS5hZG9iZS54bXAA
AAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9
IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJk
ZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlm
Zj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHht
bG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAg
ICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8i
CiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv
MS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVz
b2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjA8L3RpZmY6
Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZm
OlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZm
Ok9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlm
ZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjUx
MjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3Bh
Y2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1l
bnNpb24+NTEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1
YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJq
ZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOTowMjoyOCAxMzowMjow
MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4
ZWxtYXRvciAzLjguMTwveG1wOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNj
cmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KKeilkwAAKBtJREFU
eAHt3XusJmddB/B537PbUmgpdAulhFKjmCDWGNDIH0ZSRWpETcRbMFKqxigiSLxQ
LlpYbl7qBVFRJEZRNArGaIIXRBtJCXhDSLQWBJVeaKGXbYVuW3a75319nrNdtue4
Z8+88z4z8zzzfIYM3fecmWd+z+c355zvmfc97zSNhQABAgQIECBAgAABAgQIECBA
gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB
AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI
ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA
gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB
AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI
ECBAgAABAgQIECBAgAABAgQIrCwwW3kPOxDYLvDU8PDKsD4jrBeEdSOsFgIETi9w
JHz6prD+VVjfENY7wmohQIBAEQL7QpWvDuvRsC6tDJwDnc+B24Pdd4TVQmBQAb+t
Dco9qYNdFWZzMKzOoUm11WRGEHhEOOZ3hfXesH5ghOM7ZKUCvnlX2vg1px0v+/9+
WJ0/a0LancBDBC4L/xYCHgLin/0K+Aber+9UR39jmNiXT3Vy5kVgRAEhYET82g4t
ANTW8TTz/dUwzDlphjIKAQI7BGIIuD+s79/xcQ8JJBXwVwBJOasZ7FiYqfBYTbtN
dCSBl4XjXj3SsR22AgEBoIIm9zDF+Kp/CwEC/QvEP7H9hf4P4wg1CsxrnLQ5EyBA
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
Kaz7cytMPa0FHghbPj2sH269hw2rFdioduYmToDAToFPhw/Eq4KX7vyEx8UIvC5U
+sfFVKvQUQUEgFH5HZxAdgLvDxUtwvrVYfX9Ibv27FpQ/M0//vB/fViXu27lEwQI
ECBAYA+B+HTAH4X1lrAeC2v8oWLNyyD2JfYn9in2y0KAAAECBAgQIECAAAECBAgQ
IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA
AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC
BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ
IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA
AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC
BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ
IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUK/B/3OcEdXPBXZAA
AAAASUVORK5CYII=
} Ως Καρέλ
Γενική Απαρίθμηση Προσανατολισμός {ΒΟΡΕΙΑ, ΑΝΑΤΟΛΙΚΑ, ΝΟΤΙΑ, ΔΥΤΙΚΑ}
Γενική Απαρίθμηση Πρόσβαση {ΕΚΤΟΣ_ΠΙΝΑΚΑ=-1, ΚΑΘΑΡΟ, ΚΑΤΙ, ΕΜΠΟΔΙΟ, ΚΑΤΩΑΚΡΟ, ΑΚΡΟ, ΔΕΞΙΑΚΡΟ}
Γενική Απαρίθμηση Τσαντα {ΔΕΝ_ΥΠΑΡΧΕΙ_ΚΑΤΙ=0, ΥΠΑΡΧΕΙ_ΚΑΤΙ=-1}
Κλάση ΡΟΜΠΟΤ {
Βλέπει=ΑΝΑΤΟΛΙΚΑ
Εχει=ΔΕΝ_ΥΠΑΡΧΕΙ_ΚΑΤΙ
Πόσα_Εχει=0
ΘέσηΧ=0
ΘέσηΥ=0
Τμήμα ΚάνεΑριστερά {
Επίλεξε Με .Βλέπει
Με ΝΟΤΙΑ
.Βλέπει<=ΑΝΑΤΟΛΙΚΑ
Με ΔΥΤΙΚΑ
.Βλέπει<=ΝΟΤΙΑ
Με ΒΟΡΕΙΑ
.Βλέπει<=ΔΥΤΙΚΑ
Με ΑΝΑΤΟΛΙΚΑ
.Βλέπει<=ΒΟΡΕΙΑ
Τέλος επιλογής
}
}
Κλάση ΚΟΣΜΟΣ {
γεγονότα "ΑλλαγήΓραμμής", "ΔεξιάΚενό", "ΔεξιάΚάτι", "ΔεξιάΕμπόδιο"
Ιδιωτικό:
Πίνακας Κ(), Μ()
μεγΧ=0, μεγΥ=0
Δημόσιο:
Τμήμα ΚαθάρισεΕμπόδιο (Χ ως ακέραιος, Υ ως ακέραιος) {
.Κ(Χ,Υ)=ΚΑΘΑΡΟ
}
Τμήμα ΒάλεΕμπόδιο (Χ ως ακέραιος, Υ ως ακέραιος) {
.Κ(Χ,Υ)=ΕΜΠΟΔΙΟ
}
Τμήμα ΒάλεΔΕΞΙΑΚΡΟ (Χ ως ακέραιος, Υ ως ακέραιος) {
.Κ(Χ,Υ)=ΔΕΞΙΑΚΡΟ
}
Τμήμα ΒάλεΚΑΤΩΑΚΡΟ (Χ ως ακέραιος, Υ ως ακέραιος) {
.Κ(Χ,Υ)=ΚΑΤΩΑΚΡΟ
}
Τμήμα ΒάλεΑΚΡΟ (Χ ως ακέραιος, Υ ως ακέραιος) {
.Κ(Χ,Υ)=ΑΚΡΟ
}
Τμήμα ΒάλεΚάτι (Χ ως ακέραιος, Υ ως ακέραιος) {
.Μ(Χ,Υ)=ΚΑΤΙ
}
Τμήμα ΠάρεΚάτι (Χ ως ακέραιος, Υ ως ακέραιος) {
.Μ(Χ,Υ)=ΚΑΘΑΡΟ
}
Τμήμα ΒάλεΚενό (Χ ως ακέραιος, Υ ως ακέραιος){
.Μ(Χ,Υ)=ΚΑΘΑΡΟ
}
Συνάρτηση ΈχειΚατι(Χ ως ακέραιος, Υ ως ακέραιος) {
Αν Χ<1 ή Χ>.μεγΧ ή Υ<1 ή Υ>.μεγΥ Τότε Εξοδος
=.Μ(Χ, Υ)=ΚΑΤΙ
}
Συνάρτηση Βόρεια(&Χ ως ακέραιος, &Υ ως ακέραιος) {
Αν (Χ=1 ή Χ=.μεγΧ) Και (Υ>1 Και Υ<=.μεγΥ) Τοτε Υ-- : = Αληθής: Έξοδος
Αν Χ<1 ή Χ>.μεγΧ ή Υ<2 ή Υ>.μεγΥ Τότε Εξοδος
Αν .Κ(Χ-1,Υ-1)<ΕΜΠΟΔΙΟ Τότε Υ-- : = Αληθής: Έξοδος
Αν .Κ(Χ,Υ-1)<>ΕΜΠΟΔΙΟ Και .Κ(Χ,Υ-1)<>ΚΑΤΩΑΚΡΟ Τότε Υ-- : = Αληθής: Έξοδος
}
Συνάρτηση Ανατολικά(&Χ ως ακέραιος, &Υ ως ακέραιος) {
Αν (Υ=1 ή Υ=.μεγΥ) Και (Χ>0 Και Χ<.μεγΧ) Τοτε Χ++ : = Αληθής: Έξοδος
Αν Χ<1 ή Χ>.μεγΧ-1 ή Υ<1 ή Υ>.μεγΥ Τότε Εξοδος
Αν .Κ(Χ,Υ-1)<ΕΜΠΟΔΙΟ Τότε Χ++ : = Αληθής: Έξοδος
Αν .Κ(Χ,Υ)<>ΕΜΠΟΔΙΟ Και .Κ(Χ,Υ)<>ΔΕΞΙΑΚΡΟ Τότε Χ++ : = Αληθής: Έξοδος
}
Συνάρτηση Νότια(&Χ ως ακέραιος, &Υ ως ακέραιος){
Αν (Χ=1 ή Χ=.μεγΧ) Και (Υ>0 Και Υ<.μεγΥ) Τοτε Υ++ : = Αληθής: Έξοδος
Αν Χ<1 ή Χ>.μεγΧ ή Υ<1 ή Υ>.μεγΥ-1 Τότε Εξοδος
Αν .Κ(Χ-1,Υ)<ΕΜΠΟΔΙΟ Τότε Υ++ : = Αληθής: Έξοδος
Αν .Κ(Χ,Υ)<>ΕΜΠΟΔΙΟ Και .Κ(Χ,Υ)<>ΚΑΤΩΑΚΡΟ Τότε Υ++ : = Αληθής: Έξοδος
}
Συνάρτηση Δυτικά(&Χ ως ακέραιος, &Υ ως ακέραιος){
Αν (Υ=1 ή Υ=.μεγΥ) Και (Χ>1 Και Χ<=.μεγΧ) Τοτε Χ-- : = Αληθής: Έξοδος
Αν Χ<2 ή Χ>.μεγΧ ή Υ<1 ή Υ>.μεγΥ Τότε Εξοδος
Αν .Κ(Χ-1,Υ-1)<ΕΜΠΟΔΙΟ Τότε Χ-- : = Αληθής: Έξοδος
Αν .Κ(Χ-1,Υ)<>ΕΜΠΟΔΙΟ Και .Κ(Χ-1,Υ)<>ΔΕΞΙΑΚΡΟ Τότε Χ-- : = Αληθής: Έξοδος
}
Συνάρτηση ΚοίταΜπροστά(Ρομπότ ως *ΡΟΜΠΟΤ, ΝαΠάει ως Λογικός=Ψευδής) {
κάνε ακέραιο θΧ, θΥ, Προσαν, ΟΚ
Για Ρομπότ {
θΧ=.ΘέσηΧ
θΥ=.ΘέσηΥ
Προσαν=.Βλέπει
}
Επίλεξε Με Προσαν
Με ΒΟΡΕΙΑ
ΟΚ=.Βόρεια(&θΧ, &θΥ)
Με ΑΝΑΤΟΛΙΚΑ
ΟΚ=.Ανατολικά(&θΧ, &θΥ)
Με ΝΟΤΙΑ
ΟΚ=.Νότια(&θΧ, &θΥ)
Με ΔΥΤΙΚΑ
ΟΚ=.Δυτικά(&θΧ, &θΥ)
Τέλος επιλογής
Αν ΟΚ Και ΝαΠάει Τότε
Για Ρομπότ {
.ΘέσηΧ=θΧ
.ΘέσηΥ=θΥ
}
Τέλος Αν
=ΟΚ
}
Συνάρτηση ΚοίταΔεξιά(Ρομπότ ως *ΡΟΜΠΟΤ) {
κάνε ακέραιο θΧ, θΥ, Προσαν
Για Ρομπότ {
θΧ=.ΘέσηΧ
θΥ=.ΘέσηΥ
Προσαν=.Βλέπει
}
Επίλεξε Με Προσαν
Με ΔΥΤΙΚΑ
=.Βόρεια(&θΧ, &θΥ)
Με ΒΟΡΕΙΑ
=.Ανατολικά(&θΧ, &θΥ)
Με ΑΝΑΤΟΛΙΚΑ
=.Νότια(&θΧ, &θΥ)
Με ΝΟΤΙΑ
=.Δυτικά(&θΧ, &θΥ)
Τέλος επιλογής
}
Συνάρτηση ΚοίταΑριστερά(Ρομπότ ως *ΡΟΜΠΟΤ) {
κάνε ακέραιο θΧ, θΥ, Προσαν
Για Ρομπότ {
θΧ=.ΘέσηΧ
θΥ=.ΘέσηΥ
Προσαν=.Βλέπει
}
Επίλεξε Με Προσαν
Με ΑΝΑΤΟΛΙΚΑ
=.Βόρεια(&θΧ, &θΥ)
Με ΝΟΤΙΑ
=.Ανατολικά(&θΧ, &θΥ)
Με ΔΥΤΙΚΑ
=.Νότια(&θΧ, &θΥ)
Με ΒΟΡΕΙΑ
=.Δυτικά(&θΧ, &θΥ)
Τέλος επιλογής
}
Συνάρτηση ΚοίταΠίσω(Ρομπότ ως *ΡΟΜΠΟΤ) {
κάνε ακέραιο θΧ, θΥ, Προσαν
Για Ρομπότ {
θΧ=.ΘέσηΧ
θΥ=.ΘέσηΥ
Προσαν=.Βλέπει
}
Επίλεξε Με Προσαν
Με ΝΟΤΙΑ
=.Βόρεια(&θΧ, &θΥ)
Με ΔΥΤΙΚΑ
=.Ανατολικά(&θΧ, &θΥ)
Με ΒΟΡΕΙΑ
=.Νότια(&θΧ, &θΥ)
Με ΑΝΑΤΟΛΙΚΑ
=.Δυτικά(&θΧ, &θΥ)
Τέλος επιλογής
}
Τμήμα Εμφάνισε {
αν .μεγΧ=0 ή .μεγΥ=0 τότε εξοδος
για ι=1 έως .μεγΥ
για κ=1 έως .μεγΧ
Επίλεξε Με .Κ(κ, ι)
Με >=ΕΜΠΟΔΙΟ
Κάλεσε Γεγονός "ΔεξιάΕμπόδιο", .Κ(κ, ι)
Με ΚΑΘΑΡΟ
Κάλεσε Γεγονός "ΔεξιάΚενό"
Τέλος Επιλογής
Αν .Μ(κ, ι)=ΚΑΤΙ Τότε Κάλεσε Γεγονός "ΔεξιάΚάτι"
επόμενο
Κάλεσε Γεγονός "ΑλλαγήΓραμμής"
επόμενο
}
Κλάση:
Τμήμα Κόσμος (Χ ως ακέραιος, Υ ως ακέραιος){
Πίνακας .Κ(1 εως Χ,1 εως Υ)=ΚΑΘΑΡΟ
Πίνακας .Μ(1 εως Χ,1 εως Υ)=ΚΑΘΑΡΟ
.μεγΧ<=Χ
.μεγΥ<=Υ
}
}
ΧΠ=20
ΥΠ=10
Ομάδα ΜεΓεγονότα Κόσμος=Κόσμος(ΧΠ, ΥΠ)
// Συναρτήσεις εξυπηρέτησης γεγονότων
Συνάρτηση Κόσμος_ΑλλαγήΓραμμής {
Θέση αρχηΓραμμήςΧ, αρχηΓραμμής+Α*ΓραμμήΚ
Κελί=0
Οριζόντιο=0
ΓραμμήΚ++
}
Συνάρτηση Κόσμος_ΔεξιάΚενό {
Βήμα Α
Κελί++
τοπικη χ=θεση.χ, ψ=θέση.ψ
Κύκλος Γέμισμα 15, Α/8,1, 15
Αν ΓραμμηΚ=1 Τότε
Θέση χ, ψ
Χαράξε 0, Α/2, 7
Αλλιώς.Αν ΓραμμήΚ=ΥΠ Τότε
Θέση χ, ψ
Χαράξε 0, -Α/2, 7
Αλλιώς
Θέση χ, ψ -Α/2
Χαράξε 0, Α, 7
Τέλος Αν
Αν Κελί=1 Τότε
Θέση χ, ψ
Χαράξε Α/2, 0, 7
Αλλιώς.Αν Κελί=ΧΠ τότε
Θέση χ, ψ
Χαράξε -Α/2, 0, 7
Αλλιώς
Θέση χ-Α/2, ψ
Χαράξε Α, 0, 7
Τέλος Αν
θέση χ, ψ
Οριζόντιο=0
Αν Υπάρχει(Προηγούμενη, Κελι) Τότε
Αφαίρεση Προηγούμενη, Κελι
θέση χ, ψ
Τέλος αν
}
Συνάρτηση Κόσμος_ΔεξιάΚάτι {
Κύκλος Γέμισμα 4, Α/8, 1, 4
}
Συνάρτηση Κόσμος_ΔεξιάΕμπόδιο {
Διάβασε Νέο Τι
Βήμα Α
Κελί++
τοπικη χ=θεση.χ, ψ=θέση.ψ
Αν ΓραμμηΚ=1 Τότε
Θέση χ, ψ
Χαράξε 0, Α/2, 7
Αλλιώς.Αν ΓραμμήΚ=ΥΠ Τότε
Θέση χ, ψ
Χαράξε 0, -Α/2, 7
Αλλιώς
Θέση χ, ψ -Α/2
Χαράξε 0, Α, 7
Τέλος Αν
Αν Κελί=1 Τότε
Θέση χ, ψ
Χαράξε Α/2, 0, 7
Αλλιώς.Αν Κελί=ΧΠ τότε
Θέση χ, ψ
Χαράξε -Α/2, 0, 7
Αλλιώς
Θέση χ-Α/2, ψ
Χαράξε Α, 0, 7
Τέλος Αν
θέση χ, ψ
Αν Οριζόντιο<>0 και Τι<ΑΚΡΟ τότε
Αν Κελί<ΧΠ τότε
Αν Οριζόντιο=-1 τότε
θέση χ-Α*.5, ψ+Α*.5
Πάχος 4 {Χάραξε Α, 0, 0}
Οριζόντιο=Κελί
αλλιώς
θέση χ-Α*.5, ψ+Α*.5
Πάχος 4 {Χάραξε Α, 0, 0}
Τέλος αν
Τέλος Αν
θέση χ, ψ
Αλλιώς
Οριζόντιο=-1
Τέλος αν
Αν Τι=ΑΚΡΟ Τότε
Αλλιώς.Αν Υπάρχει(Προηγούμενη, Κελι) Τότε
Αν Τι<>ΚΑΤΩΑΚΡΟ τότε
Αν ΓραμμήΚ<ΥΠ τότε
θέση χ+Α*.5, ψ-Α*.5
Πάχος 4 {Χάραξε 0, Α, 0}
Τέλος αν
Τέλος Αν
θέση χ, ψ
Αλλιώς
Προσθήκη Προηγούμενη, Κελί
Τέλος αν
}
// Ετοιμασία Κόσμου
για ι=1 έως 19
Κόσμος.ΒάλεΕμπόδιο ι, 5
επόμενο
Κόσμος.ΒάλεΑκρο 2, 5
για ι=2 έως 8
Κόσμος.ΒάλεΕμπόδιο 12, ι
Κόσμος.ΒάλεΕμπόδιο 15, ι
επόμενο
Κόσμος.ΒάλεΕμπόδιο 11, 4
Κόσμος.ΒάλεΑκρο 12, 2
Κόσμος.ΒάλεΑκρο 12, 5
Κόσμος.ΒάλεΆκρο 13, 5
Κόσμος.ΒάλεΚάτωΆκρο 15, 5
για ι=1 έως ΧΠ-1
Κόσμος.ΒάλεΕμπόδιο ι, 1
Κόσμος.ΒάλεΕμπόδιο ι, ΥΠ-1
επόμενο
για ι=1 έως ΥΠ-1
Κόσμος.ΒάλεΕμπόδιο 1, ι
Κόσμος.ΒάλεΑκρο 5, ι
αν ι>1 και ι<ΥΠ-1 Τότε
Κόσμος.ΒάλεΕμπόδιο 18, ι
Κόσμος.ΒάλεΔεξίΆκρο 19, ι
τέλος αν
επόμενο
Κόσμος.ΒάλεΑκρο 18, 2
Κόσμος.ΒάλεΚάτωΑκρο 18, 9
Κόσμος.ΒάλεΔεξίΑκρο 19, 5
//Κόσμος.ΒάλεΔεξίΑκρο 12, 9
//Κόσμος.ΒάλεΚάτωΑκρο 19, 5
Κόσμος.ΒάλεΚάτωΑκρο 12, 9
//Κόσμος.ΒάλεΑκρο 12, 9
Α=κλίμαξ.χ/(ΧΠ+2) ' υπολογισμός μεγέθους κελιού
Σκοπός=30
για ι=1 έως Σκοπός
Επανέλαβε
πουΧ=Τυχαίος(2, ΧΠ-1)
πουΥ=Τυχαίος(2, ΥΠ-1)
Μέχρι Όχι Κόσμος.ΕχειΚάτι(πουΧ, πουΥ)
Κόσμος.ΒάλεΚάτι πουΧ, πουΥ
επόμενο
Κατάσταση Προηγούμενη
Οριζόντιο=0
Κελί=0
ΓραμμήΚ=1
Οθόνη 15
Πένα 0
ΚάρελΔυτικά=Εικόνα(Κάρελ,5,,,4)
Καρέλ$=""
ΚαρέλΔυτικά$=""
Εικόνα Κάρελ (5) στο Καρέλ$
μεγ=(Α*0.8)/Εικόνα.Υ(Καρέλ$)*100
Εικόνα Κάρελ (5) στο Καρέλ$, μεγ
Εικόνα ΚάρελΔυτικά (5) στο ΚαρέλΔυτικά$, μεγ
Δύση()
Παίκτης 1 Κρύψε
Θέση ! ' μετακινεί την θέση των γραφικών στην θέση των χαρακτήρων.
Βήμα Α/2,Α*1.5
ρχ=θέση.Χ+Α+motion.x
ρψ=θέση.Υ+motion.y
αρχηΓραμμήςΧ=θέση.Χ
αρχηΓραμμής=θέση.Υ
Κόσμος.Εμφάνισε
Δρομέας !
Γρ=Γραμμή+1
// Καθαρίζουμε τη λίστα Προηγούμενη
Προηγούμενη=Λιστα
Δρομέας 0, 2
Φαρδιά 0
Πλάγια 1
Αναφορά {Αριστερό Πλήκτρο Ποντικιού: ο Κάρελ πάει Μπροστά, Δεξί Πλήκτρο Ποντικιού: ο Κάρελ στρίβει Αριστερά
Διάστημα: Ο Κάρελ παίρνει αν υπάρχει κάτι ή αφήνει (αν έχει κάτι στο σάκο και δεν υπάρχει κάτι στη θέση), Esc: Έξοδος
}
Πλάγια 0
Φαρδιά 1
Οθόνη 5, Γρ
Πένα 14
παλιόΧ=1
παλιόΥ=1
ΔείξεΡομποτ(1,1)
Ανανέωση
Ανατολή()
ΚαρελΡομπότ->Ρομποτ()
Για ΚαρελΡομπότ {
.Βλέπει=ΑΝΑΤΟΛΙΚΑ
.ΘέσηΧ=παλιόΧ
.ΘέσηΥ=παλιόΥ
}
Συνθήκες()
Ανανέωση
Σύνολο=0
// Κύρια Επανάληψη
Αναλυτής
καθε 1000/30 {
Αν Σύνολο=Σκοπός Τότε Έξοδος
Αν Πατημένο(27) τότε έξοδος
Αν Πατημένο(32) Τότε
Αν Κόσμος.ΈχειΚάτι(παλιόΧ, παλιόΥ) Τότε
ΒάλεΚενό(παλιόΧ, παλιόΥ)
Κόσμος.ΠάρεΚάτι παλιόΧ, παλιόΥ
Για ΚαρελΡομπότ {
.Εχει=ΥΠΑΡΧΕΙ_ΚΑΤΙ
.Πόσα_Εχει++
Σύνολο=.Πόσα_Εχει
}
Ανανέωση 1000
Οθόνη
Συνθήκες()
Ανανέωση 20
Αναμονή 300
Αλλιώς.Αν ΚαρελΡομπότ=>Εχει=ΥΠΑΡΧΕΙ_ΚΑΤΙ Τότε
ΒάλεΚάτι(παλιόΧ, παλιόΥ)
Κόσμος.ΒάλεΚάτι παλιόΧ, παλιόΥ
Για ΚαρελΡομπότ {
.Πόσα_Εχει--
Αν .Πόσα_Εχει=0 Τότε .Εχει=ΔΕΝ_ΥΠΑΡΧΕΙ_ΚΑΤΙ
}
Ανανέωση 1000
Οθόνη
Συνθήκες()
Ανανέωση 20
Αναμονή 300
Τέλος Αν
Αλλιώς.Αν Πατημένο(1) τότε
Αν Κόσμος.ΚοίταΜπροστά(ΚαρελΡομπότ, Αληθές) τότε
Για ΚαρελΡομπότ{
ΚίνησηΣτο(παλιόΧ, παλιόΥ, .ΘέσηΧ, .ΘέσηΥ)
(παλιόΧ, παλιόΥ) = (.ΘέσηΧ, .ΘέσηΥ)
}
Ανανέωση 1000
Οθόνη
Συνθήκες()
Ανανέωση 20
τελος αν
τελος αν
Αν Πατημένο(2) τότε
Για ΚάρελΡομπότ {
.ΚάνεΑριστερά
ΔείξεΡομπότΕικόνα(.Βλέπει)
}
Ανανέωση 1000
Οθόνη
Συνθήκες()
Ανανέωση 20
Αναμονή 300
Τέλος αν
}
Παίκτης 1 Κρύψε
Αν Σύνολο=Σκοπός Τότε
Οθόνη
Χρόνος=Στρογγ(Φόρτος/1000, 3)
Τύπωσε "Τα μάζεψες σε: ";Χρόνος;" δευτερόλεπτα"
Τέλος Αν
Διαφυγή Ναι
Τέλος
// Βοηθητικές Ρουτίνες
Ρουτίνα ΚίνησηΣτο(Χ,Υ, Χ1, Υ1)
τοπική μ=Μεγάλο.Σειράς(Απολ(Χ1-Χ), Απολ(Υ1-Υ))*4
τοπικη ΥΥ=(Υ1-Υ)/μ, ΧΧ=(Χ1-Χ)/μ
ενώ μ>0
Υ+=ΥΥ : Χ+=ΧΧ
Παίκτης 1, ρχ+Α*(Χ-1), ρψ+Α*(Υ-1)
Ανανέωση 30
Αναμονή 100
μ--
Τέλος ενώ
Παίκτης 1, ρχ+Α*(Χ1-1), ρψ+Α*(Υ1-1)
Τέλος Ρουτίνας
Ρουτίνα ΔείξεΡομποτ(Χ, Υ)
παλιόΧ=Χ
παλιόΥ=Υ
Παίκτης 1, ρχ+Α*(Χ-1), ρψ+Α*(Υ-1)
Παίκτης 1 Δείξε
Τέλος Ρουτίνας
Ρουτίνα Ανατολή()
Παίκτης 1 Με Καρέλ$, 5, 30
Τέλος Ρουτίνας
Ρουτίνα Δύση()
Παίκτης 1 Με ΚαρέλΔυτικά$, 5, 30
Τέλος Ρουτίνας
Ρουτίνα Βορράς()
Παίκτης 1 Με Καρέλ$, 5, 30, 90
Τέλος Ρουτίνας
Ρουτίνα Νότος()
Παίκτης 1 Με ΚαρέλΔυτικά$, 5, 30, 90
Τέλος Ρουτίνας
Ρουτίνα ΔείξεΡομπότΕικόνα(Πώς)
Επίλεξε Με Πώς
Με ΒΟΡΕΙΑ
Βορράς()
Με ΑΝΑΤΟΛΙΚΑ
Ανατολή()
Με ΔΥΤΙΚΑ
Δύση()
Με ΝΟΤΙΑ
Νότος()
Τέλος Επιλογής
Τέλος Ρουτίνας
Ρουτίνα ΒάλεΚάτι(Κελί, ΓραμμήΚ)
τοπικη χ1=θεση.χ, ψ1=θέση.ψ
Θέση αρχηΓραμμήςΧ+Α*Κελί, αρχηΓραμμής+Α*(ΓραμμήΚ-1)
Κελί++
Κάλεσε τοπικά Κόσμος_ΔεξιάΚάτι()
θέση χ1, ψ1
Τέλος Ρουτίνας
Ρουτίνα ΒάλεΚενό(Κελί, ΓραμμήΚ)
τοπικη χ1=θεση.χ, ψ1=θέση.ψ
Κελί--
Θέση αρχηΓραμμήςΧ+Α*Κελί, αρχηΓραμμής+Α*(ΓραμμήΚ-1)
Κάλεσε τοπικά Κόσμος_ΔεξιάΚενό()
θέση χ1, ψ1
Τέλος Ρουτίνας
Ρουτίνα Συνθήκες()
Αν Κόσμος.ΚοίταΜπροστά(ΚαρελΡομπότ) Τότε
Τύπωσε "Καθαρό Μπροστά, ";
Αλλιώς
Τύπωσε "Εμπόδιο Μπροστά, ";
Τέλος Αν
Αν Κόσμος.ΚοίταΔεξιά(ΚαρελΡομπότ) Τότε
Τύπωσε "Καθαρό Δεξιά,"
Αλλιώς
Τύπωσε "Εμπόδιο Δεξιά,"
Τέλος Αν
Αν Κόσμος.ΚοίταΑριστερά(ΚαρελΡομπότ) Τότε
Τύπωσε "Καθαρό Αριστερά, ";
Αλλιώς
Τύπωσε "Εμπόδιο Αριστερά, ";
Τέλος Αν
Αν Κόσμος.ΚοίταΠίσω(ΚαρελΡομπότ) Τότε
Τύπωσε "Καθαρό Πίσω"
Αλλιώς
Τύπωσε "Εμπόδιο Πίσω"
Τέλος Αν
Αν Κόσμος.ΈχειΚάτι(παλιόΧ, παλιόΥ) τότε
Τύπωσε "Κάτι Έχει Εδώ"
Αλλιώς
Τύπωσε "Τίποτα Δεν Έχει Εδώ"
Τέλος αν
Αν ΚαρελΡομπότ=>Εχει=ΔΕΝ_ΥΠΑΡΧΕΙ_ΚΑΤΙ Τότε
Τύπωσε "Τίποτα Δεν Έχει Ο Σάκος"
Αλλιώς
Τύπωσε "Κάτι Έχει Ο Σάκος"
Τέλος Αν
Τέλος Ρουτίνας
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
You can feel free to write any suggestion, or idea on the subject.