|
Seuraava koodi, vaikkei aivan toimikaan, tekee kohdistinolion, jolle annetaan
siirtymiskäskyt numeronäppiksellä. Painettaessa numeroa kohdistin siirtyy aina
kohdealueen siihen yhdeksänteen mihin numero osoittaa ja valitsee uuden
alueen uudeksi kohdealueeksi. Alue on jaettu yhdeksään osaan kuten numeronäppäimistö:
ja nolla palauttaa alkuperäisen alueen ja kohdistimen sen keskelle (sekä tulostaa
koordinaatit ennen palautusta, debuggaustietoa, juu).
Kaipaa PyGamen (http://www.pygame.org/) alleen.
1 class Kohdistin(pygame.sprite.Sprite):
2 def __init__(self, area=None):
3 pygame.sprite.Sprite.__init__(self)
4 self.image, self.rect = load_image('kohdistin.png', -1)
5 self.rect.center = area.center
6 self.area = area
7 self.effective_area = pygame.Rect(area)
8 self.x, self.y = area.center
9 def update(self):
10 pass
11 def siirry(self, i):
12 if i<0 or i>9: return self.effective_area
13 if i==0:
14 # nolla palauttaa kohdistimen keskelle ja
15 # vaikutusalueen koko alueeksi
16 print self.x, self.y
17 self.x, self.y = self.area.center
18 self.effective_area = pygame.Rect(self.area)
19 self.rect.center = self.effective_area.center
20 return self.effective_area
21 # jaetaan komponentteihin ix ja iy
22 iy=(i-1)/3
23 ix=i-iy*3
24 iy+=1
25
26 # jaetaan nykyinen alue 3*3-ruudukkoon
27 new_width=self.effective_area.width/3
28 new_height=self.effective_area.height/3
29
30 # siirretään vaikutusalue haluttuun osa-alueeseen
31 self.effective_area.move_ip(new_width*(ix-2), new_height*-(iy-2))
32 self.effective_area.inflate_ip(new_width*-2, new_height*-2)
33
34 # siirrytään uuden alueen keskelle
35 self.x, self.y = self.effective_area.center
36 self.rect.center=self.effective_area.center
37
38 return self.effective_area
Kuinkahan monta kertaa tämä on jo keksitty? :-)
(last modified 2003-06-12 16:12:36)
|