JorCademy Engine banner

Al jaren maakt JorCademy gebruik van de programmeertaal Python om het lesmateriaal te ondersteunen. We zijn ervan overtuigd dat Python een uiterst geschikte programmeertaal is voor beginnende programmeurs vanwege zijn gebruiksvriendelijkheid en eenvoud. Bij JorCademy geloven we ook sterk in visueel leren als de beste leermethode. Het stelt je niet alleen in staat om sneller verbanden te leggen, maar maakt het leren ook nog eens leuker. Daarom hebben we de JorCademy Engine ontwikkeld, een template waarmee je gemakkelijk objecten kunt tekenen en bewegen.

Zie voor een uitgebreidere beschrijving, die onder andere aangeeft welke functies de engine bevat, de documentatie van de JorCademy Engine.

Wat is JorCademy Engine precies?

JorCademy Engine is eenvoudigweg een Python-template dat wordt ondersteund door de Pygame-library. Pygame is een zeer populaire library voor het maken van games in Python. Echter, we merken dat de standaard Pygame-functies, zoals het tekenen van primitieve vormen zoals cirkels, nogal intimiderend kunnen zijn voor beginners. Hetzelfde geldt voor het opzetten van het scherm en het beheren van de game loop. In JorCademy Engine wordt deze complexiteit geabstraheerd. De ontwikkelaar hoeft zich alleen bezig te houden met de gameplaycode, waardoor het maken van games met Pygame een stuk eenvoudiger wordt.

Hieronder vind je een codefragment dat laat zien hoe je een rode cirkel in het midden van het scherm tekent.

from jorcademy import *

def setup() -> None:
	screen(800, 600)

def update() -> None:
	ellipse((255, 0, 0), 400, 300, 100, 100)

Downloaden van de software

Download Python

Eerst heb je een versie van Python nodig. Ga hiervoor naar python.org en download de laatste versie.

Download JorCademy Engine

Om de JorCademy Engine te kunnen gebruiken, moet je deze eerst downloaden naar je systeem. Ga hiervoor eerst naar de GitHub-repository van de engine. Klik vervolgens op de knop met de tekst “Code” en daarna op “Download ZIP”.

Downloaden JorCademy Engine

Vervolgens wordt het template in de vorm van een .zip-mapje geïnstalleerd naar jouw systeem. Kijk in de Downloads-folder en unzip de .zip-map naar een locatie naar keuze.

Download Visual Studio Code

Je hebt het template nu succesvol geïnstalleerd. Maar om het te gebruiken heb je nog een tekst editor nodig. Wij raden Visual Studio Code sterk aan, omdat de engine speciaal is ontwikkeld voor gebruik in Visual Studio Code.

Als Visual Studio Code is geïnstalleerd, kun je de engine alvast openen. Klik in het startscherm van Visual Studio Code op ‘Open’ en selecteer vervolgens de uitgepakte folder waarin de code van de engine is opgeslagen.

Open de engine in Visual Studio Code.

Als je de engine succesvol hebt geopend, kun je de bestanden van de engine zien, waaronder game.py.

Startscherm JorCademy Engine.

Download extensie(s)

We raden sterk aan om de Python-extensie in Visual Studio Code te installeren. Klik hiervoor op het blok-icoontje aan de linkerkant van de editor (derde van onderen). Zoek in de zoekbalk naar “Python” en klik op de bovenste optie. Klik vervolgens op “Install”. Het is wellicht nodig om de editor opnieuw te openen na de installatie van de extensie.

Download libraries

Om de engine te kunnen gebruiken, moet je de libraries installeren die de engine ondersteunen. Voor nu is dit nog alleen Pygame, maar dit zou in de toekomst nog kunnen veranderen. Klik in het menu (op Mac bovenin het scherm, op Windows bovenin de editor) op “Terminal” en vervolgens op “New terminal”. Je ziet als het goed is een nieuw venster verschijnen aan de onderkant van het scherm.

Om Pygame te installeren maken we gebruik van Python’s package manager: pip. We maken hiervoor gebruik van een terminal commando:

pip3 install pygame

In het geval dat bovenstaande commando een foutmelding geeft, kun je het volgende commando proberen:

pip install pygame

Als het goed is is Pygame nu correct geïnstalleerd. Indien het uitvoeren van het programma errors geeft, die aangeven dat Pygame niet wordt herkend, kun je proberen te switchen naar een andere Python-interpreter. Dit doe je door rechtsonderin te klikken op jouw Python-interpreter (in de afbeelding is dit 3.11.4) en een andere interpreter te selecteren. Wellicht dat Pygame voor een andere interpreter is geïnstalleerd.

Naast Pygame maakt de engine gebruik van pygbag. Dit is een library die binnen de engine wordt gebruikt om een Pygame-project om te zetten naar WebAssembly, waarmee een project in de browser kan worden uitgevoerd (bijvoorbeeld op itch.io). Pygbag kan worden geïnstalleerd met het volgende terminal-commando:

pip install pygbag

Programma uitvoeren in JorCademy Engine

Je kunt het programma uitvoeren door middel van de volgende terminal-commando:

# macOS/Linux
python3 engine.py

# Windows
engine.py

Als Pygame correct is geïnstalleerd, zie je een klein venstertje verschijnen.

Resultaat uitvoeren programma.

Voorbeeldprogramma

Hieronder is een simpel voorbeeldprogramma te zien, ontwikkeld in JorCademy Engine.

Simpel programma.

In dit programma wordt een rode cirkel getekend op een witte achtergrond. De cirkel kan worden bewogen door middel van de pijltjestoetsen. Bij de ontwikkeling van dit programma is gebruik gemaakt van de onderstaande code.

from jorcademy import *

# Circle properties
circle_color: color = (255, 100, 100)
circle_x: float = 400
circle_y: float = 300
circle_width: float = 200

# Makes circle move based on user input
def handle_user_input() -> None:
    global circle_color
    global circle_x
    global circle_y
    global circle_width

    if is_key_down("w"):
        circle_y -= 1

    if is_key_down("d"):
        circle_x += 1

    if is_key_down("s"):
        circle_y += 1

    if is_key_down("a"):
        circle_x -= 1

def setup() -> None:
    # Create an 800x600 screen
    screen(800, 600)

def update() -> None:
    global circle_color
    global circle_x
    global circle_y
    global circle_width

    # Handle movement of the circle
    handle_user_input()

    # Draw the backdrop
    backdrop((255, 255, 255))

    # Draw the circle
    ellipse(circle_color,
            circle_x,
            circle_y,
            circle_width,
            circle_width)