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
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.
Stap 2. Maak 'n nuwe lêer oop in 'n teksredakteur of u Python IDE
Gee dit 'n beskrywende naam wat eindig met.py.
Stap 3. Voer die ewekansige biblioteek in
U sal dit nodig hê om die moontlike antwoorde lukraak te rangskik.
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
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 "])]
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
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)
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:
Stap 9. Stel elke vraag in
Na die lusuitdrukking, skryf die reël:
druk (qaItem.question)
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
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 ()
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 ("")
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.")
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. ")
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.