Файл: Теоретический раздел.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.10.2023

Просмотров: 87

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Версия Python 2.0 была выпущена 16 октября 2000 года и включала в себя много новых крупных функций — таких как полный сборщик мусора и поддержкаUnicode. Однако наиболее важным из всех изменений было изменение самого процесса развития языка и переход на более прозрачный процесс его создания.

Первая обратно-несовместимая версия Python 3.0 была выпущена 3 декабря 2008 года после длительного периода тестирования. Многие её функции были портированы и обратно совместимы с Python 2.6 и Python 2.7.

Плюсыязыка Python:

  • Низкий порог вхождения. Синтаксис Python более понятный для новичка.

  • Логичный, лаконичный и понятный. В сравнении с многими другими языками Python имеет легко читаемый синтаксис.

  • Кроссплатформенный: подходит для разных платформ: и Linux, и Windows.

  • Есть реализация интерпретаторов для мобильных устройств и непопулярных систем.

  • Широкое применение. Используется для разработки веб-приложений, игр, удобен для автоматизации, математических вычислений, машинного обучения, в области интернета вещей. Существует реализация под названием MicroPython, оптимизированная для запуска на микроконтроллерах (можно писать инструкции, логику взаимодействия устройств, организовывать связь, реализовывать умный дом).

  • Сильноекомьюнити и много конференций. К примеру, недавно в Одессе состоялся PyCon. На конференции в числе всех спикеров выступили 4 иностранных докладчика, которые затронули интересные темы.

  • Мощная поддержка компаний-гигантов IT-индустрии. Такие компании, как Google, Facebook, Dropbox, Spotify, Quora, Netflix, на определенных этапах разработки использовали именно Python.

  • Высокая востребованность на рынке труда.

  • В мире Python много качественных библиотек, так что не нужно изобретать велосипед, если надо срочно решить какую-то коммерческую задачу.

  • Для обучения есть много толковых книг, в первую очередь на английском языке, конечно, но и в переводе также издана достойная литература. Сегодня много обучающих материалов на Youtube: видео блоги, записи вебинаров и конференций.

  • Python отличается строгим требованием к написанию кода (требует отступы), что является преимуществом, по моим наблюдениям. Изначально язык способствует писать код организованно и красиво.

Python развивается и не погаснет еще долго. По многочисленным обзорам и рейтингам язык занимает высокие позиции. Согласно DOU он находится на пятом месте и занимает третью позицию в веб-технологиях.

Конечно, у стороны две медали, и если говорить о минусах, то Python — язык с динамической типизацией. С одной стороны код проще и быстрее писать, но производительность уступает таким компилируемым языкам, как C++ и Golang.


Но для большинства задач: для веб-разработки, для скриптов, прототипирования, машинного обучения и работы с большими данными, — один из лучших языков.

2. Написание игры «Ловкач»

Я решила, что для первого раза я сделаю довольно простую игру. Эта игра будет называться «Ловкач». Она довольно проста и в ней нет никаких замысловатостей.

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

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

Управлять персонажем можно с помощью четырёх клавиш управления курсором. Так же можно управлять персонажем с помощью мышки.

Ради шутки я также добавила в эту игру некоторые чит-режимы. Если игрок удерживает клавишу X, скорость каждого злодея становится сверхнизкой. Если игрок удерживает клавишу Z, злодеи будут менять направление на противоположное, перемещаясь по экрану снизу-вверх. Но данные читысбрасывают рекорд игрока.

Код игры (подробный код описан в приложении 1)

importpygame, random, sys

frompygame.locals import *

WINDOWWIDTH = 600

WINDOWHEIGHT = 600

TEXTCOLOR = (0, 0, 0)

BACKGROUNDCOLOR = (255, 255, 255)

FPS = 60

BADDIEMINSIZE = 10

BADDIEMAXSIZE = 40

BADDIEMINSPEED = 1

BADDIEMAXSPEED = 8

ADDNEWBADDIERATE = 6

PLAYERMOVERATE = 5

def terminate():

pygame.quit()

sys.exit()
defwaitForPlayerToPressKey():

while True:

for event in pygame.event.get():

ifevent.type == QUIT:

terminate()

ifevent.type == KEYDOWN:

ifevent.key == K_ESCAPE: # Нажатие ESC осуществляетвыход.

terminate()

return

defplayerHasHitBaddie(playerRect, baddies):

for b in baddies:

ifplayerRect.colliderect(b['rect']):

return True

return False

defdrawText(text, font, surface, x, y):

textobj = font.render(text, 1, TEXTCOLOR)

textrect = textobj.get_rect()

textrect.topleft = (x, y)

surface.blit(textobj, textrect)

# Настройкаpygame, окнаиуказателямыши.

pygame.init()

mainClock = pygame.time.Clock()

windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))

pygame.display.set_caption('Ловкач')

pygame.mouse.set_visible(False)

# Настройкашрифтов.

font = pygame.font.SysFont(None, 35)

# Настройкаизображений.

playerImage = pygame.image.load('player.png')

playerRect = playerImage.get_rect()

baddieImage = pygame.image.load('baddie.png')

# Выводначальногоэкрана.

windowSurface.fill(BACKGROUNDCOLOR)

drawText('Ловкач', font, windowSurface, (WINDOWWIDTH / 3), (WINDOWHEIGHT / 3))

drawText('Нажмитеклавишудляначалаигры', font, windowSurface, (WINDOWWIDTH / 5) - 30, (WINDOWHEIGHT / 3) + 50)



pygame.display.update()

waitForPlayerToPressKey()

topScore = 0

whileTrue:

# Настройка начала игры.

baddies = []

score = 0

playerRect.topleft = (WINDOWWIDTH / 2, WINDOWHEIGHT - 50)

moveLeft = moveRight = moveUp = moveDown = False

reverseCheat = slowCheat = False

baddieAddCounter = 0

whileTrue: # Игровой цикл выполняется, пока игра работает.

score += 1 # Увеличениеколичестваочков.

for event in pygame.event.get():

ifevent.type == QUIT:

terminate()

ifevent.type == KEYDOWN:

ifevent.key == K_z:

reverseCheat = True

ifevent.key == K_x:

slowCheat = True

ifevent.key == K_LEFT or event.key == K_a:

moveRight = False

moveLeft = True

ifevent.key == K_RIGHT or event.key == K_d:

moveLeft = False

moveRight = True

ifevent.key == K_UP or event.key == K_w:

moveDown = False

moveUp = True

ifevent.key == K_DOWN or event.key == K_s:

moveUp = False

moveDown = True

ifevent.type == KEYUP:

ifevent.key == K_z:

reverseCheat = False

score = 0

ifevent.key == K_x:

slowCheat = False

score = 0

ifevent.key == K_ESCAPE:

terminate()

ifevent.key == K_LEFT or event.key == K_a:

moveLeft = False

ifevent.key == K_RIGHT or event.key == K_d:

moveRight = False

ifevent.key == K_UP or event.key == K_w:

moveUp = False

ifevent.key == K_DOWN or event.key == K_s:

moveDown = False

ifevent.type == MOUSEMOTION:

# Если мышь движется, переместить игрока к указателю мыши.

playerRect.centerx = event.pos[0]

playerRect.centery = event.pos[1]

# Если необходимо, добавить новых злодеев в верхнюю частьэкрана.

if not reverseCheat and not slowCheat:

baddieAddCounter += 1

ifbaddieAddCounter == ADDNEWBADDIERATE:

baddieAddCounter = 0

baddieSize = random.randint(BADDIEMINSIZE, BADDIEMAXSIZE)

newBaddie = {'rect': pygame.Rect(random.randint(0, WINDOWWIDTH - baddieSize), 0 - baddieSize, baddieSize, baddieSize),

'speed': random.randint(BADDIEMINSPEED, BADDIEMAXSPEED),

'surface':pygame.transform.scale(baddieImage, (baddieSize, baddieSize)),

}

baddies.append(newBaddie)

# Перемещение игрока по экрану.

ifmoveLeft and playerRect.left> 0:

playerRect.move_ip(-1 * PLAYERMOVERATE, 0)

ifmoveRight and playerRect.right< WINDOWWIDTH:

playerRect.move_ip(PLAYERMOVERATE, 0)

ifmoveUp and playerRect.top> 0:

playerRect.move_ip(0, -1 * PLAYERMOVERATE)

ifmoveDown and playerRect.bottom< WINDOWHEIGHT:

playerRect.move_ip(0, PLAYERMOVERATE)

# Перемещениезлодееввниз.

for b in baddies:

if not reverseCheat and not slowCheat:

b['rect'].move_ip(0, b['speed'])

elifreverseCheat:

b['rect'].move_ip(0, -5)

elifslowCheat:

b['rect'].move_ip(0, 1)

# Удаление злодеев, упавших за нижнюю границу экрана.

for b in baddies[:]:

if b['rect'].top > WINDOWHEIGHT:

baddies.remove(b)

# Отображение в окне игрового мира.

windowSurface.fill(BACKGROUNDCOLOR)
# Отображение количества очков и лучшего результата.

drawText('Счет: %s' % (score), font, windowSurface, 10, 0)

drawText('Рекорд: %s' % (topScore), font, windowSurface, 10, 40)

# Отображениепрямоугольникаигрока.

windowSurface.blit(playerImage, playerRect)

# Отображение каждого злодея.

for b inbaddies:

windowSurface.blit(b['surface'], b['rect'])

pygame.display.update()

# Проверка, попал ли в игрока какой-либо из злодеев.

ifplayerHasHitBaddie(playerRect, baddies):

if score >topScore:

topScore = score # установка нового рекорда

break

mainClock.tick(FPS)
# Отображение игры и вывод надписи 'Игра окончена'.


pygame.mixer.music.stop()

drawText('ИГРАОКОНЧЕНА!', font, windowSurface, (WINDOWWIDTH / 3), (WINDOWHEIGHT / 3))

drawText('Нажмитеклавишудляначалановойигры', font, windowSurface, (WINDOWWIDTH / 3) - 120, (WINDOWHEIGHT / 3) + 50)

pygame.display.update()

waitForPlayerToPressKey()

Заключение

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

Из своего опыта, могу сказать, что лучше начинать процесс разработки видеоигр с программ более простых и легких, которые имеют русскую версию.

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

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

Интернет ресурсы

1.https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D1%85_%D0%B8%D0%B3%D1%80

2.https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D1%85_%D0%B8%D0%B3%D1%80

3. https://nashgorod.ru/news/tech/22-11-2019/kompyuternye-igry-plyusy-i-minusy

https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_Python

4.https://www.digest.pro/news/preimushhestva-python-pered-drugimi-jazykami-programmirovanija/