مشخصات پروژه
-
518
-
0.0
-
4203
-
0
-
1
بازی عبور از موانع با پایتون
بازی عبور از موانع یک بازی ساده و در عین حال یک پروژه نسبتا چالش برانگیز برای برنامه نویسان مبتدی پایتون است که در آن از کتابخانه ی 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()