Прикреплённый файл «2013-03-01.pong.py»
Загрузка 1 #!/usr/bin/env python
2 # coding: utf
3 '''
4 Заставить работать пример из «Введения»
5 Модифицировать код таким образом, чтобы за шаром тянулся нарисованный хвост
6 из 12 элементов
7 '''
8
9 from pygame import *
10 from math import *
11 from time import sleep
12
13 size=(1024,768)
14
15 init()
16 screen=display.set_mode(size)
17 ball = image.load("ball.gif")
18 ballrect = ball.get_rect()
19 ballmask = mask.from_surface(ball)
20 bat = Surface((40,150))
21 bat.fill((0,0,0))
22 bat.set_colorkey((0,0,0))
23 batrect = bat.get_rect()
24 draw.ellipse(bat, Color("wheat"), batrect)
25 batmask = mask.from_surface(bat)
26
27 Back = Color("Midnightblue")
28 CanExit,Verbose, Collides = False,False,False
29
30 move=[1,1]
31 time.set_timer(USEREVENT,25)
32
33 while not CanExit:
34 # Опрос внешнего мира
35 ev=event.wait()
36 # Реакция объектов на внешний мир
37 if Verbose: print ev
38 if ev.type == QUIT:
39 CanExit=True
40 elif ev.type == KEYDOWN:
41 if ev.key == 27:
42 CanExit=True
43 elif ev.key == 13:
44 Verbose=not Verbose
45 # Шар управляется стрелками
46 elif ev.key == 273:
47 move[1]-=1
48 elif ev.key == 274:
49 move[1]+=1
50 elif ev.key == 275:
51 move[0]+=1
52 elif ev.key == 276:
53 move[0]-=1
54 elif ev.type == MOUSEMOTION:
55 batrect = bat.get_rect(center=ev.pos)
56 elif ev.type == USEREVENT:
57 ballrect = ballrect.move(move)
58 # Действия объектов
59 if ballrect.colliderect(batrect) and ballmask.overlap(batmask,(batrect.left-ballrect.left,batrect.top-ballrect.top)):
60 if not Collides:
61 Collides = True
62 # Если соударение лобовое, а не вдогонку
63 if (batrect.centerx-ballrect.centerx)*move[0]>=0:
64 move[0]=-move[0]
65 # TODO do not allow the bat to move over the ball with mouse.set_pos()
66 # TODO switch to float move[] and calculate collision angle
67 else:
68 Collides = False
69 if ballrect.left < 0: move[0]=abs(move[0])
70 elif ballrect.right > size[0]: move[0]=-abs(move[0])
71 if ballrect.top < 0: move[1]=abs(move[1])
72 elif ballrect.bottom > size[1]: move[1]=-abs(move[1])
73 # Изменение внешнего мира (отсутствует)
74 # Отрисовка
75 screen.fill(Back)
76 screen.blit(bat, batrect)
77 screen.blit(ball, ballrect)
78 display.flip()
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2013-03-15 13:03:07, 2.4 KB) [[attachment:2013-02-22.function.py]]
- [получить | показать] (2013-03-15 13:01:55, 3.1 KB) [[attachment:2013-03-01.arrow.py]]
- [получить | показать] (2013-03-15 13:00:29, 2.7 KB) [[attachment:2013-03-01.drawtree.py]]
- [получить | показать] (2013-03-15 13:02:44, 2.5 KB) [[attachment:2013-03-01.pong.py]]
- [получить | показать] (2013-03-15 13:01:31, 1.9 KB) [[attachment:label.py]]
Вам нельзя прикреплять файлы к этой странице.