اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

هناك طريقتان لتحريك جميع عناصر الشاشة في Pygame.

الطريقة الأولى هي استخدام وظيفة pygame.transform.scale()، وتستقل تلك الوظيفة صورتك وحجمها الجديد وتعيد صورة جديدة بحجم معين، وبإمكانك استخدام الوظيفة لتحريك جميع عناصر شاشتك بنفس الكمية.

الطريقة الثانية هي استخدام وظيفة pygame.draw.rect()، وتستلم الوظيفة موقع المستطيل وحجمه ولونه وترسم مستطيلًا على الشاشة، وتستطيع الإعتماد على الوظيفة لرسم مستطيل يتحرك مع شخصية اللعبة.

وإن كنت تريد تتبع شخصية اللعبة بحيث تكون في المنتصف، فعليك باستخدام وظيفة pygame.Rect.center()، حيث تستقبل الوظيفة مستطيلًا وتعيد موقع مركزه، وبالتالي تحريك الشاشة بحيث تكون شخصية اللعبة دائمًا في المنتصف.

وسأوضح لك بمثال على كيفية تحريك جميع عناصر الشاشة في Pygame:

import pygame

# Initialize Pygame
pygame.init()

# Create a window
screen = pygame.display.set_mode((640, 480))

# Create some images
image1 = pygame.image.load("image1.png")
image2 = pygame.image.load("image2.png")

# Scale the images
image1 = pygame.transform.scale(image1, (320, 240))
image2 = pygame.transform.scale(image2, (160, 120))

# Draw the images
screen.blit(image1, (0, 0))
screen.blit(image2, (320, 0))

# Update the display
pygame.display.update()

# Main loop
while True:
    # Check for events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Keep the game running
    pygame.time.delay(100)

وإليك مثال على كيفية تتبع شخصية اللعبة بحيث تكون في المنتصف:

import pygame

# Initialize Pygame
pygame.init()

# Create a window
screen = pygame.display.set_mode((640, 480))

# Create the player
player = pygame.Rect(320, 240, 64, 64)

# Load the background image
background = pygame.image.load("background.png")

# Draw the background image
screen.blit(background, (0, 0))

# Draw the player
screen.blit(player, player.center)

# Update the display
pygame.display.update()

# Main loop
while True:
    # Check for events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        # Move the player
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player.x -= 10
            if event.key == pygame.K_RIGHT:
                player.x += 10
            if event.key == pygame.K_UP:
                player.y -= 10
            if event.key == pygame.K_DOWN:
                player.y += 10

        # Keep the player in the middle of the screen
        if player.x < 0:
            player.x = 0
        if player.x > 640 - player.width:
            player.x = 640 - player.width
        if player.y < 0:
            player.y = 0
        if player.y > 480 - player.height:
            player.y = 480 - player.height

        # Draw the player
        screen.blit(player, player.center)

        # Update the display
        pygame.display.update()

        # Keep the game running
        pygame.time.delay(100)

 

  • 0
نشر
بتاريخ 22 دقائق مضت قال Mustafa Suleiman:

هناك طريقتان لتحريك جميع عناصر الشاشة في Pygame.

الطريقة الأولى هي استخدام وظيفة pygame.transform.scale()، وتستقل تلك الوظيفة صورتك وحجمها الجديد وتعيد صورة جديدة بحجم معين، وبإمكانك استخدام الوظيفة لتحريك جميع عناصر شاشتك بنفس الكمية.

الطريقة الثانية هي استخدام وظيفة pygame.draw.rect()، وتستلم الوظيفة موقع المستطيل وحجمه ولونه وترسم مستطيلًا على الشاشة، وتستطيع الإعتماد على الوظيفة لرسم مستطيل يتحرك مع شخصية اللعبة.

وإن كنت تريد تتبع شخصية اللعبة بحيث تكون في المنتصف، فعليك باستخدام وظيفة pygame.Rect.center()، حيث تستقبل الوظيفة مستطيلًا وتعيد موقع مركزه، وبالتالي تحريك الشاشة بحيث تكون شخصية اللعبة دائمًا في المنتصف.

وسأوضح لك بمثال على كيفية تحريك جميع عناصر الشاشة في Pygame:

import pygame

# Initialize Pygame
pygame.init()

# Create a window
screen = pygame.display.set_mode((640, 480))

# Create some images
image1 = pygame.image.load("image1.png")
image2 = pygame.image.load("image2.png")

# Scale the images
image1 = pygame.transform.scale(image1, (320, 240))
image2 = pygame.transform.scale(image2, (160, 120))

# Draw the images
screen.blit(image1, (0, 0))
screen.blit(image2, (320, 0))

# Update the display
pygame.display.update()

# Main loop
while True:
    # Check for events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Keep the game running
    pygame.time.delay(100)

وإليك مثال على كيفية تتبع شخصية اللعبة بحيث تكون في المنتصف:

import pygame

# Initialize Pygame
pygame.init()

# Create a window
screen = pygame.display.set_mode((640, 480))

# Create the player
player = pygame.Rect(320, 240, 64, 64)

# Load the background image
background = pygame.image.load("background.png")

# Draw the background image
screen.blit(background, (0, 0))

# Draw the player
screen.blit(player, player.center)

# Update the display
pygame.display.update()

# Main loop
while True:
    # Check for events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        # Move the player
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player.x -= 10
            if event.key == pygame.K_RIGHT:
                player.x += 10
            if event.key == pygame.K_UP:
                player.y -= 10
            if event.key == pygame.K_DOWN:
                player.y += 10

        # Keep the player in the middle of the screen
        if player.x < 0:
            player.x = 0
        if player.x > 640 - player.width:
            player.x = 640 - player.width
        if player.y < 0:
            player.y = 0
        if player.y > 480 - player.height:
            player.y = 480 - player.height

        # Draw the player
        screen.blit(player, player.center)

        # Update the display
        pygame.display.update()

        # Keep the game running
        pygame.time.delay(100)

 

أنا أقصد إنه مثلا اذا كان اللاعب سريعا تتحرك الشاشه إتعرض مكانه وليس لتوسطه ولا يجب أن يكون اللاعب على الحافه

  • 0
نشر

باستطاعتك استخدام نفس الكود الذي قدمته في الاستجابة السابقة لتحريك الشاشة لتتبع شخصية اللعبة، ولكن بإضافة بعض الخطوات الإضافية لمنع اللاعب من الخروج من الشاشة.

أولاً، عليك إنشاء مصفوفة من القيم التي تمثل الحدود اليسرى واليمنى العلوية والسفلية للشاشة، ثم استخدام هذه المصفوفة لتحديد ما إذا كان اللاعب يتحرك خارج الشاشة أم لا.

ثانيًا،  إضافة شرط إلى الحلقة الرئيسية للتحقق مما إذا كان اللاعب يتحرك خارج الشاشة، وإن كان اللاعب يتحرك خارج الشاشة، بإمكانك تحريك الشاشة بحيث يكون اللاعب دائمًا في المنتصف.

وإليك مثالاً:

import pygame

# Initialize Pygame
pygame.init()

# Create a window
screen = pygame.display.set_mode((640, 480))

# Create the player
player = pygame.Rect(320, 240, 64, 64)

# Load the background image
background = pygame.image.load("background.png")

# Create a list of the screen borders
borders = [0, 0, 640, 480]

# Draw the background image
screen.blit(background, (0, 0))

# Draw the player
screen.blit(player, player.center)

# Update the display
pygame.display.update()

# Main loop
while True:
    # Check for events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        # Move the player
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player.x -= 10
            if event.key == pygame.K_RIGHT:
                player.x += 10
            if event.key == pygame.K_UP:
                player.y -= 10
            if event.key == pygame.K_DOWN:
                player.y += 10

        # Check if the player is outside the screen
        if player.x < borders[0]:
            player.x = borders[0]
        if player.x > borders[2]:
            player.x = borders[2]
        if player.y < borders[1]:
            player.y = borders[1]
        if player.y > borders[3]:
            player.y = borders[3]

        # Draw the player
        screen.blit(player, player.center)

        # Update the display
        pygame.display.update()

        # Keep the game running
        pygame.time.delay(100)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...