■ ism OCOù^ÙJUUUU, sTuiìlmlìk Ki&mija cA''']^ Wk)M sUsii ^ tk- Mtfrnfo: iWlA Tmf/jeY ?/ ! * imr 11 * **'*- *1 'w /l .v^nsv > ì ^-fv y vRnfihiMnr • DI JACQUES DECONCHAT 102 programmi per ATARI 600 XL, 800 XL, 130 XE DELLO STESSO EDITORE Volumi pubblicati D. A. Lien - Dizionario del Basic - Enciclo¬ pedia del linguaggio Basic J. Boisgontier - S. Brebion • Il Basic per tutti - Iniziazione + programmi D.-J. David - La scoperta del Commodo¬ re 64 - Voi. 1. Introduzione al Basic D.-J. David - La pratica del Commodore 64 - Voi. 2. Periferiche e gestione dei file D.-J. David - La pratica del Commodore 64 - Voi. 3. Linguaggio macchina e assem¬ bler del 6502 J. Deconchat -102 programmi per Com¬ modore 64 J. Boisgontier - Commodore 64: metodi pratici J.-F. Séhan - Superglochl per il Commo¬ dore 64. 30 programmi In Basic. J. Boisgontier, S. Brebion, G. Foucault - Il Commodore 64 per tutti D.J. David - Chiavi per II Commodore 64 V.C. Grandis, J.-F. Séhan • Il Commodo¬ re 64 in famiglia X. Linant de Beflefonds - La pratica dello ZX Spectrum • Voi. 1. Basic approfondi- to e introduzione al linguaggio macchina M. Henrot - La pratica deilo ZX Spectrum - Voi. 2. Programmazione In linguaggio macchina J.-F. Séhan - Chiavi per lo ZX Spectrum J. Lévy - Esercizi per lo ZX Spectrum J.-F. Séhan - Alla ribalta: lo ZX Spectrum M. Henrot - J. Boisgontier • Lo ZX. Spec¬ trum per tutti J. Deconchat - 102 programmi per ZX Spectrum e ZX 81 C. Galais - Vademecum per Applesoft J. Boisgontier - L’Apple e i suoi files - Voi. 1. Metodi pratici B. De Merly - Guida per l’Apple - Voi. 1. L’Apple standard B. De Merly - Guida per l’Apple - Voi. 2. Le estensioni B. De Merly • Guida per l’Apple - Voi. 3. Le applicazioni F. Lévy - Esercizi per l’Apple II, Il plus, Ile, Ile J. Boisgontier - 36 programmi per Apple II, Ile, Il plus. Ile N. Bréaud-Pouliquen - La pratica dell’Ap¬ ple Il - Voi. 1. Periferiche e gestione dei file N. Bréaud-Pouliquen - D.-J. David - La pra¬ tica dell’Apple II, Il plus. Ile - Voi. 2. Lin¬ guaggio macchina e assembler del 6502 J. Boisgontier - Apple Ile, Ile per tutti - Iniziazione più programmi J. Deconchat - 102 programmi per Ap¬ ple II, Il plus, Ile, Ile J. Rouault, P. Girard - Pascal UCSD per Apple II - Voi. 1 A. Palaci, H. Thiriez - Multiplan per Apple II plus e Apple Ile J. Deconchat -102 programmi per MSX J.-F. Séhan - MSX In famiglia J. Boisgontier - Basic MSX. Metodi pratici C. Bardon, B. De Merly - Giochi sul Phi¬ lips C7420 Videopac + V.C. Grandis, J. Deconchat -102 program¬ mi per Philips C7420 Videopac + J.P. Richard - La scoperta del PC 1500 J.-L. Marx, A. Thibault • Chiavi per Lotus 1-2-3 A. Pinaud - Programmare In Forth A. Pinaud - CP/M passo dopo passo Y. Dargery - Memento per MS-DOS A. Pinaud - MS-DOS passo dopo passo M. Thibault - Chiavi per MULTIPLAN J.-P. Blanger • Modelli di espressione gra¬ fica C. Nowakowski • Programmare in C Volumi di prossima pubblicazione N. Bréaud-Pouliquen - Chiavi per Apple ile H. Thiriez - Multiplan per IBM PC H. Thiriez, G. Santraille - Multiplan per Macintosh J. Deconchat - 102 Programmi per AM- STRAD J. Boisgontier, B. Cesard - Basic AM- STRAD N. Bréaud-Pouliquen - Le risorse del¬ l’Apple Ile J. Rouault, P. Girard - Pascal UCSD per Apple - Voi. 2 F. Verscheure • PRODOS su Apple Ile e Apple Ile P. Brandeis, F. Blanc • Assembler e pe¬ riferiche MSX J.P. Richard - La scoperta del PC 1251 D.A. Lien - Dizionario del Basic IBM JACQUES DECONCHAT Adattamento di ALAIN LAVENIR 102 programmi per ATARI 600 XL, 800 XL, 130 XE Traduzione di ANDREA PANAGIA Editsi - Editoriale per le scienze informatiche • S.r.l. MILANO 1985 Titolo originale dell’opera 102 PROGRAMMES POUR ATARI (400, 600, 600XL, 800 et 800XL) © 1984 - Editions du P.S.I., BP 86, 77402 LAGNY-SUR-MARNE CEDEX (France) Vi segnaliamo che in quest’opera appaiono nomi e parole che sono marchi registrati © 1985 - Editsi - Editoriale per le scienze informatiche - S.r.l. Via G. Pascoli, 70/3 - Milano Printed in Italy Sommario Prefazione 1 Organizzazione dell’opera 3 LIVELLO I 5 Istruzioni elementari 7 Il numero misterioso 12 Cubo 14 Caldo, freddo 16 Fiammiferi 18 Fiammiferi in molti 20 Calendario perpetuo 22 Battaglia navale 24 Golf 26 Solfeggio 28 Blackjack 30 Pari - Dispari 32 Indovina un numero 34 Il gioco di Wytthof 36 Rimbalzi 38 Jackpot 40 Roulette 42 Corridoi 44 Scacchiera 46 Il gioco della fava 48 Gioco dell’oca casuale 50 LIVELLO 2 53 Dimensionamento di un array. Ricerca di un elemento in un array e in una stringa. L’istruzione DATA 54 Dado truccato 56 Visioni 58 421 60 L’elettricista pazzo 62 La corsa al 20 64 Musica 66 VI Sommario Cavallina 68 Lettere 70 Macchina delle parole 72 Spia 74 Attaccate i vagoni 76 Lancio di un dado truccato 78 Gioco con le carte 80 Il gioco di Marienbad 82 L’indesiderato 84 Componi 86 Giorno della settimana 88 Gioco della vita 90 LIVELLO 3 93 Manipolazione di stringhe e grafici ad alta risoluzione 94 Un dado 96 Più grande, più piccolo 98 Ordine 100 L’impiccato 102 Briscola 104 Taccuino di calcolo 106 Impiccato inverso 108 Nicomat 110 Corsa di cavalli 112 Attraverso 114 Mastermind 116 Idem 118 Orologio 120 Regine sulla scacchiera 122 Ripetizioni 124 Parole 126 Permutazioni 128 Bridge 130 Hanoi 132 Rombi 134 Matteo 136 Il lupo e gli agnelli 138 LIVELLO 4 141 Le tecniche d’animazione elementare - I caratteri grafici 142 Lancio di dadi 144 Tombola 146 La bomba 148 Lavagna magica 150 Pubblicità 152 Cappelli 154 Combattimento aereo 156 Disegno di dadi 158 Il gioco del missile 160 La scimmia 162 Sommarlo VII Il gioco del 15 164 Destrezza 166 Sottomarino 168 Zombi 170 Diago 172 Recomat 174 Caccia al sottomarino 176 Tastiera 178 LIVELLO 5 181 Le tecniche particolari all’ATARI 183 Calcolatrice 184 Smokey 186 Evasione 188 Corsa automobilistica 190 Poker 192 Scacchi 194 Pericolo spaziale 196 Tic Tac Toe 198 Dama 200 Anagrammi 202 Uova 204 Quattro a quattro 206 "Puzzle” di lettere 208 Bersagli 210 Gocce 212 Ostacoli 214 Catture nello spazio 216 Anomalia 218 Tanti in uno 220 Percorso del cavaliere 222 Muro di mattoni 224 Othello 226 "Puzzle” dispettoso 228 Super scorrimento 230 Si ringrazia per la collaborazione prestata TATARI ITALIA S.p.A. di Cinisello Balsamo (MI) Prefazione Troverete in questo libro più di cento programmi (essenzialmente giochi), redatti in Basic Atari per i computer ATARI. La maggior parte di questi programmi saranno d’altronde utilizzabili senza grosse modifiche sugli al¬ tri calcolatori che utilizzano un Basic come linguaggio di programma¬ zione. I programmi proposti sono molto corti e l’ordine nel quale sono presentati non è certamente arbitrario: si tratta di iniziare il lettore, tramite la realiz¬ zazione e l’utilizzazione dei programmi di giochi di buona qualità, alla co¬ noscenza e alla padronanza progressiva di questo strumento straordinario che è un personal computer. La brevità dei programmi proposti permetterà di batterli facilmente, sen¬ za il rischio di commettere degli errori. Potrete naturalmente utilizzarli come base per la realizzazione di programmi più impegnativi. I programmi sono abbondantemente commentati per aiutarvi a capire il loro funzionamento e le pagine di presentazione vi permetteranno di ritro¬ vare rapidamente le caratteristiche proprie delle istruzioni Basic che uti¬ lizzano. I programmi non utilizzano tutte le possibilità di un apparecchio come l’A- tari. II livello 5 dà un’idea sull’utilizzazione di alcune tecniche abbastanza par¬ ticolari che potranno essere riprese con profitto per migliorare i program¬ mi precedenti. Troverete, alla fine di ogni presentazione, qualche suggerimento per possi¬ bili migliorie, o per modifiche che potrebbero rendere il gioco proposto più attraente, più dinamico o più completo. Organizzazione dell’opera I giochi sono classificati in ordine crescente di difficoltà seguendo 5 livelli: • Il livello 1 permette lo studio delle istruzioni elementari del linguaggio Basic: LET (opzionale) PRINT, INPUT, IF. . THEN, FOR... NEXT, GOTO, GOSUB, ON.. .GOTO, ON. . .GOSUB. • Al livello 2, si utilizzeranno le istruzioni di gestione e di manipolazione degli elementi di un array e la ricerca di un elemento in una stringa: DIM, R(I), READ, DATA, RESTORE. • Al livello 3 si utilizzerà la serie completa delle istruzioni di utilizzo di stringhe di caratteri e le istruzioni che permettono la visualizzazione e la grafica con differenti livelli di risoluzione: COLOR, PLOT, GRAPHICS, DRAWTO. • Il livello 4 tratta un’istruzione molto particolare, che facilita la realizza¬ zione di giochi interattivi: GET ed esplora le risorse di POKE. • Per finire, il livello 5 ci farà scoprire le istruzioni più specifiche: LOCA¬ TE, TRAP, POP e costituisce il risultato dell’opera. Ogni gioco è presentato in maniera sistematica con una corta descrizione introduttiva, seguita dallo studio dettagliato di ognuna delle linee impor¬ tanti del programma. Seguono le indicazioni necessarie al buon funziona¬ mento del gioco e alcuni suggerimenti per estendere o migliorare il gioco proposto. Segue, infine, il listato del programma funzionante su ATARI, ottenuto su una stampante ATARI per garantire contro rischi di malfun¬ zionamento. LIVELLO 1 N. Nome del programma Tema e particolarità 1 Il numero misterioso Gioco di deduzione, per 1 giocatore. Vari livelli 2 Cubo Gioco di disegno: prospettiva sullo scher¬ mo 3 Caldo, freddo Logica e fortuna, per 1 giocatore. Vari li¬ velli 4 Fiammiferi Gioco di riflessione contro il calcolatore 5 Fiammiferi in molti Gioco di riflessione e di strategia, vari giocatori 6 Calendario perpetuo Creazione di un calendario mese per mese 7 Battaglia navale Una sola nave da trovare, con qualche particolarità 8 Golf Un percorso con 18 buche, per 1 solo gio¬ catore 9 Solfeggio Imparate il solfeggio con l’aiuto del cal¬ colatore 10 Blackjack Gioco di fortuna, il calcolatore tiene banco 11 Pari-Dispari Un gioco da Casinò in tre tempi per 1 o più giocatori 12 Indovina un numero Un gioco molto facile, per 1 o più gioca¬ tori 13 Il gioco di Wytthof Un gioco di riflessione abbastanza sem¬ plice, per due giocatori 14 Rimbalzi Un gioco di abilità molto visivo, per 1 giocatore 15 Jackpot Un gioco di fortuna, per 1 giocatore 16 Roulette Una simulazione elegante del famosissi¬ mo gioco 17 Corridoi Un gioco di logica da scoprire 18 Scacchiera Una base grafica per le vostre creazioni 19 Il gioco della fava Un gioco di riflessione, per 2 giocatori 20 Gioco dell’oca casuale Un vecchissimo gioco, rivisto e corretto dal calcolatore, per 2 giocatori. Istruzioni elementari Tratteremo qui solo le istruzioni fondamentali, o istruzioni di programma¬ zione; molti altri comandi, o funzioni particolari, saranno utilizzati quan¬ do occorre. Per esempio: — RND(l) per ottenere un numero casuale tra 0 e 1. — INT per prendere la parte Intera di un risultato. — REM per mettere un commento. — END per terminare un programma. — DIM per riservare uno spazio a una stringa di caratteri. Le istruzioni fondamentali della programmazione, utilizzate già al livello 1 e presenti praticamente in tutti i programmi sono: LET (opzionale); PRINT; INPUT; GOTOI_I; IFI_ITHENI_I; FOR. . NEXT; GOSUB. . RETURN. ossia solamente sette istruzioni di base (e due istruzioni derivate) che esa¬ mineremo ora più dettagliatamente. N.B. Tutte le istruzioni hanno una forma abbreviata che facilita la battitu¬ ra: bastano generalmente le prime due lettere dell’istruzione, seguite da un punto: per esempio PR. = PRINT. L'ISTRUZIONE LET, O ISTRUZIONE DI ASSEGNAZIONE È l’istruzione per eccellenza dei linguaggi di programmazione evoluti, vi¬ sto che il suo ruolo essenziale è di permettere, per il programmatore, una gestione trasparente della memoria. Questo significa, in pratica, che per inserire una quantità in memoria, per esempio 12, non è necessario sapere in quale locazione di memoria la si deporrà: basta assegnarle un nome au¬ torizzato, col quale la quantità sarà in seguito ritrovata e manipolata. — Se la quantità è numerica, il nome sarà una semplice lettera dell'alfa¬ beto, o un insieme di varie cifre o lettere, che inizia obbligatoriamente con una lettera. — Se la quantità è alfanumerica, si applica la stessa regola, ma il nome dovrà essere seguito dal simbolo $ e la variabile dovrà essere scritta tra virgolette. 8 102 programmi per ATARI Esempio: LET Al = 12; la variabile numerica Al prende il valore 12. LET NOM$=*RENOIR"; la variabile alfanumerica NOM$ prende il valore RENOIR. N.B. Prima bisognava dimensionare la variabile NOM$ con il comando DIM. Così per esempio il comando DIM NOM$(50) limita la stringa NOM$ a un massimo di 50 caratteri. In ATARI, come nella maggior parte dei Basic, il LET è diventato opziona¬ le, non essendo possibile nessuna ambiguità, scriveremo dunque: A=12 ; NOM$="TOTO”; ecc. L'ISTRUZIONE PRINT O ISTRUZIONE DI USCITA (SCHERMO) È un’istruzione di dialogo, che permette al calcolatore di visualizzare sullo schermo un testo, il risultato di un calcolo, o una variabile. È il solo modo che possiede il personal computer per far conoscere i suoi risultati. Così PRINT Al provoca la visualizzazione di 12 (se era stato fatto prima Al = 12) ; PRINT A$ provoca la visualizzazione di BUONGIORNO (se era stato fatto prima A$="BUONGIORNO"). Utilizzato dopo aver cancellato lo schermo, il PRINT provoca la visualizzazione sulla prima linea, in alto, a sinistra. Un certo numero di parametri possono essere utilizzati per ottenere sullo schermo una visualizzazione adeguata: — Un ; (punto e virgola) a seguito del PRINT permette sia di concatenare un’altra stampa senza ripetere l’istruzione PRINT, sia di indicare che la prossima stampa sarà, in assenza di un’indicazione contraria, effettuata esattamente al seguito della stampa precedente. — La, (virgola) provoca una tabulazione orizzontale automatica predefini¬ ta. Durante la scrittura, l’istruzione PRINT potrà essere abbreviata battendo ? (punto interrogativo). Durante una stampa, ogni numero è preceduto da un segno ; ma il segno positivo non è visualizzato. L'ISTRUZIONE POSITION L’ATARI dispone di una istruzione particolare, di uso molto elastico, che permette di posizionare il cursore sullo schermo, in vista della prossima scrittura. Si tratta dell’istruzione POSITION X,Y. X corrisponde ad una tabulazione orizzontale (tra 0 e 39) e Y ad una tabulazione verticale (tra 0 e 23). Così, per scrivere la parola BUONGIORNO alla quinta colonna dell’ottava riga, si scriverà: POSITION 5,8;PRINT "BUONGIORNO" N.B. senza l’istruzione POSITION, gli inizi di riga cominciano alla 2 a co¬ lonna. 102 programmi per ATARI 9 L'ISTRUZIONE INPUT, O ISTRUZIONE D’INGRESSO (TASTIERA) Questa istruzione, che provoca l’arresto e l’attesa del calcolatore, permet¬ terà di inserire un numero, o un testo, che sarà assegnato alla variabile attraverso l’ordine INPUT. Questo è fatto in modo conversazionale, cioè in funzione delle necessità; infatti, quando TATARI trova una istruzione IN¬ PUT, si ferma e vi passa la mano; si può allora inserire un’informazione di natura adeguata (numero o testo) e segnalare che questo inserimento è ter¬ minato con il comando RETURN, il che gli restituirà la mano. Se l’informazione inserita non è di natura adeguata (battete, per esempio, un testo su un INPUT X, che aspetta un numero), sarà segnalato errore con arresto del programma. L’ISTRUZIONE GOTO O ISTRUZIONE DI SALTO INCONDIZIONATO Una delle particolarità del linguaggio Basic, che lo rende facilmente acces¬ sibile, è che ogni linea di programma deve essere preceduta da un nume¬ ro, queste linee sono in seguito eseguite dal personal computer in sequen¬ za, nel senso crescente dei numeri. Per diverse ragioni, potrebbe essere ne¬ cessario durante lo svolgimento di un programma, non seguire questo or¬ dine sequenziale molto rigido; utilizzeremo allora l’istruzione GOTO, che permette di dirottare il funzionamento del programma dal suo corso nor¬ male, con la possibilità d’altronde di riprenderlo in seguito con un altro GOTO. Il rinvio deve peraltro essere fatto a un numero di riga esistente nel pro¬ gramma (GOTO 20, per esempio). Per dare un po’ di elasticità a questa istruzione di rinvio, esiste un'istru¬ zione molto potente, che permette di rinviare ad un qualunque numero di linea, secondo il valore di una variabile numerica: è l’istruzione ONI_IGOTOI_I ; scriveremo, per esempio: ON X GOTO 100, 200, 300 ed il rinvio sarà fatto alla linea 100 se X vale 1, alla linea 200 se X vale 2, e 300 se X vale 3. L’ISTRUZIONE IFI_ITHENI_I O ISTRUZIONE DI TEST Possiamo utilizzarla in due maniere diverse. In rottura di sequenza condi¬ zionale sotto la forma: IF (condizione=vera) THEN (numero di linea) . È l’utilizzo più corrente di questo test, che permette di rinviare ad un’altra parte del programma, se per esempio X = 0, o se A — B, ecc. Gli operatori logici NOT, OR o AND possono d’altronde essere utilizzati nella scrittura della condizione. 10 102 programmi per ATARI Si può però utilizzare il test nella forma: IF (condizione! THEN (istruzione) ; l’istruzione presentata al seguito di THEN può essere un’assegnazione: es. A=12, una stampa: es. PRINT A, una immissione: es. INPUT B$, o anche un altro test IFI_ITHENI_I. Possiamo per esempio scrivere: IF A>3 THEN IF B<7 THEN PRINT A+B L’ISTRUZIONE FOR... NEXT, O ISTRUZIONE DI CICLO Siamo spesso condotti, in programmazione, a voler eseguire un numero in¬ tero di volte una certa serie d’istruzioni (per esempio, fare avanzare un punto mobile dalla casella 6 alla casella 20, ecc.). Piuttosto che utilizzare un test ed un rinvio, sarà meglio utilizzare un ciclo; la variabile di ciclo sceglie i suoi valori negli interi o nei decimali e il passo di questa variabi¬ le (cioè la quantità di cui aumenta o diminuisce ad ogni passaggio) può anch’esso scegliere i suoi valori negli interi o nei decimali. Così se scriviamo: FOR I = NEXT I 0 TO 20 STEP 2 istruzioni Le istruzioni contenute nel ciclo saranno eseguite per 1=0, per 1 = 2,.. . e questo fino a I = 20, ossia 11 volte. La variabile I può essere usata per fare un calcolo nel ciclo, ma non dovrà esservi modificata. Possiamo, natural¬ mente, uscire dal ciclo prima di I = 20, con un test condizionale indicante una quantità qualunque. Se il passo del ciclo (STEP) non è precisato, sarà automaticamente preso uguale a 1. È possibile concatenare vari cicli di nome diverso. L’ISTRUZIONE GOSUB, O ISTRUZIONE DI RICHIAMO DI SOTTOPROGRAMMA Quando una stessa serie di istruzioni deve essere eseguita varie volte, e richiamata da diverse zone del programma, eviteremo di riscriverla più volte. La scriveremo una volta per tutte e la posizioneremo fuori del pro¬ gramma vero e proprio (dandole, per esempio, un numero di linea superio¬ re al numero dell’ultima linea del programma). Indipendentemente dalle difficoltà che potremo incontrare per i nomi delle variabili, quando vorre¬ mo utilizzare questa sequenza, basterà chiamarla con l’istruzione GOSUB (numero di linea) . Il programma farà allora una deviazione nella parte richiamata, ma non potrà proseguire il suo svolgimento normale se non incontra un’istruzione RETURN o istruzione di ritorno. 102 programmi per ATARI 11 Ecco lo schema teorico di funzionamento: Programmma principale 10 1000 1010 1200 RETURN 600 Fine del programma principale Il sottoprogramma è scritto solo una volta, ma è richiamato quante volte si vuole 1000 i I ! 1200 RETURN Sottoprogramma 1 Un sottoprogramma potrà a sua volta eventualmente richiamarne un altro e così via. Possiamo anche richiamare un sottoprogramma in modo condizionato, usando l’istruzione ONI_IGOSUBI_I. Per esempio ON X GOSUB 1000, 2000, 3000 permetterà di eseguire il sot¬ toprogramma posizionato a 1000 se X = l, a 2000 se X=2, a 3000 se X = 3. N.B. Per facilitare l’accesso al programma è possibile utilizzare un segna¬ le (cioè un nome alfabetico) per rappresentare un numero di passo del pro¬ gramma dato. Così, se MUSIQUE = 1000, l’istruzione "GOTO MUSIQUE” equivale a "GOTO 1000”. 12 102 programmi per ATARI numero misterioso Programmazione: facile. Categoria del gioco: gioco di deduzione per un gioca¬ tore. Difficoltà del gioco: facile. Si chiede al calcolatore di definire un numero di n ci¬ fre (con n compreso tra 1 e 7). Si dovrà quindi cercare di indovinarlo col minor nu¬ mero di tentativi possibile, ricevendo le sole informa¬ zioni TROPPO GRANDE o TROPPO PICCOLO. IL PROGRAMMA: La linea 70 permette di creare il numero da indovi¬ nare. Gli inserimenti sono fatti dalle linee 90-100. La linea 110 verifica se il risultato è esatto. La linea 120 segnala un tentativo troppo piccolo e la linea 130 uno troppo grande. Il contatore di tentativi è alla linea 140. Le linee da 200 a 230 si occupano della visualizzazio¬ ne dei risultati e della gestione della parte seguente. PER GIOCARE: Si farà partire il programma con RUN. Si otterrà un primo messaggio NUMERO DI CIFRE? al quale si risponde con un intero tra 1 e 7, seguito da RETURN. Si avrà allora il messaggio PROVA N.l, seguito dalla domanda IL TUO NUMERO. Si inserisce un numero e si schiaccia RETURN. Si ottiene allora la risposta TROPPO PICCOLO o TROPPO GRANDE, oppure, se si è riusciti ad indovi¬ nare, il messaggio HAI TROVATO....IN....PROVE. Se il risultato non è esatto, si ritorna a PROVA N.2, e IL TUO NUMERO. Alla fine del gioco, appare la domanda UN'ALTRA PARTITA? (S/N); si risponde S per fare un’altra parti¬ ta (seguito da RETURN). Si può fermare il gioco in qualsiasi momento batten¬ do BREAK. ESTENSIONI POSSIBILI: Potremmo immaginare di fare indovinare al giocatore non un numero ma qualcos’altro (per esem¬ pio una parola, utilizzando l’ordine alfabetico, o un’altra cosa ancora...). Nota per rientrare nel programma: il carattere *1 si ottiene con ESC, SHIFT, CLEAR II RIFERIMENTI: IL GIOCO: 102 programmi per ATARI 13 10 REM IL NUMERO MISTERIOSO 20 DIM R*<1> 30 FRINT ">" 40 FRINT "NUMERO DI CIFRE ; " i •INPUT N 50 IF N> 7 THEN RUN 60 IF N<=0 THEN RUN 70 X» INT *10 A N+1) 80 J=1 90 FRINT -FRINT "PROVA No ";J 100 PRINT "IL TUO NUMERO ■“i •INPUT M 110 IF M=X THEN 280 120 IF MX THEN PRINT "TROPPO GRANDE" 140 J=J+1 150 PRINT ! PRINT ISO GOTO 30 200 PRINT "HAI TROVATO "jXì" IN ";Jj" PROVE" 220 PRINT "UN'ALTRA PARTITA ">>INPUT R* 230 IF R$="S" THEN RUN 14 102 programmi per ATARI Cubo RIFERIMENTI: Programmazione: facile. Categoria del gioco: disegno. Difficoltà del gioco: nessuna. IL GIOCO: Il programma si propone di realizzare con l’aiuto del¬ l'istruzione PRINT una vista di un cubo in prospetti¬ va. Potrebbe essere per esempio incorporato in un gioco basato sulle capacità di riconoscimento delle forme geometriche elementari. IL PROGRAMMA: Il disegno del cubo è realizzato mediante punti, uti¬ lizzando due cicli: il ciclo I (30-120) e il ciclo I (130-180). Il nome dell’oggetto raffigurato è scritto alla li¬ nea 200 (qui: CUBO). PER GIOCARE: Basta far partire il programma con RUN e guardare. ESTENSIONI POSSIBILI: L’alta risoluzione permetterà di avere un trac¬ ciato più preciso. Potremmo immaginare un gioco utilizzante dei paral¬ lelepipedi di differenti misure, con visualizzazione per esempio dei tre lati, dovendo calcolare il volume, ecc. 102 programmi per ATARI 15 1@ REM CUBO 20 GRAPHICS 0 30 FOR 1=0 TO 10 40 PÓSITION 7+I,0«PRINT 50 POSITION 1,7'PRINT '‘. H 60 POSITION 7+1,10‘PRINT 70 POSITION I,17 ! PRINT ". u 80 POSITION 0/7+1«PRINT 90 POSITION 10/7+1‘PRINT 100 POSITION 7/I'PRINT M ." 110 POSITION 17/1 «PRINT 120 NEXT I 130 FOR 1=0 TO 7 140 POSITION I,7-1«PRINT 150 POSITION 10+1/7-1«PRINT 160 POSITION 1/17-1 «PRINT 170 POSITION 10+1/17-1«PRINT 180 NEXT I 190 POSITION 26,19«PRINT 280 POSITION 26/20«PRINT H CUB0 M j 210 POSITION 26,21 «PRINT 16 102 programmi per ATARI Caldo, freddo RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: solitario. Difficoltà del gioco: media. IL GIOCO: Uno dei più vecchi giochi del mondo, sempre in voga, ma questa volta è il calcolatore che vi fa da compa¬ gno: infatti nasconderà un oggetto in una certa posi¬ zione di una griglia di cui avrete voi stessi scelto le dimensioni. Per trovarlo, non vi darà che qualche in¬ dicazione, sotto la forma BRUCI, o FA FREDDO, ecc. Dovete riuscire a trovare l’oggetto nascosto col mi¬ nor numero di tentativi possibile (il vostro punteggio sarà visualizzato alla fine della partita). IL PROGRAMMA: Le linee 30 e 40 definiscono la posizione dell’oggetto. La linea 90 calcola la distanza in funzione delle due coordinate che avete inserito alle linee 60 e 70. La linea 100 controlla se avete vinto. Le linee 120-130 normalizzano la distanza (che deve avere un senso, quali siano le dimensioni della gri¬ glia iniziale). La linea 140 effettua la partenza, se c’è posto, verso uno dei sottoprogrammi di visualizzazione. PER GIOCARE: Si fa partire il programma con RUN, poi si inserisco¬ no le dimensioni della griglia (quadrata) e si batte RETURN. Già dalla visualizzazione seguente FORNISCI X, si inserisce la coordinata supposta di X, seguita da RE¬ TURN. Si ottiene in seguito il messaggio FORNISCI Y e si inserisce Y, seguito da RETURN. Si ottiene in risposta un testo, che varia in funzione della distanza dall’oggetto cercato (si va da COMPLE¬ TAMENTE GELATO a BRUCIATO). Quando lo si è trovato, si ottiene la visualizzazione del numero di tentativi effettuati. Per uscire dal programma prima della fine della par¬ tita, basta premere BREAK. ESTENSIONI POSSIBILI: Se si dispone del colore, sarà interessante tro¬ vare un modo più immediato per simbolizzare la di¬ stanza, per esempio delle mattonelle varianti dal ros¬ so al blu nelle posizioni tentate. Si potrebbe anche lavorare in uno spazio a tre dimen¬ sioni, nascondere vari oggetti ecc. 102 programmi per ATARI 17 10 REM CALDO,FREDDO 20 PRINT "DIMENSIONE DELLA GRIGLIA INPUT D 30 X=INT*D+1> 40 Y=INT < RND <1> *D+1> 50 PRINT ">" 60 PRINT "Fornisci X >"j‘INPUT A 70 PRINT "fornisci Y >";‘INPUT B 80 S=S+1 90 T=ABS < X-A > +ABS < Y-B > 100 IF T=0 THEN 6000 110 PRINT "Sei “i 120 N=INT5 THEN N=5 140 IF T<=SQR" 6018 PRINT "trovato in ",S," Prove" 18 102 programmi per ATARI Fiammiferi RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: contro TATARI. Difficoltà del gioco: media. Il giocatore dovrà all’inizio della partita scegliere un certo numero di fiammiferi, così come la presa mas¬ sima autorizzata. Decide quindi se cominciare, o se lasciare la prima mossa all'ATARI. Ognuno prende a turno tanti fiammiferi quanti ne desidera, nel limite del massimo consentito. Quello che prende l’ultimo fiammifero è considerato perdente. La mano del giocatore comincia alla linea 70. Quella dell’ATARI alla linea 110. La linea 80 controlla la legalità della giocata del gio¬ catore. La linea 90 gestisce il cambiamento del giocatore. La mano delTATARI è calcolata in un ciclo non for¬ male, dalla linea 120 alla linea 150. Il risultato è visualizzato dalla linea 1010. Se la partita non è terminata, la linea 1030 lo perce¬ pisce. Si parte con RUN e, all’apparizione del messaggio NUMERO TOTALE DI FIAMMIFERI, si inserisce il numero di fiammiferi, seguito da RETURN. Poi si in¬ serisce la presa massima autorizzata, seguita da RE¬ TURN. Se il giocatore vuole iniziare, batte in seguito 0; altrimenti batte 1, poi RETURN. Dopo ogni mano è visualizzato il numero di fiammi¬ feri rimanenti e TATARI avverte TIRA ANCORA quando tocca al giocatore prendere. Chi prende l’ultimo fiammifero ha perso. ESTENSIONI POSSIBILI: Potremmo naturalmente immaginare una vi¬ sualizzazione grafica a colori, potremmo anche la¬ sciare al caso la scelta del numero di fiammiferi e la presa massima, ecc. 102 programmi per ATAR1 19 10 REM FIAMMIFERI 28 GRAPHICS 0 30 PRINT "Numero totale di fiammiferi ■";* INPUT N 40 PRINT "Presa massima per colpo INPUT I 50 PRINT "Chi comincia •";=INPUT D 60 IF D=1 THEN 110 70 PRINT "Tira ancora 1 'INPUT P 80 IF POINT

OR P<1 OR P>I OR P>N THEN 70 90 D=1 100 GOTO 1000 110 S=I+1 120 T= THEN 200 140 S=S-1 150 GOTO 120 200 P=ABS" 1050 IF D=1 THEN PRINT "Ho vinto..." 1060 IF DOl THEN PRINT "Bravo" 20 102 programmi per ATARI Fiammiferi in molti RIFERIMENTI: Programmazione: facile. Categoria del gioco: logica (vari giocatori). Difficoltà del gioco: elevata. IL GIOCO: In questo gioco per vari giocatori, il direttore del gio¬ co dovrà, all’inizio della partita, scegliere un numero di fiammiferi ed indicare all’ATARI il numero di gio¬ catori. Ad ogni mano il giocatore di turno è autorizzato a prendere dal mucchio di fiammiferi rimanenti fino al doppio di quanto ha preso il giocatore precedente; colui che prende l’ultimo fiammifero ha vinto (o per¬ so se si modificano leggermente le regole). IL PROGRAMMA: Le linee da 10 a 40 permettono i differenti ingressi. Le linee da 70 a 100 realizzano le stampe. La linea 120 controlla la mano di ogni giocatore (in rapporto alla mano precedente). La linea 170 gestisce le mani (rimessa a 1 del numero del giocatore). La linea 150 realizza il test finale e la linea 200 visua¬ lizza il numero del giocatore vincente (con la regola prevista inizialmente). PER GIOCARE: Dopo aver lanciato il programma con RUN, si inseri¬ sce il numero di fiammiferi iniziale, seguito da RE¬ TURN, poi il numero di giocatori (e RETURN). Il primo giocatore potrà prendere solo un fiammife¬ ro, il secondo ne potrà prendere uno o due; il seguen¬ te 1,2, o 1,2,3 o 4 in funzione della mano precedente, e così via; il numero massimo è ogni volta visualizza¬ to dall’ATARI. Quando l’ultimo fiammifero è stato preso si ottiene il messaggio IL GIOCATORE . . . HA VINTO e la partita è terminata. ESTENSIONI POSSIBILI: Si può decidere che quello che prende l’ultimo fiammifero è eliminato dal gioco e ricominciare la partita con i giocatori rimanenti che saranno an- ch’essi eliminati gli uni dopo gli altri. Possiamo anche immaginare una rappresentazione grafica del mucchio di fiammiferi, scegliere a caso il numero da prendere all'inizio della partita ecc. 102 programmi per ATARI 21 10 REM FIAMMIFERI IN MOLTI 20 GRAPHICS 0 30 PRINT "Numero totale di fiammiferi «";•INPUT N 40 PRINT “Numero di giocatori s";iINPUT J 50 F=1 66 K= 1 70 PRINT ">" 80 PRINT "Turno del giocatore ";K 30 PRINT "Totale rimasto ‘">N 100 PRINT "Massimo da togliere •";F 110 PRINT "Il tuo colpo =";‘INPUT C 120 IF C=0 OR OF OR ON THEN 110 130 N=N-C 140 F=2*C 150 IF N=0 THEN 190 160 K-K+l 170 IF K> J THEN K=1 180 GOTO 78 130 PRINT ">" 200 PRINT "Il giocatore »ìKj" ha vinto." 22 102 programmi per ATARI Calendario perpetuo RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: di media difficoltà. Categoria del gioco: gadget pubblicitario. Difficoltà del gioco: nessuna. Questo programma vi permetterà di creare tutti gli anni il vostro calendario; potrete così servirvene per mandare ai vostri amici un calendario del mese della loro nascita, o per augurar loro buone feste, ecc. Le linee 30 e 40 vi permettono di inserire il mese e l’anno. Le linee 50, 60 e 70 calcolano il numero del primo giorno del mese. La linea 80 calcola il numero del giorno del mese (non si è tenuto conto qui del 29 febbraio, per sempli¬ ficare). Il ciclo A (130-160) realizza la stampa del calendario. Dopo aver lanciato il programma con l'istruzione RUN, si dovrà introdurre l’anno, per esempio 1985, seguito da RETURN. Si ottiene allora la domanda MESE, alla quale con¬ viene rispondere con il numero del mese, secondo l’ordine usuale (1 per GENNAIO, 2 per FEBBRAIO, ecc.). Si batte in seguito RETURN; allora il calendario vie¬ ne visualizzato sullo schermo. ESTENSIONI POSSIBILI: Potremmo prevedere senza difficoltà la stam¬ pa dei 29 Febbraio, prevedere un’opzione che per¬ metta la stampa per un anno completo, prevedere l’introduzione del nome dei mesi in chiaro, ecc. 102 programmi per ATARI 23 10 REM CALENDARIO PERPETUO 26 GRAPHICS 0 30 PRINT “Quale armo * "; >INPUT A 40 PRINT "Quale mese ‘ “f- INPUT M 50 D=INT<365.25*>>+1 60 D=D+IHT<30.6**12>>-IHT<*0.?5) 70 D-D-7*INT 80 M=31-(M=4 OR M=6 OR M*3 OR M=11>-*3 90 PRINT 100 PRINT "DGM LUN MAR MER GIO VEN SAB" 110 PRINT 120 L=6 t30 FOR A®1 TO H 140 POSITION 3+4*D-7 160 NEXT A 24 102 programmi per ATAR1 Battaglia navale RIFERIMENTI: Programmazione: facile. Categoria del gioco: riflessione. Difficoltà del gioco: bassa. IL GIOCO: Una battaglia navale a priori abbastanza semplice, con una sola nave nascosta a caso in una griglia di 10 * 10 caselle. Per ogni colpo bisogna indicare le coordinate O (oriz¬ zontale) e V (verticale) della casella mirata; TATARI risponde visualizzando la distanza che separa la nave invisibile dalla casella mirata; se si colpisce troppo vicino, la nave può nascondersi nuovamente in modo casuale. IL PROGRAMMA: Il ciclo I (40-70) disegna il camp© di gioco. Le linee 90-100 definiscono la posizione della nave. Le coordinate di tiro sono inserite alle linee 120 e 130; la linea 140 visualizza il colpo sullo schermo. La distanza è calcolata alla linea 150; la linea 160 verifi¬ ca se si è fatto o no centro. La linea 180 interviene per spostare la nave se i colpi si avvicinano troppo. La linea 190 permette la visualizzazione della distan¬ za. PER GIOCARE: Il campo di gioco è visualizzato dopo aver battuto RUN. Al messaggio RIGA, si risponde dando il nume¬ ro della linea orizzontale sulla quale si desidera tira¬ re. Si batte quindi RETURN e alla domanda COLON¬ NA si risponde dando il numero della colonna verti¬ cale seguito da RETURN. Se si tira troppo vicino, si ottiene il messaggio PFF- FF... che significa che la nave nemica ha cambiato posizione. Se si tira sulla casella giusta, si ottiene la visualizza¬ zione del numero totale dei tiri effettuati per vincere. ESTENSIONI POSSIBILI: Sono innumerevoli, anche perché la battaglia navale è uno dei giochi più famosi che esistano. Pos¬ siamo introdurre due giocatori, giocare contro TATA¬ RI, mettere varie navi, dei sottomarini, ecc. 102 programmi per ATAR1 25 ltì REM BATTAGLIA NAVALE 20 GRAPHICS 0 30 FRI NT " 0 1 2 3 4 5 6 7 8 9" 40 FOR 1=0 TO 9 50 PRINT li-." 60 PRINT 70 NEXT I 80 S=S+1 90 X=IHT*10) 100 V=INTINPUT H 130 POSITION 20,21-PRINT “Colonna >"i >INPUT V 140 POSITION 31V+5,21H+I-PRINT S 150 0=INT **" 220 PRINT "TROVATO IN "jSj" COLPI" "'GOTO tl 26 102 programmi per ATARI Golf RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: solitario. Difficoltà del gioco: media. IL GIOCO: Si tratta di riuscire a fare, col minor numero di colpi possibile, un percorso di golf con 18 buche. Per fare ciò, occorre colpire la palla con una forza più o meno grande, fino ad ottenere la sua caduta nella buca. Ma attenzione, il caso potrebbe intervenire su ogni colpo, così spesso dovrete tornare indietro (bisogne¬ rà allora far precedere l’indicazione della forza con un segno —). IL PROGRAMMA: La linea 50 permette di definire la posizione della bu¬ ca e la linea 60 disegna il campo di gioco. Lo spostamento da realizzare è calcolato alla li¬ nea 100. Il ciclo I (120-170) realizza lo spostamento della palla. La linea 180 guarda se il colpo è, o no, vincente; se lo è, si ricomincia (linea 230) fino a che si realizzino 18 buche (ciclo S (20-230); fine del ciclo in 250, con vi¬ sualizzazione di fine). PER GIOCARE: Si ottiene la visualizzazione del campo con RUN così come il disegno della palla nella sua posizione inizia¬ le ed il testo: BUCA 1. FORZA; si deve allora rispon¬ dere dando la forza desiderata (un numero tra 1 e 300...). Subito dopo aver battuto RETURN, la palla ricomin¬ cia a spostarsi; può a questo punto sia fermarsi da¬ vanti alla buca (nel qual caso si ricomincia), sia finir¬ ci dentro (si passa allora alla buca seguente), sia sor¬ passarla: si dovrà allora batterla con una forza nega¬ tiva. Il gioco finisce con la scritta 18 BUCHE IN . . . COL¬ PI. ESTENSIONI POSSIBILI: Potremmo espandere il gioco per fare parteci¬ pare più giocatori, migliorare la qualità grafica, uti¬ lizzare una rappresentazione spaziale del campo di gioco riferirsi ad alcuni videogiochi), avere un terre¬ no più accidentato, degli ostacoli, cambiare il club... 102 programmi per ATAR1 27 10 REM GOLF 20 FOR 3=1 T0 18 30 GRAPHICS 0 35 X=1 40 X=»l 50 T=INT<29*RND+9> 60 POSITION 1,6-PRINT 70 POSITION T.6-PRINT “ “-POSITION X.5-PRINT ““ 80 POSITION 15,8-PRINT " 90 POSITION 0,8-PRINT "Buca ";Si“ Forza -"J-INPUT R 100 F=INT*SQR+0.1> A 2V1000> 110 IF F=0 THEN 70 120 FOR I=SGN TO F STEP SGN 130 X=X+SGN 140 IF X<39 AND X>=1 THEN POSITION X-SGN,5-PRINT “ ”-POSITION X.5-PRINT 150 IF X>=38 THEN X»38 160 IF X<=1 THEN X=l 170 NEXT I 180 IF X=T THEN 210 190 E=E+1 200 GOTO 60 210 POSITION X/5-PRINT " "-POSITION Xi6-PRINT "" 220 FOR P=1 TO 500-NEXT P 230 NEXT S 240 FRINT “>" 250 PRINT “18 buche ir» "lEi" colei." 28 102 programmi per ATAR1 Solfeggio RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: riflessione. Difficoltà del gioco: bassa. IL GIOCO: Questo programma vi propone un’iniziazione elemen¬ tare al solfeggio, permettendovi di imparare a rico¬ noscere facilmente le differenti note, che appaiono le une dopo le altre su uno spartito; dopo la visualizza¬ zione della nota, dovete inserire il suo nome in chia¬ ro ed il vostro punteggio sarà visualizzato in perma¬ nenza. Il programma è previsto inizialmente per la chiave di sol, ma sarà facilmente adattabile ad un’altra chiave. IL PROGRAMMA: Il ciclo I (50-70) disegna uno spartito. La nota è scelta alla linea 80 e visualizzata alle linee 90-100-110-120. La linea 130 visualizza il punteggio. La linea 140 visualizza il nome della chiave (qui chia¬ ve di sol) e vi interroga. La linea 160 si occupa della fine della partita. Le linee 170 e 180 effettuano la decodificazione della nota inserita. La linea 200 controlla il risultato. PER GIOCARE: Dopo aver lanciato il programma con RUN, apparirà 10 spartito assieme alla prima nota. Risponderete alla domanda QUAL È LA NOTA? dan¬ done il nome in lettere (do, re, mi, fa, sol, la, si), se¬ guito da RETURN. 11 punteggio vi indicherà se è esatto o no, ed una nuo¬ va nota sarà visualizzata. Per fermare, basterà rispondere 0 seguito da RE¬ TURN, alla domanda QUAL È LA NOTA? ESTENSIONI POSSIBILI: Potremmo innanzitutto facilmente modificare il programma per permettervi di lavorare con le di¬ verse chiavi. Potremmo anche migliorare la grafica, introdurre il colore, il suono (quando si risponde giu¬ sto si sentirà la nota, per esempio). Potremmo anche realizzare seguendo lo stesso principio un gioco che vi permetta di riconoscere degli accordi, ecc. 102 programmi per ATARI 29 10 REM SOLFEGGIO 20 DIM R*<3> 30 S*0‘P=0 40 FRI NT ">" 50 FOR 1=1 TO 5 60 PQSITION 1<2*1+1>PRINT "_" 70 NEXT I 80 X=3+1NT < RND <1> *12 > 30 POSITION 203) THEN S=S+1 210 GOTO 40 30 102 programmi per ATARI Blackjack RIFERIMENTI: Programmazione: facile. Categoria del gioco: contro TATARI. Difficoltà del gioco: bassa. IL GIOCO: Bisogna inserire una scommessa all’inizio del gioco; e potremo poi lanciare i dadi battendo 1 ; ad ogni lancio si otterrà un nuovo totale, che aumenterà poco a poco e si avvicinerà a 21 ; bisognerà cercare di avvicinarsi a 21 senza superarlo. Quando decideremo di fermarci, basterà battere 0 per lasciar giocare TATARI che cer¬ cherà allora di ottenere un miglior punteggio. Alla fine di ogni partita sarà visualizzato la vincita così come il totale delle vincite (o delle perdite). IL PROGRAMMA: Le linee 80 e 90 realizzano il controllo di quello che deve giocare (giocatore o ATARI). Il sottoprogramma (1000-1010) lancia i dadi. Le linee 110 e 120 calcolano il totale fatto dal gioca¬ tore e lo visualizzano. Il totale dell'ATARI è calcolato alla linea 190 e visua¬ lizzato alla linea 200. La linea 220 controlla la fine del gioco per TATARI. Le linee 250-280 visualizzano i risultati e la linea 290 cerca qual è il vincitore. La vincita (o la perdita) sarà visualizzata dalla linea 310 ed il totale dalla linea 340. La linea 370 controlla la fine della partita. PER GIOCARE: Battere RUN per iniziare il gioco. Alla domanda LA TUA PUNTATA, inserire la scom¬ messa iniziale, seguita da RETURN, e battere 1 per lanciare il dado. Il primo tiro è visualizzato sotto la forma IL TUO TOTALE RAGGIUNGE ... ; si dovrà ri¬ battere 1 seguito da RETURN, finché si desidera ri¬ cominciare a tirare. Appena finito, si battono 0 e RETURN per lasciar giocare TATARI (che ha qui il ruolo di banco). La vincita (o la perdita, se c’è il segno —) apparirà al¬ la fine del gioco, così come il totale delle vincite (o delle perdite) realizzate dall’inizio. Se si desidera interrompere il gioco, si dovrà battere N in risposta alla domanda CONTINUIAMO? (S/N). ESTENSIONI POSSIBILI: Questo gioco sarà evidentemente più interes¬ sante se è fatto in tanti, e sarà facile modificare il programma di conseguenza; potremmo anche dise¬ gnare il dado , o meglio, utilizzare delle carte, il che permetterà allora di fare il vero Blackjack. 102 programmi per ATARI 31 10 REM BLACKJACK 20 DIM R$<1> 30 G=0 40 GRAPHICS 0 50 T=0 60 PRINT " LA TUA PUNTATA INPUT M ?w PRINT 80 PRINT "Battere 1 per tirare - 0 Per finire";'INPUT R 30 IF R=0 THEN 140 180 GOSUB 1008 118 T=T+X 120 PRINT "Il tao totale raasiunae ";T 130 GOTO 70 140 PRINT ">" 150 PRINT " IL BANCO GIOCA" 160 PRINT 170 3=0 180 GOSUB 1000 190 S=S+X 200 PRINT "Il banco rasaiunae ";S 210 FOR 1=1 TO 500 : NEXT I 220 IF S>T OR S>17 THEN 240 238 GOTO 180 240 PRINT ">" 250 PRINT "Il tuo totale 21 OR <34:6+1) 1010 RETURN 32 102 programmi per ATARI Pari - dispari RIFERIMENTI: Programmazione: facile. Categoria del gioco: lancio di dadi. Difficoltà del gioco: media. IL GIOCO: È un gioco d’azzardo per uno o più giocatori. L’ATA- RI lancia simultaneamente due dadi non visibili e fa tre domande: qual è la parità del totale, qual è il tota¬ le ed infine quale sia il valore di uno dei dadi. Si può proseguire il gioco o interromperlo in ogni momento. IL PROGRAMMA: I dadi sono tirati da un sottoprogramma posizionato alle linee 1000 e 1010. La linea 70 tiene il conto del numero di partite e le linee 170, 250 e 280 contabilizzano i punti segnati. La parità del totale è determinata dalle linee 120 e 130 (la linea 130 paragona con la risposta del gioca¬ tore). La linea 400 e le seguenti realizzano il messaggio di fine partita: totale, numero di punti, numero di parti¬ te giocate. La linea 440 provoca l’arresto se si risponde N alla domanda CONTINUIAMO? (S/N) PER GIOCARE: Si lancia il programma con RUN. Basta in seguito rispondere alle diverse domande po¬ ste, seguendo scrupolosamente le indicazioni date e battendo RETURN dopo ogni risposta. Quando si finisce una partita, si ottiene la visualizza¬ zione del totale attuale ed il numero di partite nella forma di, per esempio, 6 punti in 10 prove. Si ottiene allora la domanda CONTINUIAMO? (S/N) e si risponderà N seguito da RETURN per fermarsi. ESTENSIONI POSSIBILI: Se si desidera giocare in tanti, sarebbe inte¬ ressante predisporre la possibilità di scommettere e di aggiungere una gestione del punteggio per ciascu¬ no dei giocatori. Potremmo anche prevedere una mi¬ glioria nella presentazione (utilizzo del colore, ecc.) 102 programmi per ATARI 33 10 REM PARI-DISPARI 20 DIM R*<1> 30 T=0 R=0 40 GOSUB 1000 50 A=X 60 GOSUB 1000 70 R=R+1 80 S=A+X 30 PRIMT "> M 100 PRIMI “Totale Pari <0) o dispari <1> ‘‘INPUT N 110 PRIMT 120 P=S/2-INT 1 INPUT N 270 IF NOA AMD NOS-A THEN 210 280 T=T+3 230 PRIMT 300 PRIMT "BRAVO!"‘GOTO 220 400 PRINT ">" 410 PRINT "Hai "jT>" Punti in "jRj" prove." 420 PRINT 430 PRINT "Continuiamo "j ‘INPUT R$ 440 IF R*="N" THEN END 450 GOTO 40 1000 X*INT 1010 RETURN 34 102 programmi per ATARI Indovina un numero RIFERIMENTI: Programmazione: facile. Categoria del gioco: lancio di dadi. Difficoltà del gioco: facile. IL GIOCO: È un gioco d’azzardo molto semplice, ma molto inte¬ ressante: il giocatore introduce la sua puntata e scommette su un numero, da 1 a 6; sono allora lan¬ ciati tre dadi; se il numero giocato appare due volte raddoppia la sua puntata; se appare tre volte, la tri¬ plica. IL PROGRAMMA: Il lancio dei dadi è realizzato da un sottoprogramma posizionato alle linee 1000 e 1010. La visualizzazione è realizzata dalle linee 140 e 150. Le linee da 170 a 200 calcolano il guadagno nelle di¬ verse configurazioni possibili. La totalizzazione è effettuata dalla linea 220 per le vincite e dalla linea 510 per le perdite. La variabile R$, verificata alla linea 550, determina il proseguimento eventuale del gioco. PER GIOCARE: Il lancio del programma con RUN fa apparire un pri¬ mo messaggio LA TUA PUNTATA; si risponde con un numero seguito da RETURN. Si ottiene allora un se¬ condo messaggio FORNISCI UN NUMERO DA 1 A 6; si inserisce un numero seguito da RETURN; i tre da¬ di, raffigurati dalle lettere A, B, C appaiono allora, assieme a un messaggio indicante la vincita o la per¬ dita. Poi appare un'indicazione sul vostro totale attuale appare, con la domanda CONTINUIAMO (S/N)?; bat¬ tere S per continuare, N per fermarsi (seguito da RE¬ TURN). ESTENSIONI POSSIBILI: Potremmo facilmente introdurre dei controlli (puntata minima, colpo proposto da 1 a 6, ecc.). Po¬ tremmo anche disegnare dei dadi con una grafica più elaborata, introdurre la possibilità di giocare in mol¬ ti, o anche fare partecipare TATARI. 102 programmi per ATARI 35 10 REM INDOVINA UN NUMERO 20 DIM R$<1> •30 G®0 40 FRINT ">“ 50 PRINT “La tua puntata -INPUT N 60 PRINT 70 PRINT “Fornisci un numero da 1 a 6 1 * INPUT D 86 G0SU8 1080 90 A=»X 100 GOSUB 1008 110 8=X 120 GOSUB 1000 130 C=X 140 PRINT ‘PRINT ‘PRINT “ A B C“ 150 PRINT iPRINT " ";A;“ ";B;“ “iC 160 T=0 170 IF D=A THEN T=T+N 180 IF D=*B THEN T=T+N 190 IF D=C THEN T=T+H 200 IF T=0 THEN 500 210 PRINT ;PRINT ‘PRINT “Vinci “;T;“." 220 G=G+T 230 GOTO 520 580 PRINT ‘PRINT ‘PRINT "PERSO! 510 G=G-N 520 PRINT ‘PRINT ‘PRINT "Totale vincite ‘"iG;“." 530 POSITION Sj 23 540 PRINT "Continuiamo ?INPUT R* 550 IF R*="N" THEN END 560 GOTO 40 1000 X= INT4:6+1) 1010 RETURN 36 102 programmi per ATARI Il gioco di Wytthof RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: di media difficoltà. Categoria del gioco: riflessione (due giocatori). Difficoltà del gioco: media. Disponiamo di una griglia quadrata di 10 * 10 caselle. Un punto appare, al di fuori della diagonale e i gioca¬ tori lo dovranno spostare a turno, seguendo solamen¬ te tre direzioni: destra, diagonale in basso a destra, basso. Il primo giocatore che arriva alla casella (9,9) sarà considerato come vincente, o perdente, secondo la convenzione presa all'inizio. Le linee 30, 40 e 50 permettono di definire una posi¬ zione di partenza, al di fuori della diagonale. La linea 70 e il ciclo I (80-100) disegnano la griglia. La linea 120 stampa la posizione del punto mobile. Il test di fine è effettuato alla linea 130. Il cambiamento del giocatore è assicurato dalla linea 170. Le direzioni di spostamento disponibili, 1, 2 e 3, sono decodificate da tre sottoprogrammi che cominciano alle linee 1000, 2000 e 3000. Battere RUN per lanciare l’esecuzione del program¬ ma. Il campo di gioco appare, così come la posizione di partenza. Poi si ottiene il messaggio GIOCATORE 1 e sotto la domanda DIREZIONE (1,2,3), alla quale si risponde battendo uno di questi tre numeri, seguito da RE¬ TURN. Sarà in seguito il turno del giocatore 2. Il gioco termina quando uno dei giocatori arriva alla casella (9,9). ESTENSIONI POSSIBILI: Possiamo innanzitutto migliorare i controlli (l’uscita dal terreno non è proibita, per esempio), poi la visualizzazione (grafica, colori), estendere il gioco a vari giocatori con un campo più grande, introdurre un mostro che cercherà di catturare uno dei giocato¬ ri, predisporre un programma che permetta all’ATA- RI di giocare, ecc. 102 programmi per ATARI 37 10 REM IL GIOCO DI WYTTHQF 20 DIM D$<1> 30 X*3*INT*5>+5 40 Y=INT*5> 50 IF 3*Y+5=X THEN 50 60 GRAPHICS 0 70 PRINT " 012345678 9" 80 FOR 1*0 TO 9 90 PRIHT ‘PRINT I>“." 100 NEXT I 110 H=1 120 POSITION X,2*Y+2‘PRINT 130 IF X=32 AND Y-9 THEN END 148 POSITION 4j 22'PRINT "Giocatore "jHi'PRINT " - Direzione <1,2,3) "j'INPUT D* 150 D=VAL 180 GOTO 120 1000 X=X+3 1010 RETURN 2000 GOSUB 1000 3000 Y=Y+1 3010 RETURN 38 102 programmi per ATARI Rimbalzi RIFERIMENTI: Programmazione: facile. Categoria del gioco: gioco di abilità. Difficoltà del gioco: media. IL GIOCO: Utilizza l’idea della simulazione di un biliardo. Alle due estremità dello schermo si trovano la palla ed il bersaglio: una serie di cifre e di lettere, in alto sullo schermo, permettono di scegliere il posto dove si desidera rimbalzare. La palla partirà allora verso l’alto (verso il basso se si introduce il segno —), rimbalzerà, ritornerà even¬ tualmente in basso, rimbalzerà di nuovo, e così via fi¬ no a raggiungere la linea del bersaglio; se si è suffi¬ cientemente vicini al bersaglio si vince ed il numero di rimbalzi sarà allora visualizzato. IL PROGRAMMA: La linea 40 stampa le cifre e le lettere in alto sullo schermo. Le linee 50 e 60 definiscono le posizioni iniziali della palla e del bersaglio. Le linee 70 e 80 effettuano la loro stampa. Il simbolo corrispondente alla direzione scelta è inse¬ rito alla linea 90. Il ciclo J (120-160) realizza lo spostamento della palla. La linea 150 calcola la nuova posizione. Il cambiamento di direzione, durante lo scontro con un bordo, è effettuato dalla linea 140, per rinvio in una parte indipendente del programma, situata alle li¬ nee da 210 a 230. La linea 170 effettua la stampa della fine della partita. Il numero di rimbalzi è contato dalla linea 220. PER GIOCARE: Si lancia il programma con RUN. Il campo appare, così come le posizioni iniziali della palla e del bersaglio. Si sceglie il posto dove si deside¬ ra far rimbalzare la palla (da 1 a Z), e lo si inserisce. La traiettoria è allora mostrata, seguita, se lo si me¬ rita, dal messaggio BRAVO; X RIMBALZI. Si può cominciare un'altra partita battendo un tasto qualunque, e fermarsi in ogni momento battendo BREAK. ESTENSIONI POSSIBILI: Sarà molto interessante, utilizzando una grafi¬ ca più fine, disegnare un vero biliardo, col suo tappe¬ to verde, ed indicare con un segmento, che simboleg¬ gia la stecca, che si sposta intorno alla biglia. Potremmo anche aggiungere delle buche, mettere va¬ rie biglie, sonorizzare i rimbalzi, o gli urti con altre palle, contabilizzarle per fare una partita con vari giocatori, ecc. 102 programmi per ATARI 39 10 REM RIMBALZI 20 DIM R$<1> 38 GRAPHICS 0 40 POSITIOH O,© *PRINT "0123456789ABCDEFGHIJKLMNGPQRSTUVWXYZ" 50 Y- 1 NT < RHD *18+2) 60 Y-I NT 78 POSITION 0,X‘PRINT CHR$<1) 80 POSITION 39,Y 90 POSITION 0,22 : PRINT "Il tuo colpo ‘ " -, > INPUT R* 100 S=0 110 T=X 120 FOR J=1 TO 38 130 T=T-X/="A")> 140 IF T>21 OR T<1 THEN 210 145 IF J=39 THEN 160 150 POSITION J,T‘PRINT CHRf<20> 160 NEXT J 170 IF ABS(T-Y)<2 THEN POSITION 0,21‘PRINT "BRAVO! ";S> W rimbalzi." 180 POSITION 0,22‘PRINT "Un'altra partita "j 30 PRINT “Capitale iniziale • INPUT P 40 GRAPHICS 0 50 SETCOLOR 1/0.0 60 POR 1=1 TO 3 70 POSITIÙN 10.1+4'FOR N=1 TO 21-PRINT CHR*<160>i‘NEXT N 80 NEXT I 90 POSITION 14,6‘PRINT " “'POSITION 19/6'PRINT " "'POSITION 24,6 1 PRINT 100 POSITION 12, U'PRINT “U tua Puntata •"/■INPUT M 110 IP M=0 THEN 2000 120 GOSU6 1000 130 A=X 140 G0SU6 1008 150 B=X 160 GOSUB 1000 170 POSITION 15,6•PRINT A'POSITION 20,6'PRINT B'POSITION 25,6'PRINT X 180 IF A=B AND A=X THEN 300 190 N=-M 200 POSITION 8,11'PRINT "Puntata >“jMì" - Risultato ‘“ Per continuare “/‘INPUT R* 220 P*P+N 230 GOTO 40 300 N=M*50 310 IF A=7 THEN N=M*500 320 GOTO 200 1000 X=INT*9+1) 1010 RETURN 2000 PRINT ">" 2010 PRINT "Hai "jP > 2820 PRINT " punti."'PRINT "A presto!" 42 102 programmi per ATARI Roulette RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: di media difficoltà. Categoria del gioco: fortuna (vari giocatori). Difficoltà del gioco: facile. È soprattutto spettacolare per il suo aspetto grafico: una pallina, raffigurata da un quadrato nero, si spo¬ sta su un campo di gioco composto da caselle nume¬ rate da 1 a 36, così come le tre caselle supplementari, la 00, una casella P (come pari) e una casella D (come dispari). La pallina percorre almeno una volta tutte le caselle, poi si ferma al secondo giro; si può in seguito rilan¬ ciarla per un’altra partita. Il ciclo K (50-100) disegna il tavolo di gioco, al quale la linea 110 aggiunge i tre simboli P, 00, e D. Il ciclo K (120-230) realizza lo spostamento del ciclo, l’arresto è controllato dalla linea 160 e 210. Il sottoprogramma 300-310 realizza una leggera at¬ tesa. La linea 240 sceglie la posizione di arresto. La linea 260 gestisce i tentativi seguenti. È da notare che la pallina è il cursore che si sposta. Basta battere RUN, e guardare. Una volta che la pallina si sia fermata basterà batte¬ re un tasto qualunque (tranne "N”) per rilanciare. Battere N per uscire dal programma. ESTENSIONI POSSIBILI: Potremmo cercare di avvicinarci maggiormen¬ te ad una vera roulette, in diversi modi: disegnare meglio il tavolo, introdurre i colori, simulare il ral¬ lentamento della pallina, introdurre differenti possi¬ bilità di scommessa, e assicurare la gestione delle vincite corrispondenti, tenere i conti di vari giocato¬ ri, ed annunciare i risultati in una maniera più usua¬ le. 102 programmi per ATARI 43 10 REM ROULETTE 20 DIM R$<1) 30 GRAPHICS 0 40 SETCOLOR 2<12,2 50 FOR K=1 TO 4 60 FOR 1*1 TO 3 70 S*2*I 80 POSITIQN 4*I,4*K'PRINT S*+#+*+* 30 HEXT I 100 HEXT K 110 POSITIOH 1,6'PRINT "P"'POSITION 1,10'PRINT "00"'POSITION 1,14'PRINT "D" 120 FOR K=1 TO 4 130 FOR 1-1 TO 3+(K<4> 140 IF 1*10 AND K<4 THEN POSITION 0,4*K+3'PRINT " M 'GOTO 160 150 POSITION 4*1-1,4*K+1'PRINT " “> 160 X=X-1 170 SOUND 0,53,10,4 180 FOR T*1 TO 38'NEXT T 130 SOUND 0,0,0,0 200 GOSUEl 300 210 IF X=1 THEN PRINT CHR*<20>=GOTO 260 220 NEXT I 230 NEXT K 240 X=INKRND<1>*38) 250 GOTO 110 260 POSITION 0,20'PRINT "Un'altra prova -INPUT R* 270 IF R*="N“ THEN END 280 GOTO 40 300 FOR J=1 TO 100-NEXT J 310 RETURN 44 102 programmi per ATARI Corridoi RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: di media difficoltà. Categoria del gioco: riflessione. Difficoltà del gioco: elevata. Fa richiamo a delle nozioni di logica elementare. Il giocatore può presentarsi all’ingresso sia del corri¬ doio n. 1 che del n. 2. In questi due ingressi sono piazzati degli sportelli che si spostano al vostro pas¬ saggio e vi lasciano passare, una volta a destra, una volta a sinistra. In più uno sportello analogo è stato messo nel corridoio centrale; potrete prevedere dove (uscita A o B) si effettuerà la vostra prossima uscita? Le linee da 40 a 110 disegnano i corridoi (e i tre spor¬ telli). La linea 140 aspetta la vostra scelta . La decodifica della strada è fatta dall’ATARI utiliz¬ zando tre variabili logiche I,J.K, che rappresentano lo stato dei tre sportelli (linee da 180 a 320). Dopo aver battuto RUN, il corridoio è disegnato sullo schermo, gli sportelli sono visibili e bisognerà batte¬ re 1 o 2 in risposta alla domanda deH'ATARI. Nella versione presentata allora immediatamente vi¬ sualizzate la risposta e la strada seguita dall'inizio del gioco; anche le uscite corrispondenti appaiono sullo schermo. Ciò presenta il vantaggio di permette¬ re a vari giocatori di esercitare la loro sagacità cer¬ cando di prevedere, per un certo ingresso, ciò che ri¬ sponderà TATARI. ESTENSIONI POSSIBILI: Sono molto numerose; è molto facile immagi¬ nare un corridoio più lungo e complesso, con altri in¬ gressi ed altre uscite, e altri sportelli. Possiamo im¬ maginare una visualizzazione grafica dei risultati di¬ segnando, per un breve istante, lo stato degli sportel¬ li dopo la risposta del giocatore. Possiamo anche ag¬ giungere un test delle risposte (gioco in tanti), conta¬ bilizzare i punti di ogni giocatore, ecc. Nota per il programma: TATARI dispone di caratteri grafici disponibili battendo contemporaneamente CONTROL e uno dei tasti alfabetici. 102 programmi per ATARI 45 10 REM CORRIDOI 20 DIM C*<1>,R*<37>,S$<1>,T*<37> 38 GRAPHICS 0 40 PRINT "nnnnnnnnnnnnnnnnnnnnnn”'REM per emù lettera Minuscola,, battere siault aneawente il tasto 50 PRINT 'PRINT "1 af nnnnnnnnnnn fi"-REM vedere 40 60 PRINT ■' fa-'REM vedere 40 70 PRINT "nnnnnnnn af nnnnn M 'REM vedere 40 30 PRINT " fa"'REM vedere 40 90 PRINT "2 af nnnnnnnnnnn 8"'REM vedere 40 100 PRINT “ fa-'REM vedere 40 110 PRINT "nnnnnnnnnnnnnnnnnnnnnn"'REM vedere 40 120 I=0'J=0'K=0 130 .... 140 POSITION 0,13'PRINT “Entrata 1 o 2 • “'P08ITI0N 17,13'INPUT C* 150 IF C*=“" OR C*>»"3“ OR LEN1 THEN 140 160 R* + 1><=C* 170 PRINT 'PRINT R* 180 IF C*»"!" THEN 230 190 J= NOT 200 IF JO0 THEN 300 210 S*="8“ 220 GOTO 260 230 1= NOT 240 IF IO0 THEN 300 C* = "Q" 260 T$+1>-S* 270 POSITION 0,17'PRINT "Uscito in "jS#'PRINT ‘PRINT T* 280 IF LEN 310 IF KO0 THEN 210 320 GOTO 250 46 102 programmi per ATAR1 Scacchiera RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: difficile. Categoria del gioco: grafica. Difficoltà del gioco: secondo l’utilizzo. Il programma proposto viene in appoggio al pro¬ gramma Scacchi; esso dà, infatti, la possibilità di realizzare una visualizzazione grafica di buona quali¬ tà per i giochi che utilizzano una scacchiera di 8 ca¬ selle (potremo facilmente estenderla a 10*10). È sta¬ ta prevista una locazione: orizzontalmente con delle lettere (da A ad H) e verticalmente con dei numeri (da I a 8). Le linee 50 e 60 definiscono due variabili A$ e B$ che contengono gli elementi del disegno. La linea 70 stampa le lettere orizzontali. II ciclo K (120-160) disegna una casella. Il ciclo J (110-170) disegna una linea. Il ciclo I (90-180) disegna le linee con il loro numero. L’ordine RUN provoca l’apparizione della scacchiera sullo schermo. Per utilizzare il programma, converrà tener conto della localizzazione delle caselle utilizzabili che sono i centri dei quadrati. Le caselle sono ottenute in lar¬ ghezza da una tabulazione del tipo 3 * J,J variante da 1 a 8, e in altezza da 2 * I + K ESTENSIONI POSSIBILI: Potremmo usare questo programma per tutta una serie di giochi che si svolgano su una scacchiera (scacchi, dama, il lupo e gli agnelli, ecc.). 102 programmi per ATARI 47 10 REM SCACCHIERA 20 PRINT ">" 30 SETCOLOR 1,9,14'SETC0L0R 2,0,0 40 DIM A$<3),B*<3> 50 A$=" 60 6$=" "'REM battere questi 3 bianchi in caratteri inversi 70 PRINT ** A B C D E F G H" 80 PRINT 90 FOR 1=1 TO 8 180 PRINT I 110 FOR J=1 TO 8 120 FOR K=1 TO 2 130 POSITION 3*J+1,2*I+K 140 IF INT</2 THEN PRINT A$'GOTO 160 150 PRINT B$ 160 NEXT K 170 NEXT J 180 NEXT I 48 102 programmi per ATARI Il gioco della fava RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: riflessione (due giocatori). Difficoltà del gioco: media. Presenta una certa analogia con il gioco di WYTT- HOF; questa versione offre però 4 possibilità di spo¬ stamento; la posizione di partenza è qui fissata in (0,0) e potrebbe eventualmente essere modificata. Le direzioni di spostamento disponibili sono: destra, basso, diagonale in basso a destra, diagonale in basso a sinistra. Si gioca con la regola: il primo arrivato in (9,9) ha perso. La linea 40 ed il ciclo I (50-70) disegnano il campo di gioco. La linea 110 realizza il test di fine partita. La linea 140 permette di eseguire uno dei sottopro¬ grammi di spostamento. Le linee 150 e 160 assicurano il cambiamento di gio¬ catore. Si lancia il programma con RUN ed appare il campo di gioco , così come la domanda DIREZIONE (1, 2, 3, 4); le 4 direzioni proposte corrispondono agli sposta¬ menti seguenti: Il giocatore 1 inserisce il suo spostamento e batte RETURN. Il movimento corrispondente è realizzato, poi si ot¬ tiene il messaggio GIOCATORE 2 e DIREZIONE. Il giocatore 2 procede nello stesso modo e così via, fino a che uno dei giocatori arriva in (9,9) nel qual caso il gioco termina. ESTENSIONI POSSIBILI: Si può immaginare di introdurre all'inizio del¬ la partita delle caselle con delle trappole (ognuno cercherà allora di fare finire l’altro in una di quelle caselle). Si può anche giocare con vari simboli, se possibile di colore diverso, spostati simultaneamente, proporre dei campi di gioco triangolari, di dimensione arbitra¬ ria, ecc. 102 programmi per ATARI 49 10 REM IL GIOCO DELLA FAVA 20 GRAPHICS 0 30 DIM I*<1> 40 PRINT " 012 345678 9" 50 FOR 1=1 TO 3 60 PRINT >PRINT li"." 70 NEXT I 80 X*5=Y=1 90 J=1 100 POSITION X/2#YSPRINT CHR*<20> 110 IF X=32 AND Y=9 THEN 200 120 POSITION 5/21 ‘PRINT "Giocatore "ìJì," - Direzione"i■INPUT I* 130 I=VAL 140 OH I GOSUB 1000/2000/3080/4060 150 J=J+1 160 IF J*3 THEN 90 170 GOTO 100 208 POSITION 0/21‘PRINT "Il «locatore "jJj" vince..... "i 210 END 1000 Y-Y+l 1010 RETURN 2000 GOSUB 1000 3000 X=X+3 3010 RETURN 4000 GOSUB 3080 4010 Y-Y-l 4020 RETURN 50 102 programmi per ATARI Gioco dell'oca casuale RIFERIMENTI: Programmazione: difficile. Categoria del gioco: fortuna (due giocatori). Difficoltà del gioco: bassa. IL GIOCO: Il gioco riprende l’antichissima idea del gioco dell’o¬ ca, ma aggiungendo la possibilità offerta dal calcola¬ tore di scegliere a caso le caselle "con problema”. La regola del gioco non ha molto interesse, visto che i giocatori non intervengono in nessun momento nel¬ lo svolgimento della partita, che è interamente gesti¬ ta daH’ATARI; basta schiacciare uno dei tasti dopo il lancio del dado e guardare cosa succede. IL PROGRAMMA: La linea 60 permette di chiamare il sottoprogramma 1000-1100 che visualizza il tavolo da gioco, il control¬ lo della posizione dei giocatori e la visualizzazione di quest’ultima. Questa visualizzazione sarà d’altronde rifatta durante la partita, per tener conto dello spo¬ stamento realmente effettuato (che non è necessaria¬ mente quello indicato dal dado). La linea 60 si occupa del cambiamento del giocatore e la linea 70 effettua il lancio del dado. La linea 80 si occupa del caso in cui uno dei giocatori termina. La linea 120 prende un numero casuale tra 0 e 3, che servirà, se sarà il caso, a determinare il vero sposta¬ mento del giocatore, rinviando in uno dei sottopro¬ grammi di "fortuna”. Le linee 1000 e 1010 fanno avanzare le pedine e le li¬ nee 1020-1080 ridisegnano il tavolo da gioco ad ogni turno. PER GIOCARE: Si lancia il gioco con RUN. Il tavolo da gioco è allora disegnato, poi appare il messaggio GIOCATORE 1: ... LA TUA MOSSA Si dovrà allora battere su un tasto qualsiasi perché il colpo del giocatore 1 sia preso in considerazione; non preoccupatevi per il tempo di reazione, che potrà sembrare un pò lungo. Sarà eseguito lo spostamento indicato dai dadi poi, dopo qualche istante, sarà fatto eventualmente un se¬ condo spostamento: è lo spostamento "FORTUNA”. Apparirà allora il messaggio GIOCATORE 2: . . . Il giocatore 2 batte a sua volta un tasto qualsiasi e così via... Il giocatore vincente sarà segnalato da un messaggio BRAVO in fine di partita. Si può fermare il gioco in ogni momento battendo BREAK. 102 programmi per ATARI 51 ESTENSIONI POSSIBILI: Si potrebbe ingrandire il tavolo da gioco, in¬ trodurre un maggior numero di messaggi casuali, cambiare la loro natura. Potremmo anche scegliere le caselle "fortuna" all’inizio del gioco, aggiungere dei messaggi di conseguenza, ecc. 10 REM GIOCO DELL'OCR CASUALE 28 GRAPHICS 0 30 DIM R*<1> 40 X=0'Y=0'J=1 ' I=X 50 GOSUB 1000 60 J=R6S< J-l> 70 I=INT*6+1> 30 IF X=35 OR Y=35 THEN P0SITI0N 0,20‘PRINT "BRAVO!"'END 90 P0SITI0N 6,12 : PRINT "Giocatore ";J+1 j" - il tuo colpo >">l 100 PRINT “ Battere "j*4> 130 F=INT*5+1> 140 0N F GOSUB 206,300,400,500,150 150 GOTO 50 200 1=1+3 210 RETURN 300 I=-I 310 RETURN 400 1=2*1 410 RETURN 506 IF J=0 THEN X=INT*30>«RETURN 510 Y»INT*30>'RETURN 1000 IF J=0 THEN X=X+I* < X+1<=35> 1010 Y=Y+J*I* 1026 POSITIOH 2,3'PRINT "0123456789ABCDEFGHIJKLMNQPQRSTUVWXYZ" 1630 FOR 1=0 TO 35 1040 POSITION 2+1,5'PRINT CHR*<151> 1650 IF I=X THEN POSITION 2+1,5'PRINT "1"; 1066 POSITION 2+1,6'PRINT CHR*<152> 1076 IF I=Y THEN POSITION 2+1,6'PRINT "2"; 1080 NEXT I 1090 FOR 1=1 TO 400'NEXT I 1100 RETURN 102 programmi per ATARI 53 LIVELLO 2 N. Nome del programma Tema e particolarità 1 Dado truccato Da utilizzare, se siete disonesti, in altri programmi 2 Visioni Un gioco sulle parole, per il calcolatore 3 421 Una simulazione semplificata per vari giocatori 4 L’elettricista pazzo Logico e difficile, per 1 solo giocatore 5 La corsa al 20 Gioco di riflessione, per 2 giocatori o più 6 Musica Ripassate le vostre nozioni di solfeggio, con l’aiuto del calcolatore 7 Cavallina Un gioco di riflessione, per 2 giocatori 8 Lettere Un gioco sulle parole, abbastanza sem¬ plice 9 Macchina delle parole Lasciate creare al calcolatore dei vocabo¬ li nuovi 10 Spia Ditegli il vostro amore in codice 11 Attaccate i vagoni Per i più giovani; molto visivo 12 Lancio di un dado truccato Ripassate le vostre conoscenze di stati¬ stica 13 Gioco con le carte Il vostro calcolatore ha più di un trucco nel sacco 14 Il gioco di Marienbad Un gioco di logica per 2 giocatori, in una versione estesa 15 L’indesiderato Siete proprietario. Arriverete a mettere le mani su un inquilino indesiderato 16 Componi Fare della musica, è prima di tutto scri¬ verla... 17 Giorno della settimana Approfittatene per fare il punto sui com¬ pleanni 18 Gioco della vita Un grande classico, in due versioni: ma¬ nuale e automatica 54 102 programmi per ATARI Dimensionamento di un array Ricerca di un elemento in un array e in una stringa L'istruzione DATA L’ISTRUZIONE DIM, O ISTRUZIONE DI DIMENSIONAMENTO DI UN ARRAY Abbiamo già incontrato l’istruzione DIM per limitare la lunghezza di una stringa di caratteri. Le strutture degli array vengono correntemente utilizzate in programma¬ zione, si rivelano anzi indispensabili in un gran numero di casi. Se volete, per esempio, inserire le vostre entrate e uscite per tutti i giorni del mese (supporremo, per semplificare, dei mesi di trenta giorni) potreste definire 30 variabili chiamate PRIMO GIORNO, SECONDO GIORNO, ecc. È più fa¬ cile e più razionale utilizzare un ciclo I, I variante da 1 a 30, una variabile R(I) per le entrate e D(I) per le uscite; così facendo, avrete, senza saperlo, usato una struttura di array a una dimensione; questo sarà ammesso dal- l’ATARI solo se lo avete avvertito prima che avreste usato un tale array, dando un’istruzione DIM R(30) per le entrate e DIM D(30) per le uscite. Potremmo anche immaginare di conservare le entrate e le uscite in uno stesso array, dandogli questa volta due dimensioni: per esempio DIM RD(30,2) (o DIM RD(2,30)). Così, con DIM RD(30,2) si converrà che RD(I,1) rappresenti le entrate e RD(I,2) le uscite. Sono ugualmente possibili degli array con più di due dimensioni. In ATARI è obbligatorio dimensionare un array che contiene anche meno di 10 elementi. Attenzione alla creazione, gli elementi di un array non con¬ tengono obbligatoriamente un valore nullo. LA RICERCA DI UN ELEMENTO IN UN ARRAY: R(I) Se si ha un array a una dimensione, numerico o definito da un’istruzione come DIM R(30),l’Iesimo elemento di questo array è localizzato da R(I); sa¬ rà allora manipolato esattamente come una variabile ordinaria (assegna¬ zione, calcolo, tests, ecc.). Tuttavia non è possibile immettere un valore R(I) direttamente con il co¬ mando input. LA RICERCA DI UN ELEMENTO IN UNA STRINGA: MID$ Per estrarre lT-esimo elemento della stringa alfanumerica A$, si utilizzerà la forma A$(I,I). Così, se A$="BUONGIORNO”, A$(3,3) darà il carattere N; inoltre A$(3,6) darà la sottostringa "ONG”. 102 programmi per ATARI 55 IL TRATTAMENTO DI DATI MULTIPLI ISTRUZIONI READ, DATA, RESTORE Per riempire facilmente un array numerico o alfanumerico, sarà interes¬ sante utilizzare delle linee DATA che contengono i dati iscritti gli uni al seguito degli altri separati da una virgola. Così si potrà scrivere: DATA LEONE, GIULIO, Via MARTIN. . . Questi dati possono essere letti nei cicli FOR. . .NEXT, tramite l’istruzio¬ ne READ. Si può ricominciare la lettura all’inizio dei DATA, con l’aiuto dell’istruzione RESTORE. È possibile verificare una linea di DATA particolare con l’aiuto dell’istru¬ zione RESTORE XXX dove XXX è il numero del passo del programma. 56 102 programmi per ATARI Dado truccato RIFERIMENTI: Programmazione: facile. Categoria del gioco: lancio di dadi. Difficoltà del gioco: media. IL GIOCO: Si vuole cercare di fabbricare un dado truccato se¬ condo la propria convenienza. Il metodo proposto qui consiste nel definire all’inizio una probabilità di realizzazione per ogni tipo di lancio (cioè la probabi¬ lità di ottenere un 1, un 2, un 3, ecc. che ognuna di queste probabilità sia compresa tra 0 e 1, e che la somma di tutte le probabilità sia un numero molto vicino a 1). IL PROGRAMMA: Utilizza il generatore casuale dell’ATARI supposto di qualità adeguata (potremo facilmente usare un qua¬ lunque altro generatore se ce ne sarà bisogno). Il ci¬ clo I (50-120) si occupa dell'ingresso di ognuna delle probabilità, con verifica ad ogni ingresso e sul totale (linea 90); ogni probabilità è conservata in una varia¬ bile indicizzata E(I): linea 70 del programma. Il lancio del dado truccato è effettuato con l’aiuto di un altro ciclo I (160-180), la linea che permette il trucco è la 170. Un nuovo lancio potrà essere effet¬ tuato battendo un RETURN (linea 200). Le linee dalla 300 alla 380 costituiscono un sottopro¬ gramma di musica, estraendo valori di suoni dalla stringa A$. PER GIOCARE: Dopo la partenza con la battuta di RUN, si ottiene la domanda PROBABILITÀ DEL DADO 1, alla quale si dovrà rispondere con un numero compreso tra 0 e 1. Converrà ricordarsi che il totale di tutte le probabili¬ tà inserite non dovrà in alcun caso superare 1.1 (tol¬ leranza di 0.1). Dei messaggi di errore potranno ap¬ parire ed il programma sarà eventualmente rilancia¬ to. Quando tutte le probabilità saranno state definite sarà automaticamente effettuato il primo lancio e ba¬ sterà premere RETURN per effettuare i lanci succes¬ sivi. Si arresta il programma battendo BREAK. ESTENSIONI POSSIBILI: Ci sarebbe evidentemente la forte tentazione di utilizzare subdolamente questo piccolo program¬ ma per aumentare le vostre possibilità di vittoria in uno dei giochi d’azzardo che usano il lancio di dadi. Si potrebbe allora pensare di inserire i dati che defi¬ niscono il dado truccato in una variabile A$, ecc. Po¬ tremmo anche immaginare di presentare i risultati corrispondenti ad una serie di lanci in una maniera spettacolare, che metta il trucco in evidenza... 102 programmi per ATARI 57 10 REM DADO TRUCCATO 15 DIM R*K1>,VA*<3> 20 GRAPHICS 0 30 P=0 40 DIM E<6> 50 POR 1=1 TO 6 60 POSITION 0,3=PRINT "Probabilità' del dado "il; 70 POSITIOH 27,3=INPUT E=E=E 75 POSITION 0,3=PRINT “ 30 P=P+E 1 OR P>1.1 THEN 220 100 POSITION 6*1-3,6'PRIHT "DADO "il 110 POSITION 6*1-3,8=PRINT E 120 NEXT I 130 IF P<0.9 THEN SOUND 0,32,10,4 = GOSUB 400 = SOUND 140 FOR 1=1 TO 500=NEXT I 150 N=INT < RND(1)*6+1> 160 FOR 1=1 TO 6 170 IF N=I AND RND<1»E THEN 150 ISO NEXT I 190 POSITION 9,15=PRINT "Risultato del lancio <"jN 200 PRINT =PRINT "Battere Per lanciare il 210 GOTO 150 220 POSITION 0,4=PRINT "IMPOSSIBILE =0<=P<=1" 230 F-P-E 240 FOR J=1 TO 1500-NEXT J 250 POSITION 0,4=PRINT " 260 GOTO 70 300 FOR 1=0 TO 2 320 Vft$="063040047"=REM " DOSOL MI" 330 N0=VAL < VA* <1+3*1,3+3*1)> 340 SOUND 0,NO,10,4 350 GOSUB 400 360 NEXT I 370 SOUND 0,0,0,0 380 RETURN 400 FOR T=1 TO 40'NEXT T 410 RETURN H 0,0,0,0=RUM i" "i= GOSUB 300 dado";'INPUT R$ 58 102 programmi per ATARI Visioni RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: disegno. Difficoltà del gioco: media. L’ATARI vi permette, per la prima volta, di entrare nella sua intimità lasciandovi intrawedere la sua propria rappresentazione del mondo! Dovrete infatti proporgli delle parole, non importa quali, e lui vi ri¬ sponderà proponendovi una raffigurazione grafica di ciò che rappresenta quella parola per lui. Il gioco sa¬ rà molto più divertente se lo farete in molti: potrete a volte avere delle sorprese. Le linee 50-80 scelgono in modo casuale 2 colori di¬ versi per lo sfondo e le immagini. Un ciclo I (90-170) si incarica di realizzare i disegni. La linea 100 permette di trasformare in numero ogni lettera della parola inserita all’inizio (linea 40). Que¬ sto numero sarà in seguito portato in base 2 dal ciclo J (linee 110-150); secondo il risultato di questa tra¬ sformazione, un punto sarà stampato, oppure no (li¬ nea 140). Si inizia l’esecuzione del programma con RUN, il che porta all'apparizione della domanda NOME DEL DI¬ SEGNO? Si risponde inserendo una parola qualun¬ que che sarà trasformata in disegno dall’ATARI non appena avremo battuto RETURN. Per ricominciare basterà battere un tasto qualunque, per terminare battere BREAK. ESTENSIONI POSSIBILI: La stessa idea può essere ripresa introducen¬ do degli elementi di simmetria nei disegni, aggiun¬ gendo i colori. Possiamo anche immaginare di codifi¬ care con questo metodo un certo numero di disegni che introdurremo man mano nella macchina, e potre¬ mo allora creare un gioco nel quale TATARI divente¬ rà sempre più esperto. Si può realizzare anche un gioco a due giocatori nel quale TATARI vi chiede di trovare la parola che corrisponde al disegno, ecc. 102 programmi per ATAR1 59 10 REM VISIONI 20 DIM R*<80> 30 GRAPHICS 0 48 FRI NT "Nome del diseano INPUT R$ 50 TEXTE=INT#16) ! SETC'OLOR 1,TEXTE,2#INT*8> 60 F0ND=INT*16> ?0 IF R6S <1 THEN 60 80 SETCOLOR 2, FONO,6 90 FOR 1=1 TO LEN 100 N=3*I>)>-340 110 J=1 120 S=N/2-INT 130 N=INT 140 IF SO0 THEN PQSITIGN J+15,1+5’PRINT CHR$a68> 150 J=J+1 160 IF J<10 THEN 120 1?0 NEXT I 180 PRIHT =FRINT 190 FRINT "Per contimare battere ";•INPUT R$ 200 GOTO 30 60 102 programmi per ATARI RIFERIMENTI: Programmazione: facile. Categoria del gioco: lancio di dadi. Difficoltà del gioco: media. IL GIOCO: Ogni giocatore dovrà, a turno, lanciare tre dadi e in seguito scegliere, nei due colpi successivi, se deside¬ ra o no rilanciare 1,2 o 3 dadi. Ottiene allora un pun¬ teggio corrispondente al numero indicato dai dadi, secondo le regole scelte, ed il giocatore successivo procede nella stessa maniera. IL PROGRAMMA: Il numero di giocatori è innanzitutto inserito alla li¬ nea 30. La linea 120 visualizza il numero di giocatori e il nu¬ mero di tentativi già effettuati. Un sottoprogramma posizionato alla linea 4000, uti¬ lizzato tre volte nel ciclo J (190-240), realizza il lancio dei dadi. I rilanci sono eseguiti dalle linee 1000, 2000 e 3000. La variabile R$ genera i secondi e terzi lanci. La stampa del risultato sarà in tutti i casi realizzata dal¬ le linee 130-140. I test per il numero di tentativi e per il cambio di gio¬ catore sono effettuati alle linee 250 e 270. Si osserverà la formula alla linea 180, molto utile per fare una concatenazione. PER GIOCARE: Si lancia l'esecuzione del programma con RUN, il che porta al messaggio NUMERO DI GIOCATORI? Si inserisce questo numero, e si batte RETURN. Lo schermo si cancella e visualizza: GIOCATORE N. 1. PROVA A, PARTITA 1, così come il risultato realizza¬ to, e il numero dei dadi (A, B, C). Se non si desidera rifare dei lanci, basta battere RE¬ TURN. La mano passa allora al giocatore successivo. Per effettuare un altro lancio, basta battere il nome del o dei dadi da rilanciare, e battere RETURN: per esempio, per ritirare A e C si batterà AC seguito da RETURN. I giocatori successivi procederanno nello stesso modo. ESTENSIONI POSSIBILI: La più evidente consiste nel lasciare la gestio¬ ne dei risultati ai giocatori, riferendosi alle regole di vincita usuali del gioco 421. Potremmo fare apparire dopo ogni turno una tabella con la ricapitolazione dei risultati dei giocatori. Potremmo anche migliorare la visualizzazione dei da¬ di (riferirsi ai vari programmi di visualizzazione dei dadi presenti nella stessa opera). 102 programmi per ATAR1 61 10 REM 421 20 DIM R«6>,X«1> 30 PRINT "Numero di ai oc* tori > INPUT N 40 P=1 50 1 = 1 60 K=0 70 PRINT ">" 80 R*="flBC" 30 GOTO 130 100 K=K+1 110 POSITION 17,SPRINT “-";CHR$<180>;CHR<<178>iCHR*<17?>,- 120 POSITION 6,4‘PRINT "Giocatore n. "il;" - Prova ";K;" - Partita **;P 130 POSITION 8,7iPRINT fi‘POSITION 18,7‘PRINT BPOSITION 23,7‘PRINT C 140 POSITION 8,3‘PRINT "fi"‘POSITION 18,3‘PRINT "B" POSITION 28,3‘PRINT "C" 150 R*»""'POSITION 0,14‘PRINT " 160 POSITION 0,14'PRINT <'Dado da rilanciare ■ ‘POSITION 30/14‘IN¬ PUT R$ 170 IF R<="" THEN 260 180 R<="DDD" 130 FOR J=1 TO 3 20O GOSUB 4000 210 X<=R«J, J> 220 X=fiSC*6+1> 4010 RETURN 62 102 programmi per ATARI L'elettricista pazzo RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: difficile. Categoria del gioco: solitario. Difficoltà del gioco: elevata. Un palazzo con 10 finestre, numerate da 0 a 9, appare sullo schermo. Il giocatore dovrà ad ogni tentativo manovrare uno degli interruttori, indicando il suo numero (da 0 a 9). In teoria la finestra corrispondente dovrebbe spe¬ gnersi, ma è anche possibile che un’altra si illumini (o si spenga). Si tratta, naturalmente, di cercare di ot¬ tenere lo spegnimento delle 10 finestre col minor nu¬ mero di tentativi possibile. Un array A, alla linea 30, conterrà lo stato (acceso o spento) delle 10 finestre. Il ciclo I (60-80) e l’altro ciclo I (100-150) disegnano il palazzo nel suo stato iniziale. La linea 160 controlla se tutto è spento, nel qual caso si andrà alla linea 300 per visualizzare il numero di tentativi. La linea 170 aspetta l’indicazione dell’interruttore utilizzato. Le linee da 180 a 280 definiscono il risultato della manovra. RUN provoca l’apparizione del palazzo con tutte le fi¬ nestre accese. Alla domanda INTERRUTTORE NUMERO?, si ri¬ sponde indicando il numero dell’interruttore da usa¬ re, seguito da RETURN. Il risultato della manovra è allora indicato sullo schermo (delle finestre si accendono o si spengono). Si continua così fino a che tutte le finestre sono spen¬ te e si ottiene allora il numero di tentativi fatti. ESTENSIONI POSSIBILI: Potremmo immaginare una grafica molto mi¬ gliore con, se possibile, i colori. Potremmo anche fa¬ re un gioco con due giocatori, aumentare il numero di finestre, modificare la routine per l’accensione o lo spegnimento... 102 programmi per ATARI 63 10 REM L'ELETTRICISTA PAZZO 20 M=0 30 DIM A<10> ! FOR 1=1 TO 10>A=0'MEXT I 40 GRAPHICS 0 50 SETCOLGR 2,8,2'SETCOLOR 1,3,6 60 FOR 1=1 TO 7 70 POSITIOH 2,1'FOR J=1 TO 36'PRINT CHR$<160);‘HEXT J 88 HEXT I 30 T=0 100 FOR 1=1 TO 10 110 T=T+AU) 120 POSITIOH 2*1+8,3'PRIHT “*" 130 IF 0=0 THEM POSITIOH 2*1+8,3'PRIMT " » 140 POSITIOH 2*1+8,6'PRIMT 1-1 150 HEXT I 160 IF T=10 THEM 300 170 POSITIOH 0,14 'PRIHT "Interruttore numero'";=IMPUT M 180 M=M+1 130 M=M+1 200 IF 00-0 = 1 THEH 280 210 A 00 = 1 220 R=RMD< 1 >+H-‘RHD< 1 >-M • R= >-SIH)> 240 IF M=0 THEH H=IHT*10+1> 250 IF 000=1 THEH 280 260 A=1 270 GOTO 30 280 0 00=0 290 GOTO 220 300 PRIHT 'PRIHT "Trovato in ";M;" prove." 64 102 programmi per ATARI La corsa al 20 RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: logica (due o più giocatori). Difficoltà del gioco: media. È possibile immaginare per questo gioco varie rego¬ le; abbiamo preso qui solo la regola usuale per due giocatori, che ne fa un gioco simile al gioco dei fiam¬ miferi o al gioco di spostamento: 4 mucchi di 20 stel¬ le appariranno all’inizio della partita ed ogni giocato¬ re può prendere tante stelle quante ne desidera, ma in un solo mucchio per volta. Quello che prende l'ul¬ tima stella è considerato come perdente. Il ciclo I (30-50) disegna 4 file di 20 stelle. La variabile F, dimensionata alla linea 70, servirà a registrare il numero di stelle prese in ogni fila. La variabile T conterrà il numero totale di stelle pre¬ se (linea 60). La linea 120 controlla che ci siano sufficienti stelle sulla linea indicata. Il ciclo 1(150-190) e il ciclo J (160-180) levano le stelle; la linea 220 testa la fine della partita. Lanciare il programma con RUN; si visualizzano il tavolo da gioco e i messaggi GIOCATORE 1 e LINEA, poi CASELLE. Si risponde inserendo un numero di li¬ nea (tra 1 e 4) seguito da RETURN, ed il numero di stelle da levare seguito da RETURN. Le stelle sono allora eliminate, e toccherà al secondo giocatore. La partita termina, quando l’ultima lettera è stata tolta, con la visualizzazione del giocatore vincente. ESTENSIONI POSSIBILI: Oltre ad una miglioria della qualità grafica e dei controlli, numerose varianti sono ipotizzabili mo¬ dificando se necessario le regole di partenza: possia¬ mo autorizzare la presa solo di un numero dispari di stelle, o alternare pari e dispari, oppure prendere a caso il numero di stelle da levare, o ancora giocare in tanti... 102 programmi per ATARI 65 10 REM LA CORSA AL 28 20 GRAPHICS 0 30 FOR 1=1 TO 4 40 POSITION 0,2*1 SPRINT li” ********************" 50 NEXT I 60 T=0 70 DIM F<4>'FOR 1=0 TO 4'F=0‘NEXT I 80 B=1 •30 POSITION 0,12 : PRINT "Giocatore '">B 100 PRINT : PRINT "Linea * 1 INPUT L 110 PRINT :PRINT "Caselle ‘"j'INPUT C 120 IF C+F=F 30 SETCOLOR 1,5,2‘SETCOLOR 2/12,6 40 PRINT ">" 50 POR 1=1 TO 5 60 PQSITION 2,211+4 ‘FOR J=1 TO 35 ;PRINT CHR$<18),>NEXT J 70 NEXT I 80 FOR 1=1 TO 14 30 PQSITION 0,1+2 100 IF I<=9 THEN PRINT I 110 IF I>9 THEN PRINT CHR* 120 NEXT I 130 N*="SI LA SOL FA MI RE DO " 140 X=INT*14+1> 150 T=X-1-7*INT < < X-1> ^7 > 160 POSITION 0/18 : PRINT "Nota "jN$<3*T+l,3*T+3>; 170 IF X<=7 THEN PRINT " acuta." 180 IF X>7 THEN PRINT “ arave." 130 POSITION 0/'26 : PRINT "Nuwero di linea ■"> >INPUT L* 200 L=-48>*+-55>*(L*>=“A") 210 POSITION 14, X ‘PRINT CHR$<2> : POSITION 14,X+l‘PRINT CHR*<2:>‘PQSITION 14,X+2‘PR INT CHR* <36 > 220 POSITION 25,20 230 IF L=X THEN PRINT "BRAVO." 240 IF LOX THEN PRINT "PERSO!" 250 PRINT ‘PRINT "Battere per continuare ", ! INPUT L* 260 GOTO 40 68 102 programmi per ATARI Cavallina RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: riflessione (due giocatori). Difficoltà del gioco: bassa. Anche se l’idea è in sé molto semplice, non sarà ob¬ bligatoriamente evidente scoprire una strategia ade¬ guata. Disponiamo di tre più tre pecore, raffigurate con dei simboli grafici, che occupano 8 caselle; le pe¬ core possono spostarsi da una casella ad un'altra li¬ bera. Varie regole potranno intervenire, secondo la vostra stima personale su questa o quella: o si co¬ stringono le pecore ad andare sulla prima casella di¬ sponibile, saltando eventualmente sopra le pecore av¬ versarie, oppure si lascia loro scegliere la casella di arrivo, il che può rendere le partite interminabili; a voi la scelta. Il ciclo I (50-80) inizializza un array A(I), che contiene le posizioni delle pecore. Il ciclo I (100-150) disegna il campo di gioco e le pecore. Le linee 170 e 180 si occupano del testo e degli in¬ gressi. La linea 190 controlla la validità del colpo. Il cambio giocatore è realizzato alla linea 220. Si comincia l’esecuzione del programma con RUN. Si ottiene allora il messaggio GIOCATORE 1, che indica il numero del giocatore, seguito dalla domanda INI¬ ZIO, FINE? Si risponde indicando il numero della pecora da spo¬ stare seguito da RETURN, poi il numero della casella di arrivo, seguito da RETURN. È allora realizzato lo spostamento; poi il secondo gio¬ catore procede nello stesso modo. Il vincitore è in teoria quello che riesce a posizionare le sue tre peco¬ re allineate sulle posizioni inizialmente occupate dal¬ l'avversario. ESTENSIONI POSSIBILI: Si comincerà con 1’aggiungere un controllo del giocatore vincente. Si può anche migliorare la presentazione disegnando delle vere pecore, rendere il gioco più attraente nu¬ merandole e imponendo un certo ordine all’arrivo. Infine potremmo creare una strategia per il calcola¬ tore, fissando le regole. 102 programmi per ATARI 69 18 REM CAVALLINA 20 GRAPHICS 0 30 DIM A<8> 40 Aa>=0'B<8>=0 50 FOR 1=1 TO 3 68 A<1+1>=1 78 A=1 THEN POSITION 4*1-1,6=PRINT CHR*<26>iCHR$<21);CHR*<10) 140 IF A< I )--l THEN POSITION 4*1-1,6‘PRINT CHR*<.8> ;CHR*<21 >;CHRS03) 150 NEXT I 168 J=1+<>0 THEN 170 208 A=8 210 A,R$<1> 30 S=0‘J=0 40 GRAPHICS 2 50 SETCOLGR 0,10,2 60 PRINT ">“ 70 L=INT < RND <1)*6+7 > 80 fi$=“AEIOUEfi" 90 POSITIOH 0,3>PRINT *6j"LETTERE'“ 100 FOR 1*1 TO L 110 POSITION 7+1,3 : PRINT 46J CHR**26+65> > 120 IF RNDC1X0.4 THEN POSITION 7+I,3'R=INT*7+l>'PRINT 46;fl* 130 NEXT I 140 I=»l 150 PRINT “ Giocatore “> 1 )'PRINT " - Lunehezza INPUT L 170 IF 1*1 THEN P=L 180 1=1+1 190 IF I<3 THEN 150 200 S=S+P*

L> 210 J=J+L*P> 220 PRINT “ Punti - Giocatore 1 '“jS>“ -Giocatore 2 '“;J 230 PRINT " Battere Per continuare "> 50 R$="" 60 FOR J=1 TO 2 70 RESTORE 10004.J 80 FOR R=1 TO RND< 0*15+1 80 READ Ht 100 NEXT R 110 R*+1>=R* 120 HEXT J 130 FRINT R$ 140 GOTO 50 10O0 DATA ANDRO,COSMO ,MICRO «ELIO/SESSO ,STEREO ,PALEO,MAGRO , IDRO ,STENO , PATO ,OLEO ,M ITO,OMEO,OTTO 2080 DATA GRATE,FILO,FOBO,TROPO,GIMMO,MANE,NAUTA,FAGO,FUGO,PATO,CARDI0,DERMA,SCO PIO,VORO,FONO 74 102 programmi per ATARI Spia RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: gioco di riflessione. Difficoltà del gioco: bassa. Il programma può servire simultaneamente da codi¬ fica e decodifica di messaggi segreti, seguendo un metodo molto facile da mettere in opera su questo ti¬ po di calcolatore. Un piccolo generatore casuale situato alla fine del programma è utilizzato per modificare in maniera arbitraria ogni lettera del messaggio; si dovrà fare attenzione ad utilizzare sempre lo stesso numero (nu¬ cleo) per cominciare la codifica o la decodifica di due messaggi identici. Il nucleo iniziale (che sarà un intero qualunque) è in¬ serito alla linea 40; il messaggio è inserito alla linea 60. La linea 70 permette di scegliere tra le opzioni di co¬ difica e decodifica. Il ciclo I (90-160) è utilizzato sia per effettuare la co¬ difica, che la decodifica. La linea 110 chiama il generatore casuale. La linea 120 realizza la trasposizione delle lettere. Le linee 130 e 140 verificano che si resti nei limiti au¬ torizzati. I risultati saranno stampati dalla linea 170. Le linee da 1000 a 1030 contengono il generatore. Lanciare il programma con RUN. Inserire in seguito un intero N che servirà da nucleo per il generatore (bisognerà ricordarselo per la deco¬ difica). Poi battere il messaggio, seguito da RETURN. Scegliere l’opzione C per CODIFICARE, e l’opzione D per DECODIFICARE, e battere RETURN. II messaggio codificato o decodificato secondo il ca¬ so, sarà allora visualizzato. ESTENSIONI POSSIBILI: Si potrà estendere la codifica a segni diversi dalle lettere dell’alfabeto, utilizzare eventualmente vari generatori, introdurre nel messaggio una codifi¬ ca del o dei numeri che sono serviti da generatori, ecc. 102 programmi per ATARI 75 10 REM SPIA 20 DIM ft*<300>,B$<300>,R* 30 GRAPHICS 0 40 PRINT "Fornisci il codice «";«INPUT N 50 A=l/N 60 PRINT «PRINT "Fornisci il messasaio « " j « INPUT A$ 70 PRINT «PRINT “Vuoi COodificare o ) 110 GOSUB 1000 120 T=T-A*< > 130 IF T>30 THEN T=T-26 140 IF T<65 THEN T=T+26 150 B* + 1>=CHR* 160 HEXT I 170 PRINT «PRINT "Risultato «";B$ « END 1000 A= 1020 A=INT<2S*A+1> 1030 RETURN 76 102 programmi per ATARI Attaccate i vagoni RIFERIMENTI: Programmazione: facile. Categoria del gioco: solitario. Difficoltà del gioco: bassa. IL GIOCO: Bisogna cercare di agganciare, il più rapidamente possibile, la locomotiva e il suo vagone, che appaiono tutti e due all’inizio della partita, in due posti più o meno lontani dello schermo. Dovremo per questo spostare la locomotiva indicando la sequenza dei mo¬ vimenti da effettuare (in maniera codificata: A per una casella verso l’alto; B per una casella verso il basso; D per una casella verso destra; e S per una ca¬ sella verso sinistra). Si batterà, per esempio: BBSDAAA. IL PROGRAMMA: Le linee 50 e 70 disegnano la locomotiva, la linea 80 il vagone, la linea 90 le ruote. La posizione iniziale della locomotiva è definita dalle linee 110 e 120, quella del vagone dalle linee 130 e 140. La linea 150 evita che siano inizialmente troppo vi¬ cini. Le linee 210 e 220 realizzano la visualizzazione del vagone, le linee 170-200 la locomotiva. Il test di fine è in linea 230. I movimenti da effettuare sono inseriti in una varia¬ bile alfanumerica R$, alla linea 240, e sono decodifi¬ cati in un ciclo I (270-300), per essere eseguiti alla li¬ nea 310. PER GIOCARE: RUN permette di visualizzare le posizioni di partenza della locomotiva e del vagone. Si batte allora la serie degli spostamenti da effettua¬ re, sotto la forma DDDAAABASS, seguito da RE¬ TURN. La locomotiva apparirà nella sua nuova posizione, e si ricomincerà, fino a che non sia attaccata al vagone. Si otterrà allora l’apparizione del punteggio. ESTENSIONI POSSIBILI: Sarà interessante prevedere la perdita della partita se per incidente, nel corso dello spostamento, la locomotiva entra in collisione col vagone. Potremmo anche prevedere vari vagoni, e un ordine di aggancio, giocare in molti con varie locomotive, di¬ segnare le ferrovie, introdurre degli ostacoli da aggi¬ rare obbligatoriamente da una certa parte, ecc. 102 programmi per ATARI 77 18 REM ATTACCATE I VAGONI 20 GRAPHICS 8 30 SETCOLOR 1,3,2‘SETCOLOR 2,12.8 40 DIM A*<5>,B*<5>,C$<5>,D*<5>,E*<5>,R*<40> 58 A$="re u "'REM battere le lettere minuscole schiacciando s i rou ltardamente 60 B*=" arxe“'REM vedere 40 70 C$="rxrrc"'REM vedere 40 88 D*="zrrrc“'REM vedere 40 90 E*=" 0 0“ 100 H=0 110 LY=INT*36> 120 LX*INT#19> 130 WY*INT*31 ) 140 WX=2+INT<4 THEN 110 160 PRINT ->•' 170 POSITION LY,LX>PRINT A* 180 POSITION LY.LX+l'PRINT B# 190 POSITION LY.LX+2'PRINT C* 200 POSITION LY.LX+3'PRINT Ef 210 POSITION WY.MX'PRINT D$ 220 POSITION WY.WX+1'PRINT E* 230 IF LX-WX-2 AND WY-LY-5 THEN 400 240 POSITION 0,22'PRINT “Percorso da sesuire "; 1 INPUT R» 250 X*0‘Y=0 268 N-N+l 270 FOR 1=1 TO LEN 280 X=X+-="A“ AND LX>0> 290 Y=Y+-=“S“ AND LY>0> 300 NEXT I 318 LX=LX*X'LY=LY+Y 320 GOTO 160 408 POSITION 6,22'PRINT “BRAVO ! riuscito in "jNj" colpi."; 410 INPUT R$ 78 102 programmi per ATAR1 Lancio di un dado truccato RIFERIMENTI: Programmazione: media. Categoria del gioco: riflessione. Difficoltà del gioco: media. IL GIOCO: Riprende un’idea di un programma precedente (DA¬ DO TRUCCATO) in una applicazione statistica: si fab¬ brica un dado volontariamente truccato, che si lance- rà un certo numero di volte, e si crea una tabella di risultati. IL PROGRAMMA: Le probabilità desiderate per ogni tiro sono introdot¬ te da un ciclo I (50-120), con tutte le verifiche di vali¬ dità necessarie. Il numero di tiri richiesti è introdot¬ to alla linea 140. Il ciclo J (150-230) contabilizza i lanci. Il ciclo I (170-190) assicura la conformità di ogni lan¬ cio con le probabilità introdotte all'inizio del gioco. I risultati sono contabilizzati alla linea 200, e visua¬ lizzati grazie alle linee 210 e 220. PER GIOCARE: Cominciare l’esecuzione battendo RUN, poi, alla do¬ manda PROBABILITÀ DEL DADO 1, introdurre un numero tra 0 e 1. Fare lo stesso per i dadi 2, 3, ecc., senza dimenticare che il totale delle probabilità introdotte dovrà essere vicinissimo a 1. In seguito, all’apparizione della domanda NUMERO DI LANCI si introdurrà un intero sufficientemente grande, seguito da RETURN. La visualizzazione dei risultati richiederà tanto più tempo ad apparire quanto più è grande l’intero inserito. I risultati sono visualizzati sotto i numeri dei lanci: così 32.3 apparso sotto l’I significa che il lancio di 1, al quale avrete assegnato una probabilità di 0.3 è sta¬ ta realizzata 32 volte. ESTENSIONI POSSIBILI: Possiamo immaginare di migliorare la raffigu¬ razione dei risultati utilizzando per esempio un isto¬ gramma, oppure un qualsiasi altro metodo grafica- mente più soddisfacente. 102 programmi per ATAR1 79 10 REM LANCIO DI UN DADO TRUCCATO 20 DIM E<6> 30 GRAPHICS 0 40 P=0 50 FOR 1=1 TO 6 60 POSITION 0,3-PRINT " 70 POSITION 0,3=PRINT "Probabilità' del dado "il; 1 INPUT EE <0 OR E< I »=1 OR P>1.1 THEN 300 100 POSITION 6*1-4,6SPRINT “DADO ";I 110 POSITION 6*1-3,SsPRINT E 120 NEXT I 130 IF P<0,9 THEN RUM 140 POSITION 0,11 SPRINT "Numero di lattei <"i- INPUT P 150 FOR J=1 TO P 160 N=INT < RND<1)*6+1) 170 FOR 1=1 TO 6 188 IF N=I AND RND<1)>E) THEN 160 ISO NEXT I 200 eo-o=e+i 210 POSITION 6*N-3,15SPRINT N 220 POSITION 6*N~4,17 SPRINT E 320 FOR J=1 TO 1700=NEXT J 330 POSITION 0,4SPRINT " 340 GOTO 60 80 102 programmi per ATARI Gioco con le carte RIFERIMENTI: Programmazione: difficile. Categoria del gioco: gioco di prestidigitazione. Difficoltà del gioco: bassa. IL GIOCO: È un gioco abbastanza facile ma, qui, le carte sono manipolate sotto i vostri occhi dall’ATARI che ha il ruolo di prestigiatore; 21 carte, prese a caso in un mazzo di 52, sono visualizzate, e il giocatore dovrà scegliere mentalmente una delle carte proposte. Poi dovrà indicare all’ATARI in quale colonna (Ima, 2nda, o 3za partendo da sinistra) si trova la carta scelta; le carte sono allora ridistribuite ed il giocato¬ re indica di nuovo la colonna corrispondente alla sua carta; questo è fatto di nuovo ancora una volta, alla quarta visualizzazione, l’ATARI è in grado di indovi¬ nare la carta scelta. IL PROGRAMMA: Il ciclo I (60-120) permette di scegliere, a caso, 21 car¬ te su 52, ed il ciclo chiuso J (80-100) permette di assi¬ curarsi che non si realizzi due volte la stessa scelta. La linea 140 contiene il colore delle carte, così come il nome delle figure (FA, DO, RE, AS), in una variabile alfanumerica B$. Il ciclo I (150-240) realizza la visualizzazione del gioco. La linea 160 decodifica il colore della carta. La linea 170 sceglie la posizione di visualizzazione. La linea 180 decodifica l’altezza. La visualizzazione vera e propria è realizzata dalla li¬ nea 190 alla linea 230. La linea 260 permette, al giocatore, di inserire il nu¬ mero della colonna dove si trova la carta. Il ciclo J (300-320) realizza la mescola, ed i cicli chiusi J (350-390) e I (360-380) fabbricano la nuova variabile A$ da utilizzare per la prossima visualizzazione. PER GIOCARE: Si lancia il programma con RUN. Appaiono le prime 21 carte, divise in tre colonne. Si indica allora il numero (1, 2, 3) della colonna dove si trova la carta scelta, seguito da RETURN. Si ottiene una seconda visualizzazione e si procede nella stessa maniera; poi una terza e si fa la stessa cosa. Alla quarta mano, la carta scelta è automaticamente visualizzata. Si uscirà dal programma battendo BREAK al posto del numero di colonna. 102 programmi per ATARI 81 ESTENSIONI POSSIBILI: Si può immaginare una miglioria della visua¬ lizzazione scrivendo il nome ‘delle carte per intero, o anche disegnando delle vere carte, a colori. Si potrà anche cercare di programmare degli altri giochi, usando lo stesso principio di base, ma con più carte, ecc. 10 REM GIOCO CON LE CARTE 20 GRAPHICS S 30 SETC0L0R 1,2SETC0L0R 2,15,8-SETCOLOR 4,15,8 40 DIM R$<21>,B*<21>,R*<5> 58 R*="" 60 FGR 1=1 T0 21 70 B$=CHR**52+38)> 75 IF A$="" THEN 110 30 FOR J=1 T0 LEN 90 IF B$=fl* THEN 70 10O NEXT J 110 r$<:len + i>=b* 120 NEXT I 130 H=3 : P=1 140 B*= 11 FIQUCUPIFADOREAS“ 158 FOR 1=1 T0 LEN*P+11* 160 S=INT<-38)/13) 170 J=7*INT</7> 180 T=RSC>-37-13*S 190 IF P=0 THEN P0SITI0N 0,0'PRINT “La tu* carta e' • 200 P0SITI0N 4+J*P+INT+16*,a-J>*P 210 IF T<=9 THEN PRINT STR$; 220 IF T>9 THEN B=ABS<2*T-11>'PRINT B*; 230 POSITIÙN 4+*P+l+IHT,*P-PRINT B*<2*S+l,2*S+2> 240 NEXT I 250 IF P=0 THEN END 260 POSITIQN 0,16'PRINT "Quale colonna 1 "J•INPUT N 270 PRINT ">" 280 H=H-1 290 R*="20120"’B*="" 300 FOR J=0 TO 2 310 B=7*VAL < R* ( N+J, N+ J ) >+1 1 B*< LEN< B*> + 1 >=A*<8, B+6 ) 320 NEXT J 330 IF H-0 THEN A*=B* ! P=8 1 GOTO 140 340 A*=‘"‘ 350 FOR J=0 TO 2 368 FOR 1=1 TO 7 370 A* < LEN < A* >+1>=B* < 3*I-2+J,3*1-2+J) 380 NEXT I 390 NEXT J 400 GOTO 140 82 102 programmi per ATARI Il gioco di Marienbad RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: logica (2 giocatori). Difficoltà del gioco: media. IL GIOCO: Un gioco reso celebre grazie ad un film viene presen¬ tato qui in una versione più conforme alle sue origi¬ ni, ossia il gioco di NIM. Infatti, è possibile, all’inizio della partita, scegliere il numero di fiammiferi che vogliamo mettere in ogni mucchio. Ogni giocatore gioca turno che prende l’ultimo fiam¬ mifero ha perso. IL PROGRAMMA: La linea 70 dimensiona una variabile A(I) che conter¬ rà il numero di fiammiferi di ogni mucchio. Il ciclo I (80-110) permette di inserire questo numero. Il ciclo I (140-170) presenta il mucchio. La linea 180 garantisce la visualizzazione del numero del giocatore. La linea 200, così come la 210, controllano se la mos¬ sa è autorizzata. La linea 280 controlla la fine della partita. PER GIOCARE: Si lancia il programma con RUN, poi si inserisce il numero di mucchi (tra 1 e 7), seguito da RETURN. Si inserirà in seguito il numero di fiammiferi in ogni mucchio (fare ad ogni ingresso N seguito da RE¬ TURN). Si otterrà allora la visualizzazione dei diffe¬ renti mucchi, col numero del giocatore interessato (1 o 2), così come il messaggio IN QUALE MUCCHIO?; si risponde battendo il numero del mucchio nel quale si desidera pescare seguito da RETURN. Si ottiene allora la domanda QUANTITÀ DA TOGLIERE?, e si risponde indicando il numero di fiammiferi che si de¬ sidera levare dal mucchio. Poi sarà il turno del secondo giocatore, e si giocherà alternativamente fino a che non ci siano più fiammi¬ feri disponibili. In fine partita, si otterrà la visualizzazione del nume¬ ro del giocatore vincente. ESTENSIONI POSSIBILI: Si può designare ogni giocatore col suo nome, fare una grafica più elaborata, scrivere un program¬ ma che permetta all'ATARI di fare da partner, ecc. 102 programmi per ATARI 83 10 REM IL GIOCO DI MRRIENBAD 20 GRAPHICS 0 30 DIM N*<1> 40 PRINT "Numero di mucchi <<=?>•">■INPUT N 50 IF N<=0 OR N>=8 THEN RUN 60 S=0 70 DIM A 80 FOR 1=1 TO N 90 PRINT ! PRINT "Mucchio U >1>“ - numero di fiammiferi “ " j ‘ INPUT A‘fi=A 100 S=S+A 110 NEXT I 120 H=1 130 PRINT ">" 140 FOR 1=1 TO N 150 POSITION 5*1+2,4“PRINT AH 190 PRINT PRINT "In che mucchio “"j“INPUT T 200 IF T>N THEN 130 210 IF h=0 THEN 130 220 POSITION 2,14“PRINT "Quantità' da toaliere “ ";“POSITION 25,14“INPUT W 230 IF W>A(T> OR W=0 THEN 210 240 A-W 250 S=S-W 260 H=H+1 270 IF H=3 THEN H=1 290 IF 9=0 THEN PRINT “PRINT "Il aiocatore ";H;" vince."“END 290 GOTO 130 84 102 programmi per ATARI L’indesiderato RIFERIMENTI: Programmazione: difficile. Categoria del gioco: fortuna e riflessione (1 gioca¬ tore). Difficoltà del gioco: media. IL GIOCO: Siete proprietario di un immobile con 16 apparta¬ menti vuoti e non riuscite a mettere le mani sul vo¬ stro inquilino indesiderato. Visitate gli appartamenti a caso ma, se visitate l’appartamento vicino, il vostro inquilino sentendo il rumore, si sposta. Può anche in¬ stallarsi in un appartamento che avete già visitato e segnato come vuoto. Per vincere bisognerà mandarlo via con meno di 9 mosse. IL PROGRAMMA: Un array B è dimensionato a 16, alla linea 20, per ri¬ cevere i numeri delle caselle già visitate. Il ciclo I (80-110) disegna il campo di gioco. La posizione iniziale dell’inquilino è scelta a caso dal¬ la linea 120. Il numero della casella da visitare è dato dalla linea 130. Le linee da 135 a 220 controllano le risposte possibili. Il ciclo I (180-200) disegna le caselle visitate. La linea 230 disegna l’inquilino, cancellato alla linea 260. Le linee 270 e 280 assicurano il suo trasferimento. Le linee da 500 a 1000 assicurano la decodifica della musica da suonare. PER GIOCARE: Si lancia il programma con RUN. Alla domanda CASELLA DA VISITARE? si risponde battendo una lettera da A a P. Se si è trovato l’inquili¬ no, questi viene visualizzato e la partita è finita; se non siete riusciti a trovarlo si possono verificare due casi: se siamo abbastanza lontani e l’inquilino non si sposta, oppure è in una casella e appare per un breve istante, e si nasconde a caso in una casella vicina. Nelle caselle già visitate appare un cuore e non po¬ trete più ritornarci. Se, dopo 9 colpi, non l’avete tro¬ vato, la posizione dell'inquilino si evidenzia e avete perso. ESTENSIONI POSSIBILI: Si potrà certamente giocare con più di 16 ca¬ selle, utilizzare dei caratteri grafici per rappresenta¬ re l'inquilino e il proprietario, utilizzare un algorit¬ mo più fine per lo spostamento dell’inquilino, vietar¬ gli eventualmente di ritornare nelle caselle già visita¬ te, ecc. 102 programmi per ATARI 85 10 REM L'INDESIDERATO 28 DIM 25 FOR 1=1 TO 16‘6=0‘NEXT I 30 A*=CHR*<160> 48 FOR 1=1 TO 3‘B*+1>=A*‘NEXT I 58 GRAPHICS 8 G8 SETCOLOR 1,3,2•SETCOLOR 2,8,10 70 PRINT “>" 88 FOR 1=1 TO 16 90 POSITION 4+4*/4>>,2+4*INT/4> ‘PRINT B* 100 POSITION 4+4*/4:>>,3+4*INT</4>‘PRINT A$J 1 PRINT CHR*<64+I >; 1 PRINT A* 110 NEXT I 120 X=INT S=1 ‘K=0 138 C*=.POSITION 0,20‘PRINT "Casella da visitare ■ "> ‘POSITION 21*20*INPUT C$ * C=ASC (CO -64 135 IF C<1 OR 016 THEN 130 148 IF B=1 THEN POSITION 0,22‘PRINT "Già' visitata!"‘GOTO 130 158 IF C=X THEN POSITION 8,22‘PRINT "Scovato in ";S;" colpi.“‘M$="DOMISO"=GOSUB 500‘K'=l‘GOTO 230 160 IF ABS2 THEN 230 178 POSITION 8,22‘PRINT "Non e' U'!"‘M*="DOREMI"‘GOSUB 500 188 S=S+1‘B^4>>,2+4*INT<-32*B 200 NEXT I 210 IF S=3 THEN POSITION 0,22‘PRINT "Hai Perso, era in ";CHR*;"=K=1‘GOTO 230 220 POSITION 0,22‘PRINT H "‘GOTO 130 230 POSITION 5+4*>,l+4*INT<‘PRINT "x“ 240 FOR 1=1 TO 300‘NEXT I 250 IF K=1 THEN M*="SOMIDO"‘GOSUB 500‘POSITION 0,23‘END 260 POSITION 5+4*CX-l-4*INT<x4)),l+4*INT((X-l)/4)‘PRINT - “ 278 Z=INT<10*RND<1>+1>-5=IF ABS<2>=2 THEN 270 280 X=X+2‘IF X>16 OR X<1 THEN X=X-Z■GOTO 270 290 GOTO 180 580 FOR 1=1 TO LEN/2 510 READ NO*,NO‘IF NO*OM*<2*I-1,2*1 > THEN 510 520 SOUND 0,NO,18,4 530 FOR T=0 TO 30‘NEXT T 540 RESTORE 558 NEXT I 560 RETURN 1008 DATA DO,126,RE,108,MI,96,FA,91,SO,81,LA,72,SI,64 86 102 programmi per ATARI Componi RIFERIMENTI: Programmazione: facile. Categoria del gioco: composizione musicale. Difficoltà del gioco: nessuna. IL GIOCO: Si tratta, infatti, di un programma capace di compor¬ re, in modo molto elementare, della musica, e questo in una maniera completamente casuale. Il calcolato¬ re, in un primo tempo, disegnerà uno spartito, poi stamperà una successione di note (che vanno dal DO grave al SI acuto) e assegnerà loro il nome. Una nuo¬ va serie di note apparirà in seguito, e così via. IL PROGRAMMA: Il ciclo I (50-70) disegna lo spartito. La variabile N$, alla linea 80, contiene i nomi delle note e VA$ alla linea 35 contiene le note in forma co¬ dificata. Il secondo ciclo I (90-170) permette di fare la scelta di una nota in maniera casuale, alla linea 100; il suo no¬ me è calcolato alla linea 110 e la nota è disegnata alla linea 120. La linea 180 permette di ricominciare battendo RE¬ TURN. PER GIOCARE: Lanciare l’esecuzione del programma battendo RUN. Lo spartito sarà visualizzato rapidamente, poi le note saranno rappresentate col loro nome in basso sullo schermo. Una pressione su RETURN provocherà l’apparizione di una nuova serie di note, ed una pressione sul tasto BREAK provoca la fine della partita. ESTENSIONI POSSIBILI: Potremmo affinare le regole di composizione, visualizzare più note, introdurre dei diesis e dei be¬ molle, migliorare la grafica , fare suonare la melodia visualizzata. 102 programmi per ATARI 87 10 REM COMPONI 20 DIM N*<21),D*<3>,Vfl*<42> 30 SETCOLOR 1,7,2=SETCOLOR 2,13,Ì0>SETCOLOR 4,13/10 35 VFl*="031035040045047053063064072081031096108126" 48 PRINT ">" 50 FOR 1=1 TO 5 60 POSITION 1 j 3+2*1‘FOR L=1 TO 37'PRINT CHR$(18);'NEXT L 70 NEXT I 80 N*="SI Lfl SOLFft MI RE DO “ 30 FOR 1=1 TO 13 108 X= INT7 >) ■-2 >D»=N*< 0/D+2) 120 POSITION 3*1-1,X-1'PRINT CHR*<22)'POSITION 3*1-1,X'PRINT CHR4K22)'POSITION 3 *1-2/X+l'PRINT CHR*(36) 140 POSITION 3*1-2/18'PRINT D$<1,2> 150 D=D+3*7*7) 160 SOUND 8,VftL/10/4 165 FOR T=1 TO 50'NEXT T 170 NEXT I 180 POSITION 3/21'PRINT "Battere Per contimare",'INPUT Di ISO GOTO 40 88 102 programmi per ATARI Giorno della settimana RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: utilità. Difficoltà del gioco: bassa. IL GIOCO: Il programma vi permette di ritrovare, senza alcun calcolo, il giorno della settimana corrispondente ad una certa data. La data sarà inserita sotto forma di tre numeri, per esempio 11, 3, 1956 per l’il marzo 1956, e apparirà il risultato. IL PROGRAMMA: Le linee da 30 a 70 controllano gli inserimenti. La li¬ nea 40 si occupa della fine del programma. La linea 90 permette una correzione per le date precedenti il 1582 (messa in opera dell’attuale calendario). Le linee da 100 a 110 permetteranno la visualizzazio¬ ne in chiaro del mese nella risposta (su 4 lettere). La formula utilizzata appare alle linee 130 e 140. Le linee 150 e 160 permetteranno la visualizzazione del giorno nella risposta. La linea 170 stampa i risultati. Il sottoprogramma 200-220 interviene per considera¬ re i mesi di gennaio e febbraio. PER GIOCARE: Lanciare il programma con RUN, poi inserire il gior¬ no seguito da RETURN, il mese (tra 1 e 12) seguito da RETURN, e l’anno (nella forma 1845, per esempio) seguito da RETURN. Il risultato è rapidamante visualizzato. Battendo un tasto qualunque ritorna sulla domanda GIORNO? Per continuare basta battere un giorno, un mese, un anno. Per terminare, basta rispondere 0 alla domanda GIORNO? ESTENSIONI POSSIBILI: Si potrà inserire il mese in lettere e fare visua¬ lizzare il nome del giorno per intero. Si può immagi¬ nare di fare apparire le date delle feste particolari (Natale, Pasqua, Pentecoste...). Si può scrivere un programma che visualizzerebbe i giorni festivi per un dato anno, ecc. 102 programmi per ATAR1 89 10 REM GIORNO DELLA SETTIMANA 20 GRAPHICS 0 25 DIM M$<43>/J$<63> 30 PRIHT "Giorno. 1 " » 1 INPUT J 40 IF J=0 THEN END 50 PRINT PRINT "Mese.INPUT M 60 PRINT : PRIHT "Anno.>“;*INPUT A 70 B=A 80 S=INT < A/100 >-1NT 90 IF A<=1582 THEN S=2 100 M*="GEN FEB MAR APR MAG GIU LUG AGO SET OTT NOV DIC " 110 MÌ=M3<4*H-3,4*M> 120 IF H<3 THEN GOSUB 200 130 S=J-1 +1NT<13* + INT<5*A/4>-S 140 S=S-74:1 NT< S/7 > 150 J*="DOMENICA LUNEDI MARTEDÌ MERCOLEDÌGIOVEDÌ VENERDÌ SABATO 160 J*=J$<9*S+l,9*S+9> 178 POSITION 2.-15 PRINT "Il “;J;" ";M Per continuare";=INPUT M$ 196 RUN 280 M=M+12 218 A=A-1 220 RETURN 90 102 programmi per ATAR1 Gioco della vita RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: difficile. Categoria del gioco: gioco solitario (2 versioni). Difficoltà del gioco: bassa. La versione presentata qui rispetta le regole poste al¬ l’origine dal matematico J.H. CONWAY. Una certa popolazione è definita all'inizio del gioco sia dall’ATARI (versione automatica) sia da voi stessi (versione manuale). Questa popolazione evolverà sot¬ to i vostri occhi, rispettando certe regole, molto ele¬ mentari di nascita, di vita e di morte. L’evoluzione proseguirà fino a che non si deciderà di fermare il programma. Due array (BeC) sono utilizzati alla linea 30, per re¬ gistrare lo stato della popolazione. I cicli F (230-300) e G (240-290) sono utilizzati all’inizio del gioco per de¬ finire la popolazione iniziale (linee 250 e 260). Il cal¬ colo della nuova popolazione è realizzato in seguito con l’aiuto di un ciclo quadruplo: 80-210, 90-200, 110-160, 120-150. La linea 130 realizza la gestione del nuovo stato secondo le regole. La visualizzazione di questo nuovo stato è ottenuta riutilizzando il doppio ciclo di visualizzazione F (230-300) e G (240-290). La linea 340 permette di ricominciare. Nella versione automatica, basta lanciare il program¬ ma con RUN e guardare. Per fermarsi, bisognerà battere BREAK. Nella versione manuale, la configurazione di inizio sarà inserita, dopo il lancio del programma con RUN, battendo 0 se non si vuole mettere niente sulla linea e sulla colonna indicate, e 1 se si desidera met¬ terci una cellula. Poi l’evoluzione si svolgerà in segui¬ to automaticamente. ESTENSIONI POSSIBILI: Sarà facile, se si dispone di una memoria più capace, di aumentare le dimensioni degli arrays B e C, ridefinendo la variabile A. Si potrà anche intro¬ durre il colore, migliorare la precisione del disegno rimpiazzando i PRINT con una visualizzazione ad al¬ ta risoluzione. 102 programmi per ATARI 91 5 REM GIOCO DELLA VITA (MANUALE) IO DIM N*(5),R*<3> 15 GRAPHICS 8 23 SETCOLOR 1 - 4-14 • SETCOLOR 2,10,6 25 PRIMI "DIMENSIONE ■ " ì ■ G0SU6 480 > A=R■' IF A>1@ OR A<1 THEH 15 30 DIM B=0'C»0 50 NEXT J 55 HEXT I 60 1=0 70 GOTO 220 80 FOR F=1 TO A 90 FOR G=1 TO A 100 S=0 HO FOR I=-l TO 1 120 FOR J=-l TO 1 130 IF F+J=0 OR G+I=0 OR F+J=A+1 OR G+I=A+1 THEH 150 140 S=S+B(F+J,G+I> 150 NEXT J 160 NEXT I 178 S=2*S-B(F,G> 180 C(F,G)=0 19© IF S>=5 AND S<=7 THEN C(F,G)=1 200 NEXT G 210 NEXT F 220 PRINT “>" 238 FOR F=1 TO A 240 FOR G=1 TO A 258 IF 108 THEH 280 268 POSITION 8,22=PRINT "Ri** ">F> K Colonna ">G;"-Battere 1 o 0= 270 POSITIOH 33,22 : GOSUB 400'C(F,G)=R'IF C(F,G)<>0 AND C1 THEN 260 288 POSITION 2*G,2*F>IF C(F,G>=1 THEN PRINT 290 B(F,G)=C 340 POSITION 12-INT^2>,23 1 PRINT "GENERAZIONE "> 358 FOR 1=1 TO LEN(N$) 368 PRINT CHR*(RSC>+128>1 378 NEXT I 388 GOTO 80 400 INPUT RF : R=0 410 IF R*= M " THEN R=0'RETURN 420 FOR I=LEN(R*> TO 1 STEP -1 430 AS=ASC(R*(I,I))-48>IF AS<0 OR AS>9 THEN R=0•RETURN 440 R=R+AS* 10'' < LEN ( R$ >-1 > 458 HEXT I 460 RETURN 92 102 programmi per ATARI 10 REM GIOCO DELLO VITO (AUTOMATICO) 15 GRAPHICS 0 20 SE TCOLOR 1,10.6 : SETCOLOR 2.4.14 25 FRINT "DIMENSIONE INPUT A=IF R>11 OR A<0 THEN 15 30 DIM B =0 : C < I. J)=0 50 NEKT J 55 NEKT I 60 1=0 70 GOTO 220 30 FOR F=1 TO A 90 FOR G=1 TO A 100 8-0 110 FOR I=-l TO 1 120 FOR J=-l TO 1 130 IF F+J=0 OR G+I=0 OR F+J=A+1 OR G+I=A+1 THEN 150 140 S=S+EKF+J.G+I) ISO NEKT J 160 NEKT I 170 S=2*S-B =5 AND S<=7 THEN C(F.G)=1 200 NEKT G 2lè NEKT F 220 FRINT ">" 230 FOR F=1 TO A 240 FOR G=1 TO A 250 IF ICO THEN 270 268 IF RNDUX0.5 THEN C 320 POSITIOH 12-1NT /2>.23'PRINT "GENERAZIONE "; 325 FOR 1=1 TO LEN(NT) 330 PRINT CHR$KftSC(N$(I.I))+128 )> 335 NEKT I 340 GOTO 80 102 programmi per ATARI 93 LIVELLO 3 N. Nome del programma Tema e particolarità 1 Un dado Lancio di un dado, con grafica 2 Più grande, più piccolo Un gioco di deduzione interessante, per 1 giocatore 3 Ordine Un po’ di astuzia per rimettere in ordine, il più rapidamente possibile 4 L’impiccato Un gioco di lettere molto classico (2 gio¬ catori) 5 Briscola Per simulare una mano, con un mazzo di 32 carte 6 Taccuino di calcolo Un buon allenamento (2 giocatori) 7 Impiccato inverso Questa volta è il calcolatore che cerca d’indovinare la parola 8 Nicomat Per perfezionarsi in calcolo mentale (1 o più giocatori) 9 Corsa di cavalli Abbastanza visuale: un gioco di fortuna, per vari educatori 10 Attraverso Un gioco di strategia per 2 giocatori 11 Mastermind Con dei numeri, ma classico, per 1 solo giocatore 12 Idem Un gioco di calcolo mentale, con vari li¬ velli, per vari giocatori 13 Orologio Non buttate il vostro vecchio televisore; trasformatelo in un orologio 14 Regine sulla scacchiera Un vecchio problema, per aiutarvi a ri¬ flettere 15 Ripetizioni Ripetere una sequenza di cifre sempre più lunga 16 Parole Un'idea molto semplice, ma non è così fa¬ cile da trovare 17 Permutazioni Un gioco di riflessione, non sempre evi¬ dente 18 Bridge Mettete a punto i vostri problemi di bridge 19 Hanoi Un consiglio: cominciate da poco!!! 20 Rombi Per aiutarvi ad addormentarvi 21 Matteo Non sapete disegnare? Lasciatelo fare a un calcolatore 22 Il lupo e gli agnelli Un gioco di riflessione, per 2 giocatori 94 102 programmi per ATARI Manipolazione di stringhe e grafici ad alta risoluzione TRATTAMENTO DI STRINGHE DI CARATTERI Abbiamo avuto l’occasione di incontrare, già dal livello 2, la funzione es¬ senziale utilizzata nel Basic ATARI per manipolare le stringhe: si tratta di A$.(I,J) che permette di estrarre, nella stringa A$, una sottostringa di lun¬ ghezza J—1+1 a iniziare dal carattere I. Così se, A$= "SIGNORE” avremo: A$.(2,4)= "IGN” Il Basic dell’ATARI permette la sostituzione diretta di una sottostringa con una assegnazione del tipo A$ (—,—)= "—Sarà necessario scrivere, per sostituire la Iesima lettera della stringa A$ (1,1) = "Nuova Lettera” e per allungare di 1 la stringa basterà fare: A$ (LEN (A$) + 1) = stringa di caratteri da aggiungere a destra. LE DIFFERENTI FUNZIONI GRAFICHE Fino ad ora abbiamo implicitamente utilizzato il comando GRAPHICS 0 per riportare lo schermo pulito e con i colori di base. Esistono due altre funzioni GRAPHICS 1 e GRAPHICS 2 grazie alle quali i caratteri battuti sono allargati. Così si ha: per la funzione 0 --- 24 linee di 40 caratteri per la funzione 1 --- 20 linee di 20 caratteri + 4 linee di testo normale per la funzione 2 — 10 linee di 20 caratteri 4- 4 linee di testo normale POSIZIONE l,J J 102 programmi per ATARI 95 La funzione POSITION è utilizzata in questi nuovi limiti, per posizionare la stampa che si ottiene con il comando PRINT @ 6 ; seguito dalla variabi¬ le (o dalla stringa di caratteri) desiderata. Le funzioni grafiche da 3 a 15 permettono il disegno con una risoluzione più o meno dettagliata e con colori; così per le funzioni da 3 a 8: definizione (X,Y) colori funzione 3 40 x 20 4 » 4 80 x 40 2 » 5 80 x 40 4 » 6 160 x 80 2 » 7 160 x 80 4 » 8 320 x 160 1 La visualizzazione di un punto si ottiene fornendo un colore con il coman¬ do COLOR e posizionandolo con PLOT X,Y Così per creare un punto in mezzo allo schermo con la funzione GRAP¬ HICS 6, basterà fare: PLOT 80,40 Il colore delle visualizzazioni è determinato da SETCOLOR R, X, X. L’ATARI dispone di 5 registri R (da 0 a 4) che contengono la gamma dei colori utilizzati per le scritte o per i disegni. Il registro R = 0 fornisce il colore unicamente con funzione grafica 1 fornisce il colore unicamente del testo con funzione testo 2 fornisce il colore unicamente del fondo con funzione testo 3 fornisce il colore unicamente con funzione grafica 4 fornisce il colore dello schermo Esempio: per avere un fondo rosso brillante, basta fare: SETCOLOR 2,3,10 Il primo parametro 2 è il numero del registro che corrisponde al fondo. Il secondo parametro 3 è il numero del colore. Il terzo parametro 10 è il fattore luminoso. N.B. aggiungendo 16 al numero di funzione grafica, si lavora su tutto lo schermo, recuperando le 4 linee di testo che rimangono. Così, con il comando GRAPHICS 2 + 16 otteniamo dei caratteri allargati sulla totalità dello schermo. 96 102 programmi per ATARI Un dado RIFERIMENTI: Programmazione: facile. Categoria del gioco: lancio di un dado (con grafica). Difficoltà del gioco: nessuna. IL GIOCO: Il programma propone semplicemente il lancio di un dado a caso e la sua rappresentazione grafica in grande formato. Potrà essere facilmente utilizzato come sottopro¬ gramma in ogni tipo di gioco che faccia richiamo al lancio di uno o più dadi. IL PROGRAMMA: La linea 50 utilizza il generatore casuale dell’ATARI per estrarre un numero da 1 a 6. Il ciclo J (70-90) disegna i bordi del dado, le linee 60 e 100 disegnano l’alto e il basso Le linee 120-170 vengono utilizzate per il disegno dei punti. Le linee 180 e 190 permettono all’occorrenza di fare nuovamente il lancio. PER GIOCARE: Lanciare il programma con RUN. Si inserisce un intero per inizializzare il generatore, e si visualizza un dado colorato di grande formato. Alla domanda ALTRO LANCIO (S/N) si risponde S per rilanciare il dado. ESTENSIONI POSSIBILI: Si potrà introdurre una piccola musica che renderà più gradevole ogni lancio, fare sfilare i punti come se il dado rotolasse su una tavola, ecc. 102 programmi per ATARI 97 10 REM UN DADO 20 DIM R*<1> 38 SETCOLOR 1/ 7, 2-SETCOLOR 2, 13,14-SETCOLOR 4.13/14 40 PRINT ">" 50 R=INT 60 POSITION 12/5-PRINT “qrrrrrrrrrrre"-REM battere le minuscole schiacciando si» ultaneamente 70 FOR J=0 TO 10 80 POSITION 12/6+J‘PRINT CHR*<124>•POSITION 24/6+J-PRINT CHR*<124> 30 NEXT J 100 POSITION 12/17-F'RINT "zrrrrrrrrrrrc"-REM vedere 60 120 IF flOl THEN POSITION 15/8-PRINT CHRSC20) 130 IF ft>=4 THEN POSITION 21.8-PRINT CHR*<20> 140 IF fl=6 THEN POSITION 15/11-PRINT CHR$<28)-POSITION 21/11-PRINT CHR*<20> 150 IF R/20INT 160 IF H>=4 THEN POSITION 15/14-PRINT CHR*<20> 170 IF fi<>1 THEN POSITION 21 > 14-PRINT CHR*<20> 180 POSITION 0/20-PRINT "Un'altro lancio ";-INPUT R# 130 IF R$="S" THEN 40 98 102 programmi per ATAR1 Più grande, più piccolo RIFERIMENTI: Programmazione: facile. Categoria del gioco: gioco di deduzione (un solo gio¬ catore). Difficoltà del gioco: elevata. IL GIOCO: Si ispira a un principio leggermente differente da quello del Mastermind; si tratta ugualmente di indo¬ vinare un numero (da 1 a 7 cifre), ma le indicazioni di cui si dispone sono questa volta da una parte il nu¬ mero di cifre che, nel numero provato, sono superio¬ ri a quelle del numero da indovinare, e, dall’altra parte, il numero di cifre che sono inferiori. Se, per esempio, il numero da indovinare è 3054 e che si pro¬ vi 4251, la macchina risponderà 2 più grandi (sono il 4 e il 2), e 1 più piccolo (è l’I). IL PROGRAMMA: La linea 60 proibisce di chiedere dei numeri di più di 8 cifre. Il numero da indovinare è posizionato, alla linea 80, in una variabile alfanumerica X$. I paragoni col numero tentato sono fatti alla li¬ nea 130 (che testa se si è indovinato), e nel ciclo I (150-180), dove si fa il paragone "lettera per lettera”. La visualizzazione del risultato è realizzata grazie al¬ la linea 190. II contatore del numero di tentativi è alla linea 200. PER GIOCARE: Il lancio del programma con RUN provoca il messag¬ gio NUMERO DI CIFRE. Si inserisce un numero inferiore a 8 e si batte RE¬ TURN. Il numero di tentativi appare così come la domanda NUMERO TENTATO; si risponde inserendo un nu¬ mero, seguito da RETURN. Il risultato è allora visualizzato nella maniera > e <. Se non è esatto, si ricomincia (attenzione ad inserire unicamente dei numeri aventi tante cifre quante il numero da indovinare). Se si indovina, TATARI scriverà AVETE TROVATO . . . IN . . . PROVE. Poi UN’ALTRA PARTITA? (S/N); faremo S per comin¬ ciare una nuova partita. ESTENSIONI POSSIBILI: Potremmo, come per il Mastermind, immagi¬ nare un gioco analogo con delle lettere, dei colori, o anche utilizzando degli altri simbolismi. Si può anche prevedere di far giocare TATARI che avrà allora il ruolo di decodificatore. 102 programmi per ATARI 99 10 REM PIU' GRANDE, PIU' PICCOLO 20 DIM Xt<8>, P$<8> 48 GRAPHICS 0 50 FRINÌ "Numero di cifre = " ; ‘INPUT C 60 IF 08 THEN 40 70 E-l : F=1 80 X*=STR$*9 A C+10 A < C-E > > > 100 POSITION 0,3 : PRINT " Prova No. Numero tentato > < " 110 POSITION 2,4=F0R P=1 TO 36‘PRINT CHR$<18);;NEXT P 120 POSITION 6,F+4‘PRINT E;" "‘POSITION 13,F+4‘INPUT P t 130 IF P*=X$ THEN 220 140 A=0 B=8 150 FOR 1*1 TO C 16© IF P*="8" THEN 40 100 102 programmi per ATARI Ordine RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: gioco di riflessione. Difficoltà del gioco: media. IL GIOCO: Le 10 prime lettere dell’alfabeto appaiono in disordi¬ ne; bisogna riuscire a rimetterle in ordine, col minor numero possibile di tentativi, con delle permutazioni successive di due delle lettere; ma questo ha anche come inconveniente di far permutare attorno a lei le due lettere che la circondano, secondo il meccanismo spiegato qui sotto: BADGHI JCFE 0123456789 BADFHIJEGC 0123456789 IL PROGRAMMA: I cicli chiusi I (60-120) e J (80-100) definiscono una va¬ riabile alfanumerica A$, contenente le 10 prime lette¬ re dell’alfabeto in disordine. La linea 140 visualizza A$, e la linea 150 visualizza i numeri delle lettere da utilizzare per la permutazione. Si inserisce la permutazione alla linea 190. Le linee 200 e 210 trasformano la variabile alfanume¬ rica inserita in una variabile numerica. La linea 220 chiama una prima volta il sottoprogram¬ ma d’inversione. La linea 250 chiama una seconda volta il sottopro¬ gramma d’inversione. La linea 260 contabilizza i tentativi. La linea 180 controlla i risultati. PER GIOCARE: Lanciare il programma con RUN. La parola iniziale appare, ogni lettera essendo riferi¬ ta ad un numero da 1 a 9. Alla domanda INVERSIO¬ NE (I/J), si risponde inserendo un numero di due ci¬ fre xy; x è il numero della prima lettera e y il numero della seconda. Le due inversioni sono allora effettua¬ te in successione e si ricomincia. Il numero di tentativi apparirà alla fine della partita. ESTENSIONI POSSIBILI: Si può immaginare un gioco contro il calcola¬ tore, che valuti il punteggio del giocatore in funzione delle sue capacità; si possono anche modificare le re¬ gole che gestiscono le permutazioni. : permutazione 83 : risultato 102 programmi per ATARI 101 10 REM ORDINE 20 DIM R^::i0:>,B*a0>,N*a>,M*a>,R*<2> 40 GRAPHICS 0 50 SO POR 1=1 TO 10 70 R$=CHR$ *10+65 > > 75 IF 1=1 THEN 110 80 FOR J=1 TO 1-1 30 IF R*=fl$ THEN 70 100 NEXT J 110 ft$ < LEN < >+1)=R$ 120 NEKT I 130 S=1 140 POSITION 2/4‘PRINT "Risultato •■"/(« 150 PRINT " 0123456783" 160 POSITION 2/3‘PRINT "Prova numero "»$ 170 POSITION 33/ 12'PRINT 11 1S0 IF fW="HBCDEFGHIJ" THEN PRINT "Riuscito in "ìSì " mosse.“‘END 130 POSITION 0/12‘PRINT “Inversione <1 e J con forma IJ> "/‘INPUT R* 200 I=flSC)-47 210 J=fiSC="0“ OR R*<1/1>="9" THEN 250 24W 1=1-1 528 IF T=I THEN N$=fl* 530 IF T=.J THEN M*=fi* 540 NEXT T 550 FOR T=1 TO LENCft$) 560 IF T=I THEN B*O.EN+1>=M*'GOTO 590 570 IF T=J THEN B$=N*'GOTO 530 580 B* + l>=fl$ 530 NEXT T 600 fi*=B* 610 RETURN 102 102 programmi per ATARI RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: L’impiccato Programmazione: di media difficoltà. Categoria del gioco: gioco di lettere (versione a 2 gio¬ catori). Difficoltà del gioco: media. Sarebbe senz’altro difficile ritrovare il nome dell'in¬ ventore di questo gioco che esiste da tempo immemo¬ rabile, qualche volta praticato sotto forme assai dif¬ ferenti (per esempio, ricostituire un maialino lan¬ ciando dei dadi). L’apparizione dei giochi su micro-calcolatore e la ma¬ gia degli schermi video gli hanno fatto conoscere un rinnovo sicuro: in questa versione, uno dei giocatori deve inserire una parola di lunghezza qualunque. Il calcolatore visualizzerà allora dei puntini nella posi¬ zione delle lettere di quella parola e chiede al secon¬ do giocatore di proporre una lettera. Ogni risposta corretta fa apparire la lettera nella sua posizione esatta nella parola, ed ogni risposta sbagliata fa pro¬ gredire il disegno del patibolo. Per vincere, basta riuscire a trovare la parola scono¬ sciuta prima di essere impiccato. La parola da indovinare è introdotta all’inizio del programma (linea 30); 2 linee di DATA (2000-2010) contengono tutti gli elementi del disegno sotto forma di elementi grafici. Il ciclo I (60-80) fabbrica una parola P$ che contiene i puntini nella posizione di ognuna delle lettere della parola iniziale. Il ciclo I e J (120-140) si occupano del disegno due li¬ nee per due (più o meno completo, secondo il valore di P). Le linee 150-160 visualizzano il risultato e arrestano il gioco. La lettera provata è inserita alla linea 170 e testata in un ciclo I (190-210); il sottoprogramma 300-320 rim¬ piazza ogni puntino con la lettera corrispondente. Dopo il lancio del programma con RUN, uno dei gio¬ catori deve inserire la sua parola e battere RETURN. Dei puntini appaiono nella posizione di ognuna delle lettere della parola; e la domanda LA TUA LETTERA appare sullo schermo; l’altro giocatore risponde allo¬ ra proponendo una lettera seguita da RETURN. Se la lettera è giusta, rimpiazzerà uno o più puntini; altrimenti, il patibolo comincerà a disegnarsi. La parola esatta sarà visualizzata nel caso in cui si perda. 102 programmi per ATARI 103 10 REM L'IMPICCATO 15 DIM DS<7>,P*C20>,R*<20;>,S*a:>,B*<600> 20 GRAPHICS 0 25 SETCOLOR 1,7,2=SETCOLOR 2,13.14'SETCOLOR 4,13,14 30 PRINT "La tua parola INPUT R* 50 p*="" 60 FOR 1=1 IO LEN 7ò P*+1 80 MEXT I 90 p=0 35 PRINT ">" 100 POSITIOH 2,3’PRINT P* 110 IF P=0 THEN 150 115 RESTORE 120 FOR 1=1 TO P 125 FOR J=1 TO 2 130 POSITION 22,2*IJ ! READ D*>PRINT D* 135 NEXT J 140 NEXT I 150 IF P$=R* THEN PRINT "BRAVO!“ ; END 160 IF P=7 THEN PRINT "PERSO! La parola era " >R $ ! END 170 POSITION 2,20 ; PRINT "La tua lettera ■"i ■INPUT SS 188 T=0 130 FOR 1=1 TO LEH(RS) 20O IF R$=S* THEN GOSUB 300 210 NEXT I 220 IF T<>0 THEN 100 230 P=P+1 240 GOTO 100 300 T=1 310 P*=S* 320 RETURN 2000 DATA , qre , srs, ! !, zwc,qrrsrre, ! ! !,! ! !, fa,* a 2010 DATA b v,b v,h j, , 3008 REM Per i DATA battere simultaneamente la lettera minuscola e il tasto 3010 REM nei DATA battere = al posto del punto esclamativo per ottenere u vi tratto verticale Pieno 104 102 programmi per ATARI Briscola RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: media. Categoria del gioco: gioco con le carte. Difficoltà del gioco: bassa. Il gioco proposto è piuttosto una simulazione, realiz¬ zata con 32 carte, della distribuzione di 4 mazzetti di 5 carte. Potrà essere utilizzato per lo studio di pro¬ blemi facenti intervenire delle distribuzioni di 20 carte su 32. Alla linea 50, si crea un array che può contenere le 20 carte. Il ciclo I (80-140) assicura la presa casuale di 20 nu¬ meri, presi da 32; il ciclo J (110-130) verifica che non si realizzi due volte la stessa presa. Il secondo ciclo I (160-310) assicura in seguito la vi¬ sualizzazione, i nomi delle carte vengono scritti in chiaro e il colore viene decodificato e visualizzato in chiaro) grazie alle linee da 210 a 280. Basta battere RUN per ottenere immediatamente l’apparizione di 4 mazzetti di 5 carte ognuno (una mano). Un nuovo RUN permette di ottenere una nuova di¬ stribuzione. ESTENSIONI POSSIBILI: Si potrà facilmente mettere a punto una grafi¬ ca migliore ridefinendo i caratteri dell'ATARI; ci si potrà ugualmente servire di questo programma come di un nucleo per la messa a punto di programmi di giochi di carte su calcolatore (che potrà, se necessa¬ rio, servire da partner: vedere l’esempio del Poker, in questo stesso libro). 102 programmi per ATARI 105 10 REM BRISCOLA 20 GRAPHICS 0 30 SETCOLOR 1,12,2‘SETCOLOR 2,12.14 40 PRINT ">" 50 DIH A<20>,S$<2>,R*<4> 60 K=1 70 POSITION 5,11=PRINT “PAZIENTATE! Mescolo le carte."; 80 FOR 1=1 TO 20 90 A=1+INT*32> 100 IF 1=1 THEN 140 110 FOR J=1 TO 1-1 120 IF Aa>=A THEN 90 130 NEaT J 140 NEXT I 150 PRINT ">" 166 FOR 1=1 TO 20 170 S$="QU" 180 S=l+A-8*IHT/3> 190 R$=STR$<3+6):R$ 210 IF S=5 THEN R*="FA" 220 IF S=6 THEN R$=“DO" 230 IF S=7 THEN R$="RE" 240 IF S=8 THEN R$="AS" 25© IF fì(I)<=24 THEN S*=“Fr' 260 IF A<=8 THEN S$="CU" 280 POSITION 2+10TINT<,2^£K = PRINT R$; " ";S$ 298 K=K+1 300 IF K=6 THEN K=1 310 NEaT I 106 102 programmi per ATARI Taccuino di calcolo RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: media. Categoria del gioco: riflessione (2 giocatori). Difficoltà del gioco: elevata. Si pratica con due giocatori, uno prende il ruolo di codificatore, l’altro quello di decodificatore. Il codificatore parte da un numero (proposto dall’A- TARI) e deve trasformarlo con l’aiuto di 5 operazioni che sceglie lui stesso, così come gli operatori, d’al¬ tronde. Il risultato che ha ottenuto e le operazioni che ha uti¬ lizzato saranno visualizzate sullo schermo; il decodi¬ ficatore dovrà allora cercare di ritrovare il numero iniziale effettuando le operazioni in senso inverso. La linea 50 permette di ottenere l’intero di partenza compreso tra 5 e 20. Un ciclo I (110-200) permette di inserire successiva¬ mente le 5 operazioni salvaguardate nella stringa unica R$. 3 sottoprogrammi sono utilizzati per i calcoli (alle li¬ nee 1000 e 3000). Dopo ogni calcolo, il risultato è visualizzato (solo il codificatore dovrà guardare lo schermo durante que¬ sta operazione) e il risultato definitivo resterà visua¬ lizzato per il decodificatore alla fine dei calcoli (linea 190). Le linee 220-240 visualizzano le 5 operazioni utilizza¬ te, così come gli operatori corrispondenti. Si batte RUN per lanciare il programma. Appare il numero di partenza, poi la richiesta INSE¬ RITE 5 OPERAZIONI; si dovranno inserire le une do¬ po le altre nella maniera, per esempio, : +4, seguito da RETURN. Il risultato sarà visualizzato dopo ogni operazione in¬ serita. Alla fine, le operazioni inserite sono tutte vi¬ sualizzate sulla stessa linea, ed il messaggio CORAG¬ GIO è inviato all’attenzione del decodificatore (non esiste controllo nella decodifica). ESTENSIONI POSSIBILI: Si potrà, naturalmente, pensare di migliorare la parte decodifica del programma introducendo dei controlli sui risultati; si può anche pensare di lasciar partecipare maggiormente TATARI affidandogli il ruolo della codifica, ecc. 102 programmi per ATARI 107 10 REM TACCUINO DI CALCOLO 20 DIM R$<20).C$<8> 30 FRINT ">" 40 SETCOLOR 1.9,14‘SETCOLOR 2-3.2 SO X=INT*16+5> 60 PRINT "Numero iniziale : ; X 70 PRINT "Inserite 5 operazioni" 80 PRINT "Con la forma +5- /2. 4:4 ..." 30 F=K 110 FOR 1=1 TO 5 120 POSITIOH 16-6=PRINT " 136 POSITION 2-6=PRINT "La tua operazione INPUT C$ 135 Ct + 1 > = " "‘R$.4*n=C$ 140 A=HSC >: C$ <1 -1 > > -41 150 IF A<=0 OR A=3 OR fl=5 OR A>6 THEN 120 160 IF fì>3 THEN A=-" "i 240 NEXT I 258 PRINT ‘PRINT ‘PRINT "Corauuio_» 266 END 1000 F=F*VAL < C$ <2-LEN )) 1010 RETURN 2000 F=F+VAL 2010 RETURN 3000 F=F/VAL 3010 RETURN 108 102 programmi per ATARI Impiccato inverso RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: gioco sulle parole. Difficoltà del gioco: bassa. IL GIOCO: L’Impiccato è un gioco di lettere molto noto, già pre¬ sentato d’altronde in questo libro, nel quale si deve indovinare una parola nascosta dal calcolatore e do¬ ve ogni lettera non scoperta vi porta un po’ più vicini al patibolo. Qui è TATARI che cercherà di indovinare la vostra parola, ma lui gioca un po’ a caso e non possiede la vostra intuizione; ci vorranno dunque, in regola gene¬ rale, molti tentativi per scoprire la soluzione. Per au¬ mentare le sue possibilità, ci appelliamo a una for¬ mula che gli permette di pescare di più nelle vocali, poi nelle consonanti di uso comune e quindi nelle consonanti più rare. IL PROGRAMMA: La linea 50 permette di registrare, in una variabile alfanumerica D$, le lettere dell’alfabeto, nell’ordine: vocali, consonanti usuali, altre consonanti. La parola da indovinare è introdotta alla linea 70. Il ciclo I (90-120) stampa dei puntini nelle posizioni delle lette¬ re da trovare. Il ciclo alla linea 140 serve unicamente a simulare il tempo di ricerca di una lettera. La formula, piazzata alla linea 150, permette di modi¬ ficare leggermente la probabilità di pesca, in favore delle vocali e delle consonanti usuali. La linea 170 provoca una nuova pesca, e il ciclo I (210-240) ristampa i puntini e le lettere trovate. La linea 250 incrementa il contatore dei tentativi. La linea 270 visualizza il numero di tentativi realizza¬ ti, alla fine della partita. PER GIOCARE: Lanciare il programma con RUN. Inserire la parola da scoprire, seguita da RETURN. I puntini sono allora visualizzati (uno per lettera) e TÀTARI propone una prima lettera, guarda se va be¬ ne e continua automaticamente, fino a che avrà tro¬ vato la parola. Si potrà uscire dal programma ad ogni momento, battendo BREAK. ESTENSIONI POSSIBILI: Sarà senz’altro interessante, per i bambini di prevedere una versione non automatica dove il gioca¬ tore risponderebbe SI o NO per ogni lettera proposta dall’ATÀRI; si potrà anche immaginare di aggiungere una visualizzazione grafica, per esempio un patibolo o una macchina che va verso un burrone, ecc. 102 programmi per ATARI 109 10 REM IMPICCATO INVERSO 30 DIM D*<26>,E$<1>,R$<30>,T*<30> 40 FRINT ">" 50 0 $="YAEIGUBCDFGLMNPRSTVWHKJQXZ" 60 0=141="" 78 PRINT "Immetti la parola = " ; =INPUT R$ 80 PRINT 30 FOR 1=1 TO LEN(R*> 100 PQSITION 2+1,5=PRINT 110 T$(LEN+1 120 NEXT I 130 POSITION 0,3=PRINT "Cerco_; prova No ";C; 140 FOR J=1 TO 100=NEXT J 150 X=6*+13*<0.5>+7*<0.4:> 160 X= INT < X*RND < 1 )+1 ) 170 IF D*="-" THEN 150 ISO E*=D* 190 D$="~" 200 POSITION 0.13=PRINT "Prendo ="jE$; 210 FOR 1=1 TO LEN 220 IF R$=E* 230 POSITION 2+1,5=PRINT Tf; 240 NEXT I 250 C=C+1 260 IF T$OR$ THEN 130 270 POSITION 8,17 = PRINT "TROVATO in ";C-1;" Prove."; 280 FOR T=255 TO 0 STEP -1=SOUND 0,T,10,T-4#INTNEXT T 290 SOUND 0,0,0,0 110 102 programmi per ATARI Nicomat RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: di media difficoltà. Categoria del gioco: gioco di riflessione (calcolo men¬ tale). Difficoltà del gioco: media. Utilizza una proprietà un po’ particolare degli interi da 1 a 100 che possono essere identificati senza ambi¬ guità dai loro resti nelle divisioni per 3, 5 e 7. Il programma, proposto qui, è un programma codifi¬ catore che visualizza semplicemente i resti di un in¬ tero dato N nelle divisioni indicate. Il gioco consiste nel cercare di scoprire l’intero (ma, in questa versione, avrete diritto ad un solo tentati¬ vo). La linea 50 permette di creare l’intero. Il ciclo I (80-130) calcola i tre resti successivi, ed il ciclo chiuso J (100-120) permette di farli apparire in una forma assai evidente, nelle giuste locazioni. Le linee 60 e 70 sono lì per indicare di quale divisione si tratta. Il numero proposto dal giocatore è inserito alla linea 140; è visualizzato e testato alle linee 150 e 160 (mes¬ saggio di fine partita : BRAVO o PERSO). Le linee 180-190 si occupano di gestire la prossima partita, secondo la risposta del giocatore. Si lancia il programma battendo RUN. I tre resti saranno allora visualizzati sulla' stessa li¬ nea, simbolizzati con dei cuori (l’assenza di cuori si¬ gnifica: resto 0). Alla domanda LA TUA RISPOSTA , si risponderà con un intero tra 0 e 100, seguito da RETURN. Si otterrà in risposta un messaggio PERSO o BRA¬ VO, poi la domanda LA STESSA O UN’ALTRA PAR¬ TITA? (S/N). Per fare un nuovo tentativo, si risponde¬ rà S seguiti da RETURN. ESTENSIONI POSSIBILI: Si può immaginare di realizzare il programma decodificatore (si danno i resti e TATARI dovrà darvi N) e cercare se la proprietà può essere estesa (effet¬ tuando altre divisioni, per esempio). 102 programmi per ATARI 111 10 REM NICOURT 2tf GRAPHICS 0 30 DIM R*<1> 40 PRIMI' ">" 5 ò ;:=i mt■;rnd a >*100+1 > b0 PRINT " Resto della divisione per'" 70 POSITIGN 12;5'PRINT “3"'POSITION 20;5=PRINT "5"'POSITIOM 28;5'PRIHT "7" 80 FOR 1=1 TO 3 30 H=X-<2*I+1>*INT> 35 IF H=0 THEN 130 100 FOR J=1 TO fì 110 POSITION J+8TI+3;7'PRINT 120 NEXT J 130 NEXT I 140 POSITION 2;10'PRINT "La tua risposta ' " ; 1 INPUT N 150 IF N=X THEN PRINT 'PRINT "BRAVO!“ 160 IF NOX THEN PRINT 'PRINT "PERSO!" 170 FOR T=120 TO 10'SOUND 0,T,10,4'NEXT T'SOUND 0,0;0;0 180 PRINT 'PRINT "Un'altra partita ">'INPUT R$ 130 IF R$="S" THEN 40 112 102 programmi per ATARI Corsa di cavalli RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: di media difficoltà. Categoria del gioco: fortuna (vari giocatori). Difficoltà del gioco: nessuna. Si inserirà un numero di cavalli compreso tra 1 e 9 e la corsa comincerà immediatamente. Ci potranno essere dei pareggi, poiché si terrà conto del fatto che TATARI fa avanzare i cavalli gli uni do¬ po gli altri, cominciando col numero 1; la classifica sarà visualizzata man mano, secondo gli arrivi (e te¬ nendo conto dei pareggi). Un primo ciclo non formale (80-173) visualizza i ca¬ valli nella loro posizione di partenza. Un secondo ciclo I (100-180), li farà avanzare; la posi¬ zione di ogni cavallo sarà individuata con una cifra o una lettera in una variabile alfanumerica A$. La linea 120 farà avanzare i cavalli. La linea 140 genera gli arrivi. La linea 150 realizza le stampe. Il sottoprogramma 240-280 fa avanzare il contatore di arrivi, e stampa i risultati. Si lancia il programma con RUN. Alla domanda NUMERO DI CAVALLI?: si risponde con un intero da 1 a 9, seguito da RETURN. La corsa si svolgerà in seguito automaticamente. ESTENSIONI POSSIBILI: Potremmo disegnare i cavalli con una grafica più curata e differenziarli con dei numeri. Potremmo anche immaginare un sistema di scom¬ messe, che interverrà prima della partenza di ogni corsa. 102 programmi per ATARI 113 10 REM CORSO DI CAVALLI 20 DIA A*<9>.B*<1> 30 SETCOLOR 1.1.2-SETCOLOR 2.12,6 40 PRINT 50 PRINT "Numero di cavalli > ‘INPUT N'IF N>9 THEN 40 6w A$=“" : P=0‘A=0‘T=l‘K=0 70 J=T 80 A$="0"‘I=J 90 GOTO 150 100 FOR 1=1 TO N 110 IF ft$<. I , I >="K" THEN 180 120 B*=CHR$>+INT=B* 148 IF B*>="K" THEN GOSUB 240 150 POSITION ASCCAfd. I>>-46,2*1+3‘PRINT " ‘PRINT I 160 SOUND 1.123,5,4*> 170 IF KO0 THEN 180 173 J=J+1‘IF J<=N THEN 80 176 K=1 GOTO 100 180 NEXT I 190 P=P+T 200 T=0 210 IF fl = "K" 250 POSITION 0.2*1+3‘PRINT P 260 T=1 270 A=A+T 280 RETURN 1000 DATA 126.81.96 114 102 programmi per ATARI Attraverso RIFERIMENTI: IL GIOCO: Programmazione: di media difficoltà. Categoria del gioco: riflessione (2 giocatori). Difficoltà del gioco: media. Sullo schermo appare un quadrato di 9 caselle con let¬ tere sul bordo verticale e cifre sul bordo orizzontale. Uno dei giocatori manipola le cifre, l’altro le lettere. Tre spostamenti sono possibili per le cifre, e altri 3 per le lettere. Le lettere possono spostarsi verso l’al¬ to, a destra e a sinistra, e le cifre verso la destra, in alto o in basso. Il vincitore è il primo che riesce a fare uscire tutti i suoi simboli (le lettere escono in alto, le cifre a de¬ stra). Non ci sono prese, e i salti non sono autorizzati; non ci si può neanche posizionare su una casella già occupata. CIFRE LETTERE 0 N i—»-E IL PROGRAMMA: Le posizioni delle cifre e delle lettere sono registrate in un array N (5,5); Le linee da 10 a 70 definiscono i valori di partenza, utilizzando gli indici 0 e 5 per i bordi. Le linee da 90 a 140 definiscono il tavolo di gioco e le linee da 160 a 167 visualizzano il giocatore in gioco. La linea 190-195 controllano il colpo giocato, così co¬ me i cicli I e J (200-240), ed il cambiamento di gioca¬ tore è assicurato dalla linea 330. PER GIOCARE: Il tavolo di gioco apparirà dopo aver battuto RUN, e il calcolatore aspetta la mossa del giocatore indivi¬ duato. Si inserirà prima la cifra o la lettera rappresentante la pedina da spostare, seguita da una indicazione di direzione nella forma N (per Nord), S (per Sud), E (per Est), O (per Ovest). Si potrà così fare 2E seguito da RETURN. Se la mossa non è valida, non sarà eseguita, ed il co¬ dice del giocatore rimarrà alla visualizzazione; se è valida, lo spostamento sarà effettuato, e si otterrà il messaggio corrispondente al secondo giocatore. Il primo che riuscirà a far sparire le sue 3 pedine avrà vinto. ESTENSIONI POSSIBILI: Si può immaginare di estendere il gioco con più cifre e lettere e di migliorare i controlli. Si può anche definire una strategia per TATARI. 102 programmi per ATARI 115 10 REM ATTRAVERSO 20 DIM N<5,5>,R*<6>=K=1 30 FGR 1=0 TO 5 35 FGR J=8 TO 5 40 N=0 45 IF J=1 THEN H=ASC<"0">+I 50 IF 1=4 THEN N=1 60 NEXT J 65 NEXT I 70 N<4,1>=0 SO GRAPHICS 2 30 FGR U=1 TO 4 100 FGR V=1 TO 4 110 REM 120 POSITIOH 240,24V-2 : FRINT #6;CHR*<46*=0>+1KV,U>> 130 NEXT V 140 NEXT U 160 POSITIOH 1,9 PRINT #6;"LE " ; : IF K=0 THEN PRINT #6,"LETTERE"; 165 IF KO0 THEN PRINT #6; "CIFRE"; 167 PRINT #6;“ GIOCANO"; 180 PRINT "ì"‘PRINT “La tua mossa "; : INPUT R$‘R*+1>=" 130 IF OR ="S"> THEN 180 195 RS=A3C > ; IF «K= 1 >* THEN 180 280 FOR 1=1 TO 4 210 FOR J=1 TO 4 220 IF N=AS THEN 260 230 NEXT J 240 NEXT I 250 GOTO 180 260 R=I 1 B=J 270 I=I+="S">-="N"> 280 J=J+- 290 IF <1=0 AND K=0> OR 4 AND K=l) THEN 320 300 IF N<>0 THEN 180 310 N 320 N 340 GOTO 80 116 102 programmi per ATAR1 RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Mastermind Programmazione: difficile. Categoria del gioco: logica (un solo giocatore). Difficoltà del gioco: elevata. Diventato un grande classico dei giochi su personal computer, questo gioco sviluppa il ragionamento de¬ duttivo; bisogna riuscire a trovare il più velocemente possibile un numero di n cifre (potremo prendere n compreso tra 1 e 6), disponendo ad ogni tentativo di informazioni. Infatti, TATARI risponderà indicando da una parte il numero di cifre che sono, nel numero proposto, esat¬ tamente nella stessa posizione che nel numero da scoprire, e, dall’altra parte, il numero di cifre che fi¬ gurano nel numero da scoprire senza essere esatta¬ mente nel posto giusto. La scelta del numero di cifre del numero da scoprire è effettuata alle linee 40 e 50. Il numero è creato alla linea 60 (potranno esserci del¬ le cifre ripetute). La visualizzazione è preparata dalla linea 90. La linea 110 effettua la scelta pulendo per precauzione la li¬ nea visualizzata sullo schermo. La linea 130 si occupa della fine della partita. Un primo ciclo I (140-230) testa le cifre che sono nel posto giusto. Un secondo ciclo J (160-260) testa le cifre che sono presenti e mal posizionate. I contatori sono alle linee 200 e 220. La linea 240 visualizza il risultato, e la linea 250 con¬ tabilizza i tentativi. Si batte RUN e si sceglie la lunghezza del numero de¬ siderato (da 1 a 6), seguita da RETURN. Dopo il messaggio N. NUMERO GIUSTO POSIZIONE G., si introduce il proprio tentativo, seguito da RE¬ TURN. Si ottiene immediatamente la risposta (in caso di doppia cifra, i risultati possono essere un po’ delicati da interpretare). Si introduce in seguito un nuovo tentativo, e così via. Quando si trova, si otterrà il messaggio: TROVATO IN . . . PROVE. Si può uscire dal programma in ogni momento con BREAK. 102 programmi per ATARI 117 ESTENSIONI POSSIBILI: Si può cercare di evitare la presenza di cifre doppie nel numero da trovare, si può anche prevede¬ re un cambiamento automatico di pagina, un richia¬ mo dei risultati precedenti; potremo anche realizzare dei giochi analoghi con delle parole, o altri simboli (colori, forme...) 10 REM MASTERMIND 29 DIM X*<6>.E*<6> 40 FRINT "}" : PRINT "Quante cifre INPUT N 50 IF N>6 THEN 40 60 E=1 =F=1 >X*=STR**9 A N+10''" 90 PRINT " Nu. NUMERO GIUSTO POSIZIONE" 100 POR 1=1 TO 37 PRINT CHR*<18);■NEXT I 110 POSITION 2,3+f•PRINT E;“ POSITION 12.3+F : INPUT Et 115 IF LEtKEOON THEN 110 120 X=0•Y=X 130 IF Et=X$ THEN PRINT "TROVATO in "jEì " prove." 135 IF E*=X* THEN FOR 1=1 TO 3 ! READ VA : SOUND 0.VR.10.4=FOR T=1 TO 15=NEXT T : NEXT 1 • END 140 FOR 1=1 TO N 150 IF X$=E*CJ.J> THEN 200 130 NEXT J 190 GOTO 230 200 Y=Y+1 210 GOTO 230 220 X=X+1 230 NEXT I 240 POSITION 25.3+F : PRINT Xi" ">Y 250 E=E+1 : F=F+1 : IF F=18 THEN F=1 260 GOTO 110 500 DATA 126.81..96 118 102 programmi per ATARI RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Idem Programmazione: di media difficoltà. Categoria del gioco: gioco di calcolo mentale (2 gioca¬ tori). Difficoltà del gioco: secondo il livello scelto. L'ATARI sceglie un numero n di cifre (secondo il li¬ vello di difficoltà indicato all’inizio). Questo numero (lo stesso all'inizio per i 2 giocatori) sarà regolarmen¬ te decrementato, ad ogni giro, di una quantità ugual¬ mente scelta a caso dall’ATARI all’inizio del gioco; voi dovete, ad ogni colpo, scegliere una colonna (le decine, le centinaia, ecc.) ed aggiungere in questa co¬ lonna un certo intero; lo scopo è di riuscire ad otte¬ nere ad un certo momento la visualizzazione di un numero avente tutte le cifre identiche. Ogni risultato sarà visualizzato un breve istante, do¬ po di che la mano passerà al giocatore seguente, che ripartirà dal suo risultato precedente. Una variabile numerica N è dimensionata a 2 alla li¬ nea 40, per contenere i risultati successivi di due gio¬ catori. La linea 50 permetterà di inserire il livello di difficol¬ tà scelto. Il numero iniziale è creato dalla linea 70. La quantità che interverrà nel decremento è ottenuta alla li¬ nea 90. La linea 120 testa se il risultato non è troppo piccolo. La linea 130 visualizza il numero del giocatore. Il numero è visualizzato alla linea 140 e il gioco del giocatore è inserito alla linea 160 (numero di due ci¬ fre). La linea 170 incrementa la colonna scelta, e la linea 180 decrementa il numero della quantità scelta in partenza. Il risultato sarà visualizzato un breve istante (li¬ nea 210). Il ciclo I (260-280) permette di verificare se tutte le cifre sono identiche. La stampa e la fine della partita sono effettuate alla linea 290. Le linee 300 e 310 si occupano del cambia¬ mento del giocatore. Lanciare l’esecuzione del programma con RUN. Il numero iniziale sarà visualizzato per il giocatore n. 1, che gioca battendo xy, seguito da RETURN; x è la cifra da aggiungere, e y è il numero della colonna do¬ ve bisogna aggiungerla. 102 programmi per ATARI 119 Il risultato (provvisorio se è troppo piccolo) sarà allo¬ ra visualizzato per un breve istante, e la linea passa al secondo giocatore, e così via. Si può fermare in ogni momento il programma battendo BREAK. ESTENSIONI POSSIBILI: Si potrà estendere il gioco a più di 2 giocatori, migliorare la scelta del numero che interviene nella decrementazione, migliorare i diversi controlli, la¬ sciare i differenti risultati visualizzati, ecc. 1@ REM IDEM 20 DIM R*<2> 30 REM 40 PRIMI' ">"'H=l DIM N<2> 56 FRINT "Livello <2-7> INPUT N 6w U-10 P=0 70 N O ) = I NT < < U N-U'' < N-1 > > *RND <1> +U A < N-1> > SO N(2>=N<1> 00 H=1 NT < 24LT" > 100 IF H-l THEN P=P+1 110 FRINT 120 IF H(HXU A (H-1) THEN N > 130 POS ITI0N 0,3‘FRINT "Giocatore “iH;" Prova ";P 140 POSIT10N 0,6‘PRINT "Numero '"'P0SITI0N 16~N,6PRINT N =N < H> +VAL )*U /v -R 190 IF N=N-U' S N 200 N> 210 P0S1TI0N 0,13‘PRINT "Risultato ''PRINT M; 220 RESTORE 'FOR 1 = 1 T0 3‘REFlD V'SOUND 0,V,10,4‘FOR T=1 T0 13'NEXT T = NEXT I'SOUN D 0,0,0,0 230 FOR J=1 T0 1200'NEXT J 240 R*=STR*> 260 FOR 1=1 T0 LEN=1 THEN 300 270 IF R* THEN 300 280 NEXT I 230 P0SITI0N 0,16'PRINT “BRAVO! Giocatore “iH 235 FOR 1=1 T0 3■READ V'SOUND 0,V,10,4>FOR T=1 T0 15‘NEXT T■NEXT I'ENO 30O H=H+1 310 IF H>=3 THEN H=1 32Ò GOTO 100 1000 DATA 126,108,96,126,81,96 120 102 programmi per ATARI Orologio RIFERIMENTI: Programmazione: difficile. Categoria del gioco: disegno. Difficoltà del gioco: nessuna. IL GIOCO: Trasformate il vostro televisore in orologio numerico a visualizzazione in grande formato, grazie a questo programma che vi permetterà di animare una vetri¬ na, di fare un orologio di fantasia, e che potrà pre¬ starsi a molti altri usi. IL PROGRAMMA: La linea 30 vi permetterà di inserire l’ora sotto for¬ ma di un intero di 4 cifre (per esempio: 1024 significa ore 10 24 minuti). La linea 35 cancella il cursore. Le linee 80-170 realizzano il disegno, scalando la stampa man mano (con l’aiuto della variabile K, in¬ crementata alla linea 160). Le linee da 180 a 220 assicurano la progressione del¬ l’ora. Le linee da 230 a 290 effettuano la visualizzazione dei due punti lampeggianti per i secondi. PER GIOCARE: Subito dopo il lancio con RUN, il programma si met¬ te in attesa dell’ora; si batte e si attende il "top” per battere RETURN. L’ora appare molto rapidamente e l’orologio è in marcia. Per fermarlo, bisognerà battere BREAK. L’ora sarà inserita sotto forma di un intero avente imperativamente 4 cifre, per le ore 5 e 6 minuti, si dovrà battere 0506 seguito da RETURN. ESTENSIONI POSSIBILI: Sarà interessante modificare il programma per fare una sveglia, con la suoneria; si può anche migliorare la grafica , introdurre il colore. 102 programmi per ATARI 121 10 REM OROLOGIO 15 Diti fl$<7> 20 GRAPHICS 0 ; SETCOLOR 1,3,2‘SETCOLOR 2,8,10‘SETCOLOR 4,8,10 30 FRINT “Ora " 50 K=1 60 A=VALCA$(K,K)> 70 IF BOI AND fi04 THEN POSITIOH 6*K+3,1 -PRINT CHR*< 160>;CHR$< 160> ;CHR*< 160' 80 FOR J=1 TO 5 80 IF fi—0 OR 3 AND fi07) THEN POSITION 6*K+3,J‘PRINT CHR$<160> 100 IF FIO5 AND fi06 THEN POSITION 64K+5, J : PRINT CHR$<160> 110 IF fi—O OR fi=2 OR ft=6 OR fi=8 THEN POSITION 6*K+3,J+4'PRINT CHR$Ob0> 120 IF fi02 THEN POSITION 6*K+5,J+4‘PRINT CHR$<160> 130 NEXT J 140 IF fi>l THEN POSITION 6*K+4,5‘PRINT CHR*<160>;CHR*<160> 150 IF AOl AND fi04 AND 807 THEN POSITION 6*K+3,3‘PRINT CHR*< 160>,CHR*< 160>,OH Rt<160) 160 K=K+1 170 IF K <5 THEN 60 180 fi=l+VfiL(flT) 130 IF fi=2360 THEN fi=0 208 fi*="000";fi*<4)=STR$ 210 fi*=fi*-3,LEN> 220 IF A#<3,4>="60“ THEN fi$<1,2>=STR*>+l>‘fif<3,4)=“00“ 230 H=1 248 FOR J=1 TO 128 250 FOR 1=1 TO 24 260 POSITION 13,5‘IF HOl THEN PRINT “‘"‘GOTO 270 265 PRINT " " 270 NEXT I 288 H=fiBS Per contimare ";=INPUT R$ 230 1=1-1 248 D=D<=S THEN 70 260 1=1-1 270 IF IO0 THEN 240 124 102 programmi per ATARI Ripetizioni RIFERIMENTI: Programmazione: facile. Categoria del gioco: gioco di memoria (uno o più gio¬ catori). Difficoltà del gioco: media. IL GIOCO: Dei numeri appariranno uno ad uno. Il giocatore dovrà ad ogni mano ripeterli tutti, dall’i¬ nizio (il che significa che ne avrà uno in più da batte¬ re ogni volta). Dovrà cercare di resistere il più possibile. Il miglior punteggio è memorizzato dopo ogni partita, il che permetterà eventualmente di giocare in molti. IL PROGRAMMA: La linea 30 chiama un sottoprogramma (linee da 1000 a 1060) che dà la regola del gioco. La linea 80 crea le cifre, che sono in seguito imma¬ gazzinate in una variabile alfanumerica A$. La linea 90 permette la stampa dell’ultimo numero a caso a caratteri ingranditi e la durata della stampa è determinata dalla linea 100. La linea 120 aspetta la risposta del giocatore, che è paragonata alla risposta corretta alla linea 130. La linea 160 marca i punti. La linea 170 controlla il miglior punteggio. I messaggi di fine partita sono effettuati dalla linea 200 alla linea 240. PER GIOCARE: Il lancio del programma con RUN provoca la visua¬ lizzazione della regola del gioco, poi di una cifra che scompare. L’apparecchio pone allora la domanda LA TUA SEQUENZA? Gli si risponde ridando la cifra, seguita da RETURN. Se è giusta, si ha per un breve istante il messaggio ESATTO. ATTENZIONE, poi una nuova cifra appare, scompare, e ancora la domanda LA TUA SEQUEN¬ ZA? Si ribattono allora le due cifre già ottenute, se¬ guite da RETURN. Si continua così (3 cifre, poi 4, 5 ecc.) fino a che si commetta un errore, il che provoca l’apparizione del punteggio (e del miglior punteggio ottenuto fino ad allora), seguito dalla domanda UN’ALTRA PARTITA? (S/N); si batte S per continuare. Si può anche lasciare il programma in ogni istante, battendo BREAK prima dell’apparizione di una cifra. ESTENSIONI POSSIBILI: Si potranno realizzare dei giochi analoghi e più o meno perfezionati rimpiazzando le cifre con delle lettere, o dei colori, o dei suoni... 102 programmi per ATARI 125 10 REM RIPETIZIONI 20 DIM A$<100>, R$<100>,84< 13) 30 G0SU8 1000 40 M=tì 50 AT=" 11 60 GRAPHICS 2 70 H=0 80 X=INT*10>‘R*+1>=STR* SO GRAPHICS 2 : POSITIOH RNDO >*20,4 < PRINT #6;X 100 FOR 1=1 TO 200+RNDC1>*300■NEXT I HO PRINT 120 PRINT “Iumetti I* tua sequenza INPUT R* 130 IF R$Ofi* THEN 130 140 PRINT >FOR 1 = 1 TO 3 GESTORE : READ V>SOUND 0,V,10.4-FOR T=1 TO 15‘NEXT T-NEXT I SOUND 0,0,0,0 145 PRINT " ESATTO! attenzione !" 150 FOR 1=1 TO 400-NEXT I 160 H=H+1 170 IF M INPUT R4 230 IF R*="H" THEN FOR 1 = 1 TO 6•SOUND 0,126,10/4*> >FOR T=1 TO 5 NEX T T’NEXT I : END 240 GOTO 50 10O0 PRINT “>"-GRAPHICS & 10O5 R*="(RIPETIZIONI I"•A*=CHR$<1?>‘B*=CHR$<26> 1010 FOR T=1 TO LEN-2 1015 A*+l>=CHR$<18>iB4+l>=CHR*<18> 1020 NEXT T 1025 A*=CHR*<5> ; 8$+1>=CHR*(3> 1030 POSITION <40-LEN>/2,0^PRINT H$ 1035 POSITION <40-LEN>,'2, SPRINT R* 1040 POSITION <40-LEN>/2,2‘PRINT B$ 1045 PRINT ^PRINT " Dovete ripetere tutta la serie" 1050 PRINT "dei numeri apparsi dall'inizio del " 1060 PRINT "sioco.Ce n'e' uno in pìu' oani volta" 1070 POSITION 4,22 : PRINT "Battere per continuare";=INPUT R# 1080 RETURN 2008 DATA 126,108,96REM DO RE MI 126 102 programmi per ATARI Parole RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: gioco di lettere (per 1 o vari gio¬ catori). Difficoltà del gioco: media. È difficile immaginare un gioco più semplice nel principio, che si accontenta di visualizzare in disordi¬ ne le lettere prese da una trentina di parole. Ma cer¬ cate di giocare e vedrete che non è così facile; la diffi¬ coltà varia evidentemente secondo la lista di parole che avrete introdotto precedentemente in DATA. La linea 40 permette di dimensionare la variabile Z(I) che conterrà la parola X se è stata scelta. Il ciclo I (70) prende una parola tra le 30 scritte in DATA alle linee 240-280. La linea 70 sceglie una paro¬ la a caso. Il ciclo (100-150) controlla se una lettera non è già stata pescata e riprende le lettere in disordine. La linea 160 visualizza le lettere e la linea 170 aspetta la vostra risposta, che è testata alla linea 180. Il numero dei tentativi è incrementato alla linea 190. La fine della partita è controllata dalla linea 200, ed il punteggio è visualizzato alla linea 220. Si noterà in 500 la routine per suonare note sciolte. Si lancia il programma con RUN. Una serie di lettere appare allora in disordine e bisogna cercare di ritro¬ vare la parola corrispondente. Si batte la parola supposta, poi RETURN, e apparirà una nuova serie di lettere se si risponde S alla do¬ manda UN’ALTRA PROVA? (S/N). Il punteggio ed il numero di tentativi appaiono alla fine della partita. ESTENSIONI POSSIBILI: Si può pensare di limitare il tempo di appari¬ zione della parola, o fare sfilare le lettere una dopo l’altra sullo schermo. Si può anche aumentare la difficoltà inserendo dei JOKERS, giocare in molti, tenere il conto dei punti, ecc. 102 programmi per ATARI 127 10 REM PAROLE 20 Diti Z<30> .• AS<30> ; R$<30> , S$<30> , V$<30> > S=0 : E=0 30 FOR 1=1 TO 30 : Z< 0=0'NEXT I 40 X=I NT CRUDO>*30+l> 50 IF Z=1 THEH 40 60 RESTORE 24« 70 FOR 1=1 TO X : READ R$ : NEXT I SO ZCX>= IV$-R$ 30 GRAPHICS o : A$=““ 100 FOR 1=1 TO LEN 110 Z=INT *LEN < R* > +1> 120 IF R$="-" THEN 110 130 A*+1>=RS 140 R*=“-" 150 NEXT I 160 PRINT "Le lettere sono * "t A$■RESTORE 1006'GOSUB 500 170 POSITIOH 2/6 = PRINT "La tua soluzione INPUT SS ISO IF S $-V$ THEN S=S+1 130 E=E+1 200 POSITIOH 2, 12 : PRINT "Un'altra prova CS/N) INPUT R* 210 IF Rt<1, 1>="8“ THEN 40 220 POSITION 2, 18 ; PRINT "Il tuo eunteMÌo in ";E;“ prove." 230 RESTORE 2O00;G0SU6 500'END 240 DATA PROSCIUTTO.ENERGUMENO.AFFILATO» ERUDITO.IN8IGNIFICAUTE » REALISTA 250 DATA IMPRESSIONANTE»ALLETTANTE.EPICO,INTREPIDO,CODARDO,CALCOLATORE 260 DATA TRAVE,BAHDERILLA,SENATO,ATTUALE,CONSACRATO,DIEDRO 270 DATA LIBRO,TERMINE,FIRMA,MALEODORANTE,AMANTE,ARBITRARIO 280 DATA CALORE,OPPORTUNO,BUCCIA,ALTRUISTA,SPAZZACAMINO.NOVIZIO 500 FOR 1=1 TO 3 510 READ V-SOUND 0,V,10,4 520 FOR T=1 TO 10 ! NEXT T 530 SOUND 0,0,0,0'FOR T=1 TO 5'NEXT T 540 NEXT I 550 RETURN 1000 DATA 126,108,36 2000 DATA 126,126,126 128 102 programmi per ATARI Permutazioni RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: riflessione. Difficoltà del gioco: media. IL GIOCO: L’ATARI vi chiede prima il numero di lettere che de¬ siderate permutare (non più di 11); visualizzerà quin¬ di il numero corrispondente di lettere prese all’inizio dell’alfabeto, prima in disordine (INIZIO) poi in ordi¬ ne (FINE). Dovrete riuscire a rimettere nell'ordine le lettere da¬ te all'inizio, utilizzando delle permutazioni sulle n prime lettere partendo da sinistra, col minor numero di tentativi possibile. IL PROGRAMMA: La linea 40 permette di scegliere il numero di lettere, e la linea 50 controlla che non se ne chiedano più di 11 . La linea 80 realizza la mescola, prendendo a caso la nuova posizione di ogni lettera. Le lettere sono in se¬ guito aggiunte man mano che sono pescate, in una variabile B$ (linea 100), eliminate in A$ e rimpiazzate in C$, nell’ordine giusto (linee 110-120). La linea 140 controlla il numero di lettere di B$. Le visualizzazioni sono effettuate dalle linee 160, 170 e 180. Il rigiro è fatto, lettera per lettera, nel ciclo I (210-230); il risultato è piazzato in B$, alla linea 240; visualizzato dalla linea 250 e paragonato al risultato finale alla linea 260. Il numero di tentativi sarà visualizzato alla fine della partita, grazie alla linea 270. PER GIOCARE: Dopo aver battuto RUN, appare la domanda NUME¬ RO DI LETTERE (DA 1 A 11); si risponde battendo N, seguita da RETURN. La visualizzazione seguente pre¬ senta l’ordine iniziale (INIZIO) e l’ordine da ottenere (FINE). Si gioca indicando il numero di lettere da permutare partendo da sinistra, per esempio: su un messaggio iniziale di GEABDFC, se si batte 3 e RETURN si ot¬ terrà AEGBDFC. Si continuerà fino ad ottenere l’ordine desiderato. Il punteggio apparirà alla fine della partita così come la domanda UN’ALTRA PARTITA? (S/N); rispondere S se si desidera continuare. ESTENSIONI POSSIBILI: Si potrà utilizzare lo stesso tipo di gioco per, ad esempio, ricostituire un disegno nascosto, dove le 102 programmi per ATAR1 129 diverse parti sarebbero identificate con delle lettere. Si possono anche realizzare delle permutazioni più complesse (per esempio, il fatto di permutare due let¬ tere, permuta anche le due vicine alla lettera più a si¬ nistra, ecc.) 10 REM PERMUTAZIONI 20 DIM R*ai>,B*,BE*,C$ 30 GRAPHICS 2 40 PRINT "Numero di lettere etra 1 e 11) u i ‘INPUT N 50 IF N>11 THEN 40 60 A*=“ABCDEFGHIJKL“ -C*=“ " = 6#="" 70 GRAPHICS 2 80 X"INT #N+1> 90 IF A*0X,X>=“ “ THEN 80 100 BE*=6*-B*=A*(X,X>-B*+1>«BE* 110 C* 120 A$=" “ 130 S=1 140 IF LENON THEN 80 150 C*=C*a,LEN> 160 POSITIOH 0,2-PRINT #6;"INIZIO ’ “ ; 6* 170 P0SITI0N 0,4■PRINT #6;"FINE C» 188 PRINT ‘PRINT “Permutazione No. “;S : PRINT -PRINT “Quantità' ■ u >-INPUT L I F L>N THEN 180 190 S=S+1 200 AT=““ 210 FOR 1=1 T0 L 220 A$+1>=6$=A4 250 GOSUB 50O’POSITIOH 0,6-PRINT #6,“RISULTATO-“iB* 260 IF 64 OC 4 THEN 180 270 GOSUB 500-GOSUB 500’PRINT “>“-PRINT “ RIUSCITO in prove." 280 PRINT -PRINT " Un'altra Partita ";-INPUT A4 290 IF H*<1,0 = "S“ THEN 30 300 GRAPHICS 0 END 500 FOR 1=255 TO 0 STEP -3 518 SOUND 0,1,10,4 520 NEXT I 530 RETURN 130 102 programmi per ATARI Bridge RIFERIMENTI: Programmazione: difficile. Categoria del gioco: riflessione. Difficoltà del gioco: variabile, secondo il problema posto. IL GIOCO: Non troverete, in questo programma un compagno per i vostri bridges, ma, più esattamente, una simula¬ zione per la visualizzazione di una mano; questa vi¬ sualizzazione è realizzata gioco per gioco. Si può, partendo da questo, porsi ogni sorta di problemi: di¬ chiarazioni, gioco della carta, ecc. IL PROGRAMMA: Le linee 50 e 60 definiscono un mazzo di 52 carte. La variabile B$, dimensionata alla linea 70, permette¬ rà di visualizzare i simboli dei colori e anche di mi¬ gliorare il disegno di certe carte (10, fante, donna, re e asso). Il ciclo J (80-220) realizza la pesca di quattro mazzi di 13 carte. Il ciclo I (90-190) realizza pesca e stampa. La carta è scelta tra le 52 disponibili, alla linea 110. La linea 110 calcola il colore della carta pescata. La linea 120 verifica che questa carta non sia già sta¬ ta pescata. Le linee 130 e 140 si occupano della stampa comple¬ mentare nel caso si peschi un 10, un fante, una don¬ na, un re o un asso. La stampa è realizzata dalle linee 150, 160 e 170. La linea 180 permette di eliminare le carte già pesca¬ te, e la linea 200 realizza un arresto tra ogni visualiz¬ zazione. PER GIOCARE: Si lancia il programma con RUN. Una prima serie di 13 carte appare verticalmente. Basterà battere un RETURN per ottenere la seconda serie di 13 carte. Si procederà nello stesso modo per la terza e la quarta serie. ESTENSIONI POSSIBILI: Si può immaginare di raffigurare le 13 carte in una maniera più convenzionale. Si può anche aggiungere la possibilità di fare delle dichiarazioni (e di paragonarle a quelle dell’ATARI, per esempio), o introdurre delle possibilità di gioco della carta, compreso anche TATARI. 102 programmi per ATAR1 131 10 REM BRIDGE 29 DIM B$< 13> > R$<52> .■ S$< 1 > 40 GRAPHICS 0 50 R*="234567891FDRH" 60 FOR 1 = 1 TO 2iR*aEN + l>=R*:NEXT I 70 Bf'-“FI QUCUP10R0ES" 80 FOR J=1 TO 4 30 FOR 1=1 TO 13 100 X=IMT -*-i 120 IF R$="0" THEH 100 130 T=X-13TIHT < 'ìv' 13 > 140 T=T+13:»:< T=0> 150 POSiriON 10*J-8,I>PRINT R$; 160 IF T>=9 THEN FRINT B* 170 POSITION 18*J-4,I ISO R$ = “0“ 190 NEXT I 200 IF J<4 THEH POSITION 4,18-PRINT “Battere per continuare"! INPUT S $ 210 POSITION 4,13=PRINT " 220 NEXT J 132 102 programmi per ATARI Hanoi RIFERIMENTI: Programmazione: difficile. Categoria del gioco: riflessione. Difficoltà del gioco: elevata. IL GIOCO: È presentato, qui, in una versione per un solo gioca¬ tore. Si dispone di un certo numero di dischi (8 al massimo) e si deve trasferirli dalla torre numero 1 al¬ la torre numero 3, rispettando una sola regola: in nessun momento un disco può essere ricoperto da un disco di diametro superiore. Il numero di tentativi non è contabilizzato in questo programma, ma le mosse illecite saranno rifiutate. IL PROGRAMMA: La variabile E$, alla linea 40, servirà a disegnare i dischi. Il numero di dischi è inserito alla linea 50 e rifiutato se ci sono più di 8 dischi. Il ciclo I (70-90) permette di fabbricare una variabile A(l) che contiene lo stato della pila sotto forma nu¬ merica (alla linea 30, tre variabili sono previste per conservare lo stato delle tre pile). Le basi sono disegnate dalla linea 110 e le tre pile dai cicli chiusi I (130-180) e J (140-170). Il controllo della mossa è effettuato dalle linee 210, 220, 235, 237, 260 e lo stato delle pile è modificato dalle linee 270 e 280. PER GIOCARE: Dopo un RUN che lancia il programma, si inserisce il numero di dischi richiesti, seguito da RETURN. Si ottiene il disegno dello stato iniziale e, alla domanda TORRE DI PARTENZA, si risponde dando il numero della torre di partenza. Questo numero (1, 2 o 3) sarà rifiutato se la torre è vuota. Poi si batte RETURN e alla domanda TORRE D'ARRIVO, si risponde col nu¬ mero della torre d'arrivo. Se la mossa non è possibile, saremo obbligati a rico¬ minciare da TORRE DI PARTENZA. Se la mossa è possibile, lo spostamento è realizzato e si ricomincia. ESTENSIONI POSSIBILI: Si potranno disegnare dei dischi di diversi co¬ lori, introdurre un contatore di mosse e, soprattutto, definire un gioco per il calcolatore. Si può anche cercare di complicare il gioco con due torri in più e due giocatori, ognuno avente dei dischi di colore diverso, per esempio. 102 programmi per ATAR1 133 10 REM HANOI 15 DIM R*<8>,6*<9>,C*<9>,D*<9> 20 GRAPHICS 0 : SETCQLOR 1,6,2-SETCOLOR 2,2/14 30 DIM R<8>-R=9>fi<2>“9-A<3)=9 40 FOR 1 = 1 TO 9 = D$=CHR*O60> -NEXT I 50 PRINT "Numero di torri (meno di 8) INPUT N 60 IF N>=8 THEN 50 70 FOR 1=0 TO N-l 80 ft*=STR*)-H$+1>=STR* -fì<1>-VRL 90 NEXT I 100 PRINT ">“ 110 POSITION 3,14'PRINT D*'P0SITI0N 15,14-PRINT D$-P0SITI0N 27,14-PRINT D* 120 POSITION 7,14-PRINT "1"-POSITION 19,14-PRINT "2"-POSITION 31,14-PRINT "3" 138 FOR 1=0 TO N-l 140 FOR J=1 TO 3 150 B*=STR$> 160 IF LEN<6*»I+t THEN POSITION 12*J-9,13-1 -PRINT D*> 170 NEXT J 180 NEXT I 200 POSITION 0,16-PRINT "Torre di partenza -POSITION 19,16-INPUT D 210 IF D>3 OR D<1 THEN 200 220 IF fl=9 THEN 200 230 POSITION 0,18‘PRINT “Torre d'arrivo - "<-POSITION 16,18-INPUT fl 235 IF R>3 OR fl<1 THEN 230 237 IF R=D THEN 200 240 B*»STR* 250 C*=STRt> 260 IF 6*>>C*> THEN 200 270 fi(R>=VRL(C$>*10+VRL=VflL) 290 GOTO 180 134 102 programmi per ATARI Rombi RIFERIMENTI: Programmazione: facile. Categoria del gioco: passatempo. Difficoltà del gioco: nessuna. IL GIOCO: Il programma genera progressivamente sullo scher¬ mo un rombo poi lo cancella progressivamente per poi ricominciare e via di seguito. Potrete utilizzarlo come sonnifero se le pecore non vi bastano più. Nella versione leggermente modificata che vi è pro¬ posta appariranno dei motivi casuali dopo la costru¬ zione di ogni rombo. IL PROGRAMMA: Un primo ciclo K (55-130) definisce le dimensioni dei tracciati successivi. Il secondo ciclo I (60-120) traccia delle bande di pun¬ ti, utilizzando le istruzioni PLOT (linee 80-110). Se la variabile S (linea 70) è a 1, si avrà una cancella¬ zione casuale (si utilizza PLOT, ma servendosi dei co¬ lori casuali per cancellare). Nel secondo programma si otterrà una cancellazione casuale modificando la linea 70. PER GIOCARE: Si lancia l'esecuzione del programma con RUN. Si in¬ serisce se necessario un nucleo per il generatore (se¬ condo programma) e si guarda. Si può fermare in qualsiasi momento battendo BREAK. ESTENSIONI POSSIBILI: Si potrà introdurre il suono, utilizzare l’istru¬ zione DRÀWTO che permetterà un tracciato molto più rapido, immaginare su dei principi analoghi di¬ versi programmi (caleidoscopio, tappezzeria...). 102 programmi per ATARI 135 1.0 REM ROMBI 20 GRAPHICS 7+16 40 8=0 S8 FOR I*0 TO 4 :8ETC0L0R I,INT *16 >,2* :NEXT I SS FOR K=0 TO 40 60 FOR 1-0 TO K SS COLOR 1 70 IF 800 THEN ON INTERNI?a >*5+1 > GOTO 160.170,180.190/200 80 PLOT 80-K+I.40-T 90 PLOT 80-K+I,40+T 100 PLOT 80+K-I,40+1 110 PLOT 80+K-1,40-1 120 NEXT I 130 NEXT K 140 8= HOT S 150 GOTO 50 160 COLOR 0 ; PLOT 80-K+I.40-I 170 COLOR 1 : PLOT 80-K+I,40+T 180 COLOR 2 : PLOT 80+K-1,40+1 190 COLOR 3 - PLOT 80+K-1,40-1 200 GOTO 120 1.0 REM ROMBI INTERI 20 GRAPHICS 7+1.6 40 8=0 50 CO» 1 + 1 NT < RNI.1 < 1 > *3 > 55 FOR K-0 TO 40 60 FOR 1=0 TO K 65 COLOR CO 70 IF 800 THEN 160 80 PLOT 80-K+1,40-1 90 PLOT 80-K+.1,40+1 100 PLOT 80+K-I,40+I 110 PLOT 80+K-I,40-1 120 NEXT T 130 NEXT K 140 o- HOT S 150 GOTO S0 160 COLOR S •' PLOT 80-K+1,40-1 1.70 PLOT 80-K+I, 40+1 180 PLOT 80+K-I,40+I 190 PLOT 80+K-1,40-1 200 GOTO 120 136 102 programmi per ATARI Matteo RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: disegno casuale. Difficoltà del gioco: nessuna. Si utilizza la definizione di una curva in coordinate polari e l’istruzione PLOT per ottenere sullo schermo dei disegni casuali (del tipo fiore) più o meno elegan¬ ti. I due parametri principali A e B possono essere, se necessario, inseriti alla mano (istruzione INPUT) per fare uno studio più sistematico di diverse curve pos¬ sibili. I primi 3 parametri Z, K e T, introdotti alla linea 40, definiscono il raggio massimo e l’occupazione dello schermo. Le variabili casuali A e B scelte tra 0 e 2, dalla linea 60, definiscono l’andamento della curva; potrà essere interessante introdurle manualmente (per esempio: 60 INPUT A,B). II ciclo H (70-120) realizza la traccia punto per punto. Il raggio R è calcolato alla linea 80 e il passaggio in coordinate cartesiane è effettuato alle linee 90 e 100. La visualizzazione dei punti è realizzata dalla linea 110 . La linea 150 suona la musichetta contenuta in A$ La linea 180 sceglie un altro colore del disegno e il programma ricomincia in 40. Si lancia il programma con RUN. Il disegno sarà eseguito automaticamente. Per terminare battere BREAK. ESTENSIONI POSSIBILI: Si potranno utilizzare delle funzioni grafiche più definite, variare i colori. Si potrà cercare di utilizzare delle altre funzioni per realizzare dei tracciati ancora più straordinari (per esempio con simulazione della terza dimensione). 102 programmi per ATARI 137 IO REM MATTEO 20 GRAPHICS 7+16 POR 1=0 TO 4=SETC0L0R I,INT<16*RND<1>>,2*I'HEXT I 25 DIN A*<9> 30 C=INTT4> : IF C=0 THEN 30 40 Z=5 : K=9 ; T=3 60 A=3*:RND< 1 ') ■ B=3*:RND< 1 > . 79 FOR H=0 TO 6.28 STEP 3.14-180 80 R=Z*SIN 90 X=?5+1UT < K*R*CÙS < AtH>) 100 Y=47+1NT ) 110 COLOR C >PLOT X,Y 120 NEXT H 140 fi$=“126096081" 150 FOR 1=0 TO 2 : SOUND 0,VAL(Rf(3*1+1>3*1+3 )), 10>4 • FOR T=1 TO 10=HEXT T-SOUND 0, 0.O/0 ; FOR T=1 TO 5 : NEXT T•NEXT I 160 C=C+1•IF C=0 THEN 180 190 GOTO 40 138 102 programmi per ATARI Il lupo e gli agnelli RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: difficile. Categoria del gioco: riflessione (2 giocatori). Difficoltà del gioco: media. È un gioco abbastanza conosciuto che può essere praticato su una scacchiera 8*8, o indifferentemen¬ te, su una 10*10. È presentato, qui, in una versione per una scacchiera 8*8; uno dei giocatori sceglie il lupo che si sposta seguendo le diagonali, restando sulle caselle nere, di una casella ad ogni colpo, e che può avanzare o retrocedere. Gli agnelli si spostano ugualmente sulle caselle nere, in diagonale, ma non hanno il diritto di retrocedere. Le caselle già occupa¬ te sono proibite (niente prese), e non ci sono salti. Il lupo vince se riesce ad arrivare sulla linea in basso prima che tutti gli agnelli occupino quella in alto; gli agnelli vincono in questo caso, o se riescono a blocca¬ re il lupo. Una variabile A$, alla linea 30, contiene le posizioni di partenza. Il ciclo I (80-130) disegna la scacchiera, e le linee da 150 a 190 posizionano il lupo e gli agnelli. La linea 200 gestisce il cambio di giocatore. La linea 280 visualizza "TURNO DEL LUPO” se è il gio¬ catore che manipola il lupo che deve giocare, e la linea 240 "TURNO DEGLI AGNELLI” nel caso contrario. Le linee 250-270 o analizzano la risposta, in funzione del giocatore in questione. RUN posiziona il calcolatore in attesa di un inseri¬ mento: 0 e RETURN se si vuole far iniziare gli agnelli e 1 per il lupo. Dopodiché appaiono la scacchiera e la frase TURNO DEL LUPO (A, S, Z, X) per il lupo e TURNO DEGLI AGNELLI (ND o NS) per gli agnelli. Gli agnelli rispondono con un numero, seguito da D o S (per destra o sinistra). Così 2D provoca lo sposta¬ mento dell’agnello numero 2 che sale in diagonale di una casella a destra. È visualizzato lo spostamento effettuato, poi si ottiene una domanda identica per il lupo che risponderà battendo A, S, Z o X, secondo la direzione scelta: A S Z X 102 programmi per ATARI 139 Si dovrà fare attenzione a non uscire dalla scacchie¬ ra e a non finire suH’awersario, dato che non è previ¬ sto alcun controllo. ESTENSIONI POSSIBILI: Si potrà prevedere una individuazione delle caselle, una grafica più curata, dei controlli di non superamento dei limiti del tavolo, di non arrivo su una casella già occupata... Si potrà anche pensare di giocare su una scacchiera di 10*10 caselle, che aumenta leggermente la diffi¬ coltà del gioco per gli agnelli. Ma l’estensione più in¬ teressante da realizzare sarà certamente la creazione di un programma che permetta all’ATARI di compor¬ tarsi come un degno avversario , sia col lupo, sia con gli agnelli (e, in questo caso, sarà possibile definire una strategia vincente per TATARI). 10 REM IL LUPO E GLI AGNELLI 15 DIM A*<10>,CA*<4>,R$<2> 20 PRINT “Aan*lli<0> o Lupo<1> ' “ì >INPUT S 30 A*=“8i838587i4" 35 FOR N=1 T0 4 : Ch$(N)=CHR*<166> 1 NEXT N 40 GRAPHICS 0 ! SETCOLOR 1;10,14 50 PRINT " A B C D E F G H" S@ FOR 1*1 IO 8'POSITION 0,2*1‘PRINT I'NEXT I 80 FOR 1=1 T0 8 90 FOR J=1 TO 3 100 POSITIOH 4*J-1,2*1 110 IF /2) THEN PRINT CR*'P0SITION 4*J-1,2*1+1 PRINT CO* GOTO 1 20 115 PRINT " 120 NEXT J 130 NEXT I 150 POSITION 4*VRL>•PRINT "L" ISO POS ITI 0N 4*VAL+l,2*VAL'PRINT "1“ 170 P0SITI0N 4*V0L>+1,2*VAL+l,2*VAL>'PRINT “3" 190 POSITION 4*VAL >+l,2*VRL >'PRINT M 4" 200 S=ABS 210 POSITION 0,20 PRINT " 228 POSITION 0,28'IF S*0 THEN PRINT “Turno del lupo "."INPUT R* 230 IF S«1 THEN PRINT "Turno dea li «snelli INPUT R* 'GOTO 280 240 C=10 250 fl-VAL -1, LEN < A* > > >+< C+1 > * < R$* " X " >+< C-1 > * < R*== " 2 " > 2S0 A=A-*- 270 GOTO 300 230 C=2*VAL IR*U, 1 ) ) 290 A=VAL= ,, D")-11* 300 R*=STR* 310 GOTO 80 102 programmi per ATARI 141 LIVELLO 4 N. Nome del programma Tema e particolarità 1 Lancio di dadi Sufficientemente elastico per essere usa¬ to dappertutto 2 Tombola Vincete senza problemi alla prossima estrazione 3 La bomba Saprete scoprirla in tempo? (1 giocatore) 4 Lavagna magica Mettete a punto le vostre creazioni grafi¬ che, senza carta né penna 5 Pubblicità Se non sapete cosa mettere nella vostra vetrina 6 Cappelli Siate molto osservatori e riuscirete (2 giocatori) 7 Combattimento aereo Non è così facile abbattere un aereo che si sposta sempre 8 Disegno di dadi Migliorate i vostri giochi di dadi inseren¬ do questo programma 9 Il gioco del missile Una missione pericolosa! (1 giocatore) 10 La scimmia Un gioco di lettere per due giocatori, do¬ ve bisogna avere dei buoni riflessi 11 Il gioco del 15 Un gioco di riflessione che utilizza ci¬ fre (2 giocatori) 12 Destrezza Gioco di riflessi per 1 giocatore 13 Sottomarino Un classico dei videogiochi (1 giocatore) 14 Zombi Un po’ strano, ma molto bello (1 giocato¬ re) 15 Diago Siete veramente sicuri dei vostri riflessi? 16 Recomat Per evitare di ammuffire su Nicomat 17 Caccia al sottomarino Vi ci vorrà non poca riflessione e molta fortuna 18 Tastiera Imparate a battere a macchina diverten¬ dovi 142 102 programmi per ATARI Le tecniche d’animazione elementare I caratteri grafici PRESA AL VOLO DI UN CARATTERE BATTUTO ALLA TASTIERA: Il principio di un gioco grafico, in animazione, è che si svolga da solo, in una certa maniera, durante un certo tempo, finché non interviene il gioca¬ tore. Bisogna dunque disporre della possibilità di osservare se c’è stato o no l’intervento del giocatore, senza per questo interrompere lo svolgimento del programma. Nel Basic dell’ATARI, questa proprietà è offerta dalla funzione GET che legge la tastiera interrompendo il programma. La sua sintassi molto parti¬ colare deve essere rispettata. Prima dell’utilizzo si inizializza con il co¬ mando: OPEN # ÌAO/K" che si pone all’inizio del programma. La scelta è effettuata da: GET # 1, VAR "VAR” contiene il codice ASCII del tasto battuto. Per scegliere al volo è necessario utilizzare una particolarità dell'ATARI. Ad ogni tasto battuto corrisponde un codice speciale dell’ATARI (si parla di codice ATASCII) situato nella memoria 764. Basta leggere questa memo¬ ria per sapere quale tasto è stato premuto per ultimo. Il comando: PEEK legge il contenuto di una memoria: così, CLA=PEEK(764) assegna alla variabile CLA il codice tastiera dell’ultimo tasto battuto. Per evitare di leggere due volte di seguito lo stesso valore, si consiglia do¬ po la lettura, di reinizializzare questa memoria, il comando POKE permet¬ te questa manipolazione: POKE 764,255 pone 255 (codice nullo) nella me¬ moria numero 764. SPOSTAMENTO DI OGGETTI DAL BASSO IN ALTO SULLO SCHERMO: SCROLL È difficile, se si lavora in BASIC, generare lo spostamento simultaneo di vari oggetti sullo schermo (se non si ottiene velocemente una animazione accidentata, a causa di un tempo di spostamento proibitivo). 102 programmi per ATARI 143 L’ATARI realizza automaticamente uno "Scrolling" (cioè uno spostamento dell’insieme dell’immagine) verso l’alto, quando si scrive sull'ultima riga in basso dello schermo. Questa proprietà è stata messa a profitto in vari giochi: ciò permette, in¬ fatti, di spostare di una riga verso l’alto i vari oggetti (testi e grafici) pre¬ senti sullo schermo in quel momento. La linea in alto è evidentemente persa. Se un oggetto deve restare immobile sullo schermo, sarà necessario can¬ cellarlo dalla sua nuova posizione e sostituirlo alla sua posizione iniziale. 144 102 programmi per ATARI Lancio di dadi RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: lancio di dadi. Difficoltà del gioco: nessuna. Il programma proposto non realizza un gioco vero e proprio, ma potrà essere utilizzato come sottopro¬ gramma per numerosi giochi. Offre semplicemente la possibilità di lanciare da 1 a 9 dadi, con la semplice pressione di un tasto. I dadi sono visualizzati in seguito con una grafica molto semplificata. La linea 60 prende il carattere battuto sulla tastiera e lo trasforma in numero (se non è possibile, il pro¬ gramma rifiuta l’ingresso). Una variabile D dimensionata riceve il valore indica¬ to da ogni dado. Un ciclo J (110-130) è utilizzato per disegnare un fon¬ do, e un altro ciclo I (100-160) serve al lancio (lancio alla linea 140 e stampa alla linea 150). La linea 230 offre la possibilità di rifare un lancio; non è indispensabile. Si lancia il programma con l'ordine RUN e si ottiene il messaggio NUMERO DI DADI DA LANCIARE? al quale si risponde battendo una cifra. Il risultato è visualizzato automaticamente; basta battere un tasto qualunque per ricominciare. Per fer¬ marsi, è necessario battere BREAK. ESTENSIONI POSSIBILI: Si potrà, naturalmente, utilizzare questo pro¬ gramma per la realizzazione di ogni gioco utilizzante dei dadi (421, ecc.) 102 programmi per ATARI 145 10 REM LANCIO DI DADI 15 DIM DO) 20 OPEN #1,4,0,"K : " 38 SETC0L0R 1,13,2•SETC0L0R 2,5,14 40 FRINT ">" 50 POSITION 0,0‘PRINT “Numero di dadi da lanciare ; " ; 60 GET #1,A 70 IF fi<43 OR fl>57 THEN 40 S0 N-R-48 30 FRI NT ">'• 100 FOR 1=1 TO N 110 FOR J=1 TO 3 120 POSITION 4*1-4,8+J-PRINT CHR*<160>jCHR$<160)ìCHR$<160> 130 NEXT J 140 D=INT 160 NEXT I 170 RESTORE -FOR 1=1 TO 3 180 READ V 50 GRAPHICS 2 60 FOR 1=1 TO 7 70 N=INT*49+1) 80 IF 1=1 THEN 120 30 FOR J=1 TO 1-1 100 IF NU>=N THEN 70 110 NEXT J 120 NEXT I 140 T'OSITION 3, Ù • PRINT #6;" TOMBOLA ISO POSI TION 3» 1 : PRINT #6;"-“ 160 FOR 1=1 TO 6 170 POSITION 3*1-1,5 130 PRINT #6,N(I) 130 NEXT I 200 POSITION O,SPRINT #6;“complementare ;M ;N; 210 RESTORE ‘FOR 1=1 TO 3■READ VNEXT I 220 PRINT PRINT “ Un'altra estrazione “> 230 GET #1,R‘IF A=83 THEN 50 240 GRAPHICS 0 1000 DATA 126,103,36 148 102 programmi per ATARI RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: La bomba Programmazione: di media difficoltà. Categoria del gioco: solitario. Difficoltà del gioco: media. Dovete trovare, con l’aiuto di un rivelatore speciale, un pacco radioattivo deposto da un viaggiatore male intenzionato, in una camera d’albergo. Un solo pro¬ blema, di misure: l’albergo possiede un milione di ca¬ mere (100*100*100). Il vostro rilevatore visualizza, in permanenza, un se¬ gnale che vi informa sulla prossimità della bomba e il tempo che vi resta, decontabilizzato di 10 in 10. Potrete scoprire la bomba prima dell’esplosione? Una variabile numerica R, dimensionata A 3 contiene le tre coordinate che definiscono la posizione del gio¬ catore. La posizione della camera contenente il pacco è defi¬ nita da un’ estrazione casuale di 3 variabili A, B, C, alla linea 50. Il ciclo I (70-110) disegna il detector. Il segnale di prossimità è calcolato alle linee 130 e la linea 140 permette la visualizzazione delle coordinate della camera da scoprire, nel caso in cui si sia perso. La linea 150 permette la visualizzazione sia del se¬ gnale che del tempo rimanente. La linea 160 realizza il conto alla rovescia del tempo. La linea 170 controlla se si è riusciti a trovare o no il pacco. Il ciclo I (210-250) permette di inserire le nuove coor¬ dinate, utilizzando il sottoprogramma posizionato al¬ le linee da 300 a 340. Si noteranno le referenze ai numeri di linea del pro¬ gramma con l’aiuto di marchi (MUSIQUE SIDODO). Dopo il lancio del programma con RUN appaiono il segnale ed il tempo (all'inizio 200). Il giocatore è allora alla posizione x=0, y=0, z = 0 ; si dovranno introdurre successivamente le tre coordi¬ nate x,y,z della camera da esplorare. Si farà, per esempio, 13 poi RETURN, 45 poi RE¬ TURN, ecc. Il nuovo segnale è visualizzato, ed il tempo decre- mentato di 10. Si continuerà così sia fino al risultato positivo (arre¬ sto del gioco e fine del programma), o fino all'appari¬ zione di 3 numeri (x, y, z) senza uscire dal program¬ ma, il che significa che abbiamo perso. 102 programmi per ATARI 149 ESTENSIONI POSSIBILI: Sarà senz’altro indispensabile migliorare la grafica, aggiungere un’esplosione (sonora e visiva) per simbolizzare l’esplosione della bomba, visualizza¬ re simbolicamente la posizione nell'albergo, ecc. 10 REM LA BOMBA 15 8ETC0L0R 2,3,2-POKE 752,1 20 DIM R*<10^S*<10>-iDPEN #1,4,0,"K-" 25 DIM R<3> ; FQR 1 = 1 T0 3 -R=0-NEXT I 30 MUSIQUE=500 35 SIDÙDO=1080•DOREMI=2000•UTSOMI*3000= BEEP-4080 40 L=10O-T=200 50 A=l + INT*)-6=l+INT*4:> 60 PRINT “> M 70 POR 1=0 T0 17 80 P0SITI0N 1+18,4-PRINT CHR*<160> 30 POS ITIOH I + 10;5 : PRINT CHR*<160> 100 P0SITI0N 1+10,6-PRINT CHR*<160> 110 NEXT I 120 S=ABS < < A'L+B+C4L)-< R<1>/L+R < 2)+R < 3 > *L)> 130 S$=STR$03)>S=VAL> 170 IF S=0 THEN POSITION 2,20-PRINT "BRAVO!“-RESTORE UTSOMI-GOSUB MUSIQUE- END 180 POSITION O;10-PRINT " - X -" 130 POSITION 0,12-PRINT “ - V 280 POSITION 0;14-PRINT " - Z -" 210 FOR 1=1 TO 3 220 R$="" 230 GOSUB 300 240 R< I )=VAL+1> =CHR* < CLA ) 340 GOTO 300 5O0 FOR M=1 TO 3 510 READ V-SOUND 0,V;18;4-FOR TE=1 TO 10-NEXT TE-SOUND 0;0,0,0-FOR TE=1 TO 5-NEX T TE 520 NEXT M 530 RETURN 100O DATA 64,63,63 2000 DATA 63,53,47 3000 DATA 63,40,47 4000 DATA 40,40,40 150 102 programmi per ATARI Lavagna magica RIFERIMENTI: Programmazione: facile. Categoria del gioco: disegno. Difficoltà del gioco: bassa. IL GIOCO: Come indica il titolo, si tratta, semplicemente, di uti¬ lizzare lo schermo come una lavagna, manipolando un punto sullo schermo seguendo 8 direzioni, con l’aiuto dei tasti da 1 a 8, secondo la convenzione: 8 Si dispone anche della possibilità di spostare il punto sullo schermo senza lasciare la traccia battendo 0 (il che permette la cancellazione parziale) e lasciare di nuovo la traccia ribattendo 0. Si può scegliere il colore del punto battendo su un ta¬ sto da A a H; è possibile cancellare tutto lo schermo battendo P. IL PROGRAMMA: La linea 30 contiene la scelta delle possibilità di colore. La linea 50 stampa il punto . Le linee da 60 a 90 controllano gli input. La linea 130 chiama uno dei quattro sottoprogrammi che effettuano lo spostamento. La linea 140 verifica che non si esca dai limiti dello schermo. La linea 160 effettua la cancellazione se richiesta. Il sottoprogramma 400-410 sceglie il colore; 300-310 realizza o no la cancellazione. PER GIOCARE: Si lancia il programma con RUN; un punto appare verso la metà dello schermo. Si dovrà battere 0 per spostarlo senza visualizzarlo. Se si batte una lettera da A a H, il colore del punto cambia. Il tasto P cancella tutto, e si ricomincia. Si può uscire in ogni momento, battendo BREAK. ESTENSIONI POSSIBILI: Si potrà, naturalmente, pensare di scrivere un programma identico utilizzando delle tracce di seg¬ menti, prevedere un sottoprogramma che permetta il salvataggio del disegno realizzato per un’ulteriore utilizzazione, ecc. Utilizzare il joystick per spostare la penna simulata. 102 programmi per ATARI 151 10 REM LAVAGNA MAGICA 15 OPEN #1,4,0, "K : " 29 DIM C$ (8 > 25 GRAPHICS 11 30 C*=“91234567" 40 X=40 =ASC("A"> AND CLA<=ASC("H“) THEN GOSUB 40© 80 IF CLA=ASC<"0"> THEN GOSUB 300 90 IF CLA=ASC("P“) THEN GOTO 25 100 F=2*-1 11© A=X‘6=Y 120 U=CLA-48+2* 130 OH U GOSUB 1000,2000,3000,4000 140 0=00*0 AND X<80 AND Y>=0 AND Y<192> 150 IF D=8 THEN GOSUB 5008 168 IF SO0 THEN COLOR 0;PLOT A,B 1F0 GOTO 50 380 S=A6S 310 RETURN 400 C»2*VAL< C» ,S#<Ì> 20 PRINT ">" 25 OPEN #1,4,0,"K : " 30 BS=“" 40 PRINT "Inserite il testo •" SO PRINT 60 GET #1,CLA 70 IF CLA=155 THEN 100 SO B*+1)=CHR* 30 PRINT CHR*;-GOTO 60 1Ó0 PRINT PRINT estra o ini*tr* INPUT S* 110 PRINT 120 PRINT "Velocita' di scorrimento 160 POSITION 0,5 170 PRINT #6;" ";B$a,18)j“ " 180 IF S$="S" THEN B$:B$=B*<2,T+l) 180 IF Sf="D" THEN C$=6* ! B*<1,1)=C$(T,T) : B$<2,T)=C$<1,T-l> 200 FOR J=0 TO 10*V 210 P=PEEK(764)•POKE 764,255 220 IF P=50 THEN 100 230 NEXT J 240 GOTO 160 154 102 programmi per ATARI Cappelli RIFERIMENTI: Programmazione: facile. Categoria del gioco: gioco di riflessi, per due gioca¬ tori. Difficoltà del gioco: bassa. IL GIOCO: L’idea è molto semplice: due personaggi si spostano l’uno verso l’altro sullo schermo e si incrociano. Quando si incrociano, è possibile che scambino i loro cappelli. Si tratta di essere il primo a dire se c'è stato o no lo scambio di cappelli durante l’incrocio. IL PROGRAMMA: La linea 40 contiene il disegno dei due cappelli (in due variabili alfanumeriche B$ e C$). La linea 50 contiene, in un’altra variabile A$, i simbo¬ li che permetteranno di disegnare i personaggi. La linea 70 permette, se è il caso, lo scambio di cap¬ pelli. La variabile T della linea 80 serve ad individuare se c’è stato o no lo scambio. Il disegno dei due personaggi è realizzato da un ciclo I (120-150), e il loro spostamento è realizzato dalla li¬ nea 160. II test, che permette o no lo scambio dei cappelli, è effettuato alla linea 180. Le linee da 200 a 260 determinano se il primo gioca¬ tore che ha battuto su un tasto ha perso o vinto. PER GIOCARE: Lanciare il programma con RUN. I personaggi cominciano immediatamente a spostar¬ si l’uno verso l’altro. II giocatore di sinistra dispone dei tasti 1 e 2 e quello di destra, dei tasti 9 e 0. Se c'è stato scambio di cappello, i tasti da premere saranno 1 (a sinistra) e 0 (a destra). Se non c’è stato scambio, bisognerà per vincere esse¬ re i primi a premere 2 (a sinistra) e 9 (a destra). Apparirà allora il messaggio BRAVO SINISTRA o BRAVO DESTRA, o, ancora, PERSO SINISTRA o PERSO DESTRA. ESTENSIONI POSSIBILI: Sarà possibile prevedere una visualizzazione a colori, con una animazione dei personaggi. Si potrà anche complicare il gioco a piacere con vari oggetti scambiati in maniera casuale (bisognerà allo¬ ra trovarne la lista completa). 102 programmi per ATARI 155 10 REM CAPPELLI 15 MUSIQUE=500•OOMIS0=1008 >DOREMI=2000 <000000=3000 20 DIM A*<24>,B*<3>,C$<3>,D»<3> 25 SETCOLOR 1 - 15,S:SETCOLOR 2,11,2 30 POKE 752,1 40 B*="iPo" ; Ct=“iio" : REM battere i caratteri di questa risa prenendo siMultanean ente 50 A$=" t qse I I qxel II le z"‘REM vedere 48 escluso I che si ottiene di retta» ente alla tastiera 60 X=8 : Y=30'T=1 70 D$=C*=C$=6*‘B*=D# 60 T=A6o (. T— 1 ) 30 PRINT ">“ 100 POSITIOH X,5‘PRINT C$ 110 POSITIOH Y,5'PRINT &* 120 FOR 1=1 Tù 8 130 POSITION X,1+5'PRINT A$<3*I-2,3*I> 140 POSITION Y,1+5'PRINT fi$<3*I-2,3*I> 150 NEXT I 160 X=X+1Y=V-1 165 IF Y=8 THEN RUN 170 FOR 1=1 TO 200'NEXT I ISO IF X=Y AND RNOC1X0.5 THEN 78 130 P=PEEK<764>'POKE 764,255'IF P*255 THEN 90 135 IF PO30 AND PO31 AND PO48 AND PO50 THEN 30 200 IF X<=Y THEN 240 220 IF OR THEN PRINT "BRAVO! Sinistra.“'RESTORE DO MI SO ' OOSIJB MUS IQUE ' END 230 IF OR jCHR*<24>jCHR*<8> 80 U® A 1 V=6 90 A=A+2*INT*2>-1 100 B*B+2*INT*2>-1 110 P“PEEK< 764) : POKE 764,255 120 B=B-2*+2* 130 A*A-2*+2* 140 B=B-36*36>+36* 150 A»A-22*22)+22* 180 IF P=50 OR N<21 THEN GOSUB 200 130 GOTO 70 200 POSITI»! 29-N/N'PRINT CHR*<6 >t 'POSITION N+9,N'PRINT CHR*<7); 205 SO»!D 0,31+N,18,11-INT 228 N=N-1 230 IF N>9 THEN RETURN 248 IF AND <8-18 OR B»19 OR B=20> THEN PRINT "VINTO.>EN D 250 GOTO 60 158 102 programmi per ATARI Disegno di dadi RIFERIMENTI: Programmazione: difficile. Categoria del gioco: lancio di dadi. Difficoltà del gioco: bassa. IL GIOCO: Il programma proposto è soprattutto interessante per il suo lato grafico visto che permette di raffigura¬ re, in maniera più che discreta, da 1 a 5 dadi sullo schermo, utilizzando una tecnica di disegno un po’ particolare. Ogni risposta alla domanda NUMERO DI DADI? pro¬ voca immediatamente un nuovo lancio del numero indicato di dadi. IL PROGRAMMA: La linea 70 permette di controllare se c’è stato o no intervento su un tasto da 1 a 5. Le linee 90 e 100 inizializzano le due variabili di dise¬ gno dei dadi. Il ciclo I (110-200) e la linea 120 e 130 disegnano la cornice del dado. La linea 140 realizza il lancio, ed il ciclo J (150-190) disegna i punti in relazione al lancio realizzato (chia¬ mando le variabili A$ e B$). PER GIOCARE: Si lancia il programma con RUN, e alla domanda NU¬ MERO DI DADI, si risponde battendo un tasto da 1 a 5. I dadi richiesti sono allora raffigurati, e la doman¬ da NUMERO DI DADI viene posta di nuovo. Basterà battere BREAK per uscire dal programma. ESTENSIONI POSSIBILI: Si potrà conservare la parte disegno utilizzata in questo programma per realizzare tutta una serie di giochi con i dadi, con una rappresentazione grafi¬ ca di qualità discreta e facile da modificare se ce ne fosse bisogno. 102 programmi per ATARI 159 IO REM DISEGNO DI DADI 20 OPEN #1,4,0,"K : " 30 DIM 40 GRAPHICS 0 ; SETCOLOR 1,7,2-SETCOLOR 2,11,1® 5tì POSITION ®,15PRINT "Numero di dadi =“i 60 GET #1,CLH 70 IF CLfl OR CLfl>flSC<“5"> THEN 40 80 F'RINT 96 H*=" “ s R*(LEN+l>="tt t“ REM vedere 120 1W0 Bi="121314324515525555“ 110 POR 1=1 TO CLfi-48 120 POSITION 8*1-8,2-PRINT "arrrrre" ! REM battere siwultavieamev.te 136 POSITION 8*1-8,SPRINT "rrrrrrc" -REM voir 120 140 X=INT*6+1> 150 FOR J=1 TO 5 160 IF J<=3 THEN S=5*VfiL< B$ < 3* < X-1> + J,3*< X-1>+J > >-4 170 IF J<=3 THEN POSITION 8*1-7,2*J+l -PRINT fl* 180 POSITION 3*1-8,.J+2-PRINT "I"-POSITION 8*1-2,J+2 : PRINT "I" 190 NEXT J 2O0 NEXT I 210 GOTO 50 160 102 programmi per ATARI Il gioco del missile RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: contro TATARI. Difficoltà del gioco: media. L’ATARI è in allarme: siete ai comandi di un aereo in¬ caricato di una missione di spionaggio sul suo terri¬ torio; il vostro scopo è di sorvolare la base nemica (raffigurata da un’H ingrandita), e di ritornare sani e salvi alla vostra base; ma, appena TATARI vi avrà av¬ vistati, manderà al vostro inseguimento, un missile molto perfezionato, che non avrà pace fino a che non vi avrà distrutto. Il vostro aereo può spostarsi in tutte le direzioni, gra¬ zie ai tasti da 1 a 8; riuscirete a portare a termine la vostra missione? La linea 50 disegna la base nemica da sorvolare (sot¬ toforma di un’H ingrandita). La linea 60 disegna la vostra base di partenza. Le linee 80 e 100 scelgono l’istante di partenza del missile. La linea 120 disegna il vostro aereo. Le linee 140 e 150 definiscono il suo movimento se¬ guendo 8 direzioni, utilizzando i sotto-programmi al¬ le linee 1000, 2000, 3000 e 4000. La linea 160 assicura la partenza del missile che è di¬ segnato dalla linea 170 ed il cui spostamento è gesti¬ to dalle linee 180 e 190. Le linee 200 e 210 controllano la fine della partita. Lanciare il programma con RUN. Il campo di gioco appare e potete spostare il vostro aereo utilizzando i tasti da 1 a 8, con la convenzione seguente: Dovete farlo girare attorno al territorio nemico (se voi, o il missile, toccate questo territorio, comincia una seconda partita). Se il missile vi distrugge, ottenete un messaggio COL¬ PITO, e la partita si ferma. Battere BREAK per fermare la partita. 102 programmi per ATARI 161 ESTENSIONI POSSIBILI: Sarà senz'altro necessario aggiungere vari controlli nel programma (l’aereo ha sorvolato la base nemica, è tornato alla propria base?...) Si possono an¬ che prevedere vari livelli di gioco facendo, per esem¬ pio, variare la velocità del missile, prevedere l’utiliz¬ zo di trucchi per l’aereo, l’esplosione del missile do¬ po un certo tempo, ecc. 10 REM IL GIOCO DEL MISSILE 28 OPEN # 1,4,CVIO" 30 GRAPHICS 0 0-1=0 40 POKE 752,1 50 P0SITI0N 17,5-PRINT CHR$d)iCHRf<4> SO POSI TIOH 0,20‘PRINT "XXXX"‘P0SITI0N 0,21‘PRIHT "XXXX" 70 U=15‘X=19 80 S»INT#U+6> 30 V -1 100 S=S-1 110 V=33 120 POS ITI OH V, X PRIHT "V" 130 GET #1,CLA 140 F—2*: < Clfl CASO < "5" ) ) ■-1 150 OH CLA-48+2‘4: 280 IF U-X AND V=Y THEH PRIHT "COLPITO.«EMD 210 IF AND =19 THEH M*1 230 IF M=1 AND X=19 AND Y<=4 THEH PRINT "Missione compiuta" : END 248 GOTO 120 1008 X=X-F 2800 Y=Y+F 2010 RETURN 3800 GOSUB 2080 4000 X=X+F 401O RETURN 162 102 programmi per ATARI RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: La scimmia Programmazione: facile. Categoria del gioco: due giocatori. Difficoltà del gioco: elevata. Si ispira all’idea già vecchia della scimmia che, bat¬ tendo a caso su una macchina da scrivere, ha delle possibilità non nulle di finire per scrivere un testo sensato. Qui il ruolo della scimmia è preso dall’ATARI che fa¬ rà apparire dei gruppi di 3 a 6 lettere durante un tempo relativamente breve. Se uno dei giocatori stima di poter riuscire a com¬ porre una parola con le lettere proposte, deve battere rapidamente sul suo tasto di gioco (1 o 0). La parola dovrà allora essere accettata o rifiutata dall’avversario che risponderà GIUSTO o SBAGLIA¬ TO. Ogni parola giusta vale 1 punto, ogni parola sbaglia¬ ta leva 1 punto. La linea 40 contiene una lista V$ delle vocali correnti e una lista C$ delle consonanti correnti. Sarà possibile modificare queste due liste per au¬ mentare, per esempio,la frequenza di apparizione di certe lettere (potremo così mettere due E in V$, o due R in C$, ecc.). La linea 50 definisce la lunghezza della parola (in principio , da 3 a 6 lettere, ma si può ugualmente mo¬ dificare questa lunghezza). Il ciclo I (80-130) permette la creazione di una "paro¬ la" prendendo una lettera, sia nell'alfabeto completo, sia nella lista C$ (linea 100), sia nella lista V$ (linea 110 ). La linea 150 temporizza l’apparizione del risultato. La linea 170 gestisce la fine della partita, con visua¬ lizzazione del punteggio. La linea 180 guarda se uno dei due giocatori ha reagi¬ to. Infine, le linee 200 e 210 contabilizzano i punti di ogni giocatore. Si lancia il programma con RUN. La prima serie di lettere è visualizzata sullo scher¬ mo. Il giocatore di sinistra dovrà battere 1 se vede che può realizzare una parola, quello di destra dovrà battere 0. Se non è stato battuto niente dopo un po’ di tempo un’altra serie di lettere sarà visualizzata. 102 programmi per ATARI 163 Se uno dei giocatori ha battuto 0 o 1, appare allora la domanda (G)IUSTO o (S)BAGLIATO . Si risponde G se la parola è corretta, S se è sbagliata, seguito da RE¬ TURN. I punti sono calcolati dall'ATARI che visualizza la se¬ rie di lettere seguente. Per uscire dal programma si dovrà battere P al posto di 0 o 1; viene visualizzato il punteggio finale . ESTENSIONI POSSIBILI: Si potrà modificare la lunghezza delle parole, la frequenza di apparizione delle lettere, il conteggio dei punti, la regola del gioco, ecc. 10 REM LA SCIMMIA 15 OPEN #1,4,0,"IO" 20 DIM C*<12>,E*a>,R*,M$<6> 30 MUSIQUE=300 *4+3> 60 M*=““ 70 GRAPHICS 2 = FOR 1=0 T0 4=SETC0L0R l, INT*16>,2*-NEXT I 80 FOR 1=1 T0 X 30 E*=CHR*aNT*26+65>> 100 IF RND<1><0.4 THEN V=INT*RND<1)+l)-E*=C*<0.5 THEN V=INT*RND<1>+l>=E* 130 NEXT I 140 POSITION 0,5'PRINT #6;M*'RESTORE DOREMI'GOSUB MUSIOUE 150 FOR J=1 T0 508=NEXT J 160 CLH=PEEK POKE 764,255 170 IF CLA=18 THEN PRINT " Punti Sinistra ■ u iBi“ - Punti Destra ■" > A=RESTORE DO MISO'GOSUB MUSIOUE'END 180 IF CLAO50 AND CLA031 THEN 50 130 PRINT "}” PRINT " banliato ' " j •INPUT R* 200 A=A+ 210 B=B+ 220 GOTO 50 500 FOR 1=1 T0 3 510 READ VA : SOUND 0,VA,10,4=FOR TE=1 T0 10'NEXT TE'SOUND 0,0,0,0=FOR TE=1 T0 5=N EXT TE 520 NEXT I 536 RETURN 1000 DATA 126,188,36 2000 DATA 126,36,81 164 102 programmi per ATAR1 Il gioco del 15 RIFERIMENTI: Programmazione: difficile. Categoria del gioco: riflessione (2 giocatori). Difficoltà del gioco: media. IL GIOCO: È un gioco per due giocatori, abbastanza vecchio, che era un tempo praticato nelle fiere. Si dispone di un tappeto di gioco di 9 caselle, e ognuno scommette a turno un gettone del suo colore, su una casella dispo¬ nibile. Il primo dei due giocatori che, con tre gettoni esatta¬ mente, riesce a realizzare un totale di 15 ha vinto. IL PROGRAMMA: Le linee I 50-80 disegnano il tavolo di gioco, e le linee 90-100 si occupano della gestione del turno dei gioca¬ tori (numero 1 o 2 per ogni giocatore, e gettone O o X corrispondente). La linea 110 attende il colpo giocato. Il ciclo I (120-140) verifica la validità del colpo. La linea 150 testa la fine della partita, in caso di par¬ tita nulla, e la linea 160 rifiuta i colpi non regolamen¬ tari (con ritorno alla situazione iniziale, linea 90). Le linee 170 e 180 si occupano della visualizzazione del colpo, e la linea 190 lo registra in una variabile R$. La parte più interessante del programma, che po¬ trebbe servire per definire una strategia per la mac¬ china, va dalla linea 210 alla linea 300: si utilizzano 3 cicli chiusi per verificare se uno dei giocatori ha otte¬ nuto, con 3 gettoni, un totale di 15. Il cambio del gio¬ catore si effettua alla linea 310. PER GIOCARE: Lanciare il programma battendo RUN. Il campo di gioco appare, poi la domanda GIOCATO¬ RE 1 : X, e il giocatore, che ha scelto le X, dovrà dare il numero della casella dove desidera giocare; se è li¬ bera, il suo colpo vi sarà registrato. Si ottiene, in seguito, il messaggio GIOCATORE 2: O ed il secondo giocatore procede nella stessa maniera. Se uno dei giocatori vince (totale di 15 in tre colpi), ottiene il messaggio BRAVO e la partita si ferma. In caso di partita pari, la macchina visualizza È FI¬ NITA. Si farà un’altra partita battendo RUN. ESTENSIONI POSSIBILI: La più interessante sarà senz’altro la defini¬ zione di una strategia per la macchina (cercando di evitare che la macchina giochi sempre il 5 quando de¬ ve cominciare). 102 programmi per ATAR1 165 Si può, naturalmente, migliorare la grafica e intro¬ durre effetti sonori per i diversi messaggi. Si potranno modificare la lunghezza delle parole, la frequenza di apparizione delle lettere, il conteggio dei punti, la regola del gioco, ecc. 10 REM IL GIOCO DEL 15 15 DIM 0$<9>,X$O>,R#<9>,T*<3> 2Q 6RHPHICS 0•SETCOLQR 1,3,2•SETC0L0R 2,3,10'POKE 752/1 25 OPEN #1,4,0,"K‘" 3w F=0 ; R*="123456789" 35 MUSI QIJ£=500 : DGD0D0» 1000 * DOMI SO=2000 40 0*=.X*="“ 50 POR 1=0 T0 24 STEP 3 60 POSITI0N 1+5,SPRINT CHR$<17>iCHR$(18);CHR*<5) : POSITI0N 1+5,2 PRIMI "I I" 65 POSITION 1+5,3■'PRIHT CHR*<26>;CHR*< 18>;CHR*<3> 70 POSITIOH 1+6,4-PRINT /3 80 HEXT I 90 POSITION 0,10 ! PRINT "Giocatore ";F+U 100 IF F=1 THEN PRIHT " ■ 0" 105 IF FOl THEN PRIHT " > X" 110 GET #l,CLfi'IF CLR OR CLA>ASC<"9"> THEN 110 120 FOR 1 = 1 TO LEtKRf) 130 IF CHR* (, CLA '/ =R* < I, I ) THEN GOSUB 170 140 NEXT I 150 IF VRL=0 THEN POSITION 8,20'PRINT "E' finita.- GESTORE DOOODQ'GOSUB ItUS IQUE • END 160 GOTO 90 170 IF F=1 THEN 0$•POSITION 3*1+3,2’PRINT "0" ISO IF F=0 THEN X$(LEU+1)=CHR$="0" 200 IF F=1 THEN T$=G* 205 IF FOl THEN T*=X* 210 IF LEN<3 THEN 310 220 FOR 1=1 TO 3 230 IF I=LEN THEN 310 240 FOR 1=1+1 TO LENCT*) 250 IF J=LEN THEN 310 260 FOR K=J+1 TO LEN 270 IF VflL«Tf(I, I)>+VAL>+VAL>=15 THEN 330 280 NEXT K 290 NEXT J 300 NEXT I 310 F=ABS 320 RETURN 330 POSITION 0,10 340 PRINT "Bravo giocatore •IF F=1 THEN PRINT “0."'GOTO 368 358 PRINT "X." 368 RESTORE DOMISO'GOSUB MUSIGUE 378 END 500 FOR 1=1 TO 3 510 READ VR^SOUND 0,VR,10,4'FOR TE-1 TO 10‘NEXT TE'SOUND 0,0,0,0'FOR TE=1 TO 5'N EXT TE'NEXT I 520 RETURN 1080 DfiTR 63,63,63 2000 DATA 126,96,81 166 102 programmi per ATARI RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Destrezza Programmazione: difficile. Categoria del gioco: riflessi (1 giocatore). Difficoltà del gioco: elevata. Delle cifre, tra 0 e 9, appariranno a caso, in diverse locazioni dello schermo. Restano visualizzate per un tempo molto corto. Il giocatore deve riuscire a batte¬ re sul tasto numerico corrispondente, nel momento in cui appare la cifra. La cifra battuta dal giocatore sarà allora visualizzata in grande formato sulla sini¬ stra dello schermo; ed ogni risposta esatta dà 10 pun¬ ti. La durata della partita è casuale ed il punteggio apparirà alla fine della stessa. Le linee 50 e 60 contengono, in due variabili alfanu¬ meriche C$ e B$, i riferimenti che saranno utilizzati per disegnare le cifre in grande formato. La tabella di conversione dei caratteri è contenuta nella stringa T$. La posizione della cifra presa dall’ATARI è scelta alle linee 70 e 80, e la cifra è presa alla linea 90. La linea 100 realizza la stampa, e la linea 110 deter¬ mina la durata della visualizzazione. La linea 130 de¬ finisce la durata del gioco, e la fine della partita è trattata alla linea 150. La linea 192 verifica che il tasto battuto sia una cifra da comparare con i codici tastiera delle cifre conte¬ nute in T$. Il ciclo I (200-230) realizza il disegno grande formato della cifra battuta dal giocatore. Il controllo dell’esattezza del risultato è effettuato dalla linea 240. Il programma sarà lanciato con RUN, poi una prima cifra appare, dopo una breve pausa, verso il centro dello schermo. Il giocatore dovrà reagire abbastanza in fretta, intanto che rimane la visualizzazione, e ri¬ batterla. La cifra che ha battuto si disegnerà allora in alto a sinistra dello schermo, in grande formato. Se il risultato è esatto, il giocatore segnerà 10 punti. Il tempo di svolgimento della partita dipenderà dalle cifre che saranno visualizzate. Alla’ fine della partita apparirà il punteggio. Sarà possibile fermarsi in ogni istante battendo BREAK. 102 programmi per ATARI 167 ESTENSIONI POSSIBILI: Si può immaginare di modificare il gioco per fare partecipare vari giocatori, modificando even¬ tualmente la visualizzazione e codificando i tasti del¬ la tastiera messi a disposizione di ogni giocatore. Si potranno anche levare dei punti ad ogni risultato sbagliato, modificare le regole di calcolo del punteg¬ gio e la durata del gioco, ecc. 10 REM DESTREZZA 20 DIM B$<50) , Ct< 12> , T$<20) 25 SETC0L0R 1,8,6 30 F'OKE 752, 1 40 T=100-S=0‘PRINT 58 0$="**** ** *">REH battere uno spazio con colore inverso al posto di osni * 60 6*=“14441333331312113131441331213112141133331414114131“ 65 T*="50313026242927515343" 7m X*INT*15> 80 Y=IUT*15+15) 96 M= IHT < RND < 1 ) * 10 ) 100 P0SITI0N Y,X‘PRINT N 110 FOR 1=0 T0 RNDC1>*350+200‘NEXT I 120 P=PEEK<764> : POKE 764,255'IF PO255 THEN 190 130 T=T-M 140 POSI TIOH Y,X : PRINT “ 150 IF T>=0 THEM 70 160 PRINT ">" 170 PRINT -PRINT “il tuo punteselo e' di "> Si" su 100." 180 FOR T=1 TU 255 SOUND 0,T,10,INT‘NEXT T 1 END 190 FOR 1=0 TO 9 192 IF T*<2*I+l,2*I+2>OSTR*

THEN NEXT I 194 IJ=I 200 FOR 1=1 TO 5 210 R=3*VflL>-2 220 P03ITI0N 2,2*1‘PRINT C*‘POSITION 2,2*1+1‘PRINT CT 230 NEXT I 246 IF 0=N THEN S=S+10 270 GOTO 130 168 102 programmi per ATARI Sottomarino RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: di media difficoltà. Categoria del gioco: riflessi (1 solo giocatore). Difficoltà del gioco: bassa. Manovrate in superficie un cacciasommergibili e dei sottomarini passano regolarmente sotto la vostra unità, a differenti profondità. Potete, in ogni momento, lanciare le bombe di pro¬ fondità e potete anche cercare di colpire più volte lo stesso sommergibile. Il vostro punteggio sarà visualizzato in permanenza sulla sinistra dello schermo (rapporto di numero di colpi centrati su numero di sottomarini apparsi). La linea 70 permette all'ATARI di scegliere la profon¬ dità del sottomarino. La linea 90 disegna la vostra nave. Le linee 100 e 110 visualizzano il punteggio e disegna¬ no la superficie dell’acqua. Là linea 120 disegna il sottomarino. Il lancio è effettuato da un programma specifico po¬ sizionato alle linee 200-240. Lo spostamento (molto rapido) della vostra nave è realizzato dalle linee 170 e 180. Il test, che permette di sapere se il bersaglio è stato centrato o no, è effettuato alla linea 140. Battere RUN per cominciare la partita. La nave sarà spostata grazie alle frecce destra e sini¬ stra. Il tasto O autorizza il tiro. Per terminare la partita, converrà battere BREAK oppure aspettare 99 sottomarini. ESTENSIONI POSSIBILI: Sarà abbastanza elementare migliorare la qualità grafica del gioco, utilizzare il colore e i suoni, fare apparire vari sottomarini che si spostano a dif¬ ferenti velocità, eventualmente anche permettere ai sottomarini di lanciare dei siluri... 102 programmi per ATARI 169 10 REM SOTTOMARINO 20 POKE 752,1 30 MUSIQUE=500•000000=1000 = DOREMI=2000 40 P=0'C=15'S=5 50 PRINT ">"■SETCOLOR 1,7,2'SETCOLOR 2,8/6 60 POSITION 0/S-PRINT “ 70 T=27 •• S=INT*8+4) • P-P+0.01 80 X=1 30 POSITION C/2'PRINT “ "iCHR*<138);CI«*<160>>CHR$a53>J “ 100 POSITION 0/3‘FOR 1=0 TO 13’PRINT CHR*<6>iCHR*<7>;'NEXT I 110 POSITION 0/18 ! PRINT “Punteaaio -"jP 120 POSITION T/S : PRINT CHR*<18>;CHR*<160)>CHR*<18 >>" " 130 IF X=1 THEN Y=C+2*X 140 IF S=X ANO THEN P»P+1'POSITION T/S'PRINT "##*"'RESTORE DODO OO'GOSUB MUSIQUE 150 T=T-1 : IF P>=93 THEN POSITION 8/18'PRINT “Finito.«RESTORE DOREMI'GOSUB MUS IQUE'ENO 160 IF T<0 THEN POSITION Y/X'PRINT “ “'GOTO 60 170 C4_A=PEEKC764) 'POKE 764/255 ISO C=C+3*<-0>> 130 IF CLAO50 ANO X=1 THEN 30 200 POSITION Y/X 210 PRINT “ "'X=X+1 220 IF X>S THEN 80 230 POSITION Y/X'PRINT “0“ 240 GOTO 90 5O0 FOR 1=1 TO 3'READ VA'SOUNO 0,VA,10,4-FOR TE=1 TO 5'NEXT TE'SOUND 0/0,0,0-FOR TE=1 TO 3'NEXT TE ; NEXT I'RETURN 1000 DATA 63/63/63 2086 DATA 126,108/36 170 102 programmi per ATARI Zombi RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: abbastanza difficile. Categoria del gioco: solitario. Difficoltà del gioco: bassa. Gli ZOMBI sono degli esseri malefici che cercheran¬ no di distruggervi, ma anche voi cercherete di utiliz¬ zarli a vostro vantaggio, per sbarazzare il vostro spa¬ zio vitale dai buchi neri che l’oscurano. Sullo scher¬ mo è disegnato un perimetro che rappresenta il vo¬ stro spazio vitale. In questo perimetro, appariranno in maniera casuale gli ZOMBI (sono delle Z invertite), i buchi neri (dei #) ed il giocatore (una O). Gli ZOMBI convergono verso il giocatore per cercare di cattu¬ rarlo, ma lui si sposta più rapidamente di loro e cer¬ cherà di far loro ingoiare i buchi neri, senza farsi prendere. La partita termina sia con la sparizione del giocato¬ re, sia con l’eliminazione di tutti gli ZOMBI. La posizione degli ZOMBI è definita da un array Z di¬ mensionato. Le linee da 50 a 120 (ciclo I) disegnano il perimetro, gli ZOMBI e i buchi neri. La linea 130 definisce la posizione iniziale del gioca¬ tore. Un secondo ciclo I (150-240) realizza lo spostamento del giocatore. La linea 210 legge il carattere direttamente nella me¬ moria dello schermo per sapere la natura dell’ostaco¬ lo che si trova in Z(I,+4),Z(I). Le linee da 290 a 340 controllano lo spostamento del giocatore. Dopo aver lanciato l’esecuzione con RUN, il giocato¬ re dovrà spostarsi utilizzando le 4 frecce e cercando di non uscire dai limiti del terreno. Dovrà manovrare in modo di fare andare gli ZOMBI sui buchi neri, sen¬ za farsi lui stesso bloccare. Per fermare la partita, basterà battere BREAK. ESTENSIONI POSSIBILI: Sarebbe interessante ingrandire il campo di gioco, aumentare il numero degli ZOMBI o dei buchi neri, migliorare i controlli, spostare i giocatori in mo¬ do più casuale, eventualmente modificare la regola. Si potrà anche, naturalmente, migliorare la qualità del disegno. 102 programmi per ATARI 171 13 REM ZOMBI 15 OPEN #1,4.0,“K'" 20 DIM S*<1>,Z<10> 25 POR 1 = 1 TO 10'Za)=0'NEXT I 30 MUSIQUE=50Q = DOREDO*1000•DOMI80=2000 * DOREMI=3000 40 GRAPHICS 0 'FQKE 752,1 45 SETCOLOR 1,3,6'SETCOLOR 2,13,4 50 FOR 1=0 TO 21 60 POSITION 1+1,0'PRINT CHR*<160> 70 POSITION 0,1'PRINT CHR*a60> 'POSITION 23,1'PRINT CHR*<160> 80 IF RND<1)<0.5 THEN POSITION I,INT*20+1>'PRINT "#" 90 S= INT (. RND<1)^14+1) 100 Z :# 18+1 ) 140 P=0 150 FOR 1=1 TO 4 160 P=P+Z 170 IF Z(I)=0 THEN 240 175 PRINT ISO POSITION Z'PRINT " " 190 Z< I )=Za )-SGN-S) 200 ZCI+4)*Z< I+4)-SGN 210 LOCATE Z<1+4),Z=23 THEN POSITION 0,23'PRINT "Peccato!...";'RESTORE DOREMI'GOSU B MUSIQUE'GOTO 350 320 S=S-2* < < CLA= 14 >- < CLA= 15)) 330 IF S<=0 OR S> =21 THEN K=25■GOTO 310 340 GOTO 140 350 GET #1,CLA “ 50 X=INT" secondi.“/ 90 S=S-1 100 FOR 1=1 TO 5 : SOUND 0,126,10,4'NEXT I‘FOR 1=1 TO 400‘NEXT I HO PRINT "}" 120 IF SO0 THEN 70 130 U=0 140 POSITION 0,23‘PRINT "0" 150 FOR 1=1 TO 30 : NEXT I 160 U=U+1 170 P=PEEK(764)P0KE 764,255 130 IF P=50 THEN 210 130 IF U>22 THEN PRINT "Perso!"•RESTORE SOMIDOGOSUB MUSIOUE’GOTO 230 200 GOTO 140 210 IF UOX THEN U=23 = GOTO 190 220 PRINT "BRAVO !" 1 RESTORE DOREMI•GOSUB MUSIQUE 230 PRINT 'PRINT "Un'altra prova ", 240 GET # 1, CLA 1 1F CLA=ASC< "S" > THEN 40 250 END 500 FOR 1=1 TO 3'READ VA''SOUND 0,VA,10,4 : FOR T=1 TO 10'NEXT T SOUND 0,0,0,0'FOR T=1 TO 5‘NEXT T'NEXT I‘RETURN 1000 DATA 81/36/126 2O08 DATA 63,53,47 174 102 programmi per ATARI Recomat RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: soluzione del programma Nico- mat. Difficoltà del gioco: nessuna. È una replica del programma Nicomat, proposto nel¬ le pagine precedenti; inserite i resti successivamente delle divisioni per 3, 5 e 7 di un intero compreso tra 1 e 100, e TATARI calcola e visualizza questo intero. Il metodo usato può d’altronde essere generalizzato (a voi trovare come). Le linee 30-50 visualizzano qualche linea di spiegazio¬ ne (gli spazi che mancano apparentemente sono volu¬ ti). La linea 50 aspetta che battiate un resto, che sarà ri¬ fiutato se è incompatibile con la divisione col nume¬ ro visualizzato. La linea 100 immagazzina i resti in una variabile non dimensionata A (S). La linea 190 rivisualizza i resti inseriti. Le linee 210-230 gestiscono la fine della partita. Si lancia il programma con RUN. Appare un testo di presentazione poi il messaggio "RESTO PER: 3, 5, 7” appare. Si deve rispondere e la soluzione è visualizzata appe¬ na si sono dati i tre resti. Per un’altra partita, battere S alla domanda UN’AL¬ TRA PROVA (S/N). Battere N per finire. ESTENSIONI POSSIBILI: Si può estendere il programma agli interi da 1 a 1000, utilizzando i resti per 3, 5, 7, e 11; si può ag¬ giungere il suono ed il colore per rendere il program¬ ma più attraente. 102 programmi per ATARI 175 10 REM RECOMAT 15 OPEN #1,4,0,"K""‘GRAPHICS 2 20 DIM A<3> 25 POKE 752,1 30 PRINT "INSERITE I TRE RESTI DELLE DIVISIONI DI UN NUMERO INTERO INFERIORE A 1 00, PER 3,5 E 7." 60 1=3 ; S=1 70 POSITION 3,0'RESTORE ‘GOSUB 500 8w PRINT #6)"RESTE ✓ PAR‘ I 85 POSITION 3,1‘PRINT #6; “-" 37 POSITION 12,4‘PRINT #6;"-" Sa POSITION 0,5‘PRINT #6;"RESTO PER* 3 5 7" REM battere la strina» da starnare in caratteri inversi 95 C.ET #1,CLA‘IF CLA OR CLR>=flSC> THEN 95 1O0 H=CLH-48 105 POSITION 9+1,3‘PRINT #6;H*70+A<2>*21+A<3>*15 200 IF T>105 THEN T=T~105‘GOTO 200 210 GRAPHICS 2+16+32‘POSITION 0,8‘PRINT #6;"soluzione *" “;‘GEI # 1, CLA 230 IF CLA=ASC<"S"> THEN RUN 240 END 500 FuR IT=1 TO 3 m i> INPUT H 45 POKE 752,1 50 PRINT ">“ 60 FOR 1*0 TO H 70 POSITION 2*1+4,0-PRINT 1 80 POSITION 1,2*I+2=PRINT I 90 FOR J*8 TO H 100 POSITION 2*J+4,2*1+2 1 PRINT HO NEXT J 120 NEXT I 130 1=1-X=0-Y*0 i POSITION 4,2'PRINT CHR*<160> 140 V=INKRND<1>*H>-U*INT*H> 150 U=IJ+I ! V=V+I ISO IF H OR V<0 OR V>H> THEN I—I'GOTO 150 162 GET #1,CLA 164 Y=Y-(CLA=43 AND Y>0>+(CLA*42 AND Y 166 X=X-0>+ 170 POSITION 2*Y+2,2*X+2'IF YO0 THEN PRINT 180 POSITION 2*Y+4,2*X+2'PRINT CHR*<160> 190 POSITION 2*Y+6,2*X+2 : IF YOH THEN PRINT 200 POSITION 2*Y+4,2*X'IF XO0 THEN PRINT 'V 210 POSITION 2*Y+4,2*X+4 ! IF XOH THEN PRINT 250 D=INT 260 POSITION 29,10 : F'RINT "Dist. %STR*J M 270 IF D=0 THEN 300 280 IF D<3 THEN 150 290 GOTO 162 308 POSITION 29,12 : PRINT "Prof. '*;• INPUT D 310 IF D=INT THEN POSITION 23,15‘PRINT "BRAVO!"GET #1,CLA = END 320 FOR TE=0 TO S^SOUND 0,126,10,4*>iNEXT TE 330 GOTO 140 178 102 programmi per ATARI Tastiera RIFERIMENTI: Programmazione: facile. Categoria del gioco: gioco di riflessi (imparare la ta¬ stiera). Difficoltà del gioco: elevata. IL GIOCO: Una riproduzione della tastiera del vostro calcolato¬ re appare sullo schermo; un punto appare sotto il ca¬ rattere che si deve battere sulla tastiera. Più si batte in fretta e più il punto si sposta rapidamente (il tem¬ po trascorso dall’inizio appare in fine partita). IL PROGRAMMA: Una variabile A$ dimensionata alla linea 60, conterrà la lista dei relativi tasti. I valori dei tasti sono inseri¬ ti dalla linea 70 alla linea 120 per chiamata di un sot¬ toprogramma posto in 300. La variabile VA$ contiene la totalità dei codici ATA- SCII che corrispondono ai tasti della tastiera. I cicli chiusi J (130-170) e I (140-160) disegnano la ta¬ stiera. La linea 180 definisce la posizione del punto stampa¬ to dalla linea 190. II tasto battuto è testato alla linee 210-230 e il punto è cancellato dalla linea 250. Le visualizzazioni di fine sono realizzate alle linee 270-290. PER GIOCARE: Si lancia il programma con RUN. Si dispone allora di qualche secondo per battere il tasto che occupa la co¬ lonna sopra la pallina, poi un altro punto è visualiz¬ zato, ecc. La durata della partita non è limitata; basta battere 0 per ottenere il punteggio, ed il tempo totale. Fare RUN per un’altra partita. ESTENSIONI POSSIBILI: Si potrà pensare di fare lampeggiare le lette¬ re, o di visualizzarle a colori, al posto di indicare la colonna con una pallina. Si potranno fare apparire le lettere giuste nella parte inferiore dello schermo ed eventualmente allenarsi a battere un testo che sfila in alto sullo schermo, lettera per lettera. 102 programmi per ATAR1 179 10 REM TASTIERA 40 GRAPHICS 2 50 T=0=S=0=P=0 60 DIM A**'30), S*<10)/VSK20) > VA$<60> 70 S*="QHER TYUIOR"«V*="47464240454311130810" * 18+1 > •• Y= I NT < RND <1> 43+1 ) 190 POSIT IOH X+Y+2,24Y+1=PRIHT #6 > "*" 195 POKE 764,255 MULA1=PEEK<764) 200 POR F=1 TO 100+RHO<1>480 : CLA=PEEK<764) 205 T=T+1 210 IF CLANGLA1 THEH HEXT F 220 IP CL.A=VRL < VA* < 204 < Y-1 > +24X-1,204 < Y-1 ) +24X ) > THEH S=S+1 230 IF CLA=50 THEH 270 240 P=P+1 258 POSITIOH X+Y+2,24Y+1‘PRIHT #6;" " 260 GOTO 180 270 PRIHT Si" Giuste su "ìPì" prove." 275 PRIHT "Il tuo tempo <";T 280 POR T=1 TO 1000 HEXT T•GRAPHICS 0 : EHD 300 A*(104 +1>=S* 310 VA* <204(J-1) +1>=V*•RETURN 102 programmi per ATAR1 181 LIVELLO 5 N. Nome del programma Tema e particolarità 1 Calcolatrice Un programma di simulazione molto reale 2 Smokey Fumate senza rischi con questo originale programma per 1 giocatore 3 Evasione Ci vorrà molta fortuna per riuscirci 4 Corsa automobilistica Un gioco di riflessi non molto difficile per 1 giocatore 5 Poker Una base di partenza per mettere a punto il vostro programma 6 Scacchi Un programma semplificato per 2 gioca¬ tori 7 Pericolo spaziale Sarete abbastanza abili per evitare tutte le meteoriti? 8 Tic Tac Toe Un classico ma non senza interesse (2 gio¬ catori) 9 Dama Per 2 giocatori: classico 10 Anagrammi Un buon gioco di riflessi: per 2 giocatori 11 Uova Non lasciate fare la gallina diabolica 12 Quattro a quattro Un gioco di riflessione un po’ difficile per 2 giocatori 13 "Puzzle” di lettere Un proverbio è nascosto: a voi scoprirlo 14 Bersagli Un po’ di abilità e molta fortuna 15 Gocce Una vera gag visiva, da esplorare 16 Ostacoli Molti ostacoli da evitare in questo gioco di abilità per 1 giocatore 17 Catture nello spazio La missione sarebbe facile senza queste maledette meteoriti 18 Anomalia Esercitate la vostra perspicacia ricono¬ scendo i simboli 19 Tanti in uno Un terreno di gioco e le pedine, per 2 gio¬ catori 20 Percorso del cavaliere Molto spettacolare e istruttivo per più di un motivo 21 Muro di mattoni Un classico in versione completa 22 Othello Per 2 giocatori: gira le pedine per voi 23 "Puzzle” dispettoso Un sottoprodotto del gioco di Sam Lloyd 24 Super scorrimento Dopo le cifre pari e dispari perché non anche le lettere 102 programmi per ATARI 183 Le tecniche particolari all'ATARI IL RICONOSCIMENTO DEGLI OGGETTI SULLO SCHERMO: LETTURA DI UN CARATTERE POSTO ALLA LINEA Y, COLONNA X, CON LOCATE X,Y,C L’ATARI dispone di un'istruzione specifica, molto utile per numerosi gio¬ chi, che permette di riconoscere il codice ASCII del carattere presente sul¬ lo schermo all’intersezione tra la colonna X e la linea Y: questo permette¬ rà di identificare facilmente questo carattere; C contiene il codice ASCII del carattere presente. Attenzione, questa lettura dello schermo non si mantiene, conviene ripor¬ tare il valore che leggete con l’aiuto di una visualizzazione posizionata alle stesse coordinate dello schermo. LE ISTRUZIONI POP e TRAP Quando siete in un sottoprogramma (vedere livello 1) ne uscite sempre con RETURN. Può essere interessante uscire direttamente a un indirizzo dato. L’istruzione POP permette di farlo indicando all'ATARI di accorgersi che il sottoprogramma è terminato. Nel caso contrario se il numero di livelli di sottoprogrammi è limitato, otterrete subito un superamento di capacità. È intelligente imparare dagli errori per scrivere un programma. Così posi¬ zionare un punto a delle coordinate X,Y fuori dallo schermo provoca un errore e arresta il programma; l’istruzione TRAP permette di rivelare que¬ sto errore, senza che il calcolatore intervenga, riportando il programma all’indirizzo dove l’errore è stato generato. Così TRAP 5000 rinvia, in caso d’errore, il programma all’istruzione 5000. Per eliminare questa possibilità basta usare TRAP seguito da una cifra su¬ periore a 32767. IL JOYSTICK È una delle attrattive dell’home computer ATARI, perché facilita enorme¬ mente gli spostamenti dei mobili sullo schermo. Molti giochi di questo libro potranno essere modificati per una miglior utilizzazione, con l’aiuto di questo "manico di scopa”: il programma 4 a 4 ne è l’illustrazione. 184 102 programmi per ATARI Calcolatrice RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: molto difficile. Categoria del gioco: simulazione di una calcolatrice. Difficoltà del gioco: media. Si tratta della simulazione, con visualizzazione in grande formato, del funzionamento di una piccola calcolatrice tascabile, del tipo a 4 operazioni. Le ap¬ plicazioni di questo programma sono evidenti e il suo funzionamento è semplice da controllare. Le variabili B$ e C$, delle linee 20 e 30, contengono le informazioni codificate che permetteranno il disegno delle cifre in grande formato. Le linee 60-150 si occupano della gestione degli inse¬ rimenti. Il ciclo 1(160-190) realizza la raffigurazione, in grande formato, delle cifre sullo schermo, man mano che gli input arrivano. Il punto decimale ed il segno — sono gestiti dalle li¬ nee 200 e 210. Il numero totale dei simboli inseriti è controllato dal¬ la linea 220. Il risultato è iscritto grazie ad un programma funzio¬ nante automaticamente che si trova alle linee 270-390 (l’automatismo è gestito dalla linea 230, nel programma principale). I sottoprogrammi posti alle linee 400-410, 420-430, 440-450 e 460-470 effettuano l'operazione indicata, secondo il valore di Z (linea 310). Ogni risultato è memorizzato in A (F-l) (linea 330). La routine d'errore in 2000 evita l'arresto del pro¬ gramma quando VAL(R$) è utilizzata per caratteri che non siano cifre. Si dovrà lanciare il programma con RUN. Poi, si battono le cifre del primo numero da inserire che appariranno una per una, man mano (non si po¬ tranno inserire più di 8 simboli, compreso il segno — ed il punto decimale). La battuta di un segno di ope¬ razione lascia la visualizzazione intatta, ma l’introdu¬ zione della prossima cifra o simbolo provoca la can¬ cellazione immediata e la visualizzazione del nuovo simbolo. È da notare che le cifre si introducono da sinistra a destra, senso usuale di scrittura. L’apparecchio accetta, come segni operatori i simbo¬ li + , —, *, /; il segno = provocherà l’apparizione del risultato. Le operazioni sono concatenate automati¬ camente, il risultato precedente è preso in considera¬ zione come operatore del calcolo seguente. Per fare un’altra operazione, bisognerà battere BREAK poi RUN. 102 programmi per ATARI 185 ESTENSIONI POSSIBILI: Si dovrà, innanzitutto, migliorare la visualiz¬ zazione del segno — (raffigurato qui da un tratto), poi si potrà migliorare il disegno delle cifre (utiliz¬ zando per esempio, il generatore dell’ATARI) si può anche pensare ad un’estensione a più di 8 cifre, auto¬ rizzare delle operazioni più complesse (COS, SIN, ...), aggiungere delle memorie, ecc). 10 REM CALCOLATRICE 12 SETC0L0R 1,2,10‘8ETCOLOR 2,0,0 15 OIM Ai(1>,B$<50>,C$(12>,R$(20),A<10) 17 FQR 1=1 T0 10'A“ 50 N=0 * T=0 ; K=0 = R$=““ 60 GET #1,CLA : A$=CHR$ 70 IF K=1 THEN N=0‘R*="0 M ‘K«=0 80 IF A$= u =“ THEN 260 30 X=< i#A$="+" >+<2*A*="-" >+<3fcA#=“¥" >+<4*A$*",'“> 100 R$+1>*B# 110 IF XO0 THEN 260 120 IF R*=“-" THEN A*=R*>G0T0 200 130 IF fì#<". " OR A$>"9“ OR AS="/ M THEN 60 140 IF N=0 THEN PRINT ")“ 150 IF A*= ,, . , ‘ OR A#*"-" THEN 200 160 FOR 1=1 T0 5 170 S=3*VAL,I+5*VAL>>~2 180 POSITION N,1+3 : PRINT C$>CHR#<160> 210 IF A*="." THEN POSITION N+l,SPRINT CHR*<160> 220 N=N+4* 230 IF TO0 THEN T=T+1-IF T<=LEN THEN 380 240 IF K=1 AND LO 1 THEN 50 258 T=0 : GOTO 60 260 IF R*="- M AND ACF>=0 THEN 120 270 N=0-K=1 280 GOSUB 2000 '■ IF OR AND VA=0 THEN A*1»G0T0 380 230 GOSUB 2000 : fì=VA 300 IF XO0 THEN 2=X 310 ON Z GOSUB 400,420,440,460 320 IF A$C "=" THEN F=F+1 325 IF Ht="=" THEN F=2 336 GOSUB 2000>fl=Vfì 340 GOSUB 2000 ; IF VA=0 THEN A 350 GOSUB 2088 1 R$=STR$ 370 T=1 380 A*=R* 390 GOTO 140 4O0 R*-STR*+fi«VBL*L«1 410 RETURN 420 IF F<>1 THEN R*=STR*-fi=VBL>L=1 430 RETURN 440 IF F<>1 THEN R*=STR**A>-A(F)=VAL‘L=l 450 RETURN 460 IF FOl THEN R«»STR#/’A> ?A(F>»VAL -L*l 470 RETURN 2000 TRhP 2100 2010 Vfl=VBL 2020 RETURN 2100 VA=0 2110 TRAP 50800 2120 RETURN 186 102 programmi per ATARI Smokey RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: solitario. Difficoltà del gioco: media. IL GIOCO: Una colonna di fumo grigio appare sullo schermo. Il giocatore, rappresentato da un punto, diventa visibi¬ le sulla destra. In un primo tempo deve posizionarsi sulla colonna di fumo, poi, partendo da lì, ingoierà automaticamente il fumo, a patto che riesca a mante¬ nersi sulla traccia. IL PROGRAMMA: La linea 90 fa apparire il fumo nel basso dello scher¬ mo; la linea 100 permette di cambiare (verso destra o verso sinistra) la direzione della colonna, e la li¬ nea 120 fa salire la colonna. Il giocatore appare grazie alla linea 140, ed il suo spostamento è effettuato dalle linee 180 e 190. Le linee 250 e 260 si incaricano della visualizzazione del risultato. PER GIOCARE: Si deve lanciare l'esecuzione del programma con RUN. Il fumo comincia ad alzarsi, mentre il giocatore ap¬ parso nella forma di un cerchio colorato in un angolo dello schermo si dovrà spostare con l’aiuto delle tre frecce. Appena arriva sul fumo, comincerà automati¬ camente ad ingoiarlo, e dovrà cercare di seguire la colonna senza deviare (grazie alle frecce). Vince se arriva nella parte inferiore dello schermo prima che la colonna arrivi in alto. Il messaggio finale indica allora BRAVO o PERSO, così come il punteggio ottenuto. ESTENSIONI POSSIBILI: Si potrà, conservando l’idea di partenza, im¬ porre delle altre regole: per esempio ingoiare tutto il fumo, che potrà anche ripartire da un altro posto se si devia la colonna iniziale. Si potrà anche migliorare i controlli di fine partita e la qualità della grafica. 102 programmi per ATAR1 187 10 REM SMOKEY 20 GRAPHICS 0 •• POKE 752/1 30 SETCOLÙR 1.3/10 = SETCOLOR 2/1,2“SETCOLOR 2/1/2 60 S=0 = X=23 = Y=INT t2Z) 70 U=0=V=15 71 U=1 80 PRINT "}" 30 POSITIOH Y/X-PRINT CHR*<6> 100 Y=Y+ -<0.5 AND Y>0> 110 T=1 120 X=X-T 130 IF X=0 THEM 250 140 POSITION V/U=PRINT CHR$<20> 145 POKE 764/255 150 IF TO0 THEN FOR 1=1 TO 300 = CLA»PEEK(764> = IF CLA0255 THEN 170 160 IF TO0 THEN NEXT I 170 POKE 764/225 = POSITICiN V/U = PRINT '* " 180 U=U+ 190 U=U+ 200 V=VKCLA=7>*-*0> 210 LOCATE V/U/C-POSITION V/U=PRINT CHR$(C>; 220 IF CO0 THEN 90 230 T=0=S=S+1 240 IF U<22 THEN 140 250 IF T=0 THEN PRINT “BRAVO"'FOR 1=1 TO 3 1 READ VA = SOUNO 0/VA,10,4 = FOR T=1 TO 10 = NEXT T 1 NEXT I=GOTO 270 260 PRINT “PERSO!..."=FOR 1=1 TO 3‘SOUND 0,63,10,4'FOR T=1 TO 5'SOUND 0/0/0/0=NE XT T = NEXT I 270 PRINT "Puntenio =“;S 1000 DATA 63,47,40 188 102 programmi per ATARI Evasione RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: facile. Categoria del gioco: solitario. Difficoltà del gioco: bassa. Il vostro solo problema: riuscire ad attraversare lo schermo, senza che TATARI vi abbia prima colpito con uno dei suoi numerosi proiettili esplosivi che vi sparerà addosso. Potete spostarvi in 4 direzioni con l’aiuto di 4 frecce e dovete riuscire ad uscire dal terreno dal lafo de¬ stro, senza, naturalmente, essere mai stati colpiti. La linea 50 definisce la posizione di partenza del gio¬ catore. La linea 60 sceglie la coordinata orizzontale della ca¬ sella dove TATARI sparerà (legata alla vostra posizio¬ ne). L’utilizzo di TRAP evita Terrore di uno sparo fuori dal territorio autorizzato provocando la ricerca di un nuovo sparo e la linea 50 sceglie la coordinata verticale (arbitraria) di questa casella. Lo spostamento del giocatore è controllato dalle li¬ nee 140 e 150. La sua traiettoria è tracciata dalla li¬ nea 120 e la sua posizione attuale (sullo schermo una freccia) è stampata dalla linea 160. La linea 170 controlla se è stato toccato o no. La linea 180 effettua il controllo di fine partita. Si comincia l’esecuzione del programma con RUN. Un primo sparo ha luogo, dopo che il giocatore appa¬ re, rappresentato da una freccia. I 4 tasti di direzione servono a spostare il giocatore. Se è colpito, si ottiene, sullo schermo, il messaggio PERSO e la partita si ferma. Se riesce ad uscire alla destra dello schermo senza essere colpito, si ottiene il messaggio BRAVO, e la partita è ugualmente terminata. Si può terminare in ogni momento battendo BREAK. ESTENSIONI POSSIBILI: Il colore ed una grafica più curata migliore¬ ranno considerevolmente l’attrattiva del gioco. Si po¬ trà anche rendere il lancio delle bombe più casuale, introdurre degli ostacoli da aggirare, aggiungere dei controlli, fare partecipare vari giocatori, ecc. 102 programmi per ATARI 189 10 REM EVASIONE 20 MUSIQUE=560‘BEEP=600■SISODO»1000‘DOMISO=2000 40 GRAPHICS 0*SETCOLOR 1,6,6‘SETCOLOR 2,13,10 50 X=0 '• Y= 12 SO H»X+2-INT 120 GOSUB BEEP‘GOSUB BEEP‘POSITION X,Y‘PRINT 130 F-PEEKC764)‘POPE 7S4,255 140 X=X-(P=S>+ 150 Y=Y- -K P=15 > 160 POSITION S,YSPRINT CHR*<123> 170 IF X>3 AND +HBSRESTORE OOMISO=GOSUB MUSIQUE‘END 50Ó FOR 1=1 Tu 3 510 READ VA=SOUND 0,VA,10,4‘FOR T=1 TO 15'NEXT T=SOUND 0,0,0,0‘FOR T=1 TO 5‘NEXT T 520 NEXT I 530 RETURN 600 SOUND 0,31,10,10*FOR T=1 TO 5 >NEXT T>SOUND 0,0,0,0 = RETURN 1000 DhTh 64,81,126 2000 DHTH 126,36,81 190 102 programmi per ATARI Corsa automobilistica RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: difficile. Categoria del gioco: gioco di riflessi (un giocatore). Difficoltà del gioco: media. Guidate su una strada molto sinuosa, senza nessun ostacolo, e dovete cercare di seguirla per il maggior tempo possibile. La traccia del vostro percorso resta visualizzata in permanenza, e il vostro punteggio ap¬ pare subito dopo un incidente. La linea 20 simula il rumore di un motore. La stampa della strada è assicurata dal ciclo I (70-100) e la linea 90 traccia i bordi della strada. Il ciclo fittizio N permette di far avanzare la strada verso la macchina. La linea 110 fa avanzare la strada, e la linea 120 stampa la macchina. La linea 150 controlla il suo movimento, e la li¬ nea 160 determina se la strada fa o no delle curve. La linea 170 guarda se abbiamo toccato il bordo della strada. La linea 175 controlla che non si esca dalla strada. La linea 180 incrementa il punteggio e la linea 190 cancella la vecchia posizione della macchina. La linea 220 visualizza il tempo fino all’incidente. Lanciare l’esecuzione del programma con RUN, il di¬ segno della strada comincia ad evolversi, ed appare il vostro veicolo, rappresentato da una macchina. Per spostarlo verso destra o verso sinistra, dovrete utilizzare i tasti -+ e *- (frecce di spostamento del cursore). Dovrete evitare per il maggior tempo possi¬ bile di toccare il bordo nero, il che provocherà l’arre¬ sto del programma e la visualizzazione del messaggio INCIDENTE, seguito dall’indicazione del punteggio realizzato. Si potrà fermare lo svolgimento della partita in ogni istante battendo BREAK. ESTENSIONI POSSIBILI: Si può immaginare di giocare in molti, ognuno al suo turno, registrando il miglior punteggio. Si può anche pensare di allargare la pista, e di fare correre varie macchine. Potremo anche ispirarci ai giochi dei bar che sono particolarmente numerosi su questo tema. 102 programmi per ATARI 191 IO REM CORSA AUTOMOBILISTICA 20 SOUND 2-123,8,2 50 T=0 : GRAPHICS 0'POKE 752,1 60 X=23•Y=11 : A=5 : B=10 : S=0 70 FOR 1=8 TO 6 80 POSITION Y+I-X 'PRINT CHRÌ<160); 30 IP I<2 OR I>4 THEN POSITION Y+I,X'PRINT CHR*d?4>; 100 NEXT I 110 PRINT 120 POSITION 6,A'PRINT CHR$<16>;‘POSITION C,A-1'PRINT CHR»<32+128« 13@ FOR 1=1 TO 10'CLA=PEEK lbo Y=Y+<2*RND<1>*>-<2*RND<1>#3>) 165 IF N\13 THEN N=N+1'GGT0 70 170 LOCATE 6,A,EC ; POSITION B,A :PRINT CHRSCEC);'IF EC=32 THEN 210 175 LOCATE B,A+1,EC'POSITION B-A+l'PRINT CHRSCEO; ' IF EC=32 THEN 210 180 S=S+1 130 REM POSITION C-A'PRINT CHR*<160); 200 GOTO 70 210 PRINT "INCIDENTE =Puntela io '";S 220 PRINT -PRINT "TEMPO -";INT,R$<6>, V$<24),C$<8'.> 50 V*="? 8 3 10FADOREAS" 60 Cf="FIQUCUPI" 70 PRINT “>" 80 FOR 1*1 TO 15 30 1KI > = INT 100 IF 1=1 THEN 140 110 FOR J=1 TO 1-1 120 IF N=TKJ) THEH 30 130 NEXT J 140 NEXT I 150 K=0 ! P=0 160 POSITIOH 0,12 : PRINT "CARTE RIFIUTATE ! “ 178 GOSUB 500 180 IF R4=" M THEH 220 190 FOR 1=1 TO LEN 200 H 210 NEXT I 220 PRINT 230 P=1 240 G0SU8 580 250 K=K+10 500 FOR 1=1 TO 5 510 J=1+INK-1>78> 520 F=N-84 530 R$=V*<24F-1,24F> 540 PGSITION 741-2,K-PRINT I 550 POSITIOH 741-4,K+2‘PRINT R4;"<“jC*<24J-l,24J> 560 POSITION 741-4,K+3 ; PRINT “-“ 570 NEXT I 580 IF P=1 THEN P=8'RETURN 530 IF K=10 THEN PRINT ‘PRINT "Battere per continuare";‘INPUT R*■POP ‘G OTO 78 600 POSITION 18,12‘INPUT R* 610 IF R4= ,, 0" THEN END 620 RETURN 194 102 programmi per ATARI Scacchi RIFERIMENTI: Programmazione: difficile. Categoria del gioco: gioco di riflessione, per due gio¬ catori. Difficoltà del gioco: elevata. IL GIOCO: Il programma propone solamente ai due giocatori di fare una partita servendosi dello schermo come scac¬ chiera. Non c'è controllo della validità delle mosse, ma solamente la gestione della posizione degli scac¬ chi sulla scacchiera. Le pedine e gli scacchi sono di¬ segnati con l’aiuto delle istruzioni di lettere e cifre. Il colore permette di distinguere ogni giocatore. IL PROGRAMMA: Le linee 100-200 disegnano la scacchiera. Le linee 210 e 220 definiscono le condizioni iniziali, con l'aiuto di un array: R(I,J), per i codici degli scacchi, e C (I, J) per il colore. I cicli chiusi I (240-290) e J (250-280) disegnano gli scacchi. La linea 320 permette l'inserimento della linea e del¬ la colonna di partenza, con controllo alla linea 350. La linea 370 permette d’inserire colonna e linea d’ar¬ rivo. La linea 400 annota la nuova posizione. La linea 410 assicura il cambio del giocatore. PER GIOCARE: Si lancia l’esecuzione con RUN. Viene disegnata la scacchiera poi i pezzi, ed infine la scritta giocatore 1 seguito da Partenza (C/L). Si inse¬ riscono la colonna e la linea di partenza nella manie¬ ra E7 per esempio, si ottiene allora la scritta Arrivo (C/L) e si risponde nello stesso modo. Lo spostamento viene allora effettuato, e sarà il turno dell’altro gio¬ catore. Per finire, basta battere BREAK. ESTENSIONI POSSIBILI: Si potrà cercare di realizzare una grafica più accurata, introdurre i controlli di movimento dei pezzi. E, perché no, scrivere un programma che per¬ metta all’ATARI di comportarsi da buon partner. Buon lavoro! 102 programmi per ATARI 195 10 REM SCACCHI 20 DIM R<8,8>,C<8,8> 30 DIM A$<3>,B*<3>,C*<3>,D*<2>,V*<7>,PI*C1> 35 V*=“CRTGPF " 40 «*=""‘REM battere 3 volte U 60 &'*=“ “‘REM battere 3 bianchi in inverse 78 C$=""‘REM battere in inverse 3 volte U 90 GRAPHICS 0‘SETCOLOR 1.3,2‘SETC0LOR 2,13.6 95 POKE 752,1 100 PRINT " A B C D E F G H“ 110 FOR 1=1 TO 8 120 FOR J=1 TO 8 130 IF ,'2= INT<(I+ J>/2> THEN 150 140 POSITIOH 3*J,2*1-1‘PRINT A* PRINT I‘POSITIOH 3*J,2*1‘PRINT B*‘POSITION 3*J,2 *1+1‘PRINT C* 150 IF 1=2 OR 1=7 THEN R=4 160 IF 102 HND 107 THEN R=6 170 C=1 180 IF 1=7 OR 1=8 THEN C=6 190 NEXT J 200 NEXT I 210 R<1,1)=2‘R<1,2>=5‘R<1,3)=0‘R<1,4>=3‘R<1,5^=1‘R<1,6>=0‘R<1,7>=5‘R<1,8)=2 220 FOR 1=1 TO 8‘R<8,I>=R<1,I)‘NEXT I 230 H=1 240 FOR J=1 TO 8 250 FOR 1=1 TO 8 260 X=1+3*J‘V=2*I 263 IF R< I, J > =6 THEN POSITION X,Y .' 2 >> > ‘GOT 0 280 265 PI*«V*+1,R 267 PI$=CHR$ < ASC < PI* >+128*C ) 270 POSITION X,Y‘PRINT PI* 280 NEXT I 290 NEXT J ' 300 POSITION 28,6‘PRINT " “‘POSlflON 14,20‘PRINT " “POSITION 14,22 PRINT “ 310 POSITION 0,18‘PRINT “GIOCATORE ";2-H 320 POSITION 0,20‘PRINT "PARTENZA =6 OR =1 AND H=l) OR (C(L,C)=b AND H=0> THEN 300 360 T=R(L,C>S=C(L,C)‘R‘“i‘INPUT D* 380 POSITION 31,6‘PRINT ";D* 390 GOSUB 500 400 R=S 410 H=A65 420 GOTO 240 5O0 L=VAUD*<2,2>> ‘C=ASC*39> 70 IF RHOaxe.Z THEN POSITION H,23'PRINT CHR*<160>; 8w K*INT*40> 30 IF RNDC1X0.6 THEN POSITION K,23‘PRINT CHR»<160)1 100 PRINT ' LOCATE X, 12,EB*P0SITI0N X,12*PRINT CHR$;'LOCfiTE X+l, 12,EC=P0SITI0 N X+ 1, 12'PRINT CHRfCEO; 110 IF EB=160 OR EC=160 THEN 19© 120 POSITION Y-l,11'PRINT " "'POSITION Y-1,10'PRINT " 130 POSITION X,12'PRINT -##“ 148 CLfl=PEEK<764>'POKE 764,255 150 Y=X 160 X=X+* < X<38 >- *0> 170 Z=Z+1 180 GOTO 60 190 POSITION 0 ,23'PRINT 'PRINT “ Il punteria e' di U )Z ; “ punti ." 280 FOR 1=1 TO 10*SOUND 0,145,4,I'FOR T=1 TO 15'NEXT T'SETCOLOR 2,5,14* ' NEXT I 198 102 programmi per ATARI Tic Tac Toe RIFERIMENTI: Programmazione: media. Categoria del gioco: riflessione (due giocatori). Difficoltà del gioco: bassa. IL GIOCO: Un grande classico dei giochi scolastici, proposto qui in una versione che non comporta il gioco da parte del calcolatore; ogni giocatore dovrà posizionare nel suo turno uno 0 o una X in una casella libera della griglia di gioco, e il primo che riesce ad allineare tre simboli identici ha vinto (l’allineamento può essere orizzontale, verticale, o diagonale). IL PROGRAMMA: La linea 25 autorizza la visualizzazione con funzione GRAPHICS 2 sotto forma di caratteri grafici e di mi¬ nuscole. La griglia di gioco è disegnata con l'aiuto di un ciclo I (40-65) che legge i DATA. La linea 100 si occupa di visualizzare il simbolo cor¬ rispondente al giocatore che ha la mano. La linea 130 fa lampeggiare il simbolo contenuto nel¬ la casella; le linee 160 e 170 permettono di spostare il simbolo nella griglia. La linea 180 verifica se la casella dove si vuole gioca¬ re è libera e se si desidera giocare. La linea 190 registra il colpo, e la linea 200 realizza il cambio del giocatore. PER GIOCARE: La griglia di gioco è visualizzata con l’ordine RUN. Un simbolo lampeggiante appare allora in alto e a si¬ nistra dello schermo; il giocatore può spostarlo nella griglia con l’aiuto delle quattro frecce (+-, t, 1). Quando arriva sulla casella dove si desidera giocare, basta che prema il tasto 0, la mossa sarà rifiutata se la casella non è libera. Se la casella è libera, il simbolo corrispondente a questo giocatore sarà iscritto, e si cambia di giocato¬ re. Quando la partita è finita, conviene battere BREAK per uscire dal programma. Si potrà in segui¬ to fare un'altra partita con RUN. ESTENSIONI POSSIBILI: Si potrebbe realizzare dopo ogni colpo un con¬ trollo per verificare se uno dei giocatori ha vinto. Si può anche realizzare un gioco per il calcolatore ma bisognerebbe evitare che sia troppo sistematico (per esempio, non giocare sempre la prima mossa sulla casella centrale). 102 programmi per ATARI 199 10 REM TIC TAC TOE 15 HflUT=10O0=INTER=1010 : MILIEU=1020 = BAS=1030 20 GRAPHICS 2 22 SETCOLOR 0,0,0 25 POKE 756.. 226 30 DIM C*<7> 40 RESTORE HflUT : READ Cf-POSITIOH 6,1•PRINT #6;C* 45 FOR 1=1 TO 6 50 RESTORE INTERDIR I=2*) THEN RESTORE MILIEU 55 READ C* POSITIOH 6,1+1>PRINT #6;C* 60 NEXT I 65 READ Ct •POSITIOH 6,7'PRINT #6;C* 100 PRINT PRINT “Giocatore ";CHR*<79+K*3>> Ilo 1=1-J=l 120 LOCATE 5+2*1,2*J,C 130 FOR N=1 TO 2 ! POSITIOH 5+2*1,2*J*> ; NEXT N 150 CL A=PE EK < 764 > 155 POKE 764,255 160 I=I-1>+ 170 J=J-CCLA=14 AND J>1>+ 180 IF CO32 OR CLAO50 THEN 120 130 POSITIOH 5+2*1,2*J : PRINT #6,CHR*<73+K*3+t28) 200 K=ABS(K-1) 205 VA=63 210 IF K=1 THEN VA»126 215 FOR T=1 TO 10-SOUND 0,VA,10,15'NEXT T'SOUND 0,0,0,0 220 GOTO 100 1800 DATA 1010 DATA I I I I 102O DATA arsrsrd'.vedere 1000 1030 DATA zrxrxrc.vedere 1000 200 102 programmi per ATARI RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Dama Programmazione: molto difficile. Categoria del gioco: due giocatori. Difficoltà del gioco: elevata. È il gioco classico della dama alla francese, ma un po’ incompleto visto che non prevede la possibilità di fare delle dame. La regola del gioco resta classica, ma i controlli sono stati un po’ semplificati. I movi¬ menti delle pedine sono inseriti in una sola manovra (posizione di partenza e direzione dello spostamento) e le prese sono realizzate automaticamente, se sono possibili. Invece il cambio del giocatore è realizzato ad ogni mossa, quindi bisognerà eventualmente battere 0 per poter rigiocare se c'era stato un salto o se il colpo non era possibile. I cicli I (80-170) e J (90-160) disegnano la scacchiera e definiscono le posizioni iniziali delle pedine nere e bianche. Le posizioni sono in un array R (X,Y) e il co¬ lore in un altro array C (X,Y). La stampa delle pedine vera e propria è effettuata dai cicli chiusi J (190-250) e I (200-240). La linea 270 indica il giocatore di turno. La mossa è inserita alla linea 270. La linea 280 realizza il cambio del giocatore (si bat¬ te 0). La linea 300 verifica se lo spostamento è possibile. La linea 330 tratta il caso di uno spostamento e la li¬ nea 340 quello di un salto. La linea 380 assicura il cambio del giocatore. Dopo il lancio del programma con RUN la scacchiera è visualizzata con le sue pedine e un cerchio colorato appare sotto per indicare il giocatore che deve ini¬ ziare. Si gioca indicando con una parola di 3 lettere (che può cominciare con uno 0) la linea e la colonna della pedina da spostare, poi la direzione dello spostamen¬ to (codificata da 1 a 4) secondo la convenzione 4 ^ . ^ 1 3 .2 Per esempio 9D1 significa che la pedina bianca situa¬ ta alla linea 9, colonna D, si sposta nella direzione 1 (non dimenticare di battere RETURN). 102 programmi per ATARI 201 Allo stesso modo, 0G3 significherà pedina nera, linea 0, colonna G, direzione 3. Il cambiamento del giocatore è effettuato automati¬ camente, bisognerà battere 0 per rigiocare se il colpo è stato rifiutato o se c’è stata una presa (terminare sempre con RETURN). Il programma non controlla l’arrivo a dama e non proibisce gli spostamenti indietro. ESTENSIONI POSSIBILI: Sarà abbastanza facile cominciare col miglio¬ rare i controlli (cambio di giocatore, mossa indietro che non corrisponderebbe a una presa, uscita dalla scacchiera). Si potrà pensare alla creazione di dame, al loro spostamento, ed eventualmente scrivere un programma che permetta all’ATARI di giocare con voi, con buone possibilità di vincita. 18 REM DAMA 28 DIM R<10( 10)(C<18( 10) 25 DIM fi$<3>,B$<3>,C*<3>,D*<5> 38 A*="uu.u" «REM battere 3 volte u 40 B*=" " : REM battere in inverse 3 bianchi 50 C$*“uuu" 'REM battere 3 volte u 60 GRAPHICS 0‘POKE 752>1 78 PRINT “ABCDEFGHI J H 80 FOR 1=1 T0 10 90 FOR J=i T0 10 100 IF /2> THEN 120 110 P0SITI0N 3*J,2*1-1=PRINT A4-PRINT I-1'P0SITI0N 3*J,2*1'PRINT BS'POSITION 3*J > 2*1+1 1 PRIMT C* 128 R=0 ! CINT«I+J)/2) THEN 160 148 IF J<5 THEH R(I,J)=l6 THEN R(I,J)»1'C(I,J)=1 160 HEXT J 170 NEXT I 180 H=1 198 FOR J=1 T0 10 200 FOR 1=1 T0 10 218 IF (I+J)/-2<>INT<=4>) 248 NEXT I 250 HEXT J 260 P08ITI0N 24<22‘PRINT “ 278 POSITioti 0(22‘PRINT “Giocatore “(CHR*<123»);“ ; la tua Mossa. '"('INPUT D* 238 IF D$="0" THEN H=A6S=0 OR =1 AND H=l) OR =4 AND H=0> THEN 260 310 T=-- 338 IF R=0 THEN R0=0'R«i‘C■GOTO 380 340 IF C=1+3* AND R=0 THEN 360 358 GOTO 268 360 R=0'R=0'R«1'C»1*3* 378 GOTO 198 388 H=ABS+1 C=ASC-64‘D=VAt 410 RETURN 202 102 programmi per ATARI Anagrammi RIFERIMENTI: Programmazione: difficile. Categoria del gioco: gioco di riflessi (2 giocatori). Difficoltà del gioco: secondo il livello. IL GIOCO: Delle lettere sono scelte a caso dall’ATARI, il numero essendo in funzione del livello di difficoltà desiderato. Poi le lettere della parola così ottenuta sono mescola¬ te e visualizzate nella parte inferiore dello schermo; una nuova parola è allora creata, in modo casuale, con le stesse lettere, ed è visualizzata sotto la prima e così via; i due giocatori (destro e sinistro) dispongono ognuno di un tasto (0 o 1) e devono premerlo appena vedono visualizzarsi in basso una parola già apparsa; il loro punteggio è allora calcolato ed apparirà un messaggio corrispondente al loro risultato. IL PROGRAMMA: Il livello di gioco è inserito alla linea 50. Il ciclo I (80-100) realizza la scelta delle lettere. Un secondo ciclo I (120-190) effettua la mescola, e la linea 140 permette di rivelare la pressione di un ta¬ sto. La linea 200 visualizza una nuova parola, e fa salire di una linea sullo schermo le parole già ottenute. La linea 240 cerca quale dei due giocatori ha premu¬ to il tasto. Il ciclo I (250-320) esplora le parole presenti sullo schermo linea per linea, mentre il ciclo J (270-300) prende una per una le lettere di queste parole. Si ottiene così una nuova parola che è paragonata al¬ la parola iniziale alla linea 310 ed il risultato BRAVO appare se è esatto. Altrimenti, la partita si ferma sul messaggio PERSO (linea 330). PER GIOCARE: Si lancia il programma con RUN. Si dovrà anche inserire il livello di difficoltà (in teo¬ ria da 1 a 3) e fare RETURN. Le parole si visualizza¬ no partendo dal basso dello schermo, e salgono man mano; se uno dei giocatori crede di riconoscere nella parola apparsa una delle parole già visualizzate, do¬ vrà immediatamente premere il suo tasto (1 o 0), ed il suo risultato sarà visualizzato dopo un istante. Allora la partita sarà terminata. ESTENSIONI POSSIBILI: Si potranno utilizzare non solo le parole, mo¬ dificare i tempi di visualizzazione, fare partecipare più di due giocatori, introdurre il suono ed il colore, ecc. 102 programmi per ATARI 203 10 REM ANAGRAMMI 30 DIM A$<6),6*<6>,H*<16>,R*a>,S:»<6> 40 GRAPHICS 0‘POKE 752,1 50 PRINT “Livello 3 THEH 40 70 S*=“" 30 FOR 1=1 TO N+3 90 S$+1>=CHR**26+65)> 100 NEXT I 110 120 FOR 1=1 TO LEN 130 N=INT*LEN+l> 140 CLA=PEEK<764>‘POKE 764,255 150 IF CLFl=31 OR CLFl=50 THEN 240 160 IF B$="-“ THEN 130 170 ft*CLEN="-“ 190 NEXT I 200 POSITIOH 0,23‘PRINT fi* 210 FOR 1=1 TO 20*LENCB*)‘NEXT I 220 S*=H* 230 GOTO 110 240 H$=“Gioe-atore di destra" 245 IF CLh= 31 THEN H*=“Giocatore di sinistra” 250 FOR 1=0 TO 21 260 B$=“ “ 270 FOR J=0 TO LEN-1 280 LOCATE J,I,C‘POSITION J,I=R$=CHR*=R* 300 NEXT J 310 IF B$=S$ THEH POSITION LEN+4,I+4,23-PRINT “Perso! m jH*j‘FGR 1=0 TO 5‘SOUND 0,63,1d,4*U,'2= INT)‘END 5tì0 FOR 1=1 TO 3‘READ VA‘SOUND 0,VA,10,4‘FOR TE=1 TO 10‘NEXT TE‘SOUND 0,0,0.0‘PO R TE-1 TO 3 NEXT TE‘NEXT I‘RETURN 1000 DATA 63,47,40 204 102 programmi per ATARI Uova RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: difficile. Categoria del gioco: solitario. Difficoltà del gioco: media. Un uccello misterioso si sposta battendo le ali a caso sullo schermo. Depone delle uova (raffigurate da del¬ le O) che voi (un quadrato colorato) dovrete cercare di recuperare. Il vostro punteggio (numero di uova recuperate) sarà visualizzato in permanenza; la parti¬ ta si svolge in un tempo determinato. L’uccello è disegnato in due parti (per il movimento) alle linee 70 e 110; il suo spostamento casuale è gene¬ rato dal sottoprogramma 210-300 (in particolare le li¬ nee 260-290). La linea 130 permette di riciclare il programma sulla linea 70. Lo spostamento del giocatore è gestito dalle linee 150 e 160, e il test che permette di rilevare la presenza di un uovo è effettuato dalla linea 170. La linea 190 permette anche la visualizzazione del punteggio. La fine del gioco è effettuata alla linea 230. Si lancerà il programma con RUN. L’uccello comincia allora a spostarsi a caso sullo schermo e si mette a deporre le sue uova. Quando il simbolo che rappresenta il giocatore (un quadrato colorato) appare sullo schermo, costui può spostarsi utilizzando i 4 tasti direzionali. Si deve allora cercare di recuperare un massimo di uova prima della fine della partita. Si potrà fermare il gioco in qualsiasi momento bat¬ tendo BREAK. ESTENSIONI POSSIBILI: Sullo stesso principio, potremo facilmente im¬ maginare degli altri temi di gioco. Potremo natural¬ mente migliorare il colore, i suoni, la grafica, ed eventualmente, definire un gioco con vari giocatori, ognuno che cerchi di recuperare un massimo di uova. 102 programmi per ATAR1 205 10 REM UOVA 50 GRAPHICS 0 : PQKE 752.. 1 =P=200=R=18=S=10=T=0 55 SETCOLOR 1,1,10=SETC0L0R 2,2,2=SETCOLOR 4,2,2 60 X=IHT*36)=Y-IHT*21> 70 POSITI OH X, YF'RIHT CHR$<7>;CHR$<14>iCHR$<6> 80 CLA1 =PEEK '■ 764 > •• FOR 1 = 1 TO 30=CLA=PEEK<764> 90 IF CLA=CLA1 THEN HEXT I 35 GOSUB 140 37 POKE 764,255 100 GOSUB 210 11O POSITIOH X,Y"PRINT CHR*<6>iCHR*<13>;CHR$<7> 120 GOSUB 210 138 GOTO 70 148 POSITIOH R,S■PRIHT “ " 150 R=R-0>+ 160 S=S-0>+ 170 LOCATE R,S,G=POSITIOH R,S=PRIHT CHR*; 180 T=T+ 130 POS ITI OH 15,22 PRIHT "Punteria io <";T 200 RETURN 210 A=X : B=Y 220 P=P-1 230 IF P=0 THEN GOSUB 500 : PRIHT “FINITO_"=EHD 240 POSITIOH R,S=PRIHT CHR$<160> 250 POSITIOH A,B : PRIHT " ";CHR$<96>;" " 260 X=ABS<0.5>>> 270 Y=ABS<0.5> >> 280 IF X>36 THEN X=1 230 IF Y>21 THEN Y=1 360 RETURN 50O FOR 1=0 TO 3 510 SOUND 1,126-30*-45* <1=2 >,10,4 520 FOR TE=1 TO 25 : NEXT TE : HEXT 1=SOUND 0,0,0,0=RETURN 206 102 programmi per ATARI Quattro a quattro RIFERIMENTI: Programmazione: difficile. Categoria del gioco: riflessione (1 o 2 giocatori). Difficoltà del gioco: elevata. IL GIOCO: Potrà essere fatto da uno o più giocatori. Nei due ca¬ si, lo scopo è di riuscire a cambiare le pedine X con le pedine O; se si gioca da soli, questo scambio dovrà essere realizzato col minor numero di mosse pos¬ sibile. Le pedine sono spostate alternativamente rispettan¬ do le regole di spostamento del cavallo negli scacchi; non ci sono prese e non si può passare. IL PROGRAMMA: Il ciclo I (60-100) disegna il tavolo di gioco e le posi¬ zioni di partenza. La linea 120 permette di visualizzare O o X, secondo il giocatore che sta giocando. La linea 150 permette la visualizzazione del cursore lampeggiante che indica su quale casella ci si trova. Le linee 180-190 permettono lo spostamento del cur¬ sore. La linea 200 guarda se è stato premuto il tasto che regola il gioco. La linea 210 ristampa la figura che è sotto il cursore. La linea 230 realizza il controllo di partenza e la 240 quello d’arrivo. La linea 250 verifica la validità della mossa. Il cambio del giocatore è realizzato dalla li¬ nea 270 e un è stampato al posto di partenza. Il sottoprogramma 330-340 è utilizzato per i diversi controlli. PER GIOCARE: Si lancia il programma con RUN. Appare il campo di gioco, così come il simbolo che permette di identifi¬ care il giocatore di turno. Il giocatore può scegliere la pedina che desidera spostare manovrando il joy¬ stick. Lo spostamento del cursore è evidenziato da un simbolo lampeggiante, battendo una prima volta sul bottone. La casella dalla quale si parte non ha più nessun simbolo. Manovrando il joystick il simbolo lampeggiante riappare e lo si posizionerà dove si vuole. La mossa sarà rifiutata se la casella di partenza non è conforme o se la casella di arrivo è già occupata. Altrimenti la mossa è realizzata e la mano passa al¬ l'altro giocatore, che sposta il cursore lampeggiante fino a portarlo su una delle pedine e gioca allo stesso modo. 102 programmi per ATARI 207 Il giocatore vincente è quello che riesce a portare per primo tutte le sue pedine nelle caselle inizialmente occupate dalPawersario. Si può interrompere la par¬ tita in ogni momento battendo BREAK. ESTENSIONI POSSIBILI: Si possono migliorare i controlli, prevedere un test di fine, utilizzare un campo di gioco differen¬ te; si potrà anche immaginare la scrittura di un pro¬ gramma che permetta all’ATARI di partecipare al gioco con delle buone possibilità di vincere. 10 REM QUATTRO A QUATTRO 20 GRAPHICS 2+16‘SETCGLOR 4,2,14=SETC0L0R 1,1,2>SETC0L0R 2,2,14 40 H=1 SO POSITION 4,0‘PRINT #6; u l 2 3 4 5" 60 FOR 1=1 TO 5 70 POSITION 0,2*1 PRINT #6;STR* «POSITION 4,2*1’PRINT #6;"." 80 IF I<3 THEN POSITION 4,2*1‘PRINT #6;“0 0" 90 IF I>3 THEN POSITION 10,2*1 PRINT #6;“X X" 100 NEXT I Ilo X=1‘ Y=1 12Ó POSITION 16,5-PRINT #6;CHR*<79+9*H>; 125 X1=0 130 GOSUB 330 150 POSITION 2+2*X,2*Y‘PRINT #6;" " 160 A=X ; 6=Y 170 R=STICK<0> 180 Y=Y-1>+1)-KR=7 ANO X<5) 200 IF HOT 3TRIG<0> THEN 230 210 POSITION 2+2*A,2*B‘PRINT #6;CHR*U) 220 GOTO 130 230 IF XI=0 ANO J<>73+9*H THEN 210 240 IF XI=0 ANO J=73+9*H THEN X1=X‘Y1=Y‘GOSUB 130 242 IF X1=0 THEN 210 245 IF JOASC<". "> ANO X1O0 THEN GOTO 130 250 IF =2 ANO ABS(Y-Y1>®1> THEN 260 POSITION 2+2*X,2*Y‘PRINT #6;"." : X=X1 > Y=Y1 ! GOTO 130 270 POSITION 2+2*X,2*Y'PRINT #6;CHR*<79+H*9> ! POSITION 2+2*Xl,2*Y1 PRINT #6; = HOT H-'FOR T=1 TO 10‘NEXT T‘G0T0 110 330 LOCATE 2+2*X,2*Y,J 340 RETURN 208 102 programmi per ATARI "Puzzle” di lettere RIFERIMENTI: Programmazione: difficile. Categoria del gioco: riflessione. Difficoltà del gioco: elevata. IL GIOCO: Chi di noi non ha, un giorno o l’altro, avuto tra le ma¬ ni uno di quei piccoli puzzles dove si cerca di sposta¬ re da una casella all’altra dei piccoli quadrati di pla¬ stica colorata, fino ad ottenere un risultato ben pre¬ ciso? Al suo tempo il 14-15, di Sam Lloyd, ha avuto lo stesso successo del celebre Rubik's. Il puzzle che è proposto qui utilizza 35 lettere, dispo¬ ste a caso in un quadrato di 6 * 6 caselle, e queste let¬ tere possono, riposizionate nel loro ordine iniziale, permettervi di ricostituire una frase. Una casella lampeggiante vi permette di spostare le lettere ed un contatore visualizza in permanenza il numero di tentativi: riuscirete a trovare la frase? IL PROGRAMMA: La frase da ricostituire (che potrà naturalmente esse¬ re modificata) è posizionata in una variabile R$ alla linea 60. La mescola delle lettere e la stampa sono fatte dal ci¬ clo I (70-160). Le linee 190 realizza la visualizzazione del quadrato lampeggiante che è spostato dalle linee 230 e 240 uti¬ lizzando le quattro frecce. Le linee 250 e 260 ristampano la lettera scelta nella posizione del quadrato colorato. La linea 280 contabilizza il numero di tentativi, che è stampato grazie alla linea 180. PER GIOCARE: Si lancia il programma con RUN. La partita è più difficile se non si conosce la frase da ricostruire. Si possono spostare le lettere e farle pas¬ sare nella posizione del quadrato colorato con l’aiuto dei 4 tasti di direzione (<-, t, f). Il numero di tentativi è visualizzato in permanenza, a destra del puzzle. Si può fermare il gioco in ogni momento battendo BREAK. ESTENSIONI POSSIBILI: Lo stesso principio può essere applicato ad ogni sorta di puzzles (manipolazioni di numeri, di co¬ lori, di suoni eventualmente). Si possono anche pre¬ vedere varie frasi, con una scelta effettuata da un ge¬ neratore casuale ecc. 102 programmi per ATARI 209 10 REM PUZZLE DI LETTERE 20 DIM A$<35> , R$<35> 39 GRAPHICS 0-POKE 752,1 ■i5 SE TCOLOR 1 ,> ,3 40 FOR 1=1 TO 8 : POSITION 15+1,6-PRINT CHR*<160>-POSITION 16,5+1«PRINT CHR*<160>< POSITIOH 15+I,13 -PRINT CHR$<160> 56 POSITIOH 23,5+1 : PRINT CHR$<160>-NEXT I 60 Hi=" " - R-l = "LAMhRIAHNAVAIHCANPAGNAINHONOPATTINO" 70 FOR 1=1 TO 35 80 X=INT*35+1> 90 IF R$Oi, ;•!> = "-“ THEN 80 100 H* < LEM C A* > +1 >=RT < X, X > 110 RtOi, X>="-" 120 F=ASCCA*CI,I>> 130 X= I-6*INTC I -6) 168 NEXT I 170 X=0■Y=8-S=8=C=32 180 POSITIOH 0,22 PRINT “Numero di prove >“;S 130 POSITIOH 17+X,7+Y-PRINT CHR$<32+FL> 20O CLfl“P£EK<764>-GOTO 130 220 I=X-J=Y 230 X=X-0>+0)+ 250 LOCATE 17+X,7+Y,C 260 POSITIOH 17+1,7+J-PRINT CHR$CC> 270 IF I=X AND J=Y THEN SOUND 0,251,10,4-FOR TE=1 TO 5-HEXT TE-SOUND 0,0,0,0-GOT 0 230 280 S-S+l-FOR TE=1 TO 255 STEP 8-SOUND 0,I,10,4-NEXT TE-SOUND 0,0,0,0 238 POKE 764,255-GOTO 180 210 102 programmi per ATARI Bersagli RIFERIMENTI: Programmazione: difficile. Categoria del gioco: fortuna. Difficoltà del gioco: bassa. IL GIOCO: Consiste semplicemente nel colpire dei bersagli, cer¬ cando di segnare il maggior numero di punti; il nu¬ mero di bersagli (da 1 a 6) sarà scelto all’inizio della partita ed il punteggio realizzato sarà visualizzato in permanenza. Se si tocca il bordo di un bersaglio, la partita si ferma. Si marcheranno tanti più punti quanto il numero colpito sarà grande. IL PROGRAMMA: Il numero di bersagli è inserito alla linea 50. Il ciclo I (80-100) effettua la stampa dei bersagli. La linea 120 visualizzerà il punteggio in permanenza. La palla è visualizzata dalla linea 130. Il ciclo I (150-200) realizza la stampa delle cifre con¬ tenute nei bersagli e permette lo spostamento della palla (linea 190). La linea 220 guarda se si è sparato, e la linea 230 guarda se la palla è ancora sulla linea di partenza. La linea 240 fa avanzare la palla di una casella verso destra, e la linea 250 verifica se ha oppure no rag¬ giunto i bersagli; poi le linee 260 e 270 guardano ciò che hanno colpito. La linea 280 incrementa il punteggio. Le linee 290 e 300 si occupano della fine della partita. Le note della musica sono scritte nella stringa VA$ con i valori dei suoni corrispondenti. Il sottopro¬ gramma 500 sceglie alcune note. PER GIOCARE: Lanciare il programma con RUN e battere il numero di bersagli desiderati seguito da RETURN. I bersagli appaiono e la partita comincia. La vostra pallina, raf¬ figurata da una O è visualizzata in basso a sinistra; potete spostarla con le frecce alto e basso (tasti «- e -») e potete sparare quando volete battendo 0. Il punteggio sarà modificato in funzione del vostro risultato, e una nuova pallina appare. È possibile fer¬ marsi in ogni istante battendo BREAK, altrimenti il gioco si ferma dopo un certo numero di spari. ESTENSIONI POSSIBILI: Si potrà senza difficoltà aumentare il numero di bersagli, modificare le regole di apparizione dei numeri nei bersagli per renderle meno casuali, fare in modo che la pallina stessa sia raffigurata da una cifra che dovrebbe coincidere all’arrivo con quella del bersaglio. 102 programmi per ATARI 211 lo REM BERSAGLI 20 DIM NU* < 100 >, VA* < 45 >,C* < 45 > 25 VA*="DOREMIFASOLA*IDMRM126108696031081072064063053 '* ■C*=VA* 30 GRAPHICS 0 ‘POKE 752,1 40 PRINT 50 PRINT "Nuwero di bersaali : "i*INPUT N 55 IF N<0 OR N>6 THEN 40 60 P=10 : J*30>S»0=B=1 76 PRINT “}" 80 FOR 1=1 TO N 30 POSITION J,3*1-1‘PRINT CHR*<18>lCHR*<5>'POSITION J,3*1‘PRINT “ I"‘POSITION J, 3*1+1‘PRINT CHR*a8>;CHR*<3>; 100 NEXT I 110 K=0‘A-2+INT < RND(1)* <3*N)> 120 POSITION 0,20‘PRINT "Punte*«io ■"iSì" - Palla <"j8 130 POSITION K,A‘PRINT CHR4C20) 146 D=A 150 FOR 1=1 TO N 160 U= I NT < RND < 1 > *P > 170 POSITION J,3*1‘PRINT CHR$ 180 CLA=PEEK< 764 > 130 A=A+-2> 135 POKE 764,255 200 NEXT I 210 POSITION K,D‘PRINT " 11 220 IF CLA=50 THEN B=6+1‘G0TG 240 230 IF K=0 THEN 130 246 K=K+1 256 IF K ‘MU*= U SONIDOT‘GOSUB 58 0 ‘ END 280 S=S+C-48‘MIJT="DODODOREMIREDOHIREREDO"'GOSUB 500 230 P=P~1 380 IF F-0 THEN HU*=“SISISOSIRESOSOLADMSILASOL"‘GOSUB 588‘END 310 GOTO 118 580 VA*=C* 505 FOR IM=1 TO LEN-1 STEP 2 518 FOR JV=1 TO 3 52@ IF VA$<2*JV-1,2*JV><>MU* THEN NEXT JV 538 HO=VAL,18+3*JV)) 540 SOUND 0,NO,10,4‘FOR TE=1 TO 18>NEXT TE 55© SOUND 0,0,0,0‘FOR TE=1 TO 5'NEXT TE 566 NEXT IM 570 RETURN 212 102 programmi per ATARI Gocce RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: difficile. Categoria del gioco: disegno. Difficoltà del gioco: nessuna. È un vero programma di disegno animato che si può considerare, infatti, come un interludio; un recipien¬ te è disegnato sullo schermo, visto di taglio; e contie¬ ne già degli ostacoli. Una goccia d’acqua, simbolizza¬ ta da un cerchio grigio, appare sopra il recipiente e cade riempiendolo man mano. La sua traiettoria, quando trova un ostacolo, è interamente determinata dal caso: va a destra o a sinistra, fino a che non non ci sia più alcuna possibilità. Allora, un’altra goccia cade, e così via, fino al traboccamento finale. I due cicli chiusi I (60-130) e J (70-120) disegnano il recipiente e gli ostacoli. La linea 170 disegna la goccia e la linea 210 rinvia nel sottoprogramma (370-390) che permette di determi¬ nare se incontra o meno un ostacolo. Se non l’incontra, si va in 290 e la goccia continua a cadere, altrimenti la goccia va a destra o a sinistra (linea 230) secondo il valore definito per K alla linea 150. Si guarda di nuovo se c'è oppure no l'ostacolo, o se la goccia può continuare a cadere (linee 240, 250 o 260). Secondo il risultato del test, si utilizzerà 270, 290, 310 o 340. II RUN fa partire il disegno del recipiente e degli ostacoli, la goccia appare, si mette a cadere e finisce per trovarsi un posto. Un’altra goccia appare e si ri¬ comincia. Il programma si ferma da solo quando il recipiente trabocca; possiamo fermarlo in qualsiasi momento battendo BREAK. ESTENSIONI POSSIBILI: Possiamo, naturalmente, aggiungere il colore ed i suoni, ed anche immaginare un gioco nel quale un piccolo personaggio possa evitare le gocce o l'an¬ negamento. 102 programmi per ATARI 213 10 REM GOCCE 58 GRAPHICS 0!POKE 752,1'SETCGLOR 1,7/2=S£TCOLOR 2,6,10 60 FOR 1=12 TO 20 70 FOR J=1 TO 16 80 POSITION 0.1 PRINT CHR$<160>‘POSITION 17,1 PRINT CHR*<160i> 30 POSITION J,20"PRINT CHR4K160) 100 IF 1012 ANO 1020 THEN POSITION J, I‘PRINT CHR*U60> 110 IF 1020 ANO RNDC1X0.7 THEN POSITION INT, l‘PRINT • “ 120 NEXT J 130 NEXT I 140 Y=INKRND<1>*7+6)>X=6 150 K=2*<0.5)-l 160 1=0 170 POSITION Y,X ! PRINT CHR*<20> 180 FOR J=0 TO 100 : NEXT J 130 POSITION Y,X ! PRINT “ " 200 U=X+1 1 V=Y 210 GOSUB 370 220 IF J=0 THEN 290 230 U=X=V=Y+K 240 GOSUB 370 250 IF 1=0 THEN 310 260 IF 1=0 THEN 340 270 POSITION Y,X-PRINT CHR*<20> 288 GOTO 140 290 X=X+1 300 GOTO ISO 310 Y'-'T+I-:. 320 1=1 336 GOTO 170 840 350 1=1 360 GOTO 230 370-.LOCATE V,U,C‘PGSITIQN V,U’SOUND 0,31,10,4 ; FOR T£=l TO 3‘NEXT T E‘SOUND 0,0,0,0 380 JXC032)‘IF U=23 THEN POSITION 18,15‘PRINT "Finito.“‘GOSUB 500=END 390 RETURN 5O0 FOR MU=.l TO 3=READ VA=SOUND 0, VA, 10,4=FOR TE=l TO 10 NEXT TE=SOUND 0,0,0,S F OR TEpI TO 5=NEXT TE=NEXT MU=RETURN 1000 DATA 63,47,40 214 102 programmi per ATARI Ostacoli RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Programmazione: abbastanza difficile. Categoria del gioco: gioco di riflessi (per un giocato¬ re). Difficoltà del gioco: media. Dei pedoni si spostano sullo schermo incontro ad una piccola macchina che dispone della possibilità di spostarsi verso sinistra o destra per evitarli il più a lungo possibile. La distanza percorsa sarà visualizzata in permanenza ed il gioco termina quando la macchina investe un pedone o il bordo della strada. La linea 80 fa avanzare i pedoni verso la macchina del giocatore che è stampata grazie alla linea 70. Le linee 80, 90 e 100, disegnano la strada (le linee 90 e 100, anche se identiche, sono tutte e due indispensa¬ bili, poiché il valore di RND non sarà, in teoria, lo stesso sulle due linee). La linea 120 visualizza il punteggio. La linea 140 permetterà di spostare il veicolo. Le linee 150 e 160 permettono di controllare se c’è o no un ostacolo e fermano il programma se è neces¬ sario. Il punteggio è incrementato dalla linea 170. Si lancia il programma battendo RUN. La strada e i pedoni appaiono nella parte inferiore dello schermo e salgono verso la macchina. La mac¬ china può spostarsi con l’aiuto delle frecce di sposta¬ mento orizzontale (tasti *- e -»). Lo scontro con un ostacolo interrompe lo svolgimen¬ to del programma e provoca la visualizzazione del punteggio. Si può, però, uscire dal programma in ogni momento utilizzando il tasto BREAK. ESTENSIONI POSSIBILI: Sarà abbastanza facile migliorare il disegno della macchina, della strada, e degli ostacoli. Potre¬ mo migliorare il suono e il colore, ammettere un cer¬ to numero di incidenti, registrare il miglior punteg¬ gio (per vari giocatori), eventualmente disegnare va¬ rie macchine, ecc. 102 programmi per ATARI 215 10 REM OSTACOLI 50 GRAPHICS 0‘POKE 752,1‘SETCOLOR 1,3.10'SETCOLOR 2,0,4-SETCOLOR 4.0,4 60 S=0‘Y=5 70 POSITIOH Y.0 PRIHT 'Ti 80 POSITIOH 0,23‘PRINT CHRX160); " H iCHR*<160>;.REM 8 BLANCS '30 IF RND<1><0.7 THEN POSITIOH INT*8+1>,23'PRINT CHR$<123>, 100 IF RNDOX0.8 THEH POSITION INT*3+l>,23 = PRINT CHR*023> 110 POSITIOH 15,5‘PRINT “ “‘REM 15 BLANCS 120 POSITIOH 15,6‘PRINT "Pantea*io '";S 130 CLA=PEEK < 764 > 140 Y=Y-0>+ 156 LOCATE Y,1,C‘POSITIOH Y.l'PRIHT CHR*:*33> 70 POSITIOH S, 23 • FRI NT SO S= I NT < RND < 1 > *39 > 30 IF RHDC1><6.7 THEH POSITIOH S,23‘PRIHT “*"i; 120 IF C=42 THEH POSITIOH 10,23‘PRIHT "Puntesiio ottenuto ■ "i 2 ■ RESTORE ÌOOOGOSU B 5O0 END 130 IF C=35 THEH 2=Z+1‘RESTORE 2000‘GOSUB 500 140 POSITIOH X-l, 16‘PRINT '* “> 150 POSITIOH X-l,12 : PRIHT " ";CHR*<0>;” 160 CLA=PEEK(764) 170 X=X-1>+(CLA=7 AND X<37> ISO POKE 764,255 GOTO 60 5O0 FOR MU=1 TO 3 : READ VA=SOUHD 0,VA,10,4‘FOR TE=1 TO 10‘NEXT TE‘SOUND 0,0,0,0‘F OR TE=1 TO 5 •' MEXT TE NEXT MU‘RETURN 100O DATA 63,47,40 2O00 DATA 126,108,36 218 102 programmi per ATARI Anomalia RIFERIMENTI: Programmazione: difficile. Categoria del gioco: solitario. Difficoltà del gioco: media. IL GIOCO: Si basa essenzialmente su una buona capacità di os¬ servazione. Due griglie di 25 caselle ciascuna sono di¬ segnate sullo schermo. Dei simboli identici sono vi¬ sualizzati in posti differenti delle due griglie, ma uno dei simboli è stato modificato sulla griglia di destra. Il gioco consiste nel trovare quale, inserendo le sue coordinate nell’ordine linea-colonna. IL PROGRAMMA: Il ciclo I (50-80) stampa le cifre di riferimento delle griglie. Il ciclo principale I (100-160) stampa i simboli delle due griglie, in un ordine differente. La linea 110 sceglie il carattere da stampare. Il sottoprogramma (1000-1040) si occupa di fare la stampa in una casella libera (lo si richiama due volte per le due griglie). Le linee 170 e 180 cambiano, in maniera casuale, uno dei caratteri. La linea 170 toglie il colore dello schermo scelto alla linea 45. Le coordinate del punto tentato sono inserite alle li¬ nee 190 e 200, ed il controllo è effettuato dalle linee 210 e 220. Le linee 230 e 240 si occupano della visualizzazione del risultato. PER GIOCARE: Dopo aver lanciato il programma con l’istruzione RUN, si ottiene la visualizzazione di due griglie. Si dovrà allora cercare, per paragoni, qual è il carattere che è stato modificato (sulla griglia di destra). Si inserisce allora il suo numero di linea, seguito da RETURN, ed il suo numero di colonna, seguito da RETURN. Il programma risponderà allora BRAVO o la lettera da trovare era . . . ESTENSIONI POSSIBILI: Sarà possibile utilizzare dei simboli grafici di differenti colori, il che potrà semplificare la ricerca. Si può anche immaginare di utilizzare dei disegni più sofisticati, migliorare il controllo dei risultati, am¬ mettere la risposta esatta sulla griglia di destra o di sinistra, introdurre un controllo di tempo, aggiunge¬ re il suono ecc. 102 programmi per ATARI 219 10 REM ANOMALIA 38 DIM 1*0 > 40 GRAPHICS 1 0=5 45 SETCOLOR 0.8,0 58 FOR 1=1 TO 5 55 I*=CHR* <1+43+128) 60 POSITION I+1,0 : PRINT #6O* = P0SITI0N 0,2*1‘PRIHT #60* 70 posinoti 1 + 10,0'PRINT #6.ì I* : POSITION 9,2*1 : PRINT #60* sa NEXT I 100 FOR 1=1 TO 22 110 D=INT<2S*RN0O)+1> 120 L=2-S=T 130 GOSUB 1800 140 L=11 150 GOSUB 1080 160 NEXT I 170 S=0 ^ SET COLOR 000,8 180 GOSUB 1008 190 PRINT "Linea.‘“i>INPUT I 200 PRIHT "Colonna.INPUT T 210 U=2*I=V=T+10 220 LOCATE V,U,C;POSITION V,U■PRINT CHR* 238 IF D+64=C THEN PRIHT “BRAVO! “>>FOR 1=1 TO 3‘SOUND 0,63**T+1> 1010 LOCATE V,U,C>POSITION V,U ; PRINT #6;CHR* 1020 IF CO32 AND SO0 THEN 1000 1030 POSITION V,U : PRINT #b,CHR* 1040 RETURN 220 102 programmi per ATARI Tanti in uno RIFERIMENTI: Programmazione: difficile. Categoria del gioco: due giocatori. Difficoltà del gioco: secondo l’utilizzo. IL GIOCO: Molti giochi sono in realtà possibili con questo pro¬ gramma che si comporterà come una matita elettro¬ nica, che vi permetterà di scrivere dei simboli O o X , in un qualunque posto del vostro foglio-schermo. Po¬ tremo, per esempio, utilizzarlo per un gioco da ragaz¬ zi (il primo a realizzare un allineamento di 5 pedine identiche ha vinto) o per un GO (si realizzano gli ac¬ cerchiamenti delle pedine avversarie) o un altro gio¬ co, secondo la vostra immaginazione. IL PROGRAMMA: Il campo di gioco è delimitato da un quadro posizio¬ nato alla linea 30 e 35. Il cambio del giocatore è effettuato dalla linea 50. Il giocatore di turno vede il simbolo che ha scelto (O o X) spostarsi al limite del quadrato (linea 70). Le linee 100 e 110 permettono ai due giocatori di spo¬ stare il simbolo sul terreno. Le linee 130 e 140 controllano se lo spostamento è possibile (casella libera e non oltrepasso dei limiti). La linea 190 permette di scrivere in una casella li¬ bera. PER GIOCARE: RUN provoca l’apparizione dei limiti del campo e del numero del giocatore, così come i simboli che si do¬ vranno spostare sullo schermo con l’aiuto dei 4 tasti di direzione (<->11). Non è possibile andare in una casella già occupata e bisognerà battere il tasto 0 per iscrivere il proprio simbolo in una casella dispo¬ nibile. Fatto questo il simbolo del secondo giocatore appare nella colonna di sinistra, circa alla metà, ed il gioca¬ tore procederà nella stessa maniera del suo avver¬ sario. Per uscire dal programma, basterà battere BREAK. ESTENSIONI POSSIBILI: Si potrà utilizzare l’intero schermo come ter¬ reno di gioco e realizzare dei controlli in funzione dei differenti giochi che si desiderano fare: controllo di allineamento di 5 pedine per il gioco di cui parlava¬ mo prima, controllo del numero di pedine catturate per il GO. 102 programmi per ATARI 221 10 REM TANTI IH UNO 15 OPEN #1,4,0,"K : " 20 GRAPHICS 0 “POKE 752,1 25 SETCOLOR 1,0,0 : SETCOLOfi 2,1,10-SETCOLOR 4,1,10 30 POSITIOH 0,0'PRINT CHR$<1?>“POSITION 8,23“PRINT CHR*<26>, 35 FOR 1=1 TO 22 ; POSITIOH I,8“PRINT CHR*<18>«POSITION 0,1“PRINT "l"“POSITION I, 3 • PRI NT CHRP <18 > ; NEXT I 40 J=0 50 J=hBS 60 X=12 ! V-1 70 POSITION Y*X“PRINT CHR*<79+9*-1) 110 Y=Y+0:Lm=42 AND Y<22>-1> 120 POSITION 6,A“PRINT " " 130 LOCATE Y,X,C 140 IF CO 73 AND CO88 THEN 160 150 X=A•Y=B 160 FOR 1 = 1 TO 50“ CLR=PEEK ( 764 ) 170 IF CLA=255 THEN NEXT I 180 POKE 764,255 : IF CLA050 OR Y=0 THEN 70 190 POSITION Y,X>PRINT CHR*<79+9*>< 200 SOUND 0,63*+40*,10,4“FOR TE=1 TO 10“NEXT TE“SOUND 0,0,0,0 210 GOTO 50 222 102 programmi per ATAR1 Percorso del cavaliere RIFERIMENTI: Programmazione: difficile. Categoria del gioco: riflessione. Difficoltà del gioco: elevata. IL GIOCO: Si presenta, qui, come un gioco totalmente d'azzardo, ma proviene, in realtà, da un problema assai difficile da risolvere: come spostare un cavallo su una scac¬ chiera in modo che passi una volta, e una sola, su ognuna delle 64 caselle della scacchiera. Il cavallo si sposta secondo le regole comunemente ammesse negli scacchi e la sua posizione di partenza è definita dal giocatore; i suoi spostamenti, invece so¬ no effettuati a caso. Riuscirà a percorrere le 64 ca¬ selle? IL PROGRAMMA: La linea 60 definisce i diversi spostamenti possibili, in due variabili alfanumeriche A$ e B$; il ciclo chiu¬ so I (70-100) disegna il campo di gioco. Si inseriscono le coordinate della casella di partenza (linea poi colonna) alle linee 100 e 120. La linea 140 stampa il numero della mossa. La linea 150 permette la pesca a caso di uno sposta¬ mento del cavallo. Il ciclo ZE (160-210) cerca se lo spostamento è possi¬ bile; se non è il caso, si cercano tutte le altre (sempre nello stesso ordine). Le linee 170 e 180 effettuano lo spostamento. La linea 190 controlla che non si esca dalla scacchiera. La linea 200 invia alla linea 230 se il colpo è possi¬ bile. La linea 220 gestisce la fine della partita (cavallo bloccato) e visualizza il punteggio. Le linee 230, 240 e 250 realizzano la mossa e incre¬ mentano il punteggio. La linea 500 evita un messaggio d’errore e l'interru¬ zione del programma quando leggendo la linea 2000 gli manca un dato. PER GIOCARE: Si lancia il programma con l’ordine RUN. Appare il campo di gioco; si sceglie la posizione di partenza battendo prima un numero di linea (tra 1 e 8), poi il suo numero di colonna, seguito da RETURN. Il gio¬ co comincia immediatamente e si svolge in modo in¬ teramente automatico fino a che il cavallo sia bloc¬ cato. Si può, naturalmente, fermarsi in ogni momento con BREAK. 102 programmi per ATARI 223 ESTENSIONI POSSIBILI: Si possono immaginare numerose varianti su questo tema, cominciando col far variare le dimen¬ sioni della scacchiera, si può anche migliorare consi¬ derevolmente la grafica. Ma, la cosa più interessante, è di riuscire a definire un algoritmo che dia la o le soluzioni del problema iniziale... 10 REM PERCORSO DEL CAVALIERE 15 GRAPHICS 0•PGKE 752,1 20 DIM A$<16>,Bl<16>,Gt<16> 30 SETCOLOR 1,11,2-SETCOuOR 2,11,10 50 8=1 ! T=0 SO A*= “56653223 " : B*«*'653223 " +1 >«fl$ • 8* = "65 1 " ■ Ft$ < LEM< A* >+1 >=A ì 65 C*=B* 70 POR 1=1 TO 8 80 POSITIOH 3*1+1,0'PRINT I 30 POSITIOH 1,2*I : PRINT I;"." 100 NEKT I 110 POSITIOH 2,13'PRINT "Line* di Partenza ■INPUT I 120 PRINT : PRINT "Colonna di pertenze ■"> 'INPUT J 130 IF S>3 THEN S=0'T=T+1 140 POSITION 3*J+1,2*I 1 PRINT STR$ 150 Z=INT 160 FOR ZE=Z TO Z+8 170 A= I+VAL < A* < ZE, ZE ) ) -4 180 6=J+VAL8 OR B>8 THEN 210 2O0 LOCATE 3*B+1,2*A,C'POSITION 3*6+1,2*A'PRINT CHR*CO'B$=C*'IF C=4S THEN 230 210 NEKT ZE 220 POSITION 25,18‘PRINT "Totale ■"jT*10+S 4U GRAPHICS 0*ftMCHR*<160>*POKE 752,1 45 SETCOLOR 1,2,2*SETCOLOR 2,11,10>SETCOLOR 4,11,10 50 FOR 1=1 TO 18 60 POSITIOH 9+1,0'PRINT A* 70 POSITION 10,I : PRINT A*-POSITION 27,1*PRINT fi* 80 NEXT I 90 FOR 1=1 TO 7 100 FOR J=ll TO 26 110 POSITION J,I-PRINT 120 NEXT J 130 NEXT I 140 H=-1 * K=0.5 -J= 18 * I=17 * Y=J ISO POSITION Y-2,19 : PRINT " - “ 160 CLA=PEEK<764) 170 Y=Y+8) 180 IF T=1 THEN POSITION J,I-PRINT ” " 190 POSITION 0,29*PRINT "Punteaaio "iS 200 IF I>21 THEN FOR MU=0 TO 5*SOUND 0,63,10,4*»*FOR TE=1 TO 5 = NE XT TE*NEXT MU* END 210 I = I+H * J=J+K 220 LOCATE J,I,C*POSITION J,IPRINT CHR*; 230 IF 032 THEN POSITION J,I*PRINT CHR*<20)*T»1-GOTO 150 240 IF C=1S0 THEN 280 25o IF C=35 THEN POSITION J,I*PRINT CHR$<20)*T»1'GOTO 300 260 H=-H 270 K=RHD<1)-RND<1) 280 K=-K* T=0 290 GOTO 150 300 S=S+9 310 K=-/3 > 320 H*-H 330 GOTO 150 226 102 programmi per ATARI RIFERIMENTI: IL GIOCO: IL PROGRAMMA: PER GIOCARE: Othello Programmazione: difficile. Categoria del gioco: riflessione (due giocatori). Difficoltà del gioco: elevata. Diventato un grande classico dei giochi su microcal¬ colatore, il gioco Othello o Reversi si avvantaggia dell’essere gestito su calcolatore con visualizzazione; anche se, come qui, è praticato da due giocatori: in effetti, il gioco consiste essenzialmente nell’accer- chiare le pedine dell'avversario, e questo può rivelar¬ si alla lunga molto fastidioso, soprattutto se siete un giocatore assiduo. Il principio è che il giocatore con le X deve, per poter giocare, riuscire a chiudere una o più pedine dell’av¬ versario, in una o più direzioni; se ci riesce, le O sa¬ ranno convertite in X (la conversione potrà essere fatta orizzontalmente, verticalmente, o seguendo le diagonali). Il giocatore che ha le O procederà nella stessa manie¬ ra, finché la scacchiera sarà riempita o finché nessu¬ no possa più giocare (se un giocatore non può aggira¬ re le pedine, deve cedere il turno). I cicli chiusi (50-120) e Q (70-110) disegnano il campo di gioco e la linea 140 visualizza una X o una O, se¬ condo il giocatore che inizia. II ciclo P (200-320) controlla la validità del colpo (la casella è libera: linee 300 e 310), utilizzando una par¬ te del programma che si trova alle linee 360-420 (ave¬ te preso uno o più nemici in linea 360 ed eventuale ritorno autorizzato alla linea 380; si fa una pulizia in tutte le direzioni, se l’inquadramento si è rivelato possibile). La linea 200 definisce le 8 direzioni di esplorazione. Le linee 240 e 250 calcolano gli spostamenti da effet¬ tuare per esplorare queste 8 direzioni. La linea 230 realizza gli spostamenti. La linea 340 segnala il cambiamento del giocatore, se c’è stata conversione (controllo alla linea 330). Dopo RUN, ogni giocatore inserirà a turno le coordi¬ nate (linea, RETURN, colonna, RETURN) dellà casel¬ la dove si vuole giocare; se il colpo è valido, le pedine sono girate e si cambia il giocatore; se il colpo non è possibile si inserisce 0 come prima coordinata per il cambio del giocatore. 102 programmi per ATARI 227 ESTENSIONI POSSIBILI: Prima di tutto, naturalmente, migliorare la vi¬ sualizzazione con dei colori e fare una griglia più spaziosa. Si potrà anche immaginare un gioco macchina per l’ATARI. Dopo aver lanciato il programma con RUN, conviene inserire le dimensioni della griglia (4, RETURN o 6, 8 ...). 10 REM 0THELL0 15 DIM C$<1>'GRAPHICS 0 20 F'RIHT “Dimensione della arialia * "i < INPUT fi 30 IF fi/2<>INT " =FOIE 752,1 50 FOR P=1 TO fi 60 POSI TIOH 2*P, @'FRINT STR*

70 FOR 0=1 TO fi SO POSITIOH ©,2*P‘PRINT STR*

«POSITION 2*Q,2*P>PRINT 90 IF Q=fi,"2+i AND P=fi/2 THEN P0SITI0N 2*0-2,2*P'PRINT "0 X" 100 IF 0=fi-"2+1 AND P=fi/2+l THEN P0SITI0N 2*6-2,2*P>PRINT "X 0“ 110 NEXT Q 120 NEXT P 130 K=1 140 POSITION 24,5 : PRINT “Giocatore *C#“"0" ; IF K=1 THEN C*="X“ 145 PRINT C$ ■■ FOR 1 = 1 TO 5 > SOUND 0,63,10,4* NEXT 1= SOUND 0,0,0,0 150 POSITION 31,8 ! PRINT " ">POSITION 31,10'PRINT " 160 POSITIOH 23,8 •INPUT U 170 IF U=0 THEN 340 ISO POSITION 23,10'PRINT "Colonna'"; » INPUT V 190 H=1 200 FOR P=1 TO 8 210 S=0 220 U=0 230 T=2*U'R=2*V 240 F=7)-

3 fiND P<7) 250 G=

=6>-

1 AND P<5> 260 0=46+42* 290 T=T+2*F'R=R+2*G 300 LOCATE R,T,C'POSITION R,T'PRINT CHR$ 310 IF C=79 OR C=88 THEN 360 320 NEXT P 330 IF HO0 THEN 140 340 K=ABS(K-1> 350 GOTO 140 360 IF CC-79 AND K=l) OR THEN N=1 370 IF SO0 THEN POSITION R,T*PRINT CHR$<0> 380 IF W=1 AND <03=79 AND K=l) OR <0=88 AND K=0>> THEN 290 390 IF W=0 OR SO© THEN 320 400 S=1+ 420 GOTO 220 228 102 programmi per ATARI "Puzzle” dispettoso RIFERIMENTI: Programmazione: difficile. Categoria del gioco: solitario. Difficoltà del gioco: media. IL GIOCO: S’ispira al Puzzle 14-15 di Sam Lloyd ma qui le cifre sono sostituite da lettere. IL PROGRAMMA: Il sottoprogramma 1000 disegna il terreno di gioco La linea 130 inizializza la matrice A che contiene il valore della lettera visualizzata sulla griglia. Il sottoprogramma 2000 visualizza questa lettera. La linea 170 stampa 2 linee di istruzione; la linea 200 assicura lo spostamento del buco e TRAP permette il passaggio agli indici della matrice A per spostare il buco nei limiti della tabella. Le linee 230-240 cambiano le lettere e il buco. PER GIOCARE: Si lancia il programma con RUN. Si sposta il buco con l’aiuto delle frecce. Attenzione, il buco si sposta in senso inverso rispetto alle frecce: come nella real¬ tà se si deve spostare una lettera verso sinistra (per esempio) si sposta il buco verso destra. Per interrompere battere BREAK. ESTENSIONI POSSIBILI: Migliorare i suoni, utilizzare il joystick per spostare il buco. 102 programmi per ATARI 229 5 REM PUZZLE DISPETTOSO IO Ci>3‘LC=3'GRILLE*1000'CflSE*2000'DIM D*<9>‘DIM A<3,3> 20 GRAPHICS 2‘POKE 756,226■SETCOLOR 0,3,8'SETCOLOR 4,3,8‘GOSUB GRILLE 110 FOR C=© TO 3 126 FOR L=0 TO 3 130 A=225+4*C+L'IF 0*3 AND L«3 THEH A»32 140 X=C = Y=L • GOSUB CASE 150 NEXT L 160 NEXT C 170 POKE 752,SPRINT : PRINT " PER SPOSTARE LE LETTERE" 180 PRINT “ BATTERE I 4 TASTI CURSORE "i 200 K=PEEK<764> > POKE 764,255'TRAP 200 ■ IF KOS AND K07 AND K<>14 AND K<>15 THEN 200 210 SOUND 8,45,18,10‘FOR T=1 TO 18>NEXT T«SOUND 0,0,0,0 220 CN=CC+a>6)-- 230 A(CC,LC > =A ! X=CC‘Y=LC‘GOSUB CASE 240 CC=CN‘LC*LN 1 A=32 : X=CC : Y=LC 1 GOSUB CASE 250 GOTO 200 1000 HBUT=10800•6AS=10030■INTER=10028 +LIGNE*a/2<>INT>+INTER* AND I>8 AND I<8)+BAS 1038 Gestore X‘Read d*‘Poke 85,6= print #6jd* 1040 NEXT I 1050 RETURN 2000 POSITIOM 7+2#X,2*Y+l ! PRINT #6;CHR$>‘RETURN 10000 DATA «rwrurure>.battere simultaneamente 10810 DATA I I 1 1 I i— 10O20 DATA ars rs rsrd‘.vede re 10800 10030 DATA zrxrxrxrc*.vedere 10800 . . 230 102 programmi per ATARI Super scorrimento RIFERIMENTI: Programmazione: di media difficoltà. Categoria del gioco: animazione. Difficoltà del gioco: nessuna. IL GIOCO: Si deve ricostruire uno schermo, con le lettere pari che scendono e le lettere dispari che salgono, prima di farle nascondere. IL PROGRAMMA: La stringa A$ contiene il messaggio da far scorrere. T$ rappresenta la stringa visualizzata sullo schermo. TRAP in 1040 evita la visualizzazione fuori dallo schermo. PER GIOCARE: Si lancia il programma con RUN e lo schermo si ani¬ ma. I colori cambiano automaticamente. Si interrompe con BREAK. ESTENSIONI POSSIBILI: Si può cambiare la frase in DATA, immaginare spostamenti più complessi (giro dello schermo, spira¬ le ecc...). Sarà divertente guardare l'influenza del te¬ sto battuto in maiuscole, minuscole con colore, così come mettere o meno i caratteri inversi. 102 programmi per ATARI 231 5 REM SUPER SCORRIMENTO IO DIM A*<99>>DIM TI*<20>‘DIM C»<10> 20 DUREE=40•flTTENTE=3000 30 GRAPHICS 2+16 40 READ A* 100 REM Visualizzazione di A* < 1 .■ 28 ) su 11 a linea LARRIVEE* le lettere dispari sala ono,.quel le pari scendono 110 TI$=A$<1,20> 120 LDEPART=0 : LARRIVEE=5 1 FOR C=0 TO 19 STEP 2-GOSUB 1000" 3O0 REM Scelta di 5 nuovi colori diversi tra sii 8 di base<0.,7>rappresentati da C* 305 REM Osni colore scelto in C e' annullato in et 310 C*="ù1234567" 320 FOR J=1 TO 5 338 C= INT'• RND(1)*8) : IF C*=" " THEN 330 340 C$0>1,C+1>=" "iPOKE 707+J , 24C 350 NEXT J 400 GOTO 100 1080 REM Scorrimento del C+lesimo carattere di TI* tra la linea LDEPART e la lin ea LARRIVEE sulla colonna C 1010 S=SGN < LARRIVEE-LDEPART > 1020 FOR L=LDEPART TO LARRIVEE STEP S 1030 POS ITI ON C/L‘PRINT #S;TI*<:C+1,C+1>; 1048 TRAP 1050ipOSITION C,L-S=PRINT #6;" " 1050 TRhP 450001NEXT L 1060 RETURN 2000 F;EM Visualizzazione di TIS sulla linea LARRIVEE con scorrimento verso'sinis tra pr riempire A* 2010 FOR J=I TO LEN‘TI*<20,20>=A* 2030 POSITION 0 i LARRIVEE ! PRINT #6;TI* 2040 GOSUB ATTENTE 2050 NEXT J 2060 RETURN 3008 REM Sottoprosramma d'attesa 3010 FOR T=1 TO DUREE : NEXT T