WEB start

Компьютеры. Интернет. Профессиональное обучение. 055-966-10-17

hit 
counter

Наши преимущества

  • Наши программы обучения ориентированы на конкретного слушателя. Вы можете обучаться по одной из предложенных Вам программ, а можете самостоятельно составить, откорректировать, откорректировать свою персональную программу обучения. Преподаватель, консультант помогают Вам сориентироваться в материале курса при выборе программы обучения.
  • Обучение индивидуальное. Преподаватель проводит занятие только для Вас, ориентируясь на Ваши возможности, предыдущие знания и опыт, скорость восприятия нового материала.
  • Вы учитесь в удобное для Вас время, в удобной для Вас форме, может быть выбран гибкий график занятий, в соответствии с Вашими возможностями и пожеланиями.
  • Обучение проводится дистанционно. Вы можете обучаться, сидя за Вашим компьютером дома или на работе, не тратя время на поездки к месту обучения.


Регистрация на сайте

Python

  • Python - PyGame

    Python - программирование игр - PyGame

    Основные модули пакета Pygame

    Модуль Назначение
    pygame.cdrom Доступ к CD-приводам и управление ими
    pygame.cursors Загружает изображения курсора
    pygame.display Доступ к дисплею
    pygame.draw Рисует фигуры, линии и точки
    pygame.event Управление внешними событиями
    pygame.font Использует системные шрифты
    pygame.image Загружает и сохраняет изображение
    pygame.joystick Использует джойстики и аналогичные устройства
    pygame.key Считывает нажатия клавиш с клавиатуры
    pygame.mixer Загружает и воспроизводит мелодии
    pygame.mouse Управляет мышью
    pygame.movie Воспроизведение видеофайлов
    pygame.music Работает с музыкой и потоковым аудио
    pygame.overlay Доступ к расширенным видеоизображениям
    pygame Содержит функции Pygame высокого уровня
    pygame.rect Управляет прямоугольными областями
    pygame.sndarray Манипулирует звуковыми данными
    pygame.sprite Управление движущимися изображениями
    pygame.surface Управляет изображениями и экраном
    pygame.surfarray Манипулирует данными пикселей изображения
    pygame.time модуль pygame для управления временем и частотой кадров
    pygame.transform Изменение размера и перемещение изображений

    Окно PyGame

    Подключение библиотеки PyGame

    import pygame

    Инициализация PyGame

    pygame.init()

    Окно игры: размер, позиция

    gameScreen = pygame.display.set_mode((400, 300))

    модуль os - позиция окна

    import os

    x = 100

    y = 100

    os.environ['Sp_VIDEO_WINDOW_POS'] = "%d,%d" % (x,y)

    параметры окна

    size = [500, 500]

    screen = pygame.display.set_mode(size)

    pygame.display.set_caption("Test drawings")

    gameScreen.fill((0,0,255))

    pygame.display.flip()


    Цикл игры, выход из игры

    Цикл игры

    runGame = True # флаг выходв из цикла игры

    while runGame:

    Отслеживание события: "закрыть окно"

    for event in pygame.event.get():

    if event.type == pygame.QUIT: runGame = False

    Выход из игры: pygame.quit()


    Рисование базовых элементов

    pygame.draw

    модуль pygame для рисования фигур
    pygame.draw.rect нарисовать прямоугольную форму
    pygame.draw.polygon фигуру с любым количеством сторон
    pygame.draw.circle круг вокруг точки
    pygame.draw.ellipse нарисовать круглую форму внутри прямоугольника
    pygame.draw.arc нарисовать секцию эллипса
    pygame.draw.line нарисовать сегмент прямой линии
    pygame.draw.lines для рисования нескольких смежных отрезков
    pygame.draw.aaline рисовать тонкую линию
    pygame.draw.aalines нарисовать связанную последовательность сглаженных линий
    rect(Surface, color, Rect, wiph=0) -> Rect
    polygon(Surface, color, pointlist, wiph=0) -> Rect
    circle(Surface, color, pos, radius, wiph=0) -> Rect
    ellipse(Surface, color, Rect, wiph=0) -> Rect
    arc(Surface, color, Rect, start_angle, stop_angle, wiph=1) -> Rect
    line(Surface, color, start_pos, end_pos, wiph=1) -> Rect
    lines(Surface, color, closed, pointlist, wiph=1) -> Rect
    aaline(Surface, color, startpos, endpos, blend=1) -> Rect
    aalines(Surface, color, closed, pointlist, blend=1) -> Rect

    Загрузка изображения

    Модуль pygame.image позволяет загрузить изображерие из файла и возвращает объект типа Surface.

    pygame.image.load("путь к файлу" )

    загрузить новое изображение из файла

    load(filename) -> Surface

    Загрузить изображение (путь к файлу для Windows)

    myImage = pygame.image.load('images\\bg1.jpg')

    определить место размещения

    myRect = (0,0,600,400)

    выгрузить объект Surface, который содержит загруженное из файла изображение (myImage), в описанное место на экране (myRect)

    screen.blit(myImage,myRect)

    Объект Rect

    pygame.Rect

    Pygame использует объекты Rect для хранения и манипулирования прямоугольными областями. Rect может быть создан из комбинации значений слева, сверху, ширины и высоты. Rect также могут быть созданы из объектов python, которые уже являются Rect или имеют атрибут с именем «rect».

    Rect(left, top, wiph, height) -> Rect

    Rect((left, top), (wiph, height)) -> Rect

    Rect(object) -> Rect

    Методы работы с Rect

    pygame.Rect.copy Возвращает новый прямоугольник, имеющий ту же позицию и размер, что и оригинал.
    pygame.Rect.move Возвращает новый прямоугольник, перемещаемый данным смещением. Аргументы x и y могут быть любым целочисленным значением, положительным или отрицательным.
    pygame.Rect.move_ip То же, что и метод Rect.move (), но работает на месте.
    pygame.Rect.inflate увеличивать или уменьшать размер прямоугольника, на месте
    pygame.Rect.inflate_ip увеличивать или уменьшать размер прямоугольника, на месте
    pygame.Rect.clamp перемещает прямоугольник внутри другого
    pygame.Rect.clamp_ip перемещает прямоугольник внутри другого, на месте
    pygame.Rect.clip обрезает прямоугольник внутри другого
    pygame.Rect.union соединяет два прямоугольника в один
    pygame.Rect.union_ip соединяет два прямоугольника в один, на месте
    pygame.Rect.unionall объединение многих прямоугольников
    pygame.Rect.unionall_ip объединение многих прямоугольников, на месте
    pygame.Rect.fit изменить размер и переместить прямоугольник учмиывая соотношение сторон
    pygame.Rect.normalize корректировать отрицательные размеры
    pygame.Rect.contains проверить, находится ли один прямоугольник внутри другого
    pygame.Rect.collidepoint проверить, находится ли точка внутри прямоугольника
    pygame.Rect.colliderect тест, пересекаются ли два прямоугольника
    pygame.Rect.collidelist проверить, пересекается ли хоть один прямоугольник в списке
    pygame.Rect.collidelistall пересекаются ли все прямоугольники в списке
    pygame.Rect.collidedict проверить, если один прямоугольник в словаре пересекается
    pygame.Rect.collidedictall пересекаются ли все прямоугольники в словаре

    Обработка событий

    Событие - это то, как Pygame сообщает о том, что что-то случилось за пределами кода программы. События создаются, например, при нажатии клавиш клавиатуры, мыши и размещаются в очереди, дожидаясь бработки.

    Функция get в модуле pygame.event возвращает последнее событие, ожидающее в очереди и удаляет его из очереди.


    Объект event

    Модуль pygame.event

    модуль для обработки очереди событий

    pygame.event.pump Если вы не используете другие функции событий в своей игре, вы должны вызвать pygame.event.pump (), чтобы позволить pygame обрабатывать внутренние действия
    pygame.event.get получает события из очереди
    pygame.event.poll получить одно событие из очереди
    pygame.event.wait ждёт одиночного события из очереди
    pygame.event.peek проверить, ждут ли очереди события определённого типа
    pygame.event.clear удалить все события из очереди
    pygame.event.event_name возвращает имя для типа события. Строка находится в стиле WordCap
    pygame.event.set_blocked проверяет, какие события не разрешены в очереди
    pygame.event.set_allowed проверяет, какие события разрешены в очереди
    pygame.event.get_blocked проверить, заблокирован ли тип события из очереди
    pygame.event.set_grab проверяет совместное использование устройств ввода с другими приложениями
    pygame.event.get_grab проверить, работает ли программа на устройствах ввода данных
    pygame.event.post поместить новое событие в очередь
    pygame.event.Event создать новый объект события
    pygame.event.EventType Объект Python, представляющий событие SDL. Экземпляры пользовательских событий создаются с вызовом функции Event. Тип EventType не может быть напрямую вызван. Экземпляры EventType поддерживают назначение и удаление атрибутов.

    Pygame отслеживает все сообщения о событиях через очередь событий. Процедуры в этом модуле помогают управлять этой очередью событий. Входная очередь сильно зависит от модуля отображения (display) pygame. Если дисплей не был инициализирован и видеорежим не установлен, очередь событий не будет работать.

    Существует множество способов доступа к очереди событий. Просто проверять существование событий, захватывать их непосредственно из стека.


    Мышь

    Модуль pygame.mouse

    модуль pygame для работы с мышью
    pygame.mouse.get_pressed получить состояние кнопок мыши
    pygame.mouse.get_pos получить позицию курсора мыши
    pygame.mouse.get_rel получить количество движений мыши
    pygame.mouse.set_pos установить позицию курсора мыши
    pygame.mouse.set_visible скрыть или показать курсор мыши
    pygame.mouse.get_focused проверяет, принимает ли дисплей ввод мыши
    pygame.mouse.set_cursor установить изображение для курсора мыши
    pygame.mouse.get_cursor получить изображение для курсора мыши

    Функции мыши можно использовать для получения текущего состояния устройства мышь. Эти функции также могут изменять курсор мыши.

    Когда режим отображения (display) установлен, очередь событий начнет принимать события мыши. Кнопки мыши генерируют события pygame.MOUSEBUTTONDOWN и pygame.MOUSEBUTTONUP, когда они нажимаются и отпускаются. Эти события содержат атрибут кнопки, указывающий, какая кнопка была нажата. Колесо мыши будет генерировать pygame.MOUSEBUTTONDOWN и pygame.MOUSEBUTTONUP события при прокрутке.

    Когда колесо повернуто вверх, кнопка будет установлена на 4, вниз -5. Всякий раз, когда мышь перемещается, генерируется событие pygame.MOUSEMOTION. Движение мыши разбито на небольшие и точные события движения. По мере перемещения мыши многие события движения будут помещены в очередь. События движения мыши, которые неправильно очищены от очереди событий, являются основной причиной того, что очередь событий заполняется.

    Пример. Нарисовать курсор под текущей позицией мыши.

    x, y = pygame.mouse.get_pos()
    x -= mouse_cursor.get_width()/2
    y -= mouse_cursor.get_height()/2
    screen.blit(mouse_cursor, (x, y))

    Определить какая кнопка была нажата на мышке можно используя значение event.button:

    1 - left click
    2 - middle click
    3 - right click
    4 - scroll up
    5 - scroll down
    Координаты курсора при нажатии кнопки мыши находятся в event.pos.

    Пример. Перемещать картинку курсором мыши.

    import pygame, sys, time from pygame.locals import * pygame.init() FPS=30 fpsClock=pygame.time.Clock() width=500 height=500 mainSurface=pygame.display.set_mode((width,height),0,32) pygame.display.set_caption('Keyb moves') background=pygame.image.load('images//bg1.jpg') sprite=pygame.image.load('images//pict2.gif') # Place image to the center of mainSurface image_pos = ((mainSurface.get_width() - sprite.get_width())/2, (mainSurface.get_height() - sprite.get_height())/2) doMove = False # game loop while True: fpsClock.tick(FPS) # frame rate mainSurface.blit(background,(0,0)) # get all events from the queue for event in pygame.event.get(): # loop events queue if event.type == QUIT: # window close X pressed pygame.quit() sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: # ESC key pressed pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: # левая кнопка мыши doMove = True if event.button == 3: # правая кнопка мыши image_pos = ((mainSurface.get_width() - sprite.get_width())/2, (mainSurface.get_height() - sprite.get_height())/2) doMove = False if event.type == pygame.MOUSEBUTTONUP: doMove = False if event.type == MOUSEMOTION and doMove: image_pos = event.pos mainSurface.blit(sprite,image_pos) pygame.display.update()

    Клавиатура

    Модуль pygame.key

    Этот модуль содержит функции для работы с клавиатурой.Очередь событий получает события pygame.KEYDOWN и pygame.KEYUP при нажатии и отпускании клавиш клавиатуры.

    Оба события имеют ключевой атрибут, который представляет собой целочисленный идентификатор, представляющий каждую клавишу на клавиатуре.Событие pygame.KEYDOWN имеет дополнительные атрибуты: unicode и scancode. unicode представляет собой одну символьную строку, которая соответствует введённому символу. Scancode представляет собой код для конкретной платформы.

    Получить код клавиши:

    pressed_keys = pygame.key.get_pressed()
    if pressed_keys[K_SPACE]:
    # Space key has been pressed
    fire()

    Существует много клавиатурных констант, они используются для представления клавиш на клавиатуре. Ниже приведен список всех клавиатурных констант:


    KeyASCIIASCIICommonName
    K_BACKSPACE\bbackspace
    K_TAB\ttab
    K_CLEARclear
    K_RETURN\rreturn
    K_PAUSEpause
    K_ESCAPE^[escape
    K_SPACEspace
    K_EXCLAIM!exclaim
    K_QUOTEDBL"quotedbl
    K_HASH#hash
    K_DOLLAR$dollar
    K_AMPERSAND&ampersand
    K_QUOTEquote
    K_LEFTPAREN(leftparenthesis
    K_RIGHTPAREN)rightparenthesis
    K_ASTERISK*asterisk
    K_PLUS+plussign
    K_COMMA,comma
    K_MINUS-minussign
    K_PERIOD.period
    K_SLASH/forwardslash
    K_000
    K_111
    K_222
    K_333
    K_444
    K_555
    K_666
    K_777
    K_888
    K_999
    K_COLON:colon
    K_SEMICOLON;semicolon
    K_LESSless-thansign
    K_EQUALS=equalssign
    K_GREATER>greater-thansign
    K_QUESTION?questionmark
    K_AT@at
    K_LEFTBRACKET[leftbracket
    K_BACKSLASH\backslash
    K_RIGHTBRACKET]rightbracket
    K_CARET^caret
    K_UNDERSCORE_underscore
    K_BACKQUOTE`grave
    K_aaa
    K_bbb
    K_ccc
    K_ddd
    K_eee
    K_fff
    K_ggg
    K_hhh
    K_iii
    K_jjj
    K_kkk
    K_lll
    K_mmm
    K_nnn
    K_ooo
    K_ppp
    K_qqq
    K_rrr
    K_sss
    K_ttt
    K_uuu
    K_vvv
    K_www
    K_xxx
    K_yyy
    K_zzz
    K_DELETEdelete
    K_KP0keypad0
    K_KP1keypad1
    K_KP2keypad2
    K_KP3keypad3
    K_KP4keypad4
    K_KP5keypad5
    K_KP6keypad6
    K_KP7keypad7
    K_KP8keypad8
    K_KP9keypad9
    K_KP_PERIOD.keypadperiod
    K_KP_DIVIDE/keypaddivide
    K_KP_MULTIPLY*keypadmultiply
    K_KP_MINUS-keypadminus
    K_KP_PLUS+keypadplus
    K_KP_ENTER\rkeypadenter
    K_KP_EQUALS=keypadequals
    K_UPuparrow
    K_DOWNdownarrow
    K_RIGHTrightarrow
    K_LEFTleftarrow
    K_INSERTinsert
    K_HOMEhome
    K_ENDend
    K_PAGEUPpageup
    K_PAGEDOWNpagedown
    K_F1F1
    K_F2F2
    K_F3F3
    K_F4F4
    K_F5F5
    K_F6F6
    K_F7F7
    K_F8F8
    K_F9F9
    K_F10F10
    K_F11F11
    K_F12F12
    K_F13F13
    K_F14F14
    K_F15F15
    K_NUMLOCKnumlock
    K_CAPSLOCKcapslock
    K_SCROLLOCKscrollock
    K_RSHIFTrightshift
    K_LSHIFTleftshift
    K_RCTRLrightcontrol
    K_LCTRLleftcontrol
    K_RALTrightalt
    K_LALTleftalt
    K_RMETArightmeta
    K_LMETAleftmeta
    K_LSUPERleftWindowskey
    K_RSUPERrightWindowskey
    K_MODEmodeshift
    K_HELPhelp
    K_PRINTprintscreen
    K_SYSREQsysrq
    K_BREAKbreak
    K_MENUmenu
    K_POWERpower
    K_EUROEuro


    Направленное движение с помощью клавиш

    Можно перемещать изображение на экране с клавиатуры, назначая клавиши для перемещений:

    вверх, вниз, влево, вправо.

    Создать картинку, например:

    sprite=pygame.image.load('images//pict2.gif')

    Проверить очередь событий:

    pygame.event.get()

    Проверить, является ли полученное событие нажатием на клавиши со стрелками:

    event.type == KEYDOWN

    Если - да, то получмить код нажатой клавиши и сформировать новые координаты для картинки:

    spritex,spritey

    И нарисовать картинку в новом месте:

    blit(sprite,(spritex,spritey))

    import pygame, sys, time from pygame.locals import * pygame.init() FPS=30 fpsClock=pygame.time.Clock() width=500 height=500 mainSurface=pygame.display.set_mode((width,height),0,32) pygame.display.set_caption('Keyb moves') background=pygame.image.load('images//bg1.jpg') sprite=pygame.image.load('images//pict2.gif') # Create moving image # Place image to the center of mainSurface spritex=(mainSurface.get_width() - sprite.get_width())/2 spritey=(mainSurface.get_height() - sprite.get_height())/2 direction=False # ---> def move(direction, spritex, spritey): # This function moves recalculates new image coordinates if direction: if direction == K_UP: spritey-=5 elif direction == K_DOWN: spritey+=5 if direction == K_LEFT: spritex-=5 elif direction == K_RIGHT: spritex+=5 return spritex, spritey # ---> # game loop while True: fpsClock.tick(FPS) # define frame rate mainSurface.blit(background,(0,0)) mainSurface.blit(sprite,(spritex,spritey)) # get all events from the queue for event in pygame.event.get(): # loop events queue, remember in 'direction' pressed key code if event.type==QUIT: # window close X pressed pygame.quit() sys.exit() if event.type==KEYDOWN and event.key == K_ESCAPE: # ESC key pressed pygame.quit() sys.exit() if event.type == KEYDOWN: direction = event.key # Other key pressed if event.type == KEYUP: direction = False # Key released # calculate new image position spritex, spritey = move(direction, spritex, spritey) pygame.display.update()


    Объект Surface

    pygame.Surface

    объект pygame для представления изображений

    Surface((width, height), flags=0, depth=0, masks=None) -> Surface

    Surface((width, height), flags=0, Surface) -> Surface

    Наложение поверхностей, прозрачность.

    #-*-coding: utf-8-*- import pygame pygame.init() # Create base surface screen = pygame.display.set_mode((500,500)) # Create new surface surface1 = pygame.Surface((150,150)) surface1.fill((255,0,0)) surface1.set_alpha(150) # surface2 = pygame.Surface((100,100)) surface2.fill((255,255,0)) surface2.set_alpha(100) # Create image bgImg = pygame.image.load("images//bg3.jpg") bgImg = pygame.transform.scale(bgImg,(500,500)) # pict1 = pygame.image.load("images//pict1.jpg") pict1 = pygame.transform.scale(pict1,(130,130)) pict1.set_alpha(100) # pict2 = pygame.image.load("images//pict2.gif") pict2 = pygame.transform.scale(pict2,(50,50)) clock = pygame.time.Clock() running = 1 dX = dY = 1 x = y = 0 while running: clock.tick(50) event = pygame.event.poll() if event.type == pygame.QUIT: running = 0 x += 8 * dX y += 6 * dY if (y<0 or y>= (screen.get_height() - pict2.get_height())) : dY *= -1 if (x<0 or x>= (screen.get_width() - pict2.get_width())) : dX *= -1 screen.blit(bgImg,(0,0)) surface1.blit(pict1,(0,0)) screen.blit(surface1,(20,50)) screen.blit(surface2,(150,150)) screen.blit(pict2,(x,y)) pygame.display.flip() pygame.quit()


    Управление временем

    Модуль pygame.time содержит объект Clock, который можно использовать для отслеживания
    времени. Чтобы создать объект типа: время, вызывается конструктор pygame.time.Clock:

    clock = pygame.time.Clock()

    Когда создан объект clock, можно вызвать его функцию tick один раз за кадр,
    которая возвращает время, прошедшее со времени предыдущего вызова в миллисекундах:

    time_passed = clock.tick ()

    Функция tick может использовать необязательный параметр для установления максимальной частоты кадров. Этот параметр нужен, если игра запущена на рабочем компьютере и необходимо контролировать, чтобы она не использовала всю его вычислительная мощность на 100%:

    # Игра будет работать со скоростью не более 30 кадров в секунду

    time_passed = clock.tick (30)


    Звуки

    Для управления звуком исползуется модуль pygame.mixer. Он отвечает за любые действия со звуками.

    Загружаем звуковой файл в формате *.wav

    sound = pygame.mixer.Sound("sound.wav")
    (загружаем до игрового цикла, т.к. это очень долгая операция)

    Проигрываем звук

    sound.play()

    Столкновения (collisions)

    При написании игр часто возникает необходимость проверять взаимное расположение объектов на экране, отслеживать моменты их столкновений, пересечений.

    Эта задача может быть реализована разными способами.

    Например, используя объект Rect 

    #-*-coding:utf-8-*- import pygame, sys, time from pygame.locals import * pygame.init() FPS = 30 fpsClock = pygame.time.Clock() winWidth = 500 winHeight = 500 mainSurface = pygame.display.set_mode((winWidth,winHeight),0,32) pygame.display.set_caption('Collisions test') background = pygame.image.load('images//bg1.jpg') # Рисуем неподвижные компоненты на поверхности background # Места расположения границ border1Rect = pygame.Rect(0,0,100,500) border2Rect = pygame.Rect(0,150,300,50) # границы border1 = pygame.draw.rect(background, (0,0,0), border1Rect, 0) border2 = pygame.draw.rect(background, (0,0,0), border2Rect, 0) # Записываем их в массив borders = [] borders.append((border1,border1Rect)) borders.append((border2,border2Rect)) # Подвижный блок blockWidth = 50 blockHeight = 50 blockStep = 1 blockColor = (255,0,0) # Начальные координаты подвижного блока - по центру blockX = (mainSurface.get_width() - blockWidth)/2 blockY = (mainSurface.get_height() - blockHeight)/2 blockPosition = (blockX, blockY) direction = False # описание функции ---> def newPosition(dirFlag, pos): (x,y) = pos # Функция пересчитывает координаты для подвижного объекта if dirFlag: if dirFlag == K_UP: y -= blockStep elif dirFlag == K_DOWN: y += blockStep if dirFlag == K_LEFT: x -= blockStep elif dirFlag == K_RIGHT: x += blockStep return (x, y) # ---> while True: # Игра - начало # Частота обновления экрана fpsClock.tick(FPS) # Рисуем неподвижные компоненты mainSurface.blit(background,(0,0)) # Рисуем подвижный компонент blockRect = pygame.Rect(blockPosition, (blockWidth, blockHeight)) block = pygame.draw.rect(mainSurface, blockColor, blockRect, 1) # просматриваем очередь событий for event in pygame.event.get(): # loop events queue, remember in 'direction' pressed key code if event.type == QUIT: # window close X pressed pygame.quit() sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: # ESC key pressed pygame.quit() sys.exit() if event.type == KEYDOWN: direction = event.key # Other key pressed if event.type == KEYUP: direction = False # Key released # Cохраняем старые координаты подвижного блока savedPosition = blockPosition # Рассчитываем новые координаты подвижного блока blockPosition = newPosition(direction, blockPosition) # Проверяем их корректность for border in borders: testRect = pygame.Rect(blockPosition, (blockWidth, blockHeight)) if testRect.colliderect(border[1]): print ("Столкновение !") # Возвращаем старые координату blockPosition = savedPosition else: print ("ok") pygame.display.update() # Игра - конец


    Или используя поверхности - surface

    #-*-coding:utf-8-*- import pygame, sys, time from pygame.locals import * # Блоки-ограничители рисуются как отдельные поверхности # Между ними курсором перемещаем мячик FPS = 30 # кадров в сек # Размеры окна игры width = 500 height = 500 # Заголовок окна игры title = "Collisions detection test" # Сообщение в консоль игры info = "Нет столкновений \n" # Переменная - индикатор движения direction = False # Шаг движения myStep = 2 pygame.mixer.init() pygame.mixer.music.load("voice-prompts-reaction-reaction-1-child-3-yrs-oops-human-voice-kid-speak-talk.mp3") pygame.init() fpsClock = pygame.time.Clock() mainSurface=pygame.display.set_mode((width,height),0,32) pygame.display.set_caption(title) background=pygame.image.load('images//bg1.jpg') # Фон sprite = pygame.image.load('images//pict2.gif') # Подвижная картинка # Начальные координаты подвижной картинки # Важно, чтобы в начале работы она не перекрывала ни один блок spriteX=mainSurface.get_width() - sprite.get_width() spriteY=mainSurface.get_height() - sprite.get_height() # Неподвижные блоки - все сохраняем в одном списке # Структура списка blocks: # каждый элемент - пара значений: (поверхность, область её размещения) # blocks[0] - первый элемент списка, blocks[0][0] - surface первого элемента,blocks[0][1] - Rect первого элемента blocks = [] block1 = pygame.Surface((200,200)) block1.set_alpha(80) block1.fill((255,0,0)) block1Rect = pygame.Rect(0,0,block1.get_width(), block1.get_height()) blocks.append((block1,block1Rect)) # block2 = pygame.Surface((100,200)) block2.fill((0,255,0)) block2Rect = pygame.Rect(400,0,block2.get_width(), block2.get_height()) blocks.append((block2,block2Rect)) # block3 = pygame.Surface((300,100)) block3.fill((0,0,255)) block3Rect = pygame.Rect(0,350,block3.get_width(), block3.get_height()) blocks.append((block3,block3Rect)) # закончили с описанием 3-х блоков # *********> def newPosition (direction, spriteX, spriteY): # Функция пересчитывает координаты новой позиции подвижного объекта # Проверяем столкновений со всеми блоками-границаи global myStep if direction: if direction == K_UP: spriteY -= myStep elif direction == K_DOWN: spriteY += myStep elif direction == K_LEFT: spriteX -= myStep elif direction == K_RIGHT: spriteX += myStep return spriteX, spriteY # *********> # *********> def collisionDetected(): global blocks global spriteRectNew colFlag = False # Проверка столкновений со всеми блоками в массиве блоков for block in blocks: if spriteRectNew.colliderect(block[1]): collisionDir = direction colFlag = True return colFlag # *********> # Цикл игры while True: fpsClock.tick(FPS) # Частота обновления экрана # Обрабатываем очередь событий - начало for event in pygame.event.get(): # В цикле берём из очереди очередное событие, запоминаем в переменной event # Проверяем тип события и выполняем соответствующие лействия if event.type == QUIT: # Тип проверяемого события НАЖАТ Х В ОКНЕ ИГРЫ pygame.quit() sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: # ESC key pressed pygame.quit() sys.exit() # Следующая строка получает управление только тогда, когда не отработали предыдущие проверки кода события # то есть произошло событие, отличное от перечисленных выше if event.type == KEYDOWN: direction = event.key if event.type == KEYUP: direction = False # Кнопка отпущена # Обрабатываем очередь событий - конец # Текущее место расположения подвижной картинки spriteRect = pygame.Rect(spriteX,spriteY,sprite.get_width(), sprite.get_height()) # Сохраняем старые координаты oldPos = (spriteX, spriteY) # Вычмсляем новые координаты, анализируя нажатые кнопки spriteX, spriteY = newPosition(direction, spriteX, spriteY) # Вычисляем новое место расположения картинки spriteRectNew = pygame.Rect(spriteX,spriteY,sprite.get_width(), sprite.get_height()) # Проверяем, не пересекает ли новое место блоки. Если пересекает, то вовращпни картинке старые координаты if collisionDetected(): (spriteX, spriteY) = oldPos # Play OOPS! pygame.mixer.music.play() # Рисуем всё на экране # Фон mainSurface.blit(background,(0,0)) # Блоки for block in blocks: mainSurface.blit(block[0],(block[1].x,block[1].y)) # Картинку mainSurface.blit(sprite,(spriteRect.x,spriteRect.y)) # Обновляем экран pygame.display.update()






  • Python exercises

    Config VS code


    String, input, Calculator, variable type, eval


    str1 = "My first test string"
    pos = int(input("Symbols: ")) print(pos, str1[0:pos])



    Words counter

    testString = input("Type the string: ") counter = 1 # Loop string symbols for i in range (len(testString)): print (testString[i]) if (testString[i] == ' ' and testString[i+1] != ' ' ): counter += 1 print ("In the string: \"", testString, "\" we found ", counter)



    even - odd check 

    a = 6 res = a%2 if (res == 0): print ("Even") else: print ("Odd")


    Introduce Array 

    data structure: array or list


    print(1+2) a = input("Input a: ") b = input ("Input b: ") # print ("a+b = ", a+b) print ("a+b = ", int(a)+float(b))




    if, indents, blocks, 



    # if - indents a = float(input("a: ")) b = float(input("b: ")) if (a < b): print ("a < b") print ("11111111111111111111111111111111") if (a < b): print ("Compared a and b values:") print ("a < b") else: print ("else statements") print ("2222222222222222222222222222222222") if (b % a == 0) : print ("b is divisible by a") elif (b + 1 == 10): print ("Increment in b produces 10") else: print ("You are in else statement")




    myDaysEn = ["Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] myDaysHe = ["יוֹם רִאשׁוֹן","יוֹם שֵׁנִי","יוֹם שְׁלִישִׁי","יום רביעי","יוֹם חֲמִישִׁי","יוֹם שִׁישִׁי","יום שבת"] myDaysRu = ["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"] print (myDaysRu) print (myDaysEn) print (myDaysHe)




    myDaysEn = ["Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] myDaysHe = ["יוֹם רִאשׁוֹן","יוֹם שֵׁנִי","יוֹם שְׁלִישִׁי","יום רביעי","יוֹם חֲמִישִׁי","יוֹם שִׁישִׁי","יום שבת"] myDaysRu = ["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"] lang = input("Your language (1 - Heb, 2 - Rus, 3 - Eng): ") dayNumber = 0 while (dayNumber < 1 or dayNumber > 7): dayNumber = int(input("Number of day: (1 --- 7): ")) if (lang == '1'): print (myDaysHe[dayNumber]) elif (lang == "2"): print (myDaysRu[dayNumber]) elif (lang == "3"): print (myDaysEn[dayNumber]) else: print ("Language undefined")



    Array (list), loops, for, Logical operators (), while

    Python Conditions and If statements

    Python supports the usual logical conditions from mathematics:

    • Equals: a == b
    • Not Equals: a != b
    • Less than: a < b
    • Less than or equal to: a <= b
    • Greater than: a > b
    • Greater than or equal to: a >= b

    Arithmetic operators, Comparison operators, Logical operators

    and, or, not

    x = True y = False # Output: x and y is False print('x and y is',x and y) # Output: x or y is True print('x or y is',x or y) # Output: not x is False print('not x is',not x)





    students = ["Stud1", "Stud2", "Stud3"] print (students[0]) print (students[1]) print (students[2]) print (len(students)) # for statements for stud in students: print (stud) print ("--------------------") for i in range(10): print (i) for i in range(len(students)): print (students[i])






    students = [] stud = '' while (stud != 'end'): print (stud) stud = input("New student: ") students.append(stud) print("Students: ", students, "Count: ", len(students), "Type: ", type(students))



    str1 = "My first test string" while (1): pos = int(input("Symbols: ")) print(pos, str1[0:pos])



    students1 = ["Student1", "Student2",22, 33.33] students2 = [ ["Ivanov", 22, "WEB"], ["Haim", 29, "PHP"], ["Yossy", 32, "Python"] ] print (students1) print (students2) nameToFind = input("Type student name: ") for student in students2: if (student[0] == nameToFind): print ("Found record: \n", student, "\nName: ", student[0], "\nAge: ", student[1], "\nCourse: ", student[2]) break else: print ("Student not found")












  • Web developer

    Современные интернет-технологии

    Современные технологии, используемые для разработки и создания интернет-приложений, можно условно разделить на несколько категорий, которые отражают реальные этапы работ.

    • Графический дизайн интерфейса сайта (WEB design, UI design )
    • Разработка функциональных возможностей сайта (Front-end development, UX design и Back-end development)

    В зависимости от деталей реализации каждого конкретного интерет-проекта: его целей, сложности, бюджета может отпасть необходимость какого-либо конкретного этапа разработок.

    Так, например, какие-то проекты могут обойтись без авторского дизайна, а для каких-то проектов не потребуется сложная структура управления базаими данных.

    У нас Вы можете получить специализацию в любом направлении: от графика до программиста широкого профиля.

    При записи на курс мы предоставляем возможность пройти предварительное тестирование-собеседование с опытным преподавателем. Это помогает раскрыть Ваш потенциал, определить перспективы обучения по той или иной специальности. Выбор курса должен определяться, в том числе, Вашими личными возможностями при восприятии нового материала, предыдущим опытом, знаниями и персональными склонностями. Наш специалист учитывает все эти факторы, наряду с Вашей готовностью учиться и тратить личное время на собственное образование. При составлении индивидуальной програмы обучения учитывается также и график Вашей занятости.

    Все наши программы обучения ориентированы, в первую очередь, на требования современного рынка труда.

    Они построены по результатом многолетнего анализа, отслеживания и изучения новых интернет-технологий и тенденций развития, требований конкретных заказчиков. Всё это позволяет нашим выпускникам по окончании курса успешно конкурировать с их коллегами при поиске интересной и хорошо оплачиваемой работы по новой специальности.

    Проводимые нами курсы рассчитаны как на начинающих разработчиков, так и на работающих специалистов, которые заинтересованы в знакомстве с новыми технологиями, в расширении своих возможностей, получении новой специализации.

    WEB дизайнер

    (WEB designer, UI/UX designer)

    Курс рассчитан на подготовку специалистов по разработке графического интерфейса для интернет-проектов.

    Это: графический дизайн сайта, создание шаблонов, подготовка и оптимизация графического контента (картинки, mutimedia).

    Предварительные требования

    • Опыт работы с компьютером и интернет в качестве пользователя (интерфейс Windows или Linux, интернет браузер, текстовый редактор)

    Программа курса

    Adobe Photoshop, Illustrator, Dreamweaver - basics

    HTML5, CSS3, FlexBox, CSS grid

    Bootstrap 4 - CSS

    WEB - разработчик (интерфейс пользователя)

    (Front-end, Client-side developer)

    Курс рассчитан на подготовку специалистов-разработчиков, специализирующихся на клиентской части интернет-приложений.

    Это: логика и функционал интерфейса сайта - всё то, что выполняется браузером клиента. А также: оптимизация сайта для поисковых машин, интернет-продвижение сайта (CEO).

    Предварительные требования

    • Опыт работы с компьютером и интернет в качестве пользователя (интерфейс Windows или Linux, интернет браузер, текстовый редактор)
    • Базовые знания Английского языка (на уровне технического перевода)

    Программа курса

    Акад. часов - в группеАкад. часов - индивидуально
    1HTML5, CSS3, FlexBox, CSS grid 6010
    2Browser, DOM, JavaScript 60 10
    3jQuery, jQuery UI 406
    4Bootstrap 4 - CSS, Bootstrap 4 - jQuery 305
    5NodeJS, MS TypeScript, SASS 305
    6Angular 5 framework 5510
    7CEO 152
    Всего 31035

    WEB - разработчик (серверные приложения)

    (Back-end, Server-side developer)

    Курс рассчитан на подготовку специалистов-разработчиков, специализирующихся на серверной части интернет-приложений.

    Это: функционирование серверной части интернет-приложения, обработка запросов клиентов, базы данных.

    При разработке серверных приложений сегодня используются различные сервера, платформы, системы управления базами данных и языки программирования.

    Наиболее распространённые - это сервера Apache на операционной системе Linux. Программирование на PHP, MySQL.

    Предварительные требования

    • Опыт работы с компьютером и интернет в качестве пользователя (интерфейс Windows или Linux, интернет браузер, текстовый редактор)
    • Базовые знания Английского языка (на уровне технического перевода)


    Программа курса - Back-end PHP

    Акад. часов - в группеАкад. часов - индивидуально
    1HTML5, CSS3 508
    2Apache102
    3PHP 7, MySQL10020
    4Laravel 5 Framework 10020
    Всего 30050


    Программа курса - Back-end Java

    Акад. часов - в группеАкад. часов - индивидуально
    1HTML5, CSS3508
    2Apache, Tomcat, Eclipse 407
    3Java 10020
    4Spring MVC10020
    Всего29055


    Программа курса - Back-end Python

    Акад. часов - в группеАкад. часов - индивидуально
    1HTML, CSS, and JavaScript6010
    2Python and Django18040
    Всего24050


    WEB - разработчик (полный курс)

    (Full stack WEB developer )

    Курс готовит универсальных специалистов широкого профиля, охватывая специальности: Front-end и Back-end developer


    WEB - начинаюшим

    Курс предназначен для тех, кто хочет быстро научиться строить сайты на базе готовых решений.

    Это: системы управления контентом (WordPress, Joomla, Opencart), использование готовых шаблонов, создание шаблонов - Artisteer.

    Предварительные требования

    • Опыт работы с компьютером в качестве пользователя

    Программа курса

    Акад. часов - в группе Акад. часов - индивидуально
    1HTML5, CSS3 - intro 305
    2CMS Joomla, WordPress, Opencart 10020
    3Шаблоны сайтов. Artisteer5010
    Всего18035

  • Программирование на языке Python

    Программирование. Python.

    Установка


    Установка Python под Windows


    Конфигурация Visual Studio Code для Python


    Использование языка программирования Python

    Синтаксис языка

    Интерактивное программирование, Python- скрипты.

    IDE для Python

    Переменные. Идентификаторы.

    Клюючевые слова. Операторы.

    Строки и отступы в Python

    Использование кавычек

    Комментарии

    Типы данных. Переменные. Значения.

    Списки. psts. Tuples.

    Изменение типов данных.

    Условные операторы.

    Циклы.

    Строковые переменные.

    Подпрограммы.

    Объекты в Python.

    Работа с файлами.

    Библиотека Tkinter

    Описание.

    Кнопки.

    Управление курсором.

    Управление цветом.

    Анимация.

    События.

    Управление окнами.

    Библиотека PyGame

    Введение. Окно PyGame.

    Рисование простых элементов.

    Загрузка изображений. Объект Rect 

    Поверхности. Объект Surface

    Управление объектами PyGame.

    Простые игры. Примеры.

     

     Подробнее 

     

     

     

     

     

    Python GPIO

    Основы электроники.

    Основы математической логики.

    Работв с RaspBerryPi.

    Основы робототехники.

    Python WEB FrameWorks