Murtolukuja helmitaululla

ITK:ssa tutkija Walter Bender puhui sugar labsin tuloksista. Yksi mielenkiintoisin ideana oli helmitaulu, jolla pystyi laskemaan murtolukuja. Katso kuva osoitteesta  File:Caacupe.png – Sugar Labs. Mustilla helmillä lasketaan murtolukuja: 2 helmeä kuvaavat 1/2 osia, 3 helmeä kuvaavat 1/3 osia jne. Laventaminen ja supistaminen ei tuolla mallilla kovin helposti onnistu, eivätkä osat ole suhteessa toisiinsa (väärän kokoisia), mutta noilla on helppo tajuta, että 1/2 + 1/2 on 1.

Mutta mitä onkaan 1/2 + 1/3?

Prometheanin ActivTable

ITK-messuilla törmäsin Prometheanin ActivTableen: ActivTable. Kyseessä on pöytä, jonka pinnassa on 46 tuuman kosketusnäyttö. Pöydän ympärille mahtuu noin 6 oppilasta tekemään tehtäviä ruudun avulla. Tehtäviä on myös valmiiksi ja ne vaativat oppilaiden yhteistyöskentelyä (keskustelua).

Vaikutti kivalta, MUTTA hinta… Noin 7500 euroa. Jos vuodessa on 190 työpäivää, niin yhden päivän hinnaksi tulee 39 euroa. Kahdessa vuodessa noin 20 euroa. Neljässä vuodessa noin 10 euroa PER PÄIVÄ. Jos ajatellaan, että opettaja pitää tuolla yhden session oppilaiden kanssa joka päivä, niin sessiolle tulee hintaa, jopa neljässä vuodessa.

Toki laitetta voi siirtää luokasta toiseen (rullat alla), mutta tuo hintasuhde päivää kohden ei kuitenkaan muutu radikaalisti.

Rahat voinee sijoittaa paremminkin. Vaikka henkilökohtaisiin laitteisiin tai leirinuotioon…

Split or steal (Golden balls)

Englannissa pyörii (ainakin muutaman videopätkän perusteella) mielenkiintoinen TV-visailu, Golden Balls. Käsittääkseni siinä pelin alussa on useampia pelaajia ja pelissä on useita kierroksia ja kierroksen lopussa äänestetään yksi pelaaja pois. Äänestys tapahtuu sosiaalisin perustein: epäluotettavimman oloiset tyypit äänestetään pois.

Lopussa kaksi ”parasta” tai ”luotettavinta” pelaajaa pelaa vastakkain.

Youtubesta löytyy myös muita todella mielenkiintoisia finaalipelejä tästä sarjasta, esimerkiksi joku vie koko reilun punnan setin (valehtelemalla), toinen vie ison potin (valehtelemalla)…

Invent Your Own Computer Games with Python

Peliohjelmoinnin opettajan aarreaitta: Invent Your Own Computer Games with Python. Sivusto sisältää kaksi kirjaa, joissa kummassakin on satoja sivuja peliohjelmointikoodia. Lisäksi koodia selitetään amerikkalaiseen tyyliin hyvin perusteellisesti.

Noihin lähdekoodeihin muokkausten tekeminen on helppoa ja pelin tekeminen oman näköiseksi onnistuu helposti.

Kun vielä kun vielä käyttää Raspberry Pi Educational Manualin opasta Raspberry Pi:n käyttöön (opas sisältää kaiken oleellisen Raspberry Pi:stä, sen asentamisesta omien laitteiden tekoon asti), niin opettajan arki helpottuu 🙂

Peli pythonilla, pitkästä aikaa

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.

Pelin pohja. Ruudukko esittää karttaruudukkoa ja luvut esittävät pelin oikeita koordinaatteja
Pelin pohja. Ruudukko esittää karttaruudukkoa ja luvut esittävät pelin oikeita koordinaatteja

Lähdekoodi
[sourcecode language=”python”]
# -*- 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()
[/sourcecode]

Tämä luo pelin, joka näyttää tältä

Hieno labyrinttipeli. Grafiikkaa saa parantaa vapaasti.
Hieno labyrinttipeli. Grafiikkaa saa parantaa vapaasti.

Lähdekoodissa on heikkouksia, siinä käytetään main()-metodia, mutta itse toiminnot on kirjoitettu perinteisesti lohkomuodossa. Esimerkki on siis huono, anteeksi.