26 / 26 / 0
Регистрация: 31.01.2020
Сообщений: 182
1

Платформы

26.02.2021, 18:17. Показов 8300. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С использованием библиотеки Pygame напишите программу, в которой на экране 500×500 пикселей нажатие левой кнопки приводит к добавлению платформы (серый прямоугольник 50×10) в точке касания пикселей.

Нажатие на правую кнопку мыши создает персонажа (синий квадрат 20×20 пикселей) в точке нажатия. Персонаж сразу же начинает падать равномерно со скоростью 50 пикселей в секунду до соприкосновения с любой платформой. Повторное нажатие правой кнопки мыши перемещает персонажа в точку нажатия.

Игрок управляет персонажем с помощью клавиш «влево» и «вправо». Одно нажатие на клавишу вызывает перемещение персонажа на 10 пикселей в соответствующую сторону.

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

При решении задачи обязательно используйте классы и наследование.
Миниатюры
Платформы  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2021, 18:17
Ответы с готовыми решениями:

Пересечения персонажа и платформы
Хотим с другом создать игру, по типу дуддл джампа. Как можно написать программу, регистрирующую...

Как заставить мяч отскакивать от платформы
Мне нужно чтобы мяч не только от пола отскакивал, но и от платформы, которой управляет пользователь...

Какие есть платформы и инструменты для создания GUI?
Доброго времени суток, очень хотелось бы работать с gui интерфейсом. Но с Tkinter мне работать не...

Платформы!!!
Итак,расскажите пожалуйста о платформах, програмных и "Железных",чем отличаются, неужели програмные...

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

2
4 / 4 / 0
Регистрация: 07.11.2021
Сообщений: 21
12.01.2023, 14:21 2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
import sys
import random
import pygame
 
 
import random
import pygame
 
 
class Ball(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__(all_sprites)
        self.x = x
        self.y = y
        self.image = pygame.Surface([20, 20])
        self.image.fill((0, 0, 255))
        self.rect = pygame.Rect(x, y, 20, 20)
 
    def update(self):
        if not pygame.sprite.spritecollideany(self, vertical_borders):
            self.rect = self.rect.move(0, 1)
 
    def remo(self, x, y):
        self.rect = pygame.Rect(x, y, 20, 20)
 
    def f(self, m):
        self.rect = self.rect.move(m, 0)
 
 
class Border(pygame.sprite.Sprite):
    def __init__(self, x1, y1):
        super().__init__(all_sprites)
        self.add(vertical_borders)
        self.image = pygame.Surface([50, 10])
        self.image.fill((125, 125, 125))
        self.rect = pygame.Rect(x1, y1, 50, 10)
 
 
if __name__ == '__main__':
    pygame.init()
    pygame.display.set_caption('Платформы')
    size = width, height = 400, 300
    screen = pygame.display.set_mode(size)
    screen.fill((255, 255, 255))
    running = True
    all_sprites = pygame.sprite.Group()
    vertical_borders = pygame.sprite.Group()
    clock = pygame.time.Clock()
    b = False
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            if event.type == pygame.MOUSEBUTTONDOWN:
                if event.button == 1:
                    Border(event.pos[0], event.pos[1])
                elif event.button == 3:
                    if not b:
                        a0 = Ball(event.pos[0], event.pos[1])
                        b = not b
                    else:
                        a0.remo(event.pos[0], event.pos[1])
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    a0.f(10)
                if event.key == pygame.K_LEFT:
                    a0.f(-10)
        all_sprites.update()
        screen.fill((255, 255, 255))
        all_sprites.draw(screen)
        pygame.display.flip()
        clock.tick(20)
0
Йуный плагиат-падаван)
133 / 118 / 45
Регистрация: 17.10.2022
Сообщений: 565
12.01.2023, 21:35 3
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import pygame
 
class Platform:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.width = 50
        self.height = 10
        self.color = (200,200,200)
 
class Character:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.width = 20
        self.height = 20
        self.color = (0,0,255)
        self.fall_speed = 50
        self.move_speed = 10
 
class Game:
    def __init__(self):
        self.screen_size = (500,500)
        self.platforms = []
        self.character = None
   
    def run(self):
        pygame.init()
        screen = pygame.display.set_mode(self.screen_size)
        running = True
        while running:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    running = False
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    if event.button == 1:
                        x, y = event.pos
                        self.platforms.append(Platform(x, y))
                    elif event.button == 3:
                        x, y = event.pos
                        if self.character:
                            self.character.x = x
                            self.character.y = y
                        else:
                            self.character = Character(x, y)
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_LEFT:
                        self.character.x -= self.character.move_speed
                    elif event.key == pygame.K_RIGHT:
                        self.character.x += self.character.move_speed
                        
            screen.fill((0,0,0))
            for platform in self.platforms:
                pygame.draw.rect(screen, platform.color, (platform.x, platform.y, platform.width, platform.height))
            if self.character:
                self.character.y += self.character.fall_speed
                for platform in self.platforms:
                    if self.character.y + self.character.height > platform.y and self.character.y < platform.y + platform.height:
                        if self.character.x + self.character.width > platform.x and self.character.x < platform.x + platform.width:
                            self.character.y = platform.y - self.character.height
                pygame.draw.rect(screen, self.character.color, (self.character.x, self.character.y, self.character.width, self.character.height))
            pygame.display.flip()
        pygame.quit()
 
if __name__ == "__main__":
    game = Game()
    game.run()
0
12.01.2023, 21:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2023, 21:35
Помогаю со студенческими работами здесь

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

Обновление платформы 1с
Коллеги , у кого 1с на линуксе ! Недавно обновил платформу на самую свежую, все как бы ничего,...

Смена платформы
Посоветуйте материнскую плату ASUStek, кулер и процессор. Интел, сокет 1150, бюджет 12-13 т.р. ...

Настройки платформы
При debug в Jreator Error : Invalid path, \bin\java.exe -Xdebug -Xnoagent...

Выбор платформы
Привет!! Подскажите какая платформа с++ под windows наиболее востребована работодателями?

Выбор платформы
Доброго времени суток! :) Какие преимущества имеет PHP над ASP.NET? И на чём сейчас в основном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru