substandard rank
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Продолжение темы - https://yougame.biz/threads/143174/
6. Отрисовка объектов
Опять-таки, для удобства, добавим функцию:
С помощью нее мы можем нарисовать круг, например -
Так же как и изображение, круг нужно рисовать после заполнения экрана цветом.
Чтобы рисовать остальные объекты, следует прочитать про модуль draw -
С любой нарисованной вами геометрической фигурой, вы можете взаимодействовать так же как и с изображением (передвигать, перекрашивать, уменьшать и тд)
Например -
Теперь наш круг отталкивается от стен
7. Добавим код для простой игры
Под игрой подразумевается дойти изображением до "лунки", после чего сменить положение "лунки" и опять дойти до нее.
Чтобы провернуть это, нам нужно проверять начальные точки по X и по Y, так же конечные точки X и Y.
Перед этим вернемся в самый верх и импортируем библиотеку random
Выглядеть это будет вот так:
8. Добавим систему очков
Для начала нам нужна переменная для количества очков. Я назову ее score.
После добавим новую функцию отображения текста для очков:
Обязательно прописываем global score в начале основной функции, иначе мы не сможем изменить переменную.
После строки
И вызываем нашу новую функцию для отображения текста после заполнения экрана цветом
9. Добавим маленькую систему прокачки
Так же ничего трудного нет, делаем условие на количество очков, если их >= 10, повышаем скорость изображения.
Перед этим добавим переменную (я назову ее IMAGE_SPEED) для скорости изображения, приравняем ее к 2.
После заменим на нее цифры 2 в коде.
Код:
10. Главное меню
Почти у каждой игры есть свое меню.
Чтобы добавить простое меню с одной кнопкой нужен этот код (опять-таки для удобства добавим функцию):
В основной функции, после строки
Исходник -
VT на python файл -
6. Отрисовка объектов
Опять-таки, для удобства, добавим функцию:
Python:
def drawing(screen, color, x_pos, y_pos, radius):
pygame.draw.circle(screen, color, (x_pos, y_pos), radius)
drawing(screen, (50, 100, 50), 150, 300, 50)
Так же как и изображение, круг нужно рисовать после заполнения экрана цветом.
screen.fill((0, 150, 200))
drawing(screen, (50, 100, 50), 150, 300, 50)
Чтобы рисовать остальные объекты, следует прочитать про модуль draw -
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)С любой нарисованной вами геометрической фигурой, вы можете взаимодействовать так же как и с изображением (передвигать, перекрашивать, уменьшать и тд)
Например -
Python:
if DRAW_X < 51 and DRAW_SPEED == -2: #x_pos < (1 + radius) and obj_speed = -2
DRAW_SPEED = 2 #draw speed изначально равна -2
elif DRAW_X > (500 - 50) and DRAW_SPEED == 2: # x_pos > (screen_width - radius) and obj_speed = 2
DRAW_SPEED = -2
else:
DRAW_X += DRAW_SPEED
screen.fill((0, 150, 200)) #Заполняем окно цветом fill((r, g, b), rect, flags)
drawing(screen, (50, 100, 50), DRAW_X, DRAW_Y, 50)
7. Добавим код для простой игры
Под игрой подразумевается дойти изображением до "лунки", после чего сменить положение "лунки" и опять дойти до нее.
Чтобы провернуть это, нам нужно проверять начальные точки по X и по Y, так же конечные точки X и Y.
Перед этим вернемся в самый верх и импортируем библиотеку random
Выглядеть это будет вот так:
Python:
if Y+5 >= DRAW_Y-50 and DRAW_Y+50 >= Y+95: #Если начальная позиция Y+5 >= начальной позиции круга и конечная позиция круга >= конечной позиции по Y
if X+10 >= DRAW_X-50 and DRAW_X+50 >= X+90: #Если нач поз по X+10 >= нач поз X круга и кон поз X круга >= кон поз X
msg(screen, "You won!") #Выводим надпись "Ты победил!"
time.sleep(0.5) #Останавливаем программу на 0.5 секунды
DRAW_X = random.randint(50, 450) #Помещаем нашу "лунку" в другое место с помощью библиотеки random
DRAW_Y = random.randint(50, 450)
screen.fill((0, 150, 200)) #Заполняем окно цветом fill((r, g, b), rect, flags)
drawing(screen, (50, 100, 50), DRAW_X, DRAW_Y, 50) #Отрисовываем "лунку"
8. Добавим систему очков
Для начала нам нужна переменная для количества очков. Я назову ее score.
После добавим новую функцию отображения текста для очков:
Python:
def draw_score(screen):
font = pygame.font.SysFont(None, 25) #На этот раз будем использовать обычный, мелкий шрифт
text = font.render("Score: "+str(score), True, (0,0,0)) #Получаем текст для отображения
screen.blit(text,(10,10)) #Отображаем текст на экране, в правом верхнем углу
После строки
msg(screen, "You won!")
добавляем score += 1
И вызываем нашу новую функцию для отображения текста после заполнения экрана цветом
screen.fill((0, 150, 200))
draw_score(screen)
9. Добавим маленькую систему прокачки
Так же ничего трудного нет, делаем условие на количество очков, если их >= 10, повышаем скорость изображения.
Перед этим добавим переменную (я назову ее IMAGE_SPEED) для скорости изображения, приравняем ее к 2.
После заменим на нее цифры 2 в коде.
Код:
Python:
if score > 0 and score >= (10*(IMAGE_SPEED-1)): #Если score больше 0 и score >= 10 * на нашу скорость
IMAGE_SPEED += 1
Почти у каждой игры есть свое меню.
Чтобы добавить простое меню с одной кнопкой нужен этот код (опять-таки для удобства добавим функцию):
Python:
def menu(screen):
InMenu = True
while InMenu: #Пока мы в меню
mouse_x, mouse_y = pygame.mouse.get_pos()
for event in pygame.event.get(): #Перебираем все event`ы
if event.type == QUIT: #Если event == выходу
InMenu = False #Закрываем меню
pygame.quit() #Завершаем работу с pygame
quit() #Выходим
if event.type == KEYDOWN: #Если нажата любая кнопка
if event.key == K_SPACE: #Если нажат пробел
InMenu = False #Закрываем меню
if event.type == MOUSEBUTTONDOWN: #Если нажата любая из кнопок мыши
if event.button == BUTTON_LEFT: #Если была нажата левая кнопка мыши
if mouse_x >= 100 and mouse_x <= 400: #Если курсор между нач точкой X кнопки и кон точкой X кнопки
if mouse_y >= 325 and mouse_y <= 400: #Если курсор между нач точкой Y кнопки и кон точкой Y кнопки
InMenu = False #Выходим из меню
screen.fill((255,255,255)) #Заливаем экран белым цветом
pygame.draw.rect(screen, (0, 200, 100), [100, 325, 300, 75]) #Рисуем прямоугольник (кнопку)
start_font = pygame.font.SysFont(None, 40) #Шрифт для надписи Start
start_text = start_font.render("Start", True, (0,0,0)) #Получаем текст
screen.blit(start_text,(215,335)) #Отображаем надпись Start
space_font = pygame.font.SysFont(None, 30) #Шрифт для надписи Press Space or Start Button
space_text = space_font.render("Press Space or Start Button", True, (0,0,0)) #Получаем текст
screen.blit(space_text, (115, 365)) #Отображаем надпись Press Space or Start Button
msg(screen, "Mini Game") #Отрисовываем по центру текст "Mini Game"
pygame.display.flip()
, вызываем меню menu(screen)
Исходник -
Пожалуйста, авторизуйтесь для просмотра ссылки.
VT на python файл -
Пожалуйста, авторизуйтесь для просмотра ссылки.