Τετάρτη 3 Νοεμβρίου 2021

Κάρελ το Ρομπότ (ως παιχνίδι - Ανανεώθηκε)

 Το παρακάτω πρόγραμμα το έγραψα σε μια μέρα, για να ετοιμάσω μιαν άλλη φορά τον διερμηνευτή της γλώσσας Karel, μια παιδική γλώσσα που εστιάζει σε ένα ρομπότ, το Karel.

Περί της γλώσσας υπάρχουν εδώ στοιχεία Documentation

Στην εικόνα φαίνονται οι οδηγίες που εμείς δίνουμε με πλήκτρα, και από κάτω φαίνονται οι συνθήκες όπως αλλάζουν κατά την μετακίνηση, ή την περιστροφή, ή το μάζεμα πραγμάτων.

Ήθελα να δω αν θα βρω τον τρόπο να φτιάχνω αυτόματα τα εμπόδια ώστε να σχηματίζουν τοίχους. Τελικά βρήκα με λίγο πειραματισμό ότι χρειάζονταν τέσσερεις Σημαίες. Μια δηλώνει το Εμπόδιο, όπου δυο συνεχόμενα είτε κάθετα είτε οριζόντια ενώνονται, μια άλλη είναι το Άκρο που σπάει τις ενώσεις πάνω και αριστερά, μια άλλη είναι το ΔεξίΆκρο, σπάει τις ενώσεις οριζόντια δεξιά, τέλος το ΚάτωΆκρο, σπάει τις ενώσεις κάθετα στο κάτω άκρο. Σε κάθε σημείο (ενδιάμεσα από τα κουτάκια) μπαίνει ένα από τα τέσσερα ή το ΚΑΘΑΡΟ, δηλαδή δεν έχει κάτι.  Υπάρχει άλλος πίνακας που κρατάει τα πραγματάκια που παίρνουμε ή αφήνουμε.  Το ρομπότ είναι sprite (διαφάνεια) σε δικό του επίπεδο, δεν γράφεται στη κύρια οθόνη.

Έχω αφήσει ένα πράγμα για τον αναγνώστη που θέλει να ασχοληθεί. Στις συνθήκες μπορούμε να δείχνουμε και το προσανατολισμό του Karel.

Κάποια στιγμή στο μέλλον θα φτιαχτεί βασει αυτού του προγράμματος ο απλός διερμηνευτής της γλώσσας Karel.



Ανοίξτε τη Μ2000 και κάντε επικόλληση σε ένα τμήμα έστω Α. Με σ α  ανοίγει ο διορθωτήςκαι αφού κάνουμε επικόλληση πατάμε Esc και εκτελούμε γράφοντας α και πατάμε Enter.

Δώστε Φόρμα 60, 24   για να ορίσετε το μέγεθος γραμμάτων - ορίζουμε αριθμό χαρακτήρων ανά γραμμή, και αριθμό γραμμών, οπότε επιλέγει το σύστημα το μέγεθος των χαρακτήρων για να ταιριάξει με τη ζητούμενη φόρμα.

// έκδοση 1.1
Φόρμα 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
      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
      AaCELqmRAAECBAgkFhAAEoMajgABAgQIlCAgAJTQJTUSIECAAIHEAgJAYlDDESBA
      gACBEgQEgBK6pEYCBAgQIJBYQABIDGo4AgQIECBQgoAAUEKX1EiAAAECBBILCACJ
      QQ1HgAABAgRKEBAASuiSGgkQIECAQGIBASAxqOEIECBAgEAJAgJACV1SIwECBAgQ
      SCwgACQGNRwBAgQIEChBQAAooUtqJECAAAECiQUEgMSghiNAgAABAiUICAAldEmN
      BAgQIEAgsYAAkBjUcAQIECBAoAQBAaCELqmRAAECBAgkFhAAEoMajgABAgQIlCAg
      AJTQJTUSIECAAIHEAgJAYlDDESBAgACBEgQEgBK6pEYCBAgQIJBYQABIDGo4AgQI
      ECBQgoAAUEKX1EiAAAECBBILCACJQQ1HgAABAgRKEBAASuiSGgkQIECAQGIBASAx
      qOEIECBAgEAJAgJACV1SIwECBAgQSCwgACQGNRwBAgQIEChBQAAooUtqJECAAAEC
      iQUEgMSghiNAgAABAiUICAAldEmNBAgQIEAgsYAAkBjUcAQIECBAoAQBAaCELqmR
      AAECBAgkFhAAEoMajgABAgQIlCAgAJTQJTUSIECAAIHEAgJAYlDDESBAgACBEgQE
      gBK6pEYCBAgQIJBYQABIDGo4AgQIECBQgoAAUEKX1EiAAAECBBILCACJQQ1HgAAB
      AgRKEBAASuiSGgkQIECAQGIBASAxqOEIECBAgEAJAgJACV1SIwECBAgQSCwgACQG
      NRwBAgQIEChBQAAooUtqJECAAAECiQUEgMSghiNAgAABAiUICAAldEmNBAgQIEAg
      sYAAkBjUcAQIECBAoAQBAaCELqmRAAECBAgkFhAAEoMajgABAgQIlCAgAJTQJTUS
      IECAAIHEAgJAYlDDESBAgACBEgQEgBK6pEYCBAgQIJBYQABIDGo4AgQIECBQgoAA
      UEKX1EiAAAECBBILCACJQQ1HgAABAgRKEBAASuiSGgkQIECAQGIBASAxqOEIECBA
      gEAJAgJACV1SIwECBAgQSCwgACQGNRwBAgQIEChBQAAooUtqJECAAAECiQUEgMSg
      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
      EAAqbLopEyBAgAABAcA5QIAAAQIEKhQQACpsuikTIECAAAEBwDlAgAABAgQqFBAA
      Kmy6KRMgQIAAAQHAOUCAAAECBCoUEAAqbLopEyBAgAABAcA5QIAAAQIEKhQQACps
      uikTIECAAAEBwDlAgAABAgQqFBAAKmy6KRMgQIAAAQHAOUCAAAECBCoUEAAqbLop
      EyBAgAABAcA5QIAAAQIEKhQQACpsuikTIECAAAEBwDlAgAABAgQqFBAAKmy6KRMg
      QIAAAQHAOUCAAAECBCoUEAAqbLopEyBAgAABAcA5QIAAAQIEKhQQACpsuikTIECA
      AAEBwDlAgAABAgQqFBAAKmy6KRPYRWBzl4/7cFkC+lhWv0arVgAYjd6BCWQncFt2
      FSmoi4A+dlGrcB8BoMKmmzKBXQSu3eXjPlyWgD6W1a/Rqp2NdmQHJkAgN4GnhoL+
      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.