Projeto 2 - Mini-game com Turtle

Desafio proposto na aula 16 do módulo 3 do curso de Pythonista Autodidata.
mail@pastecode.io avatar
unknown
python
a month ago
4.5 kB
6
Indexable
Never
# Importando o módulo tartaruga
from turtle import Turtle

# Criando a tartaruga
mov = Turtle()

# Definindo a velocidade de movimentação
mov.speed(1)

print('=-=' * 30)
print('######## DESAFIO DO DESENHO COM MÓDULO TURTLE! ########'.center(80))
print('=-=' * 30)
print('-> Para mover para frente digite -> "F", para mover para trás digite-> "T"!')
print('-> Para indicar a distância informe um número inteiro que será medido em pixels!')
print('-> Para rotacionar, primeiro digite "S" para sim ou "N" para não!')
print('-> Caso for rotacionar, digite quantos grau informando um número inteiro!')
print('=-=' * 30)


while True:
    # Informe em qual direção ocorrerá a movimentação: para frente ou para trás!
    # Para isso deverá ser digitado F ou T, caso contrário ocorrerá uma validação!
    direcao = str(input('Deseja mover para frente ("F") ou para trás ("T")? ')).strip().upper()
    if direcao not in 'FT':
        print('ATENÇÃO! Digite "F" para mover para frente ou "T" para mover para trás!')
        direcao = str(input('Deseja mover para frente ("F") ou para trás ("T")? ')).strip().upper()
    
    distancia = int(input('Qual a distância em pixels a percorrer? '))

    # Caso o usuário deseje rotacionar deverá digitar "S" (sim), caso contrário "N" (não)
    # Perceba que na sequência será validado a digitação para então continuar!
    rotacionar = str(input('Rotacionar para esquerda ou direita? [S/N] ')).strip().upper()
    if rotacionar not in 'SN':
        print('ATENÇÃO! Digite "S" para sim e "N" para não!')
        rotacionar = str(input('Rotacionar para esquerda ou direita? [S/N] ')).strip().upper()
    
    # Se o usuário desejar rotacionar deverá ser informado quantos graus digitando um valor inteiro!
    if rotacionar == 'S':
        sentido = str(input('Deseja rotacionar para Direita "D" ou Esquerda "E"? [D/E] ')).strip().upper()
        if sentido not in 'DE':
            print('ATENÇÃO! Digite "D" para direita e "E" para esquerda!')
            sentido = str(input('Deseja rotacionar para Direita "D" ou Esquerda "E"? [D/E] ')).strip().upper()        
        graus = int(input('Digite quantos graus deverá rotacionar: '))

    if direcao == 'F' and rotacionar == 'S':
        if sentido == 'D':
            mov.right(graus)
            mov.forward(distancia)
        else:            
            mov.left(graus)
            mov.forward(distancia)
    elif direcao == 'F' and rotacionar == 'N':
        mov.forward(distancia)
    elif direcao == 'T' and rotacionar == 'S':
        if sentido == 'D':
            mov.right(graus)
            mov.backward(distancia)
        else:
            mov.left(graus)
            mov.backward(distancia)
    elif direcao == 'T' and rotacionar == 'N':
        mov.backward(distancia)
        
    # Informe 's' para sim, continuar ou 'n' para não continuar a movimentação!
    # O strip elimina possíveis espaços digitados e o Upper transforma a letra digita em maiúscula.
    continua = str(input('Digite "S" para continuar ou "N" para parar: ')).strip().upper()
    # Aqui acontece uma validação sobre o que fora digitado, se for algo diferente de "S" ou "N" será solicitado correção.
    if continua not in 'SN':
        print('ATENÇÃO! Digite "S" para "sim" continuar ou "N" para "não", então parar!')
        continua = str(input('Digite "S" para continuar ou "N" para parar: ')).strip().upper()

    # Caso o usuário informe "N", ou seja, que seja parar esse if é executado e acontece o break no while.
    if continua == 'N':
        break

print('=-=' * 30)
print('FIM DO JOGO... Volte Sempre!'.center(80))
print('=-=' * 30)

'''
    ##### DESAFIO 2 - DESENHANDO UM QUADRADO PASSANDO INSTRUÇÕES PARA A TURTLE! #####

    # Uma das possibilidades para conseguir fechar um quadrado é seguinte percurso:

    Obs. 1: vamos fixar a movimentação em 150 pixels, portanto sempre que perguntar a distância assuma 150 como valor!
    Obs. 2: Até fechar o quadrado sempre responda sim para a pergunta se deseja continuar!

     - Mova para frente 150px sem rotacionar;
     - Mova para frente 150px rotacionando para direita 90°;
     - Mova para frente 150px rotacionando para direita 90°;
     - Mova para frente 150px rotacionando para direita 90°;
     - Pronto pode clicar em "N" para não continuar, está fechado o quadrado!
'''
Leave a Comment