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

Не двигается корабль и не стреляет. Только картинка при запуске. Что не так с кодом?

17.02.2023, 16:21. Показов 1254. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
alien_invasion.py
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
import pygame
from pygame.sprite import Group
 
from settings import Settings
from ship import Ship
import game_functions as gf
 
def run_game():
#Initilizian game and create object of display.
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")
    
#Create the ship.
    ship = Ship(ai_settings, screen)
    #Create the group for saving of bullets.
    bullets = Group()
 
#Choose main color background.
    bg_color = (0, 0, 255)
 
#Start tne main range of game.
    while True:
        gf.check_events(ai_settings, screen, ship, bullets)
        ship.update()
        gf.update_bullets(bullets)
        gf.update_screen(ai_settings, screen, ship, bullets)
    
#Monitor display and mouse events.
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
 
#Screen is drawn with each transition of the loop.
                screen.fill(ai_settings.bg_color)
                ship.blitme()
 
 
#Display last drawn screen.
                pygame.display.flip()
         
run_game()
game_functions

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
import pygame
from bullet import Bullet
 
def check_keydown_events(event, ai_settings, screen, ship, bullets):
    """Responds to key presses."""
    if event.key == pygame.K_RIGHT:
        ship.moving_right = True
    elif event.key == pygame.K_LEFT:
        ship.moving_left = True
    elif event.key == pygame.K_SPACE:
        fire_bullet(ai_settings, screen, ship, bullets)
 
def fire_bullet(ai_settings, screen, ship, bullets):
    """Fires a bullet if the maximum has not yet been reached."""
        #Create new bullet and include it in groups bullets.
    if len(bullets) < ai_settings.bullets_allowed:
        new_bullet = Bullet(ai_settings, screen, ship)
        bullets.add(new_bullet)
                
def check_keyup_events(event, ship):
    """Responds to key release."""
    if event.key == pygame.K_RIGHT:
        ship.moving_right = False
    elif event.key == pygame.K_LEFT:
        ship.moving_left = False
                
def check_events(ai_settings, screen, ship, bullets):
    """Handles keystrokes and mouse events."""
    for event in pygame.event.get():
        
        if event.type == pygame.QUIT:
            sys.exit()
            
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event, ai_settings, screen, ship, bullets)
            if event.key == pygame.K_RIGHT:
                ship.moving_right = True
        elif event.type == pygame.KEYUP:
            check_keyup_events(event, ship)
            if event.key == pygame.K_RIGHT:
                ship.moving_right = False
                # Move the ship right.
                ship.rect.centerx += 1
       
def update_screen(ai_settings, screen, ship, bullets):
    """Refreshes the screen image and displays the new screen."""
    screen.fill(ai_settings.bg_color)
    #All bullets display behind ships and aliens.
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    ship.blitme()
    # Display the last rendered screen.
    pygame.display.flip()
 
def update_bullets(bullets):
    """Update position bullets and delete old bullets."""
    #Update position of bullets.
    bullets.update()
    #Delete bullets what gone off edge of the screen.
    for bullet in bullets.copy():
            if bullet.rect.bottom <= 0:
                bullets.remove(bullet)
                print(len(bullets))
Ship.py
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
import pygame
 
class Ship():
 
    def __init__(self, ai_settings, screen):
        """Initialiez the ship and creates its initial position."""
        self.screen = screen
        self.ai_settings = ai_settings
 
        # Load image ship and receiving rectangle.
        self.image = pygame.image.load('ship.bmp')
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()
        # Each new ship appears at the bottom of the screen.
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom
        # Saving the real coordinate of the center of the ship.
        self.center = float(self.rect.centerx)
        # Movement flag.
        self.moving_right = False
        self.moving_left = False
 
    def update(self):
        """ Update position ship based on the flag."""
        # Update atribute center but not rect.
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.center += self.ai_settings.ship_speed_factor
        if self.moving_left and self.rect.left > 0:
            self.center -= self.ai_settings.ship_speed_factor
 
        # Update atribute rect based self.center.
        self.rect.centerx = self.center
        
    def blitme(self):
        """Draw the ship in current position."""
        self.screen.blit(self.image, self.rect)
Settings.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Settings():
    """Class for save all options for game Alien Invasion."""
 
    def __init__(self):
        """Initilization options game."""
        #Settings screen
        self.screen_width = 1366
        self.screen_height = 768
        self.bg_color = (0, 0, 255)
        #Settings ship
        ship_speed_factor = 1.5
        #Settings of bullet
        self.bullet_speed_factor = 1
        self.bullet_width = 3
        self.bullet_height = 15
        self.bullet_color = 60, 60, 60
        self.bullets_allowed = 3
bullet.py
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
import pygame
from pygame.sprite import Sprite
 
class Bullet(Sprite):
    """Class for manage bullets from ship."""
 
def __init__(self, ai_settings, screen, ship):
    """Create a bullet at now position of ship."""
    super(Bullet, self).__init__()
    self.screen = screen
 
    #Create bullet in position (0,0) and destination correct position.
    self.rect = pygame.Rect(0, 0, ai_settings.bullet_width,
                            ai_settings.bullet_height)
    self.rect.centerx = ship.rect.centerx
    self.rect.top = ship.rect.top
 
    #Bullet position is stored in real format.
    self.y = float(self.rect.y)
 
    self.color = ai_settings.bullet_color
    self.speed_factor = ai_settings.bullet_speed_factor
 
def update(self):
    """Move the bullet on display up."""
    #Update bullet position in real formate.
    self.y -= self.speed_factor
    #Update rectangle position.
    self.rect.y = self.y
 
def draw_bullet(self):
    """Display the bullet."""
    pygame.draw.rect(self.screen, self.color, self.rect)

Ошибок Шелл не выдает
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2023, 16:21
Ответы с готовыми решениями:

В аниматоре при просмотре анимации все работает правильно, но при запуске персонаж двигается не так
В аниматоре при переходе из бега в слайд персонаж опускается как и в анимации, которую импортировал из блендера, но в игре после бега...

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

Выводится картинка на view сразу при запуске программы и только один раз
Ну собственно это продолжение вопроса на мой предыдущий вопрос про вывод картинки, с выводом я почти разобрался, в свойстве customclass...

1
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
18.02.2023, 12:33
Цитата Сообщение от Uristoshka992 Посмотреть сообщение
Python
1
2
3
4
#Monitor display and mouse events.
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        sys.exit()
Цитата Сообщение от Uristoshka992 Посмотреть сообщение
Python
1
2
3
4
5
6
def check_events(ai_settings, screen, ship, bullets):
    """Handles keystrokes and mouse events."""
    for event in pygame.event.get():
        
        if event.type == pygame.QUIT:
            sys.exit()
У Вас обработка событий идет в двух местах, причем первый вариант из всех событий обрабатывает только QUIT. Как минимум один блок лишний.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2023, 12:33
Помогаю со студенческими работами здесь

Что не так с кодом? В синий цвет окрашивается абзац на карточке с арбузом и заголовок, а синим должен быть только текст
Что не так с кодом? В синий цвет окрашивается абзац на карточке с арбузом и заголовок, а синим должен быть только текст &quot;Watermelon...

Сделать так чтобы при клике на картинку оставалась только эта картинка и выводился текст.
Помогите решить проблему начинающему в JS. У меня есть блок в котором три картинки 1,2,3. Надо сделать так что бы при клике на картинку 1...

Не могу понять что не так с кодом (сжатие кодом Хэмминга)
Написали код по заданию &quot;Считать картинку bmp по пикселям: R 8 бит, G 8 бит, B 8 бит. Старший бит в каждом байте оставить без...

Шифр Цезаря на c++. Что не так с кодом ? При вводе пробела ошибка
#include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;clocale&gt; using namespace std; int main() { setlocale(LC_CTYPE,&quot;russian&quot;);...

Подскажите пожалуйста что не так с кодом, при нажатии Button вылетает ошибка
:( Вот задание: Преобразовать массив Х по следующему правилу: все отрицательные элементы массива перенести в начало, а все остальные –...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru