2 / 1 / 2
Регистрация: 20.11.2019
Сообщений: 90
1

Игра летающая птица. Не работает игра

29.06.2021, 10:58. Показов 2783. Ответов 6
Метки нет (Все метки)

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
138
139
140
141
142
143
144
import pygame
import random
 
pygame.init()
 
SCREEN = pygame.display.set_mode((500, 750))  # Setting the display
 
BACKGROUND_IMAGE = pygame.image.load('background.jpg')
 
BIRD_IMAGE = pygame.image.load('bird1.png')
bird_x = 50
bird_y = 300
bird_y_change = 0
 
 
def display_bird(x, y):
    SCREEN.blit(BIRD_IMAGE, (x, y))
 
 
OBSTACLE_WIDTH = 70
OBSTACLE_HEIGHT = random.randint(150, 450)
OBSTACLE_COLOR = (211, 253, 117)
OBSTACE_X_CHANGE = -4
obstacle_x = 500
 
 
def display_obstacle(height):
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, 0, OBSTACLE_WIDTH, height))
    bottom_obstacle_height = 635 - height - 150
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, 635, OBSTACLE_WIDTH, -bottom_obstacle_height))
 
 
def collision_detection(obstacle_x, obstacle_height, bird_y, bottom_obstacle_height):
    if obstacle_x >= 50 and obstacle_x <= (50 + 64):
        if bird_y <= obstacle_height or bird_y >= (bottom_obstacle_height - 64):
            return True
    return False
 
 
score = 0
SCORE_FONT = pygame.font.Font('freesansbold.ttf', 32)
 
 
def score_display(score):
    display = SCORE_FONT.render(f"Score: {score}", True, (255, 255, 255))
    SCREEN.blit(display, (10, 10))
 
 
startFont = pygame.font.Font('freesansbold.ttf', 32)
 
 
def start():
    display = startFont.render(f"PRESS SPACE BAR TO START", True, (255, 255, 255))
    SCREEN.blit(display, (20, 200))
    pygame.display.update()
 
 
score_list = [0]
 
game_over_font1 = pygame.font.Font('freesansbold.ttf', 64)
game_over_font2 = pygame.font.Font('freesansbold.ttf', 32)
 
 
def game_over():
    maximum = max(score_list)
 
    display1 = game_over_font1.render(f"GAME OVER", True, (200, 35, 35))
    SCREEN.blit(display1, (50, 300))
 
    display2 = game_over_font2.render(f"SCORE: {score} MAX SCORE: {maximum}", True, (255, 255, 255))
    SCREEN.blit(display2, (50, 400))
 
    if score == maximum:
        display3 = game_over_font2.render(f"NEW HIGH SCORE!!", True, (200, 35, 35))
        SCREEN.blit(display3, (80, 100))
 
 
running = True
waiting = True
collision = False
 
while running:
 
    SCREEN.fill((0, 0, 0))
    SCREEN.blit(BACKGROUND_IMAGE, (0, 0))
 
    while waiting:
        if collision:
            game_over()
            start()
        else:
            start()
 
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    score = 0
                    bird_y = 300
                    obstacle_x = 500
                    waiting = False
 
            if event.type == pygame.QUIT:
                waiting = False
                running = False
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
 
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                bird_y_change = -6
 
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_SPACE:
                bird_y_change = 3
 
    bird_y += bird_y_change
    if bird_y <= 0:
        bird_y = 0
    if bird_y >= 571:
        bird_y = 571
 
    obstacle_x += OBSTACE_X_CHANGE
 
    collision = collision_detection(obstacle_x, OBSTACLE_HEIGHT, bird_y, OBSTACLE_HEIGHT + 150)
 
    if collision:
        score_list.append(score)
        waiting = True
 
    if obstacle_x <= -10:
        obstacle_x = 500
        OBSTACLE_HEIGHT = random.randint(200, 400)
        score += 1
    display_obstacle(OBSTACLE_HEIGHT)
 
    display_bird(bird_x, bird_y)
 
    score_display(score)
 
    pygame.display.update()
 
pygame.quit()
Миниатюры
Игра летающая птица. Не работает игра  
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2021, 10:58
Ответы с готовыми решениями:

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

Создать иерархию классов игра – спортивная игра – волейбол
Создать иерархию классов игра – спортивная игра – волейбол. Определить конструкторы, деструктор,...

Создать иерархию классов игра – спортивная игра – волейбол
Создать иерархию классов игра – спортивная игра – волейбол.Определить конструкторы, деструктор,...

Бюджет 4500 гр. Конфигурация работа в Office, AutoCAD, игра Assassin, онлайн игра World of Tanks
Собираю компьютер для сестры. Основные требования: работа в Microsoft Office, AutoCAD, игра...

6
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
30.06.2021, 03:47 2
Kirillujdvyjvhg, http://www.sscce.org/
0
2 / 1 / 2
Регистрация: 20.11.2019
Сообщений: 90
30.06.2021, 13:28  [ТС] 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
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
138
139
140
141
142
import pygame
import random
 
pygame.init()
 
SCREEN = pygame.display.set_mode((500, 750))  # Setting the display
 
BACKGROUND_IMAGE = pygame.image.load('background.jpg')
 
BIRD_IMAGE = pygame.image.load('bird1.png')
bird_x = 50
bird_y = 300
bird_y_change = 0
 
 
def display_bird(x, y):
    SCREEN.blit(BIRD_IMAGE, (x, y))
 
 
OBSTACLE_WIDTH = 50
OBSTACLE_HEIGHT = random.randint(150, 450)
OBSTACLE_COLOR = (211, 253, 117)
OBSTACE_X_CHANGE = -0.08
obstacle_x = 500
 
 
def display_obstacle(height):
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, 0, OBSTACLE_WIDTH, height))
    bottom_obstacle_height = 63 - height - 150 # вроде проблема тут
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, 635, OBSTACLE_WIDTH, -bottom_obstacle_height))
 
 
def collision_detection(obstacle_x, obstacle_height, bird_y, bottom_obstacle_height):
    if obstacle_x >= 50 and obstacle_x <= (50 + 64):
        if bird_y <= obstacle_height or bird_y >= (bottom_obstacle_height - 64):
            return True
    return False
 
 
score = 0
SCORE_FONT = pygame.font.Font('freesansbold.ttf', 32)
 
 
def score_display(score):
    display = SCORE_FONT.render(f"Score: {score}", True, (255, 255, 255))
    SCREEN.blit(display, (10, 10))
 
 
startFont = pygame.font.Font('freesansbold.ttf', 32)
 
 
def start():
    display = startFont.render(f"PRESS SPACE BAR TO START", True, (255, 255, 255))
    SCREEN.blit(display, (20, 200))
    pygame.display.update()
 
 
score_list = [0]
 
game_over_font1 = pygame.font.Font('freesansbold.ttf', 64)
game_over_font2 = pygame.font.Font('freesansbold.ttf', 32)
 
 
def game_over():
    maximum = max(score_list)
    display1 = game_over_font1.render(f"GAME OVER", True, (200, 35, 35))
    SCREEN.blit(display1, (50, 300))
    display2 = game_over_font2.render(f"SCORE: {score} MAX SCORE: {maximum}", True, (255, 255, 255))
    SCREEN.blit(display2, (50, 400))
    if score == maximum:
        display3 = game_over_font2.render(f"NEW HIGH SCORE!!", True, (200, 35, 35))
        SCREEN.blit(display3, (80, 100))
 
 
running = True
waiting = True
collision = False
 
while running:
 
    SCREEN.fill((0, 0, 0))
 
    SCREEN.blit(BACKGROUND_IMAGE, (0, 0))
 
    while waiting:
        if collision:
            game_over()
            start()
        else:
            start()
 
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    score = 0
                    bird_y = 300
                    obstacle_x = 500
                    waiting = False
 
            if event.type == pygame.QUIT:
                waiting = False
                running = False
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
 
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                bird_y_change = -0.3
 
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_SPACE:
                bird_y_change = 0.1
 
    bird_y += bird_y_change
    if bird_y <= 0:
        bird_y = 0
    if bird_y >= 571:
        bird_y = 571
 
    obstacle_x += OBSTACE_X_CHANGE
 
    collision = collision_detection(obstacle_x, OBSTACLE_HEIGHT, bird_y, OBSTACLE_HEIGHT + 150)
 
    if collision:
        score_list.append(score)
        waiting = True
 
    if obstacle_x <= -10:
        obstacle_x = 500
        OBSTACLE_HEIGHT = random.randint(200, 400)
        score += 1
    display_obstacle(OBSTACLE_HEIGHT)
 
    display_bird(bird_x, bird_y)
 
    score_display(score)
 
    pygame.display.update()
 
pygame.quit()
0
2 / 1 / 2
Регистрация: 20.11.2019
Сообщений: 90
01.07.2021, 09:10  [ТС] 4
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
138
139
140
141
142
143
144
import pygame
import random
 
pygame.init()
 
SCREEN = pygame.display.set_mode((500, 750))
 
BACKGROUND_IMAGE = pygame.image.load('background.jpg')
 
BIRD_IMAGE = pygame.image.load('bird1.png')
bird_x = 50
bird_y = 300
bird_y_change = 0
 
 
def display_bird(x, y):
    SCREEN.blit(BIRD_IMAGE, (x, y))
 
 
OBSTACLE_WIDTH = 50
OBSTACLE_HEIGHT = random.randint(50, 500)
OBSTACLE_COLOR = (211, 253, 117)
OBSTACE_X_CHANGE = -0.08
obstacle_x = 5
 
 
def display_obstacle(height):
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, 0, OBSTACLE_WIDTH, height))
    bottom_obstacle_height = height + 125
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, bottom_obstacle_height, OBSTACLE_WIDTH, 635))
 
 
 
 
def collision_detection(obstacle_x, obstacle_height, bird_y, bottom_obstacle_height):
    if obstacle_x >= 50 and obstacle_x <= (50 + 64):
        if bird_y <= obstacle_height or bird_y >= (bottom_obstacle_height - 64):
            return True
    return False
 
 
score = 0
SCORE_FONT = pygame.font.Font('freesansbold.ttf', 32)
 
 
def score_display(score):
    display = SCORE_FONT.render(f"Очки: {score}", True, (255, 255, 255))
    SCREEN.blit(display, (10, 10))
 
 
startFont = pygame.font.Font('freesansbold.ttf', 20)
 
 
def start():
    display = startFont.render(f"НАЖМИТЕ НА ПРОБЕЛ, ДЛЯ НАЧАЛА ИГРЫ", True, (255, 255, 255))
    SCREEN.blit(display, (20, 200))
    pygame.display.update()
 
 
score_list = [0]
 
game_over_font1 = pygame.font.Font('freesansbold.ttf', 45)
game_over_font2 = pygame.font.Font('freesansbold.ttf', 25)
 
 
def game_over():
    maximum = max(score_list)
    display1 = game_over_font1.render(f"ИГРА ОКОНЧЕНА", True, (200, 35, 35))
    SCREEN.blit(display1, (50, 300))
    display2 = game_over_font2.render(f"ОЧКИ: {score} МАКСИМУМ ОЧКОВ: {maximum}", True, (255, 255, 255))
    SCREEN.blit(display2, (50, 400))
    if score == maximum:
        display3 = game_over_font2.render(f"НОВЫЙ РЕКОРД!", True, (200, 35, 35))
        SCREEN.blit(display3, (120, 100))
 
 
running = True
waiting = True
collision = False
 
while running:
 
    SCREEN.fill((0, 0, 0))
 
    SCREEN.blit(BACKGROUND_IMAGE, (0, 0))
 
    while waiting:
        if collision:
            game_over()
            start()
        else:
            start()
 
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    score = 0
                    bird_y = 300
                    obstacle_x = 500
                    waiting = False
 
            if event.type == pygame.QUIT:
                waiting = False
                running = False
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
 
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                bird_y_change = -0.3
 
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_UP:
                bird_y_change = 0.1
 
    bird_y += bird_y_change
    if bird_y <= 0:
        bird_y = 0
    if bird_y >= 571:
        bird_y = 571
 
    obstacle_x += OBSTACE_X_CHANGE
 
    collision = collision_detection(obstacle_x, OBSTACLE_HEIGHT, bird_y, OBSTACLE_HEIGHT + 125)
 
    if collision:
        score_list.append(score)
        waiting = True
 
    if obstacle_x <= -10:
        obstacle_x = 500
        OBSTACLE_HEIGHT = random.randint(50, 500)
        score += 1
    display_obstacle(OBSTACLE_HEIGHT)
 
    display_bird(bird_x, bird_y)
 
    score_display(score)
 
    pygame.display.update()
 
pygame.quit()
Одну строчку поменять надо было!
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
02.07.2021, 22:25 5
Цитата Сообщение от Kirillujdvyjvhg Посмотреть сообщение
Одну строчку поменять надо было!
пример запускаться должен, если хочешь чтобы его кто-то протестировал.
0
2 / 1 / 2
Регистрация: 20.11.2019
Сообщений: 90
03.07.2021, 14:49  [ТС] 6
У меня он почему то не компилируется, постоянно выдаёт ошибку!
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
import pygame
import random
 
pygame.init()
pygame.display.set_caption('Летающая птица')
SCREEN = pygame.display.set_mode((500, 750))
 
bird_x = 50
bird_y = 300
bird_y_change = 0
 
OBSTACLE_WIDTH = 50
OBSTACLE_HEIGHT = random.randint(50, 500)
OBSTACLE_COLOR = (211, 253, 117)
OBSTACE_X_CHANGE = -0.08
obstacle_x = 500
 
 
def display_obstacle(height):
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, 0, OBSTACLE_WIDTH, height))
    bottom_obstacle_height = height + 125
    pygame.draw.rect(SCREEN, OBSTACLE_COLOR, (obstacle_x, bottom_obstacle_height, OBSTACLE_WIDTH, 635))
 
 
def collision_detection(obstacle_x, obstacle_height, bird_y, bottom_obstacle_height):
    if obstacle_x >= 50 and obstacle_x <= (50 + 64):
        if bird_y <= obstacle_height or bird_y >= (bottom_obstacle_height - 64):
            return True
    return False
 
 
score = 0
SCORE_FONT = pygame.font.Font('freesansbold.ttf', 32)
 
 
def score_display(score):
    display = SCORE_FONT.render(f"Очки: {score}", True, (255, 255, 255))
    SCREEN.blit(display, (10, 10))
 
 
startFont = pygame.font.Font('freesansbold.ttf', 20)
 
 
def start():
    display = startFont.render(f"НАЖМИТЕ НА ПРОБЕЛ, ДЛЯ НАЧАЛА ИГРЫ", True, (255, 255, 255))
    SCREEN.blit(display, (20, 200))
    pygame.display.update()
 
 
score_list = [0]
 
game_over_font1 = pygame.font.Font('freesansbold.ttf', 45)
game_over_font2 = pygame.font.Font('freesansbold.ttf', 25)
 
 
def game_over():
    maximum = max(score_list)
    display1 = game_over_font1.render(f"ИГРА ОКОНЧЕНА", True, (200, 35, 35))
    SCREEN.blit(display1, (50, 300))
    display2 = game_over_font2.render(f"ОЧКИ: {score} МАКСИМУМ ОЧКОВ: {maximum}", True, (255, 255, 255))
    SCREEN.blit(display2, (50, 400))
    if score == maximum:
        display3 = game_over_font2.render(f"НОВЫЙ РЕКОРД!", True, (200, 35, 35))
        SCREEN.blit(display3, (120, 100))
 
 
running = True
waiting = True
collision = False
 
while running:
 
    SCREEN.fill((0, 0, 0))
 
    while waiting:
        if collision:
            game_over()
            start()
        else:
            start()
 
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    score = 0
                    bird_y = 300
                    obstacle_x = 500
                    waiting = False
 
            if event.type == pygame.QUIT:
                waiting = False
                running = False
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
 
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                bird_y_change = -0.3
 
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_SPACE:
                bird_y_change = 0.1
 
    bird_y += bird_y_change
    if bird_y <= 0:
        bird_y = 0
    if bird_y >= 571:
        bird_y = 571
 
    obstacle_x += OBSTACE_X_CHANGE
 
    collision = collision_detection(obstacle_x, OBSTACLE_HEIGHT, bird_y, OBSTACLE_HEIGHT + 125)
 
    if collision:
        score_list.append(score)
 
        waiting = True
 
    if obstacle_x <= -10:
        obstacle_x = 500
        OBSTACLE_HEIGHT = random.randint(50, 500)
        score += 1
 
    display_obstacle(OBSTACLE_HEIGHT)
 
    score_display(score)
 
    pygame.display.update()
 
pygame.quit()
Компилирую на pyinstaller, ошибка "Failed to execute script". Причём что, с картинками и музыкой, что без них.
В чём может быть проблема?
0
Модератор
Эксперт Python
2621 / 1463 / 493
Регистрация: 21.02.2017
Сообщений: 3,985
Записей в блоге: 1
05.07.2021, 07:32 7
Kirillujdvyjvhg, как минимум потому что ты не компилируешь, а пакуешь в exe. И да, надо делать это с умом, а не с бухты барахты.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2021, 07:32
Помогаю со студенческими работами здесь

Игра в загадки. Загадать загадку. Если ответ верен – поздравить пользователя. Затем сообщить, что игра окончена.
Всем привет! Меня зовут VitoScaletta, совсем недавно начал обучаться JS, но очень тяжело в голову...

Игра в «Одиннадцать предметов», игра Баше.
прошу помощи в создании программы! Разработать программную модель следующей игры двух...

Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново?
Как сделать так, чтобы при нажатии на кнопку &quot;Новая игра&quot; игра начиналась заново? unit1.cpp void...

Не работает скомпилированный EXE файл хотя в самой среде игра работает
Я почти закончил разработку своей игры на Unity2D но после запуска скомпилированного EXE файла...

Игра слов, игра Scrabble
Задание: Создать программу для решения задачи построения слова из некоторого множества букв (игра...

Существует ли игра такая игра?
Всем привет. Существует ли такая игра, где, допустим, мы находимся на космическом корабле, в...


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

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

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