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

Проблема с астероидами

27.06.2021, 10:14. Показов 2407. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я пишу игру(игра прилагается), но астероиды работают неправильно
В чем ошибка?
Вложения
Тип файла: rar Игра.rar (20.8 Кб, 12 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.06.2021, 10:14
Ответы с готовыми решениями:

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

Проблема с кодом. Выдает ошибку, я не могу понять в чем проблема
Работаю первый раз с Maple. Установлен версии 2015 года. Выдает ошибку я не могу понять в чем проблема Вот код: restart: ...

Проблема с движением объекта через компьютерную мышь, и также проблема, со сменой камеры
Делаю игру на unity, где будет танк. Тут у меня появились две проблемы. 1) При нажатии С, должна меняться камера, посредством смены...

1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
30.06.2021, 04:11
Green_Caktus, а как должны работать?

Добавлено через 23 минуты
Green_Caktus, посмотри на класс Asteroid и как вызываются методы draw и move. Также изменил функцию spawn

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pygame as pg
import random as rand
 
 
pg.init()
win = pg.display.set_mode((1270, 720))
run = True
ast = [pg.image.load(f'asteroid/{i}.png') for i in range(6)]
bullet = pg.image.load('bullet.png')
ship = {
    5: pg.image.load('ship/ship_5.png'),
    4: pg.image.load('ship/ship_4.png'),
    3: pg.image.load('ship/ship_3.png'),
    2: pg.image.load('ship/ship_2.png'),
    1: pg.image.load('ship/ship_1.png')
}
bg = pg.image.load('bg.png')
bg_c = 0
astr = []
bul = []
ast_charge = 30
 
 
class Player:
    x = 625
    y = 345
    hp = 5
    point = 0
    charge = 29
 
    def damage(self):
        self.hp -= 1
 
    def dead(self):
        global run
        run = False
 
    def draw(self):
        win.blit(ship[self.hp], (self.x, self.y))
 
    def move(self):
        global bul, keys
        keys = pg.key.get_pressed()
        if keys[pg.K_ESCAPE]:
            quit()
        if keys[pg.K_UP] and self.y > 0:
            self.y -= 10
        if keys[pg.K_DOWN] and self.y < 690:
            self.y += 10
        if keys[pg.K_RIGHT] and self.x < 1250:
            self.x += 10
        if keys[pg.K_LEFT] and self.x > 0:
            self.x -= 10
        if keys[pg.K_SPACE] and self.charge >= 7:
            self.char = 0
            bul.append([self.x+10, self.y])
 
 
pl = Player
 
 
class Asteroid:
    def __init__(self, x, y, pic, move_x, move_y):
        self.x = x
        self.y = y
        self.pic = pic
        self.move_x = move_x
        self.move_y = move_y
 
    def draw(self):
        win.blit(self.pic, (self.x, self.y))
 
    def move(self):
        self.x += self.move_x
        self.y += self.move_y
        if self.x < 0:
            self.x = 1270
        if self.x > 1270:
            self.x = 0
        if self.y < 0:
            self.y = 720
        if self.y > 720:
            self.y = 0
 
 
def spawn():
    global ast_charge
    if ast_charge >= 30:
        x, y = rand.choice([-30, 1270]), rand.choice([-30, 720])
        pic = rand.choice(ast)
        move_x = rand.randint(-10, 10)
        move_y = rand.randint(-10, 10)
        astr.append(Asteroid(x, y, pic, move_x, move_y))
        ast_charge = 0
    else:
        ast_charge += 1
 
 
def fill():
    global bg, bg_c, win
    win.blit(bg, (0, -1440+bg_c))
    bg_c += 1
    if bg_c == 1440:
        bg_c = -0
 
 
v = 50
f1 = pg.font.Font(None, 50)
text3 = f1.render('Уворачивайтесь от астеройдов,', 1, (254, 254, 254))
text4 = f1.render('и стреляйте по ним, чтобы получать очки',
                  1, (254, 254, 254))
 
while run:
    pg.time.delay(30)
 
    Player.move(pl)
    fill()
    for asteroid in astr:
        asteroid.draw()
        asteroid.move()
    Player.draw(pl)
    if v:
        v -= 1
        win.blit(text3, (400, 300))
        win.blit(text4, (350, 350))
    text1 = f1.render('HP = '+str(pl.hp), 1, (255, 255, 255))
    text2 = f1.render(str(pl.point), 1, (255, 255, 255))
    win.blit(text1, (1100, 100))
    win.blit(text2, (100, 100))
    for r in pg.event.get():
        if r.type == pg.QUIT:
            quit()
    spawn()
    # print(astr)
    pg.display.update()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2021, 04:11
Помогаю со студенческими работами здесь

проблема при работе с китайским J-LINK 8 или же проблема с с
Всем привет. Решил Сам собрать себе дисковери кит на базе at91sam7s64-ek. Подарили мне китайский J-Link 8 c прошивкой 3.20. Недолго...

Проблема собственной массы и энергии электрона в классической электродинамике и проблема абсолютно твердого тела в СТО
Проблема собственной массы и энергии электрона в классической электродинамике и проблема абсолютно твердого тела в СТО.. По моему...

Проблема с пингом, проблема которой не могу объяснить
Такая ситуация стряслась, поменяли роутер, у всех все нормально, но у меня на ноутбуке прыгает пинг в произвольном порядке, это вместе с...

Проблема с Linux Mint 20(А может и не проблема)
Когда нажимаю на sk Hynix появляется это окошко(так должно быть или нет)?

Проблема применимости и проблема останова
Привет! Как бы я не бился - никак не могу понять проблему останова и применимости алгоритмов в целом. Хочу попросить прям полное объяснение...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru