Hoe je je eigen adventure-game in Python codeert
HoeHoe je je eigen adventure-game in Python codeert
De Raspberry Pi is een prachtig stuk technologie, maar veel mensen gebruiken het niet ten volle. Met je Raspberry Pi kun je alles maken wat je wilt: een robot die zijn omgeving detecteert, een mediacentrum om films te kijken of een wereld van fantasie en avontuur, gemaakt op basis van enkele eenvoudige coderegels en veel verbeeldingskracht van jezelf.
In de jaren tachtig stonden computergraphics nog in de kinderschoenen, met blokachtige gamekarakters en een beperkt kleurenpalet om mee te werken. Het was heel normaal dat avontuur- en rollenspellen volledig op tekst waren gebaseerd, waarbij de speler zijn verbeeldingskracht gebruikte om visies op de spelwereld te creëren..
Games zoals Zork hebben rijke werelden gecreëerd met boeiende verhalen en personages, maar met weinig grafische afbeeldingen om de omgevingen te illustreren. Dit bleef het geval tot de late jaren 1980 en vroege jaren 90, en veranderde alleen als gevolg van een fantastisch werk van LucasArts, dat een verzameling klassieke grafische avontuurgames zoals Loom, Monkey Island en Full Throttle creëerde..
- Bekijk onze verzameling fantastische Raspberry Pi-projecten
Voor deze tutorial zullen we onze Raspberry Pi en een programmeertaal genaamd Python gebruiken om ons eigen tekstavontuur te creëren, met onze eigen spelwereld en een aantal personages om die wereld te bevolken. En dit alles zal worden gemaakt met behulp van een Python-code en een paar programmeerconcepten.
Python is een gemakkelijk te leren programmeertaal, die een favoriet is geworden voor gebruikers van Raspberry Pi en scholen in het VK.
Dus wat is Python?
Python is een tekstuele programmeertaal, en daarmee bedoelen we dat het in een editor is ingetypt. Python maakt gebruik van een zeer vergevingsgezinde syntaxis en is heel gemakkelijk te lezen, waardoor leren een echt plezierige ervaring wordt.
Op de Raspberry Pi hebben we al een geweldige code-editor geïnstalleerd, dit heet IDLE en we zullen het gebruiken om onze game te bouwen. U vindt een link naar IDLE op de Raspberry Pi-desktop.
Python wordt vooraf geïnstalleerd op elke Raspberry Pi die het Raspbian-besturingssysteem gebruikt. Als je Raspbian niet op je Pi hebt geïnstalleerd, kun je een kopie van de Raspberry Pi-website halen.
Het maakt deel uit van het eenvoudig te gebruiken NOOBS-archief (New Out Of the Box Software), dat kan worden gedownload en vervolgens kan worden uitgepakt naar een lege SD-kaart van 4 GB (of groter).
Momenteel zijn er twee versies van Python beschikbaar: versie 2.7 en 3. Voor deze zelfstudie gebruiken we 2.7, omdat deze de meeste ondersteuning en documentatie biedt. Python 3 is een uitstekende taal om te leren en het is zeker de toekomst van de taal, maar het is momenteel in een staat van verandering en mag alleen worden gebruikt door ervaren Python-programmeurs.
Een verhaal maken
Ons spel heeft twee dingen nodig: een verhaal om de speler te vermaken en logica om te bepalen hoe het verhaal zich ontvouwt. Voor ons verhaal creëren we de wereld van Narule, waar magie en avontuur om elke hoek zijn. En we creëren een held - jij - die het land moet reizen, nieuwe dorpen en nederzettingen moet bezoeken en met mensen moet praten om meer te leren over dit land en de duistere schaduw die erop is geworpen.
Om ons project te starten, hebben we een verhaal voor u opgesteld om verder uit te werken. Voel je vrij om het verhaal je eigen te maken - dat is het hele punt van deze tutorial. Dit is jouw spel. Om u op weg te helpen, hebben we een code gemaakt om als startersjabloon op te treden. U kunt hier een gratis exemplaar downloaden.
Download de code en open deze met IDLE ('Bestand> Openen' en navigeer naar waar je de code hebt gedownload). Bekijk nu de code en let in het bijzonder op regels die beginnen met een #, omdat dit opmerkingen zijn in de code die zijn toegevoegd om u te helpen begrijpen wat de code op dat moment doet.
Op dit moment heeft onze code een basisverhaal voor ons om verder uit te werken, en dat zullen we doen in de loop van deze tutorial. Ons verhaal ontvouwt zich via tekstblokken die ons verhaal vormen, en je zult zien dat elk blok er ongeveer zo uitziet:
chapter1 = "Het was een koude nacht en de regen kwam naar binnen
het westen met een wreedheid alleen bekend bij de goden "
Dit worden variabelen genoemd en ze stellen ons in staat veel tekst of getallen op te slaan. We gebruiken ze om ons verhaal te bevatten en als we ze dan willen gebruiken, gebruiken we de afdrukfunctie als volgt:
print hoofdstuk1
De afdrukfunctie kijkt in de variabele en drukt de inhoud ervan af op het scherm, wat erg handig is en betekent dat we het verhaal maar één keer hoeven te schrijven en dat we het zo vaak opnieuw kunnen gebruiken als we willen.
Vorige pagina 1 van 15 Volgende Vorige pagina 1 van 15 VolgendeBegrippen programmeren
Python is echt een geweldige taal om te leren, omdat het heel gemakkelijk te begrijpen is, en als je eenmaal de concepten van programmeerlogica beheerst met Python, ben je goed op weg om grotere applicaties te ontwikkelen.
Ongeacht de taal die u gebruikt, de onderliggende concepten van codering bieden een stevige basis die in vele talen kan worden gebruikt. De belangrijkste concepten zijn:
Sequenties
Een reeks taken moet in een bepaalde volgorde worden voltooid. Bijvoorbeeld de stappen die nodig zijn om een doolhof op te lossen.
Loops
Een manier om een reeks te herhalen. Kan voor altijd (terwijl True) worden uitgevoerd of worden beheerd met behulp van een for-statement (voor x binnen het bereik (0,3)).
Parallelism
Meerdere codes tegelijk uitvoeren.
Evenementen
Een gebeurtenis is een trigger die een reeks codes start en de meest zichtbare gebeurtenis in de game die we maken is het invoeren van de naam van onze held om het spel te starten.
Gegevens
We gebruiken een variabele om de waarde van de naam van onze held op te slaan, en dan kunnen we de variabele later ophalen en manipuleren om de naam van de speler gedurende het spel te tonen, waardoor de spelervaring wordt gepersonaliseerd.
Voorwaardelijke
Voorwaardelijke voorwaarden vormen de basis van onze logica en ze bieden ons een methode om gegevens te vergelijken met de invoer van de speler. We gebruikten conditionals in onze game om het antwoord op het verwachte antwoord te vergelijken. Als ze overeenkwamen, zou dit in Booleaanse logica als TRUE worden geclassificeerd.
operators
Dit zijn de elementaire wiskundige regels die we op school hebben geleerd. We kunnen operatoren op tekst en cijfers toepassen, wat ons in staat stelt om berekeningen in onze code uit te voeren en indien nodig gegevens te herhalen.
Vorige Pagina 2 van 15 Volgende Vorige Pagina 2 van 15 Volgende1. Speel het spel
IDLE heeft twee vensters om mee te werken: de editor met onze code en een shell waarin onze game wordt gespeeld. Om de game te starten, klik je in de editor op 'Uitvoeren' en vervolgens op 'Uitvoeringsmodule'.
Het shell-venster verschijnt voor elk ander venster en ons spel begint te spelen.
Vorige pagina 3 van 15 Volgende Vorige pagina 3 van 15 Volgende2. Importeer modules
Modules die door andere coders zijn gemaakt, kunnen in uw code worden geïmporteerd. We importeren twee modules: Willekeurig, die code bevat waarmee we willekeurige keuzes voor ons personage kunnen gebruiken; en Tijd, waardoor we met de tijd kunnen werken en het spel kunnen pauzeren.
Vorige pagina 4 van 15 Volgende Vorige pagina 4 van 15 Volgende3. Creëer functies
Je kunt veel code groeperen in een functie. Om er een te maken, gebruiken we de naam def (): - hiermee wordt een functie met de naam naam gemaakt, en we kunnen de functie noemen wat we willen.
We drukken op [Enter] en Python laat onze code inspringen met vier spaties en wacht op de code die in deze functie moet worden uitgevoerd.
Vorige pagina 5 van 15 Volgende Vorige pagina 5 van 15 Volgende4. Gebruik variabelen
We gebruiken variabelen om informatie op te slaan die we later kunnen gebruiken. We slaan bijvoorbeeld ons verhaal op en gebruiken het vaak opnieuw. Denk aan variabelen als lege vakken - we kunnen er alles in stoppen en hun naam op de zijkant schrijven.
U zult zien dat de term 'globaal' wordt gebruikt met enkele variabelenamen; dit stelt ons in staat ze zowel binnen als buiten functies te gebruiken.
Vorige pagina 6 van 15 Volgende Vorige pagina 6 van 15 Volgende5. Krijg input
Raw-invoer is de Python-manier om te vragen om invoer van de speler. We gebruiken het om de naam van de speler vast te leggen en om beslissingen te nemen in het spel.
Raw-invoer vangt toetsenbordinvoer op als een reeks tekst, dus alle vastgelegde getallen moeten worden geconverteerd naar een geheel getal of zwevend, en dit kan worden gedaan met behulp van de helper-functies int () en float ().
Vorige pagina 7 van 15 Volgende Vorige pagina 7 van 15 Volgende6. Maak keuzes
Voorwaardelijke uitspraken zijn logische keuzes; we gebruiken ze om de stroom van het spel te regelen, bijvoorbeeld welke kant je opgaat?
We slaan de richting op die de speler wenst te gaan als een variabele genaamd move en vergelijken dan de waarde die is opgeslagen in de variabele met de sleutel die we de gebruiker hebben gevraagd te drukken. Als de twee overeenkomen, wordt de bijbehorende code uitgevoerd.
Vorige Pagina 8 van 15 Volgende Vorige Pagina 8 van 15 Volgende7. Anders en anders indien
Als ... elif ... anders zijn verdere voorwaardelijke verklaringen en ze werken als volgt: de eerste voorwaarde wordt bekeken en als dat juist is (of waar in Python), wordt de code onder deze voorwaarde uitgevoerd. Anders als (elif) deze voorwaarde waar is, wordt de code uitgevoerd voor deze verklaring.
Anders zijn alle bovenstaande voorwaarden onwaar, dan moet dit waar zijn, dus deze code wordt uitgevoerd.
Vorige Pagina 9 van 15 Volgende Vorige Pagina 9 van 15 Volgende8. Gebruik lijsten
Lijsten zijn grote containers die veel gegevens kunnen bevatten. Zie ze als een archiefkast vol documenten. In onze game gebruikten we een lijst om onze voorraad items op te slaan (ons zwaard en schild).
We maken eerst een lege lijst door gebruik te maken van:
"wapens = []"
Net als variabelen kunnen we onze lijst elke gewenste naam geven. Om aan onze lijst toe te voegen, gebruiken wij:
weapons.append ( "zwaard")
Vorige pagina 10 van 15 Volgende Vorige pagina 10 van 15 Volgende9. Kies een nummer
Willekeurige nummers helpen onze held volledig uniek te zijn. Om deze nummers willekeurig te selecteren, gebruiken we de willekeurige module, in het bijzonder een functie genaamd randint, of een willekeurig geheel getal.
Om randint te gebruiken, moeten we vertellen met welk bereik nummers we werken, en dit gaat als volgt:
randint (5,20)
Dit creëert een bereik tussen 5 en 20 en vraagt aan randint om een willekeurig getal in dat bereik te kiezen.
Vorige pagina 11 van 15 Volgende Vorige pagina 11 van 15 Volgende10. Introduceer mensen
Ons spel heeft interessante mensen nodig om mee te praten, dus laten we er een maken. Je ziet op regel 57 van de code dat we een nieuwe functie hebben die een willekeurige dorpeling behandelt.
Hun naam is willekeurig en wordt gekozen uit een lijst, maar eerst schudden we de lijst en selecteer vervolgens het eerste item uit de lijst, in Python is altijd 0 (nul) of npcnamechoice [0].
Vorige pagina 12 van 15 Volgende Vorige pagina 12 van 15 Volgende11. Breid het verhaal uit
Het toevoegen van nieuwe content aan je game is eenvoudig. Als je nieuwe personages of dorpelingen wilt toevoegen, is de beste manier om een nieuwe functie te maken. Op die manier bevat de code voor elk nieuw item een eigen functie, maar deze kan eenvoudig in je spel worden gebruikt.
Uw verhaal moet deze functies samenvoegen en een lineair verhaal bieden voor de speler die moet volgen.
Vorige pagina 13 van 15 Volgende Vorige pagina 13 van 15 Volgende12. Kies een gevecht
Hoe zit het met de strijd? Vijanden kunnen op dezelfde manier worden gemaakt als dorpelingen, maar misschien wil je ze willekeurig toegewezen gezondheids- en magische punten geven (HP en MP in adventure speak), net zoals je je held hebt gegeven.
Maak een nieuwe functie die een vijand bevat en plaats deze op een ingesteld punt in uw code, en test vervolgens uw code.
Vorige pagina 14 van 15 Volgende Vorige pagina 14 van 15 Volgende13. Neem deel aan strings en cijfers
Wanneer u met tekst werkt of, in Python spreekt, tekenreeksen, willen we misschien samen een reeks en een nummer samenvoegen. Als we het op deze manier proberen te doen:
print "Hallo" + 1
Python produceert een foutmelding dat de twee niet kunnen worden samengevoegd. Maar als we het gehele getal in een helperfunctie wikkelen die str () wordt genoemd, kunnen we ze als volgt samenvoegen:
print "Hallo" + str (1)
- Genoten van dit artikel? Breid uw kennis van Linux uit, haal meer uit uw code en ontdek de nieuwste open source-ontwikkelingen binnen Linux Format. Lees vandaag nog onze sampler en profiteer van de aanbieding binnen.