python - لغة - مكتبة اكواد بايثون




تهيئة سمة كلاس بيثون (2)

أقترح إعادة كتابة التعليمات البرمجية بهذه الطريقة: مجرد تخزين اللون و pygame.Rect في فئة Shape وإعطائها طريقة draw . ليس من المنطقي أن يكون لديك حلقة رئيسية داخل الطبقة Shape . الآن يمكنك إنشاء العديد من الأشكال كما تريد ورسم لهم في حين حلقة.

import sys
import pygame


pygame.init()
WHITE = pygame.Color('white')


class Shape:

    def __init__(self, color, x, y, w, h):
        self.color = color
        self.rect = pygame.Rect(x, y, w, h)

    def draw(self, surface):
        pygame.draw.rect(surface, self.color, self.rect)


def main():
    game_display = pygame.display.set_mode((600, 800))
    shape = Shape(WHITE, 0, 0, 25, 25)
    shape2 = Shape(pygame.Color('sienna1'), 100, 100, 25, 25)
    clock = pygame.time.Clock()
    game_exit = False

    while not game_exit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_exit = True

        game_display.fill((40, 40, 40))
        shape.draw(game_display)
        shape2.draw(game_display)
        pygame.display.update()
        clock.tick(60)


if __name__ == '__main__':
    main()
    pygame.quit()
    sys.exit()

كملاحظة جانبية، يجب كتابة الأسماء المتغيرة في بيثون في snake_case (الحالة السفلى مع سفلية). أيضا، استخدم sys.exit() لإنهاء اللعبة.

لدي برنامج التالي مع بيغام:

import pygame
import time
pygame.init()
white = (255,255,255)
red = (255,0,0)
gameDisplay = pygame.display.set_mode((600,800))
gameExit = False
x=0
y=0
w=25
h=25
class Shape:
    square = pygame.draw.rect(gameDisplay,color,[x,y,w,h])
    def __init__(self,color,x,y,w,h):
        self.color = color
        self.x = x
        self.y = y
        self.w = w
        self.h = h
    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
        gameDisplay.fill(white)
        shape = Shape(white,x,y,w,h)
        pygame.display.update()
        clock.tick(60)
pygame.quit()
quit()

أريد تهيئة السمة مربع من فئة الشكل مع إينيت ، ولكن أحصل على الخطأ التالي. نيميرور: لم يتم تعريف نيم 'كولور'. كيف يمكنني تهيئة السمة مربعة.


جرب التعليمات البرمجية التالية. أتمنى أن يساعدك هذا..

import pygame
import time

class Shape:

    def __init__(self,color,x,y,w,h):
        self.color = color
        self.x = x
        self.y = y
        self.w = w
        self.h = h

    def draw_rect(self, gameDisplay):
        square = pygame.draw.rect(gameDisplay,self.color,
                                  [self.x,self.y,self.w,self.h]
                                  )
        while not gameExit:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()              
                    quit()

        gameDisplay.fill(white)
        pygame.display.update()
        clock.tick(60)

def main():

    pygame.init()
    white = (255,255,255)
    red = (255,0,0)

    gameDisplay = pygame.display.set_mode((600,800))
    gameExit = False

    x=0
    y=0
    w=25
    h=25

    sobj = shape(white,0,0,25,25)
    sobj.draw_rect(gameDisplay)

if __name__ == '__main__':
    main()




pygame