Pertanyaan tentang membuat sprite di pygame

Jadi pada dasarnya yang saya tahu cara melakukannya adalah menambahkan sprite pemain (membuat kelas pemain yang mewarisi dari pygame.sprite, dll...) ini berfungsi untuk saya.

Yang ingin saya ketahui cara melakukannya adalah mengulangi pembuatan sprite dan menambahkannya ke grup sprite. Ini karena saya memiliki array 2 dimensi dan saya memiliki fungsi yang membacanya dan menempatkan "ubin" yang sesuai di ruang 2d, ini untuk membuat level lebih mudah. Jadi yang saya ingin fungsi ini lakukan adalah membuat sprite ini (saya kira dengan loop for yang membaca array?) dan menambahkannya untuk melakukan grup tetapi ini tidak berhasil jadi saya punya beberapa pertanyaan terlebih dahulu:

1) Bisakah Anda membuat sprite di luar fungsi init di kelas?

2) Apa sebenarnya sprite itu, apakah permukaannya digabungkan dengan persegi?

3) Dan akhirnya apakah Anda memiliki gagasan tentang cara menyelesaikannya: Jika saya memberi Anda array 2d, bagaimana Anda membuat fungsi yang membaca array ini dan menghitung posisinya (tidak apa-apa, saya rasa saya sudah mengetahuinya keluar) dan yang paling penting, buatlah sprite dari posisi tertentu yang kemudian dapat ditambahkan ke grup sprite.

Terima kasih sebelumnya


person notproplayer 3    schedule 05.06.2020    source sumber


Jawaban (1)


Bisakah Anda membuat sprite di luar fungsi init di kelas?

Tentu.

Apa sebenarnya sprite itu, apakah permukaannya digabungkan dengan persegi?

Jika kita berbicara tentang kelas Sprite pygame: ya.

Sprite seperti itu pada dasarnya adalah Surface (atribut image) dan Rect (atribut rect). Mereka bekerja paling baik bersama dengan kelas Group pygame.

Dan akhirnya apakah Anda memiliki gagasan tentang bagaimana menyelesaikannya....

Cukup buat loop bersarang untuk mengulangi array.

Berikut ini contoh sederhananya:

import pygame
pygame.init()

TILESIZE = 64

class Actor(pygame.sprite.Sprite):
    def __init__(self, color, pos):
        super().__init__()
        self.image = pygame.Surface((TILESIZE, TILESIZE))
        self.image.fill(pygame.Color(color))
        self.rect = self.image.get_rect(topleft = pos)

def main():

    data = [
        '     YUB  ',
        '  G       ',
        '        B ',
        '          ',
        '   Y      ',
        '        U ',
    ]

    screen = pygame.display.set_mode((len(data[0]) * TILESIZE, len(data) * TILESIZE))
    sprites = pygame.sprite.Group()

    colors = {
        'G': 'green',
        'B': 'black',
        'Y': 'yellow',
        'U': 'dodgerblue'
    }

    x, y = 0, 0
    for line in data:
        for char in line:
            if char in colors:
                sprites.add(Actor(colors[char], (x * TILESIZE, y * TILESIZE)))
            x += 1
        x = 0
        y += 1

    while True:
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.QUIT:
                pygame.quit()
                return

        sprites.update()

        screen.fill((100, 100, 100))
        sprites.draw(screen)

        pygame.display.flip()

main()

masukkan deskripsi gambar di sini

Anda dapat menemukan contoh lainnya di sini.

person sloth    schedule 05.06.2020