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
Αντικαθιστούμε τον αριθμό 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
Ανακατεύουμε 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
Εμφανίσεις των αριθμών 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
Τυπώνoυμε τα περιεχόμενα μιας δισδιάστατης διάταξης. Με indent 3.
Κάθε στοιχείο είναι ένας τυχαίος αριθμός από το 0 έως το 99.
Κώδικας:
dim a[10,25]
print "Print 2D array of random numbers"
print
a[].RND 100
a[].OUT 3
inkey
Με indent 5.
Η εντολή διάταξης 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
Αν η παράμετρος της εντολή διάταξης 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
Ας δούμε 2 νέα παζλ γραμμένα στην Hobby BASIC για το παράθυρο της κονσόλας.
Πρώτα ένα coffe project, το FATIGUED.
Περπατάτε σε έναν λαβύρινθο και προσπαθείτε να φτάσετε στον στόχο χωρίς να κουραστείτε.
Δεν δίνω περισσότερα στοιχεία, αφού μέρος του παζλ είναι να ανακαλύψετε μόνοι σας τον τρόπο παιξίματος.
Το πρόγραμμα βρίσκεται στον φάκελο EXAMPLES\GAMES\FATIGUED.BAS
Το FLODD είναι ένα νέο παζλ για την Hobby BASIC.
Για να παίξετε Flood, κάντε κλικ με το ποντίκι σε ένα τετράγωνο.
Η επάνω αριστερή γωνία και όλα όσα συνδέονται με αυτήν, θα γεμίσει με το χρώμα του τετραγώνου που κάνατε κλικ.
Κάνοντας κλικ σε ένα τετράγωνο ίδιου χρώματος με αυτό της επάνω αριστερής γωνίας δεν έχει κανένα αποτέλεσμα,
και επομένως δεν μετράει ως κίνηση. Δεν είναι Same game, έχει εντελώς διαφορετικό τρόπο παιξίματος.
Υπάρχει συγκεκριμένος αριθμός κινήσεων για το κάθε επίπεδο.
Το πρόγραμμα βρίσκεται στον φάκελο EXAMPLES\GAMES\FLOOD.BAS
Have fun with
Hobby BASIC.