Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.