بازیو برگردون؛ کاری کن هوش مصنوعی از تو یاد بگیره! بازیو برگردون؛ کاری کن هوش مصنوعی از تو یاد بگیره!
ثبت نام

بازی عبور از موانع با پایتون

بازی عبور از موانع با پایتون
شرح مختصر پروژه

بازی عبور از موانع یک بازی ساده و در عین حال یک پروژه نسبتا چالش برانگیز برای برنامه نویسان مبتدی پایتون است که در آن از کتابخانه ی pygame استفاده می شود.

توضیحات پروژه

این بازی یک بازی ساده و جذاب است که شما در آن یک بازیکن را کنترل کرده و باید از بین موانعی که به صورت تصادفی در مسیر شما قرار دارند عبور کنید. با استفاده از کلیدهای جهت‌دهی، می‌توانید بازیکن را حرکت دهید و از برخوردهای با موانع جلوگیری کنید. هر بار که بازیکن با یک مانع برخورد می‌کند، بازی متوقف می‌شود و شما باید بازی را از ابتدا شروع کنید.

اما جالب‌ترین بخش این بازی این است که سرعت موانع به مرور زمان افزایش می‌یابد و شما باید با توجه به این افزایش سرعت، بازیکن را کنترل کنید تا از برخوردهای با موانع جلوگیری کنید. همچنین، با استفاده از کلیدهای Shift و Ctrl می‌توانید به ترتیب سرعت موانع را افزایش و کاهش دهید تا بازی را برای خودتان چالش‌برانگیز‌تر یا آسان‌تر کنید.

مراحل ساخت بازی با استفاده از پایتون

مرحله اول : نصب کتابخانه های مورد نیاز

برای ایجاد این بازی، از کتابخانه Pygame استفاده شده است که یک کتابخانه‌ی متن باز و رایگان برای توسعه‌ی بازی‌ها و برنامه‌های چندرسانه‌ای در زبان برنامه‌نویسی پایتون است. Pygame امکاناتی را برای رسم شیءها در پنجره، مدیریت ورودی کاربر، صدا و موزیک، تصاویر و انیمیشن فراهم می‌کند که همگی برای ساخت بازی‌های ساده یا پیشرفته کافی هستند.

برای نصب کتابخانه Pygame، می‌توانید از دستور زیر در خط فرمان (CMD) استفاده کنید:

pip install pygame

کد برنامه

import pygame
import sys
import random
import math

# Initialize Pygame
pygame.init()

# Settings
WIDTH, HEIGHT = 500, 500
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("حرکت بين موانع")

# Colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)
PURPLE = (128, 0, 128)
CYAN = (0, 255, 255)
ORANGE = (255, 165, 0)

# List of colors
COLORS = [RED, GREEN, BLUE, YELLOW, PURPLE, CYAN, ORANGE]



# Player class
class Player:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.radius = 25
        self.color = WHITE
        self.velocity = 5

    def draw(self, win):
        pygame.draw.circle(win, self.color, (self.x, self.y), self.radius)

# Obstacle class
class Obstacle:
    def __init__(self, x, y, radius, velocity, color):
        self.x = x
        self.y = y
        self.radius = radius
        self.color = color
        self.velocity = velocity

    def draw(self, win):
        pygame.draw.circle(win, self.color, (self.x, self.y), self.radius)

    def move(self, speed_change):
        self.x -= self.velocity + speed_change

def create_obstacles():
    obstacles = []
    for _ in range(5):  # Number of obstacles
        obstacle_radius = random.randint(10, 30)
        obstacle_x = random.randint(WIDTH, 2 * WIDTH)
        obstacle_y = random.randint(obstacle_radius, HEIGHT - obstacle_radius)
        obstacle_velocity = random.randint(1, 5)
        obstacle_color = random.choice(COLORS)
        obstacles.append(Obstacle(obstacle_x, obstacle_y, obstacle_radius, obstacle_velocity, obstacle_color))
    return obstacles

# Main function
def main():
    player = Player(50, 50)
    obstacles = create_obstacles()
    clock = pygame.time.Clock()

    # Settings for adjusting obstacle speed
    speed_increase_amount = 1  # Amount to increase speed by
    speed_change = 0

    running = True
    while running:
        clock.tick(60)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            player.x -= player.velocity
        if keys[pygame.K_RIGHT]:
            player.x += player.velocity
        if keys[pygame.K_UP]:
            player.y -= player.velocity
        if keys[pygame.K_DOWN]:
            player.y += player.velocity
        if keys[pygame.K_LSHIFT]:
            speed_change += speed_increase_amount
        if keys[pygame.K_LCTRL]:
            speed_change -= speed_increase_amount
            if speed_change < 0:
                speed_change = 0

        # Move obstacles
        for obstacle in obstacles:
            obstacle.move(speed_change)
            if obstacle.x < -obstacle.radius:
                obstacle.x = WIDTH + random.randint(50, 200)
                obstacle.y = random.randint(obstacle.radius, HEIGHT - obstacle.radius)
                obstacle.velocity = random.randint(1, 5)
                obstacle.color = random.choice(COLORS)

        # Check collision with obstacles
        for obstacle in obstacles:
            distance = math.sqrt((player.x - obstacle.x)**2 + (player.y - obstacle.y)**2)
            if distance < player.radius + obstacle.radius:
                running = False  # End the game if collision occurs

        # Draw everything on the screen
        WIN.fill(BLACK)
        for obstacle in obstacles:
            obstacle.draw(WIN)
        player.draw(WIN)
        pygame.display.update()

    pygame.quit()
    sys.exit()

if __name__ == "__main__":
    main()

1403/02/21 4203 518
رمز عبور : tahlildadeh.com یا www.tahlildade.com
نظرات شما

نظرات خود را ثبت کنید...