Galgje

Eindopdracht voor de VWO

Het is de bedoeling dat je het spel Hangman, oftewel Galgje ontwikkelt. Iedereen heeft wel eens hangman gespeeld, maar toch even de essentie van het spel: De speler van het spel moet een woord raden. Dat doet hij/zij door iedere keer een letter te noemen die hopelijk voorkomt in het geheime woord. Het spel blijft de speler om een letter vragen totdat de speler weet wat het woord is. Een verloop van het programma zou er als volgt uit kunnen zien (we gaan ervan uit dat het geheime woord banaan is:

 Welkom bij
   ___    __    __    ___   ____  ____ 
  / __)  /__\  (  )  / __) (_  _)( ___)
 ( (_-. /(__)\  )(__( (_-..-_)(   )__) 
  \___/(__)(__)(____)\___/\____) (____)
 
 Kies een letter of kies ? om het geheime woord te raden: a
 Je hebt de volgende letters goed geraden:  a
 Kies een letter of kies ? om het geheime woord te raden: w
 _________
 |/ 
 |
 |
 |
 |
 |
 |___
 
 Je hebt de volgende letters goed geraden:  a
 Kies een letter of kies ? om het geheime woord te raden: n
 Je hebt de volgende letters goed geraden:  an
 Kies een letter of kies ? om het geheime woord te raden: ?
 Je wilt een poging doen?
 Raad het geheime woord:banaan
 Heel goed! Je hebt gewonnen!

Zoals je hierboven ziet mag een speler steeds een letter raden van het geheime woord. Als de letter in het woord zit dan wordt dat aangegeven en anders wordt er stap voor stap een galgje opgebouwd. Als de speler weet om welk woord het gaat, dan kan hij/zij i.p.v. een letter het vraagteken invoeren. Dan mag je namelijk het woord raden. Als je na 5 mislukte pogingen nog steeds het woord niet weet, dan hang je. Dat ziet er als volgt uit: (het onderstaande is na 5 mislukte pogingen)

 Kies een letter of kies ? om het geheime woord te raden: y
 _________
 |/       |
 |       ( )
 |       /|\
 |       / \
 |
 |
 |___
 Game over
 Het juiste woord was:  banaan

Het spel moet aan de volgende eisen voldoen:

  • Je mag precies 1 karakter invoeren of een vraagteken. Als iemand 2 karakters invoert, dan moet het programma een foutmelding geven. Zie:

  • Kiest de speler een letter dat hij al eerder had gekozen, dan telt dat niet mee en dan krijg je een foutmelding. Zie:

  • Bij elke mislukte poging wordt het galgje steeds verder opgebouwd. Na 5 mislukte pogingen is het “Game over” en hang je helemaal. Ook wordt het geheime woord nog even getoond.

  • De letters die de speler goed heeft geraden geef je steeds weer. Dat hoeft niet in de juiste volgorde. Zie:

  • Als de speler alle letters al heeft geraden, dan krijgt hij de mogelijkheid om het hele woord te raden. Zie:

  • De speler mag aan het begin van het spel het geheime woord opgeven;

  • Het programma houdt bij na hoeveel keer het woord is geraden (of juist niet);

  • De speler mag geen getallen of andere tekens invoeren. Zo ja, dan krijg je een foutmelding;

  • Als de speler QQ intypt, dan eindigt het spel sowieso.

Extra opdrachten voor leerlingen die extra uitdaging op prijs stellen

  • Voeg een puntentellingssysteem aan het spel. Hoe sneller je het woord raadt, hoe hoger je score! (TIP: gebruik hier import time voor). Voeg ook een highscorelist toe aan het spel.

  • Op het scherm verschijnen evenveel streepjes als dat er letters in het woord zijn. De gebruiker typt een letter. Als de letter voorkomt, verschijnt deze op de stippen waar het voorkomt;

  • Het programma moet het bestand <woordenlijst> in kunnen lezen om daar willekeurig een woord uit te kiezen. Dit ‘geheime’ woord moet dan worden geraden;

  • In het programma moet het mogelijk zijn om deze woordenlijst aan te passen; d.w.z.: je moet woorden kunnen toevoegen aan de woordenlijst;

  • Zet de woorden in een database zoals SQLite. Zie hiervoor: http://zetcode.com/db/sqlitepythontutorial/

  • Met python kun je ook een spel met een echte gebruikersinterface maken. Een GUI dus. Maak Hangman met een echte GUI. Zie hiervoor: http://www.techrepublic.com/article/a-quickstart-to-building-gui-based-applications-in-python/6310615

  • Vrije invulling. Bespreek je voorstel even met je docent.

Beoordelingscriteria

  • In hoeverre zijn alle eisen in het spel aanwezig

  • Goed gebruik van loops

  • Goed gebruik van if-elif-else constructies

  • Goed gebruik van variabelen en variabelenamen

  • Goed gebruik van functies? Maak je zelf ook functies waardoor de code wat georganiseerder en overzichtelijker wordt? Hoe noem je die functies?

  • Zet je genoeg commentaar in je code, zodat de code overzichtelijk is voor anderen?

  • Begrijp je het ook? Ik kan je vragen uit te leggen hoe het precies werkt, en welk onderdeel van het programma welke gevolgen heeft.

  • Er wordt niet alleen gekeken of het werkt, maar ook hoe je hebt geprogrammeerd. Bondig programmeren, als iets in twee regels kan en je hebt het in tien regels gedaan dan werkt dat niet in je voordeel.

  • Hoe ziet het er uit?

Last updated