Hobby Basic, ένας μικρός διερμηνευτής για την κονσόλα των Windows

Το 3X3 RBG TILT είναι ένα παζλ που έπαιξα αρχικά online, και μου άρεσε πολύ.
Η έκδοση μου, γραμμένη στην Hobby BASIC για την κονσόλα των Windows.

Το κόκκινο, το μπλε και το πράσινο πρέπει να φτάσουν στον δικό τους στόχο ταυτόχρονα.
Tilt the tray and let the fun begin.

Χρησιμοποιήστε τα βελάκια πληκτρολογίου για να παίξετε.
Πατήστε το spacebar για επανεκκίνηση του δωματίου.
Πατήστε 2 για να μεταβείτε στο επόμενο δωμάτιο.
Πατήστε 1 για το προηγούμενο δωμάτιο.

Το πρόγραμμα βρίσκεται στον φάκελο EXAMPLES\GAMES\RGBTILT.BAS

1724591294578.png

Have fun with Hobby BASIC.
 
Ένα νέο παζλ, για την κονσόλα των Windows, γραμμένο στην Hobby BASIC.

Στο Thunderball, σκοπός είναι να φέρετε τις μπάλες δίπλα δίπλα, οριζόντια.
Χρησιμοποιήστε τα λευκά μπλοκ, και τα ίχνη που αφήνουν οι μπάλες στο πέρασμα τους.
Προσοχή στην ηλεκτροφόρα περίφραξη !

Χρησιμοποιήστε τα βελάκια πληκτρολογίου για να παίξετε.
Πατήστε το spacebar για επανεκκίνηση του επιπέδου.
Πατήστε 2 για να μεταβείτε στο επόμενο επίπεδο.
Πατήστε 1 για το προηγούμενο επίπεδο.
Πατήστε 4 για να αναιρέσετε μια κίνηση.

Το πρόγραμμα βρίσκεται στον φάκελο EXAMPLES\GAMES\THUNDERBALL.BAS

1725009440712.png

1725010086470.png

Have fun with Hobby BASIC.
 
Τελευταία επεξεργασία:
Pacman για την κονσόλα των Windows 10 γραμμένο στην Hobby BASIC, με ANSI γραφικά και ASCII χαρακτήρες.
Απαιτεί την τελευταία έκδοση 1.9.6 του διερμηνευτή.

Γραμμένο με απλό τρόπο, ωστόσο η έκδοση 1.0 έχει φαντάσματα που φυλακίζονται, φοβούνται και τρώγονται,.
Ξέρουν που βρίσκεται ο Pacman και πάντα πηγαίνουν προς τα εκεί.
Score, hi score, extra ζωή, και original ήχοι.

Λείπει το φρουτάκι και η συνάντηση, ίσως προστεθούν σε ένα update του κώδικα άλλη στιγμή.

1726587230546.png
1726587413565.png

Have fun with Hobby BASIC.
 
Ένα νέο παζλ για την κονσόλα των Windows 10, γραμμένο στην Hobby BASIC, το Painter.

Σκοπός είναι να βάψετε το πάτωμα κίτρινο.
Για να γίνει αυτό, θα πρέπει να περάσει από επάνω του η κόκκινη, και η πράσινη βούρτσα (να το περάσετε 2 χέρια δηλαδή).
Η ανάμειξη των δύο βασικών χρωμάτων (κόκκινο και πράσινο) δίνουν το κίτρινο.
Οι βούρτσες έρχονται σε διάφορα σχήματα.

To Painter είναι ένα διασκεδαστικό παζλ, με αυξανόμενο βαθμό δυσκολίας.
Βρίσκεται στον φάκελο EXAMPLES\GAMES\PAINTER.BAS



Have fun with Hobby BASIC.
 
Ένα νέο παζλ για την κονσόλα των Windows 10, γραμμένο στην Hobby BASIC, το Threesome.

Καλώς ήρθατε στο παζλ Threesome (τρίο).
Εσείς και δύο φίλοι είστε εγκλωβισμένοι σε ένα κτίριο.
Οι τρεις σας θέλετε να μετακινηθείτε σε άλλο δωμάτιο.
Πρέπει να συνεργαστείτε για να πετύχετε τον στόχο σας.
Για να γίνει αυτό, πρέπει να οδηγήσετε τους τρεις παίκτες στις γκρίζες θέσεις.
Τοποθετήστε έναν παίκτη σε έναν έγχρωμο διακόπτη για να ανοίξετε μια πόρτα του αντίστοιχου χρώματος.
Δύο πόρτες του ίδιου χρώματος χρειάζονται 2 παίκτες σε αντίστοιχους διακόπτες.
Μπορείτε επίσης να μετακινήσετε έναν παίκτη ανάμεσα στις πόρτες και να τον αφήσετε εκεί.

To Threesome είναι ένα παζλ που έγραψα πριν 20 χρόνια στο flash, και αργότερα στην iBasic.
Η έκδοση που παρουσιάζω σήμερα, είναι γραμμένη στην δική μου γλώσσα, την Hobby BASIC.

Βρίσκεται στον φάκελο EXAMPLES\GAMES\THREESOME.BAS



Have fun with Hobby BASIC.
 
Hobby BASIC έκδοση 1.9.9.
Ένα νέο update στον διερμηνευτή.

Το σετ εντολών για τις διατάξεις μεγάλωσε.
Προστέθηκαν νέες εντολές με σκοπό να κάνουν πιο απλή (και πιο γρήγορη) την δουλειά του προγραμματιστή.
Τα παραδείγματα δείχνουν την διαφορά ταχύτητας μεταξύ ενός βρόγχου FOR της BASIC, και μιας εντολής διάταξης.

Κώδικας:
    !  The following command-list performs some basic operations on arrays.
    !  Some of them, such as REPLACE, FILL, RND, SET, COUNT, SORT and SORTED,
    !  only deal with integer arrays, while the FILE command on string arrays only.

    !  a[].ZERO                 array zero
    !  a[].SHUFFLE              array shuffle
    !  a[].REVERSE              array reverse
    !  a[].COPY b[]             copy array b to array a
    !  a[].SWAP b[]             swap two arrays
    !  a[].REPLACE a,b          replace array values
    !  a[].COMPARE b[]          returns zero on success in V0
    !  a[].FILL value           fill array with identical values
    !  a[].RND max              fill array with random values 0 to max-1
    !  a[].SET start            fill array with consecutive values
    !  a[].COUNT x              count all the x values, result in V0
    !  a[].DELETE idx [,...]    delete values from the array
    !  a[].INSERT idx,v [,...]  insert values into the array
    !  a[].SORTA                array sort ascending
    !  a[].SORTD                array sort descending
    !  a[].SETV                 array dimensions in V0 V1 V2
    !  a[].OUT [indent]         print array contents
    !  a$[].FILE dpath$         directory list into array V0
    !  a$[].FILE fpath$         read file lines into array V0


Γεμίζουμε μια διάταξη 100.000 στοιχείων με τυχαίους αριθμούς από το 0 έως το 99.

Στην πρώτη περίπτωση, ο χρόνος που χρειάστηκε ο διερμηνευτής ήταν 640 ms.
Στην δεύτερη περίπτωση είναι τόσο μικρός, που δεν καταγράφηκε αλλαγή (χωρίς να σημαίνει πως δεν υπάρχει).

Κώδικας:
    dim a[100000]
    print "Fill array of 100000 elements with random numbers from 0 to 99"

Κώδικας:
    t1 = PEEK(0)
    for i = 0 to 99999
        a[i] = RND(100)
    next
    t2 = PEEK(0)

    print "Time taken: ",t2-t1,"ms"
    inkey

Κώδικας:
    t1 = PEEK(0)
    a[].RND 100
    t2 = PEEK(0)

    print "Time taken: ",t2-t1,"ms"
    inkey

1729590165459.png



Αντικαθιστούμε τον αριθμό 0 με τον αριθμό 1, σε μια διάταξη 100.000 στοιχείων.

Παρατηρήστε την διαφορά ταχύτητας μεταξύ του βρόγχου FOR, και της εντολής διάταξης REPLACE.

Κώδικας:
    dim a[100000]
    print "Replace 0 with 1 in an array of 100000 elements"

Κώδικας:
    a[].RND 2

    t1 = PEEK(0)
    for i = 0 to 99999
        if a[i] = 0 then a[i] = 1
    next
    t2 = PEEK(0)

    print "Time taken: ",t2-t1,"ms"
    inkey

Κώδικας:
    a[].RND 2

    t1 = PEEK(0)
    a[].REPLACE 0,1
    t2 = PEEK(0)

    print "Time taken: ",t2-t1,"ms"
    inkey

1729591128384.png



Ανακατεύουμε 1000 φορές έναν πίνακα 100.000 στοιχείων.

Κάθε στοιχείο είναι ένας τυχαίος αριθμός από το 0 έως το 999.

Κώδικας:
    dim a[100000]
    print "Shuffle 1000 times the elements of a 100000-sized array"

Κώδικας:
    a[].RND 1000

    t1 = PEEK(0)
    times 1000  a[].SHUFFLE
    t2 = PEEK(0)

    print "Time taken: ",t2-t1,"ms"
    inkey

1729591661162.png



Εμφανίσεις των αριθμών 1 έως 20 σε έναν πίνακα 100000 στοιχείων.

Κάθε στοιχείο είναι ένας τυχαίος αριθμός από το 0 έως το 999.

Κώδικας:
    dim a[100000]
    
    print "Occurrences of the numbers 1 to 20 in an array of 100000 elements."
    print
    
    a[].RND 1000
    for i = 1 to 20
        a[].COUNT i
        print "Number ",i," appears ",V0," times"
    next
    inkey

1729603744241.png



Τυπώνoυμε τα περιεχόμενα μιας δισδιάστατης διάταξης. Με indent 3.

Κάθε στοιχείο είναι ένας τυχαίος αριθμός από το 0 έως το 99.

Κώδικας:
    dim a[10,25]
    print "Print 2D array of random numbers"
    print

    a[].RND 100
    a[].OUT 3
    inkey

1729592419838.png

Με indent 5.

1729592441250.png



Η εντολή διάταξης FILE φορτώνει σε μια μονοδιάστατη διάταξη συμβολοσειράς ένα αρχείο κειμένου.

Αν οι γραμμές του αρχείου είναι περισσότερες από το μέγεθος της διάταξης, το φόρτωμα σταματάει.

Κώδικας:
    dim a$[100]

    print "Read file lines into array (nlines read in V0)"
    print : pen 2

    a$[].FILE PATH("EXAMPLES/RND.BAS")

    for i = 0 to V0-1
        print a$[i]
    next
    inkey

1729592910568.png



Αν η παράμετρος της εντολή διάταξης FILE είναι φάκελος, η εντολή φορτώνει τον κατάλογο του φακέλου στην διάταξη.

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

Κώδικας:
    dim a$[100]

    print "Directory list into array  (nfiles read in V0)"
    print

    a$[].FILE PATH("EXAMPLES")

    for i = 0 to V0-1
        print a$[i]
    next
    inkey

1729593739360.png



Ας δούμε 2 νέα παζλ γραμμένα στην Hobby BASIC για το παράθυρο της κονσόλας.

Πρώτα ένα coffe project, το FATIGUED.

Περπατάτε σε έναν λαβύρινθο και προσπαθείτε να φτάσετε στον στόχο χωρίς να κουραστείτε.
Δεν δίνω περισσότερα στοιχεία, αφού μέρος του παζλ είναι να ανακαλύψετε μόνοι σας τον τρόπο παιξίματος.

Το πρόγραμμα βρίσκεται στον φάκελο EXAMPLES\GAMES\FATIGUED.BAS

1729597284562.png



Το FLODD είναι ένα νέο παζλ για την Hobby BASIC.

Για να παίξετε Flood, κάντε κλικ με το ποντίκι σε ένα τετράγωνο.

Η επάνω αριστερή γωνία και όλα όσα συνδέονται με αυτήν, θα γεμίσει με το χρώμα του τετραγώνου που κάνατε κλικ.
Κάνοντας κλικ σε ένα τετράγωνο ίδιου χρώματος με αυτό της επάνω αριστερής γωνίας δεν έχει κανένα αποτέλεσμα,
και επομένως δεν μετράει ως κίνηση. Δεν είναι Same game, έχει εντελώς διαφορετικό τρόπο παιξίματος.
Υπάρχει συγκεκριμένος αριθμός κινήσεων για το κάθε επίπεδο.

Το πρόγραμμα βρίσκεται στον φάκελο EXAMPLES\GAMES\FLOOD.BAS

1729596085092.png

1729596147411.png

Have fun with Hobby BASIC.
 
Το Coffee Project της ημέρας.
Ένα παζλ με τίτλο Chain Reaction, γραμμένο στην Hobby BASIC, για το παράθυρο της κονσόλας.

Σκοπός σας να περάσετε πάνω από όλα τα τετράγωνα του πίνακα.
Κάθε τετράγωνο πρέπει να ταιριάζει με το προηγούμενο, είτε σε σχήμα είτε σε χρώμα (ή και στα δύο).

Μπορείτε να μετακινηθείτε οριζόντια ή κάθετα οποιαδήποτε απόσταση (κάνοντας κλικ).
Η θέση εκκίνησης είναι σημειωμένη, αλλά το τετράγωνο τερματισμού μπορεί να είναι οπουδήποτε.

Το πρόγραμμα βρίσκεται στον φάκελο EXAMPLES\GAMES\CHAIN.BAS

1730115277804.png

1730115373406.png

Have fun with Hobby BASIC.
 
Εκτός του ότι έφτιαξες ολόκληρο Interpreter, αυτό που μου έχει κάνει εντύπωση είναι το πού τα σκέφτεσαι τόσα διαφορετικά puzzle!
 
Πίσω
Μπλουζα