Mitä saadaan, kun yhdistetään peliohjelmointikurssi ja hieman aikaa? Oppilaat joutuvat tietenkin töihin. Mietin pari päivää sitten, että miten tehdään yksinkertainen labyrinttipeli. Tänään sitten aloin tutkimaan ja toteuttamaan sitä. Toiveena oli, että labyrintin luominen olisi yksinkertaista ja sen muokkaaminen helppoa. Yksinkertaisuuden vuoksi pohjan muodostaa ruudukko (tässä tapauksessa 13×8), jonka kokoa voi helposti muuttaa. Ruutukoko on 50×50 pikseliä. Pelin grafiikka on tarkoitettu opetustarkoitukseen. Pelin taustakuvana on myös opettavainen.
Lähdekoodi
# -*- coding: utf-8 -*- import pygame naytto = pygame.display.set_mode((650, 400)) pygame.display.set_caption("Laatikkopeli") pygame.font.init() fontti = pygame.font.Font(None,18) sankari = pygame.image.load("sankari.png") pois = pygame.image.load("exit.png") laatikko = pygame.image.load("laatikko.png") tausta = pygame.image.load("tausta.png") def main(): elossa = True sankarin_paikka = [1,1] kartta = ["xxxxxxxxxxxxx", "x x x", "x xxxxxxx x", "x x x", "x x xxx xxx", "x x x xxe", "x x ", "xxxxxxxxxxxxx"] while elossa: tapahtuma = pygame.event.poll() if tapahtuma.type == pygame.QUIT: elossa = False if tapahtuma.type == pygame.KEYDOWN: if tapahtuma.key == pygame.K_RIGHT: if kartta[sankarin_paikka[1]][sankarin_paikka[0]+1] != "x": sankarin_paikka[0] += 1 if tapahtuma.key == pygame.K_LEFT: if kartta[sankarin_paikka[1]][sankarin_paikka[0]-1] != "x": sankarin_paikka[0] -= 1 if tapahtuma.key == pygame.K_DOWN: if kartta[sankarin_paikka[1]+1][sankarin_paikka[0]] != "x": sankarin_paikka[1] += 1 if tapahtuma.key == pygame.K_UP: if kartta[sankarin_paikka[1]-1][sankarin_paikka[0]] != "x": sankarin_paikka[1] -= 1 naytto.blit(tausta, (0, 0)) korkeus = len(kartta) leveys = len(kartta[0]) for y in range(korkeus): for x in range(leveys): if kartta[y][x] == "x": naytto.blit(laatikko, (x*50, y*50)) if kartta[y][x] == "e": naytto.blit(pois, (x*50, y*50)) naytto.blit(sankari, (sankarin_paikka[0]*50, sankarin_paikka[1]*50)) if kartta[sankarin_paikka[1]][sankarin_paikka[0]] == "e": naytto.blit( fontti.render("JIPPII", True, (255,0,0)), (sankarin_paikka[0]*50, sankarin_paikka[1]*50-25)) pygame.display.flip() main() pygame.quit()
Tämä luo pelin, joka näyttää tältä
Lähdekoodissa on heikkouksia, siinä käytetään main()
-metodia, mutta itse toiminnot on kirjoitettu perinteisesti lohkomuodossa. Esimerkki on siis huono, anteeksi.