在Pygame上进行比赛)过程中出现了很多问题,希望得到帮助[关闭]

问题描述 投票:0回答:0

В общем сечас сижу и думаю на моменте как рандомизировать объекты и заставить их двигаться относительно машинки, чтобы они приближались в сторону экрана и менялись в размере, в случае если игрок объехал объект, то объект уходит за экран и удаляется, или если врезался - нанесся урон или же объект разрушен, в общем много вопросов хотелось бы просто понять как что работает ибо уже много посмотрел видео, полазил на форумах, более менее понятного для себя ничего не нашел. |总的来说,我现在坐着思考如何随机化物体并使它们相对于汽车移动以便它们接近屏幕并改变大小,如果玩家绕过物体,那么物体就会消失屏幕被移除,或者如果它崩溃,造成损坏或物体被破坏,一般来说,我想了解很多关于它是如何工作的问题,因为我已经看了很多视频,爬上了论坛,我没有发现任何对我自己来说或多或少可以理解的东西。

В общем, покажу как выглядит код и что вообще смог попробовать, в планах сделать меню, добавить звуки и анимации (такие как полоски на дороге но не понимаю как вообще присвоить скорость машинки так чтобы можно её можно было настроить игроку) |总的来说,我会告诉你代码是什么样子的,我一般可以尝试什么,我打算做一个菜单,添加声音和动画(比如路上的条纹,但我不明白如何分配汽车的一般速度,以便玩家可以配置)。 Я понимаю что вопрос\вопросы которые я задаю - где-то есть, но все же мне просто нужно чье-то мнение и опыт, чтобы хоть немного понять как это работает. |我知道我问的问题/问题在某个地方,但我仍然只需要别人的意见和经验,以便至少了解一点它是如何工作的。 Так, покажу код вообще что я написал |因此,我将展示我编写的一般代码:


###文件 RoadOfTheDead.py

import pygame
import controls
from car import Car
from walls import Wall

#Начало скрипта
def run():

    pygame.init()

    #Окна
    window = pygame.display.set_mode((1450, 750))
    pygame.display.set_caption("Дорога ярости!")
    screen = pygame.Surface((1450, 750))
    #Фон
    bg = pygame.image.load('image/bg.png')
    bg = pygame.transform.scale(bg, (1450,750))
    #Машинка
    car = Car(screen)
    wall = Wall(screen)

    #Цикл игры, расстановка событий
    while True:
        #Все события в controls
        controls.events(car)
        #Обновление машинки
        car.update_car()
        #Разгруженное в контролс
        controls.update(window, screen, bg, car, wall)

run()

pygame.quit()

###文件car.py

import pygame

class Car():

    def __init__(self,screen):
        self.screen = screen
        #Картинка машинки
        self.image = pygame.image.load('image/car.png')
        self.image = pygame.transform.scale(self.image,(320, 280))
        #Обозначение как прямоугольник
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()
        #Координаты
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom
        self.speed = 10
        #Изменение значения движения на флоат
        self.center = float (self.rect.centerx)

        self.mright = False
        self.mleft = False

    def output(self):
        #Рисовка
        self.screen.blit(self.image, self.rect)

    def update_car(self):
        #Границы и расположение машинки и её движение
        if self.mright and self.rect.right < 1280:
            self.center += 25.5
        if self.mleft and self.rect.left > 180:
            self.center -= 25.5
        #Плавное движение
        self.rect.centerx = self.center

###文件控制.py

import pygame
import sys

    #События
def events(car):
    # Выход
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        #Движение
        elif event.type == pygame.KEYDOWN:
        #Вправо
            if event.key == pygame.K_RIGHT:
                car.mright = True
        #Влево
            elif event.key == pygame.K_LEFT:
                car.mleft = True
        elif event.type == pygame.KEYUP:
        #Вправо
            if event.key == pygame.K_RIGHT:
                car.mright = False
        #Влево
            elif event.key == pygame.K_LEFT:
                car.mleft = False

#Обновление экрана
def update(window, screen, bg, car, wall):
    # Отрисовка на экране
    window.blit(screen, (0, 0))
    screen.blit(bg, (0, 0))
    # Отрисовка машинки по координатам
    car.output()
    #Обновление и отрисовка препятствий
    wall.draw()
    # Обновление экрана
    pygame.display.update()
    pygame.display.flip()

###文件墙.py

import pygame

class Wall(pygame.sprite.Sprite):
    #Класс 1 объекта
    def __init__(self, screen):
        #Инициализация и координаты
        super(Wall, self).__init__()
        self.screen = screen
        self.image = pygame.image.load("image/block.png")
        self.rect = self.image.get_rect()
        #Координаты
        self.rect.x = self.rect.width
        self.rect.y = self.rect.height
        self.x = float(self.rect.x)
        self.y = float(self.rect.y)

    def draw(self):
        #Вывод на экран
        self.screen.blit(self.image, self.rect)

Рисунки\текстуры тоже могу скинуть для более детального понятия если нужно。 |如有必要,也可以放弃图纸纹理以获得更详细的概念。

python pygame pycharm
© www.soinside.com 2019 - 2024. All rights reserved.