#Fabio Quinzi 0000210574 #Alfredo Saglimbeni 0000241904 #Gabriele Verardi 0000119364 .text .globl main main: la $a0,menu jal stampas ##################################################### #MENU A SCELTA # switch: la $a0,menuPrompt jal stampas jal leggii beq $v0,1,inizio beq $v0,2,istruz beq $v0,3,credit beq $v0,4,esci j switch ##################################################### #ISTRUZIONI DEL GIOCO # istruz: la $a0, istruzS jal stampas j end ##################################################### #CREDIT DEL GIOCO # credit: la $a0, capolungo jal stampas la $a0, credits jal stampas j end ##################################################### #INIZIO DEL GIOCO # ##################################################### #GIOCATORE FITTIZIO # inizio: la $a0, capolungo jal stampas la $a0,fittiz jal stampas la $a0,soluz #giocatore fittizio inserisce la sequenza da indovinare li $a1,5 jal leggis jal fcontrolseq la $a0,capolungo jal stampas la $a0,play #intestazione a inizio gioco jal stampas li $s3,10 ##################################################### #GIOCATORE REALE # start: subu $s3,$s3,1 #riduce il contatore dei tentativi la $a0,tenta #///sequenza Costruzione grafica \\\ jal stampas # || # move $a0,$s3 # || # jal stampai # stampa il numero tentativo # la $a0,spazio # || # jal stampas # || # la $a0,indov # || # li $a1,5 # || # jal leggis #leggo la sequnza del giocatore# la $a0,fintab # || # jal stampas # \\\Fine sequenza /// # jal rcontrolseq li $s2,0 # contatore colori indovinati # li $t1,0 # || # li $t3,0 # \\Fine inizializzazione// # loop1: lb $t2,indov($t3) #Inizio ciclo di controllo sequenza player loop2: lb $t0,soluz($t1) addi $t1,1 beqz $t0,error bne $t2,$t0,loop2 #termine controllo della seqenza colori subu $t1,$t1,1 #se passo di qui il colore è giusto devo verificare la posizione bne $t1,$t3,nopos #controllo la posizione e salto a --> nopos se non uguale la $a0,nero #coretto nella pos giusta addi $s2,1 j loop3 nopos: la $a0,bianco #colore coretto ma nella pos sbagliata j loop3 error: #colore sbagliato la $a0,err loop3: jal stampas #stampo il carattere se è corretto nella pos giusta # o se è corretto pos sbagliata o errato li $t1,0 # termine controllo del carattere passo a quello successivo addi $t3,1 blt $t3,4,loop1 beq $s2,4,vinto #se il giocatore indovina la sequenza esco dal ciclo e stampo il messaggio di vincita tentctr:bnez $s3,start #continua a ciclare finchè i tentativi non sono terminati la $a0,frase jal stampas jal stampc # stampo la sequnza con i nomi dei colori la $a0,pe0 #se arrivo qua sono finiti i tentativi e ho perso jal stampas j end vinto: la $a0,frase # arrivo in au in caso di vittoria! jal stampas jal stampc # stampo la sequnza con i nomi dei colori la $a0,frase2 jal stampas li $t0,10 subu $t0,$t0,$s3 #calcolo il numero di tentativi move $a0,$t0 jal stampai #stampo il numero di tentativi la $a0,vi0 jal stampas end: jal leggii #fine del gioco attendo invio per ricominciare j main esci: li $v0,10 #termine programma syscall ##################################################### #FUNZIONI PREDEFENITE # #stampa stringhe stampas: li $v0,4 syscall jr $ra #stampa interi stampai: li $v0,1 syscall jr $ra #legge stringa leggis: li $v0,8 syscall jr $ra #leggi integer leggii: li $v0,5 syscall jr $ra # stampa i nomi della sequenza di colori stampc: li $t0,0 coloop1:lb $t2,soluz($t0) la $t3, colori coloop2:lw $t4, ($t3) lb $t5,($t4) addi $t3,4 bne $t5,$t2,coloop2 move $a0, $t4 move $t6,$ra jal stampas move $ra,$t6 addu $t0,$t0,1 blt $t0,4,coloop1 jr $ra #controllo la corretteza nella seqenza colori del giocatore fittizio fcontrolseq: li $t0,0 fctrloop1: addu $t1,$t0,1 lb $t2, soluz($t0) fctrloop2: lb $t3, soluz($t1) addi $t1,1 beq $t2,$t3,fseqerr blt $t1,4,fctrloop2 li $t3,0 fctrloop3: lw $t4, colori($t3) lb $t5,($t4) addi $t3,4 beq $t5,$t2,fseqend blt $t3,24,fctrloop3 fseqerr: j inizio fseqend: addi $t0,1 blt $t0,4,fctrloop1 j $ra #controllo la corretteza nella seqenza colori del giocatore fittizio rcontrolseq: li $t0,0 rctrloop1: addu $t1,$t0,1 lb $t2, indov($t0) rctrloop2: lb $t3, indov($t1) addi $t1,1 beq $t2,$t3,rseqerr blt $t1,4,rctrloop2 li $t3,0 rctrloop3: lw $t4, colori($t3) lb $t5,($t4) addi $t3,4 beq $t5,$t2,rseqend blt $t3,24,rctrloop3 rseqerr: la $a0, frase3 jal stampas j tentctr rseqend: addi $t0,1 blt $t0,4,rctrloop1 j $ra ##################################################### #DATI ALLOCATI PER L'APPLICAZIONE # .data ##################################################### #STRINGHE MENU GRAFICHE VARIE # menu: .asciiz "\n\n\n\n\n\n __.--^*@ MASTER MIND |!| MENU DI INIZIO @*^--.__\n\n\n\n -Menu:\n\n 1) Inizi a Giocare\n\n 2) Istruzioni gioco\n\n 3) Credit \n\n 4) Esci\n\n" menuPrompt: .asciiz "\nScegli (1,2,3,4): " capolungo: .asciiz "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" fittiz: .asciiz "__.--^*@ MASTER MIND |!| GIOCATORE FITTIZIO @*^--.__\n\n I colori consentiti sono: \n (r)-rosso (g)-giallo (v)-verde (b)-blu (n)-nero (a)-arancione\nInserisci la seqenza di colori da indovinare: " play: .asciiz "__.--^*@ MASTER MIND |!| INIZIA IL GIOCO @*^--.__\n\n\n--------------- | N TENTATIVO | INDOVINA | \n|x| |x| |x| |x| " frase: .asciiz "\n\n\n\n\nLa seqenza corretta e':" frase2: .asciiz "\nTentativi usati:" frase3: .asciiz "| <> |\n|x| |x| |x| |x| " istruzS: .asciiz "\n\n\n\n\n\n Il gioco consiste nell'indoovinare la sequnza di colori corretta.\n si ha a disposizione 10 tentativi.\n Ad ogni inserimento colore corrisponderanno a:\n colore corretto ma nella posizione sbagliata --> |?|\n Colore coretto posizione giusta --> |!|\n colore sbagliato--> |x|\n Buon divertimento.\n\n\n" credits: .asciiz "Progettato, Sviluppato e testato da:\n Fabio Quinzi\n Alfredo Saglimbeni\n Gabriele Verardi\n" ##################################################### #STRINGHE - HAI VINTO - HAI PERSO # vi0: .ascii "\n" vi1: .ascii "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" vi2: .ascii "!! _ _ ______ _ !!! _ _ _ __ _ _______ ______ !!\n" vi3: .ascii "!! | | | | | __ | | | !!! \ \ / / | | | \ | | |__ __| | __ | !!\n" vi4: .ascii "!! | |__| | | |__| | | | !!! \ \ / / | | | \ | | | | | | | | !!\n" vi5: .ascii "!! | __ | | __ | | | !!! \ \__/ / | | | |\ \| | | | | | | | !!\n" vi6: .ascii "!! | | | | | | | | | | !!! \ / | | | | \ | | | | |__| | !!\n" vi7: .ascii "!! |_| |_| |_| |_| |_| !!! \__/ |_| |_| \__| |_| |______| !!\n" vi8: .ascii "!! !!! !!\n" vi9: .asciiz"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n PREMI INVIO PER CONTINUARE" pe0: .ascii "\n" pe1: .ascii "XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX\n" pe2: .ascii "Xx _ _ ______ _ xXx ____ ______ ______ ____ ______ xX\n" pe3: .ascii "Xx | | | | | __ | | | xXx | _ \ | ___| | __ | | __| | __ | xX\n" pe4: .ascii "Xx | |__| | | |__| | | | xXx | |_| | | |_ | |__| | | |__ | | | | xX\n" pe5: .ascii "Xx | __ | | __ | | | xXx | ___/ | _| | _| |__ | | | | | xX\n" pe6: .ascii "Xx | | | | | | | | | | xXx | | | |___ | |\ \ __| | | |__| | xX\n" pe7: .ascii "Xx |_| |_| |_| |_| |_| xXx |_| |______| |_| \__| |____| |______| xX\n" pe8: .ascii "Xx xXx xX\n" pe9: .asciiz "XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX\n PREMI INVIO PER CONTINUARE" ##################################################### #STRINGHE DI COSTRUZIONE GRAFICA # nero: .asciiz "|!| " bianco: .asciiz "|?| " err: .asciiz "|x| " tenta: .asciiz "| Rimanenti " spazio: .asciiz " | " fintab: .asciiz " |\n" ##################################################### #DATI PER LA SEQUENZA NOMI COLORI # colori: .word rosso, giallo, verde, nero2, blu, arancio rosso: .asciiz "rosso " giallo: .asciiz "giallo " verde: .asciiz "verde " nero2: .asciiz "nero " blu: .asciiz "blu " arancio: .asciiz "arancione " ##################################################### #DATI DI ALLOCAZIONE PER LA SEQUENZA COLORI # indov: .space 5 soluz: .space 5