This article has been localized into Dutch by the community.
In this article series, we're building a complete Snake game from scratch. It makes sense to start with the Introduction and then work your way through the articles one by one, to get the full understanding.
If you want to get the complete source code for the game at once, to get started modifying and learning from it right now, consider downloading all our samples!
Inleiding
Een korte samenvatting van dit artikel: we implementeren het klassieke spel "Snake" (Slang) in WPF. Het eindresultaat zal er ongeveer als volgt uitzien:
Het implementeren van computerspelletjes trekt vaak vooral jonge mensen aan om te leren programmeren. De eerste vraag is dan doorgaans: hoe start ik en wat heb ik nodig? Eerst en vooral heb je behoefte aan een programmeertaal zoals C#, C++ of een van de andere populaire talen; ben je reeds vlot in je voorkeurstaal, dan heb je eigenlijk niets anders nodig: start met de basis, voeg pixels toe aan het scherm en op zeker punt heb je waarschijnlijk een werkend spel.
De meesten onder ons verkiezen echter een beetje hulp met het lagere niveau. Waarom pixels met de hand op een scherm plaatsen indien er reeds een bibliotheek of framework bestaat dat dit voor jou kan doen zodat je je kan toeleggen op het bouwen van een onderhoudend spel? Er bestaan veel frameworks die je hierbij kunnen helpen en een ervan is het WPF framework.
Toegegeven, WPF is niet de meest evidente keuze wanneer je een spel wil realiseren: als framework richt WPF zich vooral op het realiseren van het grafische aspect van zakelijke toepassingen. Toch bevat WPF heel wat elementen die van nut zijn bij het maken van een spel en, belangrijk, je beschikt over alle mechanismen om een venster in Windows te tekenen en te controleren.
Wanneer je een eenvoudig spel wil maken, kan WPF met andere woorden een uitstekende keuze zijn. WPF kan een grote hulp zijn bij de essentiële aspecten zoals het aanmaken van een venster, het tekenen van een speloppervlak, enzovoort. Indien je gevorderde 3D-graphics of snelbewegende objecten wil gebruiken, is het mogelijk dat je een andere bibliotheek of framework moet inzetten, maar voor een eenvoudig spel, bijvoorbeeld het klassieke Snake, kan WPF volstaan!
SnakeWPF
Om te bewijzen dat je met WPF een spel kan implementeren, besloot ik om een WPF-versie van de ultieme klassieker Snake te maken. De implementatie zal een gewoon WPF-venster gebruiken als speloppervlak, naast gewone WPF-elementen/-vormen om het spel te laten werken. De reden dat ik Snake koos, is omdat dit spel relatief eenvoudig te implementeren is (er moet weinig logica voorzien worden) en omdat het geïmplementeerd kan worden met eenvoudige geometrische figuren als vierkanten en cirkels, die heel makkelijk gebruikt kunnen worden in WPF. Bovendien blijft Snake een echt aangenaam spel, ondanks het feit dat het eenvoudig is!
Als je het spel Snake niet kent, ben je waarschijnlijk nooit eigenaar geweest van een Nokia tijdens de latere jaren 90 en de vroege jaren 2000. De eerste versie van Snake werd geschreven en getoond vele jaren daarvoor, maar het spel werd pas een echte hit toen Nokia besloot een eigen versie mee te leveren op alle draagbare telefoons van het merk.
De loop van het spel is even eenvoudig als plezant: je beweegt een virtuele slang in een bepaalde richting (links, rechts, naar boven, naar beneden) om te jagen op voedsel (soms een appel). Wanneer je slang de appel raakt, wordt de appel gegeten, groeit je slang en verschijnt een nieuwe appel op het scherm. Wanneer je de muren of de staart van je slang raakt, stopt het spel en moet je opnieuw beginnen. Des te meer appels je eet, des te hoger is je score, maar het wordt tegelijk moeilijker om je staart niet te raken.
Er zijn VEEL varianten op de loop van het spel: vaak neemt de snelheid waarmee de slang beweegt toe, telkens wanneer je een appel eet, wat het steeds moeilijker maakt; niet alle implementaties doen dit evenwel. Andere varianten betreffen de muren: sommige implementaties laten toe dat je door een muur gaat en opnieuw binnenkomt uit de overliggende zijde, terwijl andere het spel stoppen wanneer je een muur raakt.
In SnakeWPF zijn de muren solide (de slang sterft wanneer ze ertegen botst) en de snelheid waarmee de slang beweegt, neemt tot op een zeker punt exponentieel toe bij elke appel die je eet.
Samenvatting
In de volgende hoofdstukken implementeren we een leuke versie van het klassieke Snake spel met behulp van het WPF framework. We starten met de achtergrond in het volgende hoofdstuk en bij het einde zullen we ons eerste, volledig functionele WPF spel gerealiseerd hebben.
Merk op dat, terwijl dit slechts een inleiding tot WPF is, we meer dan voor een inleiding gebruikelijke C# code nodig hebben om onder andere de spellogica te implementeren.We zullen een poging ondernemen om de nodige uitleg te bieden naargelang we vorderen, maar wanneer je meer inzicht in C# nodig hebt, verlies dan niet uit het oog dat we een mooie en volledige C# toelichting bieden!