Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 23.12.2020
Сообщений: 3

Как сделать что бы пули летели в разные стороны?

27.02.2022, 22:48. Показов 2139. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я создала человека, который должен выпускать пули, при нажатии на пробел в ту сторону в которую смотрит.Я смогла это сделать,но теперь если человека повернуть влево и выстрелить,а затем повернуть человека вправо,то пуля тоже поменяет свое направление.Как сделать что бы выстрелившая пуля не меняла свое направление?
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
import pygame
from pygame.sprite import Sprite
class Bullet(Sprite):
    def __init__(self,screen,human):
        super().__init__()
        self.screen=screen
        self.speed=1
        self.bul_width=15
        self.bul_heigth=3
        self.bul_color=60,60,60
        self.bul_allowed = 3
        self.rect=pygame.Rect(0,0,self.bul_width,self.bul_heigth)
        self.rect.centery = human.rect.centery
        if human.image == human.human_right:
            self.rect.right = human.rect.right
        elif human.image == human.human_left:
            self.rect.left = human.rect.left
        self.x = float(self.rect.x)
 
    def shooting_bul(self,human):
        if human.image == human.human_right:  
            self.rect.x = self.rect.x + self.speed
        if human.image == human.human_left:
            self.rect.x = self.rect.x - self.speed
 
    def draw_bul(self):
        pygame.draw.rect(self.screen,self.bul_color,self.rect)
Пули создаются при нажатии на пробел и добавляются в группу.Затем каждая пуля в цикле for перебирается и вызывается функция shooting_bul. Я подразумеваю что ошибка в функции shooting_bul, но не знаю как придумать логику что пуля летела до конца.
Вложения
Тип файла: mp4 Видео 27-02-2022 222833.mp4 (40.6 Кб, 23 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2022, 22:48
Ответы с готовыми решениями:

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

Как сделать стрельбу в разные стороны?
вот сама игра

Как сделать импульс в разные стороны (вверх, влево, вправо, вниз)?
Для механики игры необходимо по нажатию кнопки создавать импульс, прыжок по простому, как обычный вверх, только еще влево, вправо и вниз....

1
3 / 2 / 1
Регистрация: 01.03.2022
Сообщений: 5
07.03.2022, 02:57
Лучший ответ Сообщение было отмечено KMur как решение

Решение

В цикле for вы каждый раз вызываете метод shooting_bul, в котором есть условный оператор if с проверкой направления не самой пули, а игрока (человека). Также добавить переменную направления.

Python
1
2
3
4
5
6
7
8
9
10
11
12
    if human.image == human.human_right:
            self.rect.right = human.rect.right
            self.direction = True
        elif human.image == human.human_left:
            self.rect.left = human.rect.left
            self.direction = False
 
    def shooting_bul(self,human):
        if self.direction:  
            self.rect.x = self.rect.x + self.speed
        else:
            self.rect.x = self.rect.x - self.speed
В моём примере - если переменная direction == True, то пуля летит вправо, и наоборот, если False. Можно поменять на что угодно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.03.2022, 02:57
Помогаю со студенческими работами здесь

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

Как сделать так что бы пули вылетали на уровне рук
private void Shoot() { Vector3 position = transform.position; position.y += 0.9F; Bullet newBullet =...

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

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

Как сделать так что бы при нажатии одной кнопки сделать разные вещи несколько раз ?
можно взять интегер i, и если оно ровно 1 то делай это а если нет то нет и если кликнуть на кнопку то i ровно 1, так другая кнопка будет...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru