Skip to content

Commit

Permalink
Informar quando palpite está fora do intervalo
Browse files Browse the repository at this point in the history
  • Loading branch information
natalia-fs committed Nov 27, 2023
1 parent b1dfc87 commit cbe6caf
Showing 1 changed file with 51 additions and 15 deletions.
66 changes: 51 additions & 15 deletions v0/game.asm
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
.data
numero_aleatorio: .word 0
jogador_1_palpite: .word 0
jogador_2_palpite: .word 0

# Strings
newline: .asciiz "\n"
msg_titulo_jogo: .asciiz "Advinhe o numero aleatorio entre 0 e 20!\n"
prompt_jogador_1: .asciiz "Jogador 1, digite um palpite:\n"
prompt_jogador_2: .asciiz "Jogador 2, digite um palpite:\n"
msg_vitoria_jogador_1: .asciiz "Parabéns, Jogador 1! Você venceu!"
msg_vitoria_jogador_2: .asciiz "Parabéns, Jogador 2! Você venceu!"
numero_aleatorio: .word 0
limite_min_intervalo: .word 0
limite_max_intervalo: .word 20
jogador_1_palpite: .word 0
jogador_2_palpite: .word 0

# Strings
newline: .asciiz "\n"
msg_titulo_jogo: .asciiz "Advinhe o numero aleatorio entre 0 e 20!\n"
prompt_jogador_1: .asciiz "Jogador 1, digite um palpite:\n"
prompt_jogador_2: .asciiz "Jogador 2, digite um palpite:\n"
msg_vitoria_jogador_1: .asciiz "Parabéns, Jogador 1! Você venceu!"
msg_vitoria_jogador_2: .asciiz "Parabéns, Jogador 2! Você venceu!"
msg_intervalo_invalido: .asciiz "Você só vai acertar se respeitar o intervalo (0 a 20)!\n"

.text
main:
Expand All @@ -23,8 +26,8 @@ main:
syscall
sw $a0, numero_aleatorio # salva o número aleatório
# li $v0, 1 # syscall 1: imprime inteiro
lw $a0, numero_aleatorio
syscall # imprime o número aleatório
# lw $a0, numero_aleatorio
# syscall # imprime o número aleatório

loop:
# Loop do jogador 1
Expand All @@ -37,6 +40,7 @@ loop:
jal receber_palpite_jogador_2
lw $t1, jogador_2_palpite
lw $t3, numero_aleatorio
beq $t1, $t3, jogador_2_vitoria
# IMPRIME O PALPITE DO PLAYER 2 E O NUMERO ALEATORIO
# li $v0, 1 # syscall para imprimir inteiro
Expand All @@ -46,8 +50,6 @@ loop:
# lw $a0, numero_aleatorio
# syscall

beq $t1, $t3, jogador_2_vitoria

j loop

receber_palpite_jogador_1:
Expand All @@ -58,6 +60,19 @@ receber_palpite_jogador_1:
li $v0, 5
syscall
sw $v0, jogador_1_palpite #guarda o palpite do jogador 1 em $v0

lw $t0, jogador_1_palpite

lw $t1, limite_max_intervalo
lw $t3, limite_min_intervalo

slt $t2, $t1, $t0
slt $t4, $t0, $t3
or $t5, $t2, $t4
beq $t5, 1, avisar_intervalo

jr $ra

receber_palpite_jogador_2:
Expand All @@ -68,6 +83,20 @@ receber_palpite_jogador_2:
li $v0, 5 # syscall para receber input
syscall
sw $v0, jogador_2_palpite # guarda o palpite do jogador 2 em $v0
lw $t0, jogador_2_palpite
li $t1, 20

# slt $t2, $t0, $t1
slt $t2, $t1, $t0
li $t3, 0

slt $t4, $t0, $t3
or $t5, $t2, $t4

beq $t5, 1, avisar_intervalo

jr $ra

jogador_1_vitoria:
Expand All @@ -82,6 +111,13 @@ jogador_2_vitoria:
syscall
j finalizar

avisar_intervalo:
li $v0, 4
la $a0, msg_intervalo_invalido
syscall

jr $ra

finalizar:
li $v0, 10 # Finalizar o programa
syscall

0 comments on commit cbe6caf

Please sign in to comment.