Hoe om 'n vasvra -speletjie in Python te maak (met foto's)

INHOUDSOPGAWE:

Hoe om 'n vasvra -speletjie in Python te maak (met foto's)
Hoe om 'n vasvra -speletjie in Python te maak (met foto's)

Video: Hoe om 'n vasvra -speletjie in Python te maak (met foto's)

Video: Hoe om 'n vasvra -speletjie in Python te maak (met foto's)
Video: Countdown timer program in Python ⌛ 2024, Mei
Anonim

As u Python wil leer, is dit goed om met eenvoudige teksgebaseerde speletjies te begin. Hierdie artikel sal u wys hoe u 'n vasvra -speletjie kan maak.

Stappe

947361 1
947361 1

Stap 1. Installeer Python as u dit nog nie gedoen het nie

Daar is twee hoofweergawes van Python: Python 2 en Python 3. Dit is nie uitruilbaar nie en ondersteuning vir Python 2 eindig in 2020, dus in hierdie artikel word aanvaar dat u Python 3 installeer.

947361 2
947361 2

Stap 2. Maak 'n nuwe lêer oop in 'n teksredakteur of u Python IDE

Gee dit 'n beskrywende naam wat eindig met.py.

947361 3
947361 3

Stap 3. Voer die ewekansige biblioteek in

U sal dit nodig hê om die moontlike antwoorde lukraak te rangskik.

947361 4
947361 4

Stap 4. Definieer 'n klas "QA"

'N "QA" sal bestaan uit 'n vraag en 'n korrekte antwoord, en 'n lys van moontlike ander antwoorde. Die funksie _init _ () word genoem wanneer u 'n nuwe QA -voorwerp met die funksie QA () skep, terwyl die argumente daarvan na die ooreenstemmende kenmerk oorgedra word. Tipe:

klas QA: def _init _ (self, vraag, correctAnswer, otherAnswers): self.question = vraag self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers

947361 5
947361 5

Stap 5. Maak 'n lys QA's

Dink aan 'n paar vrae met een regte en 'n paar verkeerde antwoorde. Skep QA -voorwerpe uit elkeen en plaas dit in 'n lys. Aangesien die lys redelik lank sal wees, kan u dit oor verskeie lyne breek vir 'n beter leesbaarheid. Dit alles word gedoen met die volgende kode (u teks kan anders wees):

qaList = [QA ("Waar is Minsk?", "in Wit -Rusland", ["in Rusland", "so 'n stad bestaan nie"]), QA ("Wat is die hoofstad van Australië?", "Canberra", ["Sydney", "New York", "Australië bestaan nie"]), QA ("Watter van die volgende is nie op aarde nie?", "See van rustigheid", ["Middellandse See", "Baltiese See "," Noordsee "]), QA (" Watter van die volgende is nie 'n kontinent nie? "," Arctica ", [" Antarktika "," Amerika "]), QA (" Watter van die volgende is nie 'n Afrika -land nie? ? "," Maleisië ", [" Madagaskar "," Djiboeti "," Suid -Afrika "," Zimbabwe "])]

947361 6
947361 6

Stap 6. Voeg 'n veranderlike by wat tel hoeveel antwoorde korrek was

Stel dit in die begin op nul. Voeg die reël by:

corrCount = 0

947361 7
947361 7

Stap 7. Skommel die QA -lys

Dit laat u vrae in 'n ewekansige volgorde verskyn. Dit word gedoen met die volgende funksie:

random.shuffle (qaList)

947361 8
947361 8

Stap 8. Maak 'n lus

Die program moet oor elke item in die lys gaan en iets daarmee doen. Skep so 'n lus met hierdie uitdrukking:

vir qaItem in qaList:

947361 9
947361 9

Stap 9. Stel elke vraag in

Na die lusuitdrukking, skryf die reël:

druk (qaItem.question)

947361 10
947361 10

Stap 10. Gee alle moontlike antwoorde

Hulle moet in willekeurige volgorde verskyn, sodat die korrekte antwoord nie altyd op dieselfde posisie is nie. Hulle moet ook voorafgegaan word deur 'n nommer sodat die gebruiker nie weer die volledige antwoord hoef in te voer nie. Die volgende kode doen dit:

print ("Moontlike antwoorde is:") moontlik = qaItem.otherAnsw + [qaItem.corrAnsw] # vierkantige hakies verander die korrekte antwoord in die lys om aan te sluit met ander lys random.shuffle (possible) count = 0 # lysindekse begin by 0 in luislang terwyl telling <len (moontlik): druk (str (telling + 1) + ":" + moontlik [telling]) telling + = 1

947361 11
947361 11

Stap 11. Neem die insette van die gebruiker in

Sê eers vir die gebruiker dat hulle die nommer van hul moet invoer. Kontroleer dan of dit wat die gebruiker ingevoer het, werklik 'n nommer is wat ooreenstem met 'n antwoord. As dit nie die geval is nie, vertel die gebruiker weer. Gebruik hierdie kode (buite die while -lus wat u vir die uitvoer gemaak het):

print ("Voer asseblief die nommer van u antwoord in:") userAnsw = input () terwyl dit nie userAnsw.isdigit () is: print ("Dit was nie 'n nommer nie. Voer die nommer van u antwoord in:") userAnsw = input () userAnsw = int (userAnsw) terwyl nie (userAnsw> 0 en userAnsw <= len (moontlik)): print ("Die getal stem nie ooreen met enige antwoord nie. Voer die nommer van u antwoord in:") userAnsw = input ()

947361 12
947361 12

Stap 12. Kontroleer of die gebruiker se antwoord korrek was

Om dit te doen, kry die teks van die antwoord waarvoor die gebruiker 'n nommer ingevoer het en vergelyk dit met die teks van die korrekte antwoord. As dit dieselfde is, was die gebruiker se antwoord korrek en moet die veranderlike corrCount met 1. verhoog word. Anders is dit verkeerd en moet die gebruiker die regte antwoord gegee word. Druk laastens 'n leë reël om ruimte by die volgende vraag te voeg. Voer die volgende kode in:

indien moontlik [userAnsw-1] == qaItem.corrAnsw: print ("Jou antwoord was korrek.") corrCount + = 1 anders: print ("Jou antwoord was verkeerd.") print ("Korrekte antwoord was:" + qaItem. corrAnsw) print ("")

947361 13
947361 13

Stap 13. Stel 'n gevolgtrekking uit

Uiteindelik wil die gebruiker waarskynlik weet hoeveel vrae hy reg gekry het. Vertel hulle dus deur die volgende uitdrukking buite die voorlus te voeg:

print ("U het" + str (corrCount) + "van" + str (len (qaList)) + "vrae korrek beantwoord.")

947361 14
947361 14

Stap 14. Gaan u kode na

Gee spesiale aandag aan die inkeping. U volledige kode behoort nou so te lyk:

invoer ewekansige klas QA: def _init _ (self, vraag, correctAnswer, otherAnswers): self.question = vraag self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers qaList = [QA ("Waar is Minsk?", "in Wit -Rusland", ["in Rusland", "so 'n stad bestaan nie"]), QA ("Wat is die hoofstad van Australië?", "Canberra", ["Sydney", "New York", "Australië bestaan nie"]), QA ("Watter van die volgende is nie op aarde nie?", "See van rustigheid", ["Middellandse See", "Baltiese See", "Noordsee"]), QA ("Watter van die volgende is nie 'n vasteland? "," Arctica ", [" Antarctica "," America "]), QA (" Watter van die volgende is nie 'n Afrika -land nie? "," Maleisië ", [" Madagaskar "," Djibouti "," Suid Afrika "," Zimbabwe "])] corrCount = 0 random.shuffle (qaList) vir qaItem in qaList: print (qaItem.question) print (" Moontlike antwoorde is: ") moontlik = qaItem.otherAnsw + [qaItem.corrAnsw] # vierkantige hakies verander die korrekte antwoord in die lys om aan te sluit met 'n ander lys random.shuffle (possible) count = 0 # lysindekse begin by 0 i n luislang terwyl telling <len (moontlik): print (str (telling + 1) + ":" + moontlik [telling]) telling + = 1 druk ("Voer die nommer van u antwoord in:") userAnsw = input () terwyl dit nie userAnsw.isdigit () is: print ("Dit was nie 'n nommer nie. Voer die nommer van u antwoord in: ") userAnsw = input () userAnsw = int (userAnsw) terwyl nie (userAnsw> 0 en userAnsw <= len (moontlik)): print (" Die getal stem nie ooreen met enige antwoord nie. Voer die nommer van u antwoord in: ") userAnsw = input () indien moontlik [userAnsw-1] == qaItem.corrAnsw: print (" Jou antwoord was korrek. ") CorrCount += 1 anders: print (" Jou antwoord was verkeerd. ") druk (" Korrekte antwoord was: " + qaItem.corrAnsw) druk (" ") druk (" U het " + str (corrCount) +" van " + str (len (qaList)) +" vrae korrek beantwoord. ")

947361 15
947361 15

Stap 15. Begin die kode

As u 'n IDE gebruik, klik dan op die "Run" -simbool of menu -item. As u 'n teksredakteur gebruik, stoor u program, sluit die redakteur en maak u program oop met Python.

Wenke

  • Pasop vir die korrekte inkeping. Kode in 'n funksie of klasdefinisie word ingekeep, net soos kode in 'n lus. 'N Python -program met verkeerde inspringing werk nie.
  • Druk Ctrl+C as u die spel wil onderbreek en nie wil voltooi nie.
  • As u elke oproep van input () vervang met 'n oproep van raw_input (), werk hierdie program in Python 2, maar werk nie meer in Python 3 nie.

Aanbeveel: