23:00 Пишем игры. Урок1 | ||||||||
|
Возможно создавать звёзды, снег, дождь, используя случайные числа. Самый простой способ: начать с цикла for для рисования кружков в случайных x,y позициях. Особенность кода в том ,что мы создаем снежинки(вернее их координаты -х и у) при помощи функции random до основного цикла while.И заносим все снежинки в список.
Внутри главного цикла while, программа может использовать цикл for для рисования каждой снежинки.
|
Копируем код программы в редактор и запускаем на исполнение.
попробуем разобрать простое игровое окно.
Код представляет собой окно черного цвета с падающим снегом белых точек.
значение каждой строки подписано, изменяем и удаляем элементы для закрепления практических навыков.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# СОЗДАЁМ ИГРОВОЕ ПОЛЕ рандомный снег
import pygame # импортируем библиотеку
import random # импортируем модуль генератора случайных чисел
window = pygame.display.set_mode((700,600))# создаём окно
pygame.display.set_caption('hello pygame') # титул строка
screen = pygame.Surface((700,600)) # создаем игровое поле
snow_list = [] # создаем пустой список
for i in range(50):# создаем 50 точек
x = random.randrange(0,700) # координате присвоить случайное значение от 0 до 700
y = random.randrange(0,600) # координате присвоить случайное значение от 0 до 600
snow_list.append([x, y])# заносим в список
done = True# некая переменная
while done:# условие существования игрового цикла
for e in pygame.event.get():# для любого события
if e.type == pygame.QUIT:# если было закрытие окна
done = False # цикл будет закончен(меняем значение условия жизни цикла)
screen.fill((0,0,0)) # экран закрашиваем черным
for item in snow_list: # для каждого элемента из списка snow_list
item[1] += 1 # текущей координате у прибавляам 1
pygame.draw.circle(screen,(255,255,255),item,2) # рисуем окружность(на экране (черным цветом),в х.у,радиусом 2)
pygame.time.delay(1) # системная задержка(мили сек.)-умен
if item[1]>600: # если координата у элемента больше600 то
item[1] = 0 # координате у элемента присвоить значение 0
item[0] = random.randrange(700) # координате х присвоить случайное значение до 700
window.blit(screen,(0,0))# на окне прорисовываем поле игры
pygame.display.flip()# отображаем полностью дисплей(окно)
Добавляем эффект ветра - наклон падения снега:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# СОЗДАЁМ ИГРОВОЕ ПОЛЕ рандомный снег
import os
import pygame # импортируем библиотеку
import random # импортируем модуль генератора случайных чисел
window = pygame.display.set_mode((600,600))# создаём окно
pygame.display.set_caption('hello pygame') # титул строка
screen = pygame.Surface((600,600)) # создаем игровое поле
snow_list = [] # создаем пустой список
for i in range(150):# создаем 150 точек
x = random.randrange(0,600) # координате присвоить случайное значение от 0 до 600
y = random.randrange(0,600) # координате присвоить случайное значение от 0 до 600
snow_list.append([x, y])# заносим в список
done = True# некая переменная
while done:# условие существования игрового цикла
for e in pygame.event.get():# для любого события
if e.type == pygame.QUIT:# если было закрытие окна
done = False # цикл будет закончен(меняем значение условия жизни цикла)
screen.fill((0,0,0)) # экран закрашиваем черным
for item in snow_list: # для каждого элемента из списка snow_list
item[0] -=1
item[1] +=1 # текущей координате у прибавляам 1
pygame.draw.circle(screen,(255,255,255),item,2) # рисуем окружность(на экране (,белым цветом),в х.у,радиусом 2)
#pygame.time.delay(1) # системная задержка(мили сек.)-умен
if item[1]>600 : # если координата у элемента больше600 то
item[1] = 0 # координате у элемента присвоить значение 0
item[0] = random.randrange(600) # координате х присвоить случайное значение до 600
if item[0]<0 : # если координата х элемента меньше 0, то
item[0] = 600 # координате х элемента присвоить значение 600
item[1] = random.randrange(600)
window.blit(screen,(0,0))# на окне прорисовываем поле игры
pygame.time.delay(2) # системная задержка(мили сек.)-умен
pygame.display.flip()# отображаем полностью дисплей(окно)
Всего комментариев: 0 | |