Se você quiser aprender Python, é bom começar com alguns jogos simples baseados em texto. Este artigo mostrará como fazer um jogo de perguntas e respostas.
Passos
- Instale o Python se ainda não o fez. Existem duas versões principais do Python: Python 2 e Python 3. Elas não são intercambiáveis e o suporte para Python 2 terminará em 2020, portanto, este artigo presumirá que você instale o Python 3.
- Abra um novo arquivo em um editor de texto ou em seu IDE Python. Dê a ele um nome descritivo que termine com .py.
- Importe a biblioteca aleatória. Você precisará dele para organizar aleatoriamente as respostas possíveis.
- Defina uma classe "QA". Um "QA" consistirá em uma pergunta e uma resposta correta, além de uma lista de outras respostas possíveis. A função __init__() será chamada sempre que você criar um novo objeto QA com a função QA(), com seus argumentos sendo passados para o atributo correspondente. Tipo: classe QA: def __init__(self, question, correctAnswer, otherAnswers): self.question = question self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers
- Crie uma lista de controles de qualidade. Pense em algumas perguntas com uma resposta certa e outra errada. Crie objetos de controle de qualidade de cada um e coloque-os em uma lista. Como a lista será bastante longa, você pode dividi-la em várias linhas para melhor legibilidade. Tudo isso é feito com o seguinte código (seu texto pode ser diferente): qaList = [QA("Onde fica Minsk?", "na Bielo-Rússia", ["na Rússia", "tal cidade não existe"]), QA("Qual é a capital da Austrália?", "Canberra", ["Sydney", "Nova York", "A Austrália não existe"]), QA("Qual dos seguintes não está na Terra?", "Mar da Tranquilidade", ["Mar Mediterrâneo", "Mar Báltico", "Mar do Norte"]), QA("Qual dos seguintes não é um continente?", "Ártica", ["Antártica", "América" ]), QA("Qual dos seguintes não é um país africano?", "Malásia", ["Madagascar", "Djibuti", "África do Sul", "Zimbábue"])]
- Adicione uma variável que conte quantas respostas estavam corretas. Defina-o como zero no início. Adicione a linha:corrCount = 0
- Embaralhe a lista de controle de qualidade. Isso fará com que suas perguntas apareçam em ordem aleatória. Isso é feito com a seguinte função:random.shuffle(qaList)
- Faça um loop. O programa deve examinar cada item da lista e fazer algo com ele. Crie um loop com esta expressão:for qaItem in qaList:
- Produza cada pergunta. Após a expressão do loop, escreva a linha: print(qaItem.question)
- Produza todas as respostas possíveis. Eles devem aparecer em ordem aleatória para que a resposta correta nem sempre esteja na mesma posição. Além disso, devem ser precedidos por um número para que o usuário não precise digitar a resposta inteira novamente. O código a seguir faz isso: print("As respostas possíveis são:") Possible = qaItem.otherAnsw + [qaItem.corrAnsw] # colchetes transformam a resposta correta em uma lista para concatenação com outra lista random.shuffle(possible) count = 0 # índices de lista comece em 0 em python enquanto contagem < len(possível): print(str(contagem+1) + ": " + possível[contagem]) contagem += 1
- Receba a entrada do usuário. Primeiro, diga ao usuário que ele deve inserir o seu número. Em seguida, verifique se o que o usuário digitou é realmente um número que corresponde a uma resposta. Se não estiver, informe o usuário novamente. Use este código (fora do loop while que você criou para a saída): print("Por favor, insira o número da sua resposta:") userAnsw = input() while not userAnsw.isdigit(): print("Isso não era um número . Por favor, insira o número da sua resposta:") userAnsw = input() userAnsw = int(userAnsw) while not (userAnsw > 0 and userAnsw <= len(possível)): print("Esse número não corresponde a nenhuma resposta . Por favor, insira o número da sua resposta:") userAnsw = input()
- Verifique se a resposta do usuário estava correta. Para isso, obtenha o texto da resposta para a qual o usuário digitou um número e compare-o com o texto da resposta correta. Se forem iguais, a resposta do usuário está correta e a variável corrCount deve ser aumentada em 1. Caso contrário, está errada e o usuário deve ser informado da resposta correta. Por fim, imprima uma linha vazia para adicionar espaço à próxima pergunta. Digite o seguinte código: if Possible[userAnsw-1] == qaItem.corrAnsw: print("Sua resposta estava correta.") corrCount += 1 else: print("Sua resposta estava errada.") print("A resposta correta foi : " + qaItem.corrAnsw) print("")
- Produza uma conclusão. No final, o usuário provavelmente quer saber quantas questões acertou. Então diga a eles adicionando a seguinte expressão fora do loop for: print("Você respondeu " + str(corrCount) + " de " + str(len(qaList)) + " perguntas corretamente.")
- Verifique seu código. Preste atenção especial ao recuo. Seu código completo deve ficar assim agora: import random class QA: def __init__(self, question, correctAnswer, otherAnswers): self.question = question self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers qaList = [QA("Onde está Minsk ?", "na Bielo-Rússia", ["na Rússia", "tal cidade não existe"]), QA("Qual é a capital da Austrália?", "Canberra", ["Sydney", "Nova York ", "A Austrália não existe"]), QA("Qual dos seguintes não está na Terra?", "Mar da Tranquilidade", ["Mar Mediterrâneo", "Mar Báltico", "Mar do Norte"]), QA("Qual dos seguintes não é um continente?", "Ártica", ["Antártica", "América"]), QA("Qual dos seguintes não é um país africano?", "Malásia", [" Madagascar", "Djibuti", "África do Sul", "Zimbábue"])] corrCount = 0 random.shuffle(qaList) for qaItem em qaList: print(qaItem.question) print("As respostas possíveis são:") Possible = qaItem .otherAnsw + [qaItem.corrAnsw] # colchetes transformam a resposta correta em lista para concatenar com outra lista random.shuffle(possível) count = 0 # índices de lista começam em 0 em python enquanto count < len(possível): print(str( count+1) + ": " + Possible[count]) count += 1 print("Por favor, insira o número da sua resposta:") userAnsw = input() while not userAnsw.isdigit(): print("Isso não foi um número. Por favor, insira o número da sua resposta:") userAnsw = input() userAnsw = int(userAnsw) while not (userAnsw > 0 and userAnsw <= len(possible)): print("Esse número não corresponde a nenhuma resposta. Por favor, insira o número da sua resposta:") userAnsw = input() se possível[userAnsw-1] == qaItem.corrAnsw: print("Sua resposta estava correta.") corrCount += 1 else: print("Sua resposta foi errado.") print("A resposta correta foi: " + qaItem.corrAnsw) print("") print("Você respondeu " + str(corrCount) + " de " + str(len(qaList)) + " perguntas corretamente. ")
- Execute o código. Se você estiver usando um IDE, clique no símbolo “Executar” ou no item de menu. Se você estiver usando um editor de texto, salve seu programa, feche o editor e abra seu programa com Python.