Diferència entre revisions de la pàgina «ASIX-M3-UF2-Banc de Solucions»

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 21: Línia 21:
  
 
<source lang=python>
 
<source lang=python>
 +
from random import randint
 +
from time import sleep
  
 +
# Explicaciíó del joc
 +
def mostrarIntroduccio():
 +
    print ( "Et trobes en terres desconegudes habitades per dracs.")
 +
    print ( "Arribes davant de dues coves. En una viu, un drac generós i")
 +
    print ( "amigable i compartirà el seu tresor amb tu. En L'altre hi viu un drac")
 +
    print ( "cobdiciós i afamat, i et devorarà immediatament.")
 +
 +
# Elecció de la cova per part del jugador
 +
def escollirCova():
 +
    cova = ''
 +
    while cova != '1' and cova != '2':
 +
        print('A quina cova vols accedir? (1 ó 2)')
 +
        cova = input()
 +
    return cova
 +
 +
# Es generà aleatoriament la cova on habiten els respectius dracs i el resultat és ...
 +
def explorarCova(covaEscollida):
 +
    print ( "T'aproximes a la cova ...")
 +
    sleep (2)
 +
    print ( "És fosca i esgarrifosa ...")
 +
    sleep (2)
 +
    print ( "Un gran drac apareix sobtadament davant teu! Obre la boca i ...")
 +
    print ()
 +
    sleep (2)
 +
    covaAmigable = randint(1, 2)
 +
    if covaEscollida == str(covaAmigable):
 +
        print("Et regala un tresor!")
 +
    else:
 +
        print("T'engulleix d'una queixelada!")
 +
 +
# Es demana al jugador si volo continuar jugant
 +
def jugar():
 +
    print ('Vols jugar de nou? (Sí o No)')
 +
    return input().lower().startswith('s')
 +
 +
# Programa principal
 +
fiJoc = False
 +
while not fiJoc:
 +
    mostrarIntroduccio()
 +
    numeroDeCova = escollirCova()
 +
    explorarCova(numeroDeCova)
 +
    jugarDeNuevo = jugar()
 
</source>
 
</source>
  

Revisió del 11:19, 2 gen 2021

1. Regne de Dracs

En aquest joc, el jugador es troba en una terra de dracs. Els dracs viuen en coves i hi ha de dos tipus: els bons que volen compartir els seus tesors amb tu i els dolents molt cobdiciosos i afamats que no dubtaran a menjar-se tot aquell que provi d'accedir a la seva cova. El jugador es troba davant de dues coves, en una el drac amigable i en l'altre el drac dolent. El jugador a d'escollir...

  • Mòduls a emprar:
from random import randint  # per distribuir els dracs en les coves aleatoriament
from time import sleep      # per fer més "emocionant" el final del joc
  • El programa principal podria ser semblant a:
# Programa principal 
fiJoc = False
while not fiJoc:
    mostrarIntroduccio()
    numeroDeCova = escollirCova()
    explorarCova(numeroDeCova)
    jugarDeNuevo = jugar()
from random import randint
from time import sleep

# Explicaciíó del joc
def mostrarIntroduccio():
    print ( "Et trobes en terres desconegudes habitades per dracs.")
    print ( "Arribes davant de dues coves. En una viu, un drac generós i")
    print ( "amigable i compartirà el seu tresor amb tu. En L'altre hi viu un drac")
    print ( "cobdiciós i afamat, i et devorarà immediatament.")

# Elecció de la cova per part del jugador
def escollirCova():
    cova = ''
    while cova != '1' and cova != '2':
        print('A quina cova vols accedir? (1 ó 2)')
        cova = input()
    return cova

# Es generà aleatoriament la cova on habiten els respectius dracs i el resultat és ...
def explorarCova(covaEscollida):
    print ( "T'aproximes a la cova ...")
    sleep (2)
    print ( "És fosca i esgarrifosa ...")
    sleep (2)
    print ( "Un gran drac apareix sobtadament davant teu! Obre la boca i ...")
    print ()
    sleep (2)
    covaAmigable = randint(1, 2)
    if covaEscollida == str(covaAmigable):
        print("Et regala un tresor!")
    else:
        print("T'engulleix d'una queixelada!")

# Es demana al jugador si volo continuar jugant
def jugar():
    print ('Vols jugar de nou? (Sí o No)')
    return input().lower().startswith('s')

# Programa principal 
fiJoc = False
while not fiJoc:
    mostrarIntroduccio()
    numeroDeCova = escollirCova()
    explorarCova(numeroDeCova)
    jugarDeNuevo = jugar()

2. Construir un Quadrat màgic. Un quadrat màgic és una matriu quadrada (mateix nombre de files que de columnes), amb un nombre senar de files i columnes on la suma dels elements de totes les seves files i les seves columnes i les dues diagonals val igual. En aquest quadrat no hi ha cap número repetit, i els números que hi ha d'haver han d'anar des de 1 fins a n2 on n és el numero de files i columnes.

Com construir-lo?

  • El numero 1 el situarem en el quadrat superior al central (per exemple, per n=5, el quadrat central és (2,2) i el que està per sobre seu el (1,2).
  • El següent número el situarem un quadrat a la dreta i un per sobre. Si un numero està a la posició (i,j), el següent el situarem en (i-1,j+1).
  • Si resulta que al fer el moviment sortim per la dreta, entendrem que automàticament entrarem per l'esquerra, és a dir, és com si la matriu estigués enganxada la part esquerra amb la part dreta. El mateix passa amb dalt i baix. Si sortim per dalt, entrem per baix.
  • A més ens podem trobar que la posició on toca anar un número ja es troba ocupada. Llavors el que farem és tornar a la posició on estàvem i fer el moviment que puja dos posicions (i-2, j ).
  • Un exemple de quadrat màgic per a N=5 seria:
      23  6 19  2 15
      10 18  1 14 22
      17  5 13 21  9
       4 12 25  8 16
      11 24  7 20  3
  • El programa tindrà les següents funcions:
llegirDimensio: Li demanem a l’usuari que ens indiqui la mida N de la matriu. Si el valor és correcte, la funció el retorna.
inicialitzarQuadrat: Simplement posem tots els valors a 0
calculaPosicioInicial: Segons la dimensió, calculem la primera posició
assignaValor: Posa un valor en una posició
calcularNovaPosicio: Retorna els valors de fila i columna vàlids per a col·locar el proper valor.
imprimirQuadrat: Treu per pantalla el quadrat màgic,
  • El programa serà semblant a aquest :
dim = llegirDimensio()
qm = inicialitzarQuadrat(dim)
pos = calculaPosicioInicial(dim)
limit = dim*dim;
for valor in range(1,limit+1):
   assignaValor(qm,pos,valor)
   pos = calcularNovaPosicio(qm, dim, pos) 
imprimirQuadrat(qm)