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!
 
Εκτός του ότι έφτιαξες ολόκληρο Interpreter, αυτό που μου έχει κάνει εντύπωση είναι το πού τα σκέφτεσαι τόσα διαφορετικά puzzle!
Αρκετά από αυτά είναι remake δικών μου παιχνιδιών, γραμμένα πολλά χρόνια πριν.
Οπότε τώρα, με τον interpreter που έγραψα, κάνω remaκe δικών μου παιχνιδιών. :thumbup:
Ενδεικτικά, αντιπαραθέτω λίγες φώτο.

Οι αρχικές ιδέες συνήθως προέρχονται από παζλ δημιουργούς, όπως η Andrea Gilbert, ο Erich Friedman, κ.α.
Ανάμεσα τους κάποιες δικές μου, και ορισμένα που περιμένουν, δεν τα έχω μεταφέρει ακόμα στην Hobby BASIC.


1730124221745.png
1730124282140.png


1730125607273.png
1730125625514.png


1730124361573.png
1730124341289.png


1730124480144.png
1730124451166.png
 
Το Coffee Project της ημέρας.
Ένα παζλ με τίτλο Tilox, γραμμένο στην Hobby BASIC, για το παράθυρο της κονσόλας.

It’s a puzzle maze, that as you move on it, it gets smaller. No looking back! Only forward thinkers and movers!
Use keyboard arrows to jump up, down, left and right. Hold down control key to make a bigger (2 units) jump.
Press space to restart level anytime, 14 levels to play.


Σκοπός σας, να σβήσετε όλα τα τετράγωνα.
Όταν περνάτε πάνω από ένα τετράγωνο, αυτό εξαφανίζεται.
Κρατώντας πατημένο το πλήκτρο Ctrl, κάνετε μεγαλύτερο άλμα.

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

1730552319954.png
1730552333787.png

Have fun with Hobby BASIC.
 
Το Mini Adventuring Squad είναι ένα νέο παζλ γραμμένο στην Hobby BASIC.
Είναι κλώνος ενός παιχνιδιού της PuzzleScript.

Τα ANSI γραφικά του παιχνιδιού είναι σχεδιασμένο στο PAINT, το σχεδιαστικό πρόγραμμα που είναι γραμμένο στην Hobby BASIC.
Χρειάστηκε 3 μέρες ελεύθερου χρόνου, είμαι όμως αρκετά ευχαριστημένος με το τελικό αποτέλεσμα.
Τα πρώτα 20 δωμάτια είναι έτοιμα, και fully playable.

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


Mini Adventuring Squad

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


Υπάρχουν 3 χαρακτήρες, ο πολεμιστής (Warrior), που οδηγεί την ομάδα. Μπορεί να σπρώχνει κιβώτια.

1730907144491.png 1730907228158.png


Η κλέφτρα (Rogue), μπορεί να ανοίξει πόρτες, αλλά προσοχή γιατί καταστρέφει τους βωμούς (οργή των Θεών και τα σχετικά).
Ακολουθεί πάντα τον πολεμιστή.

1730907313297.png 1730907341252.png 1730907395050.png


Ο Μάγος (Mage), -και μόνο αυτός-, μπορεί να ενεργοποιήσει τους χρυσούς βωμούς στο κάθε μπουντρούμι.
Ακολουθεί πάντα την κλέφτρα και τον πολεμιστή.

1730907540518.png 1730907577331.png 1730907785454.png


Windows 10 console screenshots.

1730908236529.png

1730908262132.png

Have fun with Hobby BASIC.
 
To Escape The Void είναι ένα μικρό και απλό Sokoban παιχνίδι, για την κονσόλα των Windows 10, γραμμένο στην Hobby BASIC.
Είναι κλώνος ενός παιχνιδιού της PuzzleScript.

Σκοπός σας, να τοποθετήσετε τα κουτιά στις σωστές θέσεις, είτε σπρώχνοντας, είτε τραβώντας τα.

Θα το βρείτε στον φάκελο EXAMPLES\GAMES\ETV.BAS

Windows 10 console screenshots.

1731194554476.png
1731194569409.png

Have fun with Hobby BASIC.
 
Περνάτε την καλύτερη νύχτα της ζωής σας.
Βγείτε έξω με τους φίλους σας και ζωγραφίστε τα πάντα.
Αλλά προσοχή στους φράχτες.


Τo Paint Box είναι ένα παζλ γραμμένο στην Hobby BASIC για την κονσόλα των Windows 10.
Είναι ένα διασκεδαστικό παζλ, με αυξανόμενο βαθμό δυσκολίας.
Μοιάζει στο Painter, αλλά παίζει πολύ διαφορετικά.

Θα το βρείτε στον φάκελο EXAMPLES\GAMES\WIN10\PAINTBOX.BAS

Windows 10 console screenshot.

1731416444146.png

Have fun with Hobby BASIC.
 
Και στα 2 links για download ο Chrome βγαζει μήνυμα "Dangerous download blocked".
 
Γεια χαρά Lord Vek,

Δυστυχώς, tο chrome θεωρεί λανθασμένα πως το zip είναι επικίνδυνο (δες εδώ).
Ο ευκολότερος τρόπος είναι να το προσπεράσεις με CTRL+J

Δεν φταίει η Hobby BASIC όμως για αυτό.
Φαίνεται, στην σημερινή εποχή των GB ένα εκτελέσιμο 65kb γραμμένο σε assembly, που δεν είναι και digital signed (που δεν έχω πληρώσει την MS δηλαδή να πάρω την ευλογία της), θεωρείται εκ των πραγμάτων ύποπτο.

Αν σε καθησυχάζει, μπορείς να τεστάρεις το zip στο VirusTotal.
Δίνει σκορ 4/96 που σημαίνει πως είναι καθαρό το download.

Μια σκέψη μου...
H Hobby BASIC πρόσφατα ξεπέρασε τα 4K downloads.
Μπορεί να φαίνονται λίγα, αν σκεφτεί κανείς πως μια εφαρμογή που καθαρίζει χόρτα έχει 100K downloads στο Play Store.
Δεν είναι όμως. είναι 4K downloads από assembly forum. Ένας χώρος που δεν συνήθως δεν βρίσκεις περαστικούς.
 
δηλαδή έγραψες μόνος σου σε γλώσσα μηχανής ολόκληρο interpreter; και όλα αυτά τα παζλ, coffee projects, όπως τα λες; μου φαίνεται απίθανο!
 
Σχεδόν 10 χρόνια του ελεύθερου μου χρόνου πάνω στο pc.
Ξεκίνησε σε άδειo notepad, έχει ξεπεράσει τις 15K γραμμές asm κώδικα.

Τα coffe project είναι ένας τρόπος να τεστάρω την γλώσσα.
Η κατασκευή τους απαιτεί συνήθως λίγες ώρες ελεύθερου χρόνου.
 
η μόνη μου παρόμοια εμπειρία είναι η γλώσσα Ladder που προγραμματίζαμε κάποια PLC στο ΤΕΙ που ήμουνα, που μοιάζει αρκετά με γλώσσα μηχανής, μάλιστα πέρασα το αντίστοιχο μάθημα με αρκετά καλό βαθμό. Κάτι παρόμοιο φαντάζομαι είναι οι microcontrollers που έχουν πλυντήρια κλπ. βέβαια εμάς ο κώδικας ήταν μια-δυο σελίδες.
 
Κρίνοντας από το μεράκι, τις τεχνικές γνώσεις και την αγάπη που έχεις στην φωτογραφία, λογικό να είχες καλό βαθμό σε "ηλεκτρολογικό κώδικα". :thumbup:
 
To coffee project της ημέρας.

Το Resin-Caster γραμμένο στην Hobby BASIC για το παράθυρο της κονσόλας.

Στo παζλ αυτό, όταν δύο ενώσεις συνδυάζονται, σχηματίζουν μια σκληρή μοβ ρητίνη.
Είναι ένα διασκεδαστικό παζλ, με αυξανόμενο βαθμό δυσκολίας.

Θα το βρείτε στον φάκελο EXAMPLES\GAMES\WIN10\RESIN.BAS

Windows 10 console screenshot.

1731524456569.png

Have fun with Hobby BASIC.
 
Πίσω
Μπλουζα