Прикреплённый файл «pygame_2-0.py»
Загрузка 1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 '''
4 Проект "Построение графика", подзадача pygame 1-1
5 "Резиновые линии":
6 левая кнопка мыши -- начать/закончить рисование "резиновой" линии
7 перемещение мыши -- рисовать
8 правая кнопка мыши -- не рисовать
9 "Q", закрытие окна -- выйти
10 пробел -- включить/выключить вывод всех событий на текстовый экран
11 '''
12
13 from math import *
14 import sys
15
16 import pygame
17 pygame.init()
18
19 def Draw(screen, pen, width, center, pos, figure):
20 if figure == "Line":
21 pygame.draw.line(screen, pen, center, pos, width)
22 elif figure == "Rect":
23 pygame.draw.rect(screen, pen, (center, (pos[0]-center[0],pos[1]-center[1])), width)
24
25 W, H = 640, 480
26 pen,width=(10,100,200),2
27 screen=pygame.display.set_mode((W,H))
28 States=("Draw", "Input", "Base")
29 Figures={"O":"Circle", "L":"Line", "R":"Rect"}
30 Inputs={"W":"Width", "C":"Color", "S":"Save", "E":"Edit"}
31 Center=(0,0)
32 Copy=None
33
34 State, Stage, Action = "Base", 1, "Line"
35 while True:
36 pygame.display.flip()
37 event = pygame.event.wait()
38 # Выход по закрытию окна и нажатии "q"
39 if event.type == pygame.QUIT: sys.exit()
40 if State == "Base": # основное состояние
41 if event.type == pygame.KEYDOWN:
42 if event.unicode in "LlRr":
43 State,Stage,Action = "Draw", 1, Figures[event.unicode.upper()]
44 Copy = screen.copy()
45 elif event.unicode in "Ww":
46 width=input("Введите ширину линии: ")
47 elif event.unicode in "Cc":
48 pen=input("Введите цвет линии: ")
49 elif event.unicode in "Qq":
50 sys.exit()
51 elif State == "Draw": # рисование фигуры
52 if event.type == pygame.MOUSEMOTION:
53 if Stage == 2:
54 screen.blit(Copy, (0,0)) # восстанавливаем
55 Draw(screen, pen, width, Center, event.pos, Action)
56 elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
57 if Stage == 1: # первое нажатие
58 Stage = 2
59 Center = event.pos
60 Copy = screen.copy() # состояние экрана без нарисованной линии
61 elif Stage == 2: # ВТОРОЕ НАЖАТИЕ
62 Stage = 1
63 elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3:
64 if Stage == 2:
65 screen.blit(Copy, (0,0)) # восстанавливаем
66 Stage = 1
67 elif event.type == pygame.KEYDOWN and event.key == 27:
68 screen.blit(Copy, (0,0))
69 State = "Base"
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:27, 1.6 KB) [[attachment:Oval.seg]]
- [получить | показать] (2011-09-26 11:35:27, 2.4 KB) [[attachment:PyGameState_Editor.dia]]
- [получить | показать] (2011-09-26 11:35:27, 2.8 KB) [[attachment:PyGameState_Ellipse.dia]]
- [получить | показать] (2011-09-26 11:35:27, 2.8 KB) [[attachment:PyGameState_Figure.dia]]
- [получить | показать] (2011-09-26 11:35:27, 1.5 KB) [[attachment:PyGameState_Input.dia]]
- [получить | показать] (2011-09-26 11:35:27, 0.4 KB) [[attachment:grap_0.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.4 KB) [[attachment:grap_1-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.1 KB) [[attachment:grap_1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.8 KB) [[attachment:grap_2.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.4 KB) [[attachment:grap_3.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.6 KB) [[attachment:grap_4.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.0 KB) [[attachment:grap_5-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 4.8 KB) [[attachment:grap_5-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 3.6 KB) [[attachment:grap_5.py]]
- [получить | показать] (2011-09-26 11:35:27, 3.5 KB) [[attachment:grap_6-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 4.7 KB) [[attachment:grap_6.py]]
- [получить | показать] (2011-09-26 11:35:27, 9.7 KB) [[attachment:grap_7.py]]
- [получить | показать] (2011-09-26 11:35:27, 0.8 KB) [[attachment:pygame_0.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.2 KB) [[attachment:pygame_1-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.9 KB) [[attachment:pygame_1.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.5 KB) [[attachment:pygame_2-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.3 KB) [[attachment:pygame_2-1-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 5.6 KB) [[attachment:pygame_2-1.py]]
Вам нельзя прикреплять файлы к этой странице.