Hướng dẫn tạo trò chơi đơn giản với Pygame

Ngày đăng: 20/11/2023   -    Cập nhật: 20/11/2023

Cài đặt Pygame và chuẩn bị cho việc tạo trò chơi

  • Trước tiên, bạn cần phải cài đặt Pygame trên máy tính của mình, thực hiện từng bước dưới đây cùng NIIT ICT Hà Nội để cài đặt thành công.
  • Mở terminal hoặc command prompt và chạy lệnh sau: pip install pygame

Sau khi quá trình cài đặt kết thúc, bạn có thể kiểm tra xem Pygame đã được cài đặt thành công hay chưa bằng cách nhập lệnh import pygame vào Python Shell.

Tạo một cửa sổ game đơn giản với Pygame


 

Sau khi đã cài đặt Pygame, bạn có thể bắt đầu tạo một cửa sổ game đơn giản bằng cách sử dụng các hàm trong thư viện Pygame. Ví dụ sau đây sẽ giúp bạn hiểu cách tạo một cửa sổ game đơn giản:


import pygame


pygame.init()


# Thiết lập kích thước của cửa sổ game

window = pygame.display.set_mode((500, 500))


# Thiết lập tiêu đề cho cửa sổ game

pygame.display.set_caption("Trò chơi đơn giản với Pygame")


# Vòng lặp chính của trò chơi

while True:

    # Kiểm tra các sự kiện xảy ra trong trò chơi

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            pygame.quit()

            quit()


    # Cập nhật trạng thái của trò chơi

    pygame.display.update()

Thêm hình ảnh và âm thanh vào trò chơi của bạn

Để thêm hình ảnh hoặc âm thanh vào trò chơi, bạn có thể sử dụng các hàm trong thư viện Pygame. Ví dụ sau đây sẽ giúp bạn hiểu cách thêm hình ảnh và âm thanh vào trò chơi:


import pygame


pygame.init()


# Tải hình ảnh và âm thanh cho trò chơi

background_image = pygame.image.load("background.png")

sound_effect = pygame.mixer.Sound("sound.wav")


# Thiết lập kích thước của cửa sổ game và hiển thị hình ảnh nền

window = pygame.display.set_mode((500, 500))

window.blit(background_image, (0, 0))


# Thiết lập tiêu đề cho cửa sổ game

pygame.display.set_caption("Trò chơi đơn giản với Pygame")


# Vòng lặp chính của trò chơi

while True:

    # Kiểm tra các sự kiện xảy ra trong trò chơi

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            pygame.quit()

            quit()


        if event.type == pygame.KEYDOWN:

            # Phát âm thanh khi nhấn phím

            sound_effect.play()


    # Cập nhật trạng thái của trò chơi

    pygame.display.update()

Tạo di chuyển cho nhân vật hoặc vật phẩm trong trò chơi

Để tạo di chuyển cho nhân vật hoặc vật phẩm trong trò chơi, bạn có thể sử dụng các hàm trong Pygame để xử lý tín hiệu từ bàn phím hoặc chuột. Ví dụ sau đây sẽ giúp bạn hiểu cách tạo di chuyển cho nhân vật trong trò chơi:


import pygame


pygame.init()


# Tải hình ảnh cho nhân vật trong trò chơi

character_image = pygame.image.load("character.png")


# Thiết lập kích thước của cửa sổ game và hiển thị hình ảnh nhân vật

window = pygame.display.set_mode((500, 500))

window.blit(character_image, (0, 0))


# Thiết lập tiêu đề cho cửa sổ game

pygame.display.set_caption("Trò chơi đơn giản với Pygame")


# Thiết lập tốc độ di chuyển cho nhân vật

x_speed = 0

y_speed = 0


# Vòng lặp chính của trò chơi

while True:

    # Kiểm tra các sự kiện xảy ra trong trò chơi

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            pygame.quit()

            quit()


        if event.type == pygame.KEYDOWN:

            # Xử lý tín hiệu từ bàn phím để di chuyển nhân vật

            if event.key == pygame.K_LEFT:

                x_speed = -5

            elif event.key == pygame.K_RIGHT:

                x_speed = 5

            elif event.key == pygame.K_UP:

                y_speed = -5

            elif event.key == pygame.K_DOWN:

                y_speed = 5


        if event.type == pygame.KEYUP:

            # Dừng di chuyển khi tín hiệu từ bàn phím được thả ra

            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:

                x_speed = 0

            elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:

                y_speed = 0


    # Di chuyển nhân vật theo tốc độ đã thiết lập

    window.fill((255, 255, 255))

    window.blit(character_image, (x_speed, y_speed))


    # Cập nhật trạng thái của trò chơi

    pygame.display.update()

Xử lý va chạm giữa các đối tượng trong trò chơi

Để xử lý va chạm giữa các đối tượng trong trò chơi, bạn có thể sử dụng các hàm trong Pygame để kiểm tra khoảng cách giữa các đối tượng hoặc xác định vùng va chạm. Ví dụ sau đây sẽ giúp bạn hiểu cách xử lý va chạm giữa các đối tượng trong trò chơi:


import pygame


pygame.init()


# Tải hình ảnh cho nhân vật và vật phẩm trong trò chơi

character_image = pygame.image.load("character.png")

item_image = pygame.image.load("item.png")


# Thiết lập kích thước của cửa sổ game và hiển thị hình ảnh nhân vật và vật phẩm

window = pygame.display.set_mode((500, 500))

window.blit(character_image, (0, 0))

window.blit(item_image, (250, 250))


# Thiết lập tiêu đề cho cửa sổ game

pygame.display.set_caption("Trò chơi đơn giản với Pygame")


# Thiết lập tốc độ di chuyển và vị trí ban đầu cho nhân vật và vật phẩm

character_x = 0

character_y = 0

item_x = 250

item_y = 250

x_speed = 0

y_speed = 0


# Vòng lặp chính của trò chơi

while True:

    # Kiểm tra các sự kiện xảy ra trong trò chơi

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            pygame.quit()

            quit()# Xử lý tín hiệu từ bàn phím để di chuyển nhân vật

        if event.type == pygame.KEYDOWN:

            if event.key == pygame.K_LEFT:

                x_speed = -5

            elif event.key == pygame.K_RIGHT:

                x_speed = 5

            elif event.key == pygame.K_UP:

                y_speed = -5

            elif event.key == pygame.K_DOWN:

                y_speed = 5


        if event.type == pygame.KEYUP:

            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:

                x_speed = 0

            elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:

                y_speed = 0


    # Di chuyển nhân vật và vật phẩm theo tốc độ đã thiết lập

    window.fill((255, 255, 255))

    window.blit(character_image, (character_x, character_y))

    window.blit(item_image, (item_x, item_y))


    character_x += x_speed

    character_y += y_speed


    # Kiểm tra va chạm giữa nhân vật và vật phẩm

    distance = ((character_x - item_x)**2 + (character_y - item_y)**2)**0.5

    if distance < 50:

        print("Va chạm!")


    # Cập nhật trạng thái của trò chơi

    pygame.display.update()

Lập trình giao diện người dùng (GUI) cho trò chơi của bạn

Để làm cho trò chơi của bạn trở nên thú vị hơn, bạn có thể lập trình một giao diện người dùng (GUI) để cho phép người chơi tùy chỉnh các thiết lập hoặc lựa chọn chế độ chơi. Ví dụ sau đây sẽ giúp bạn hiểu cách lập trình một giao diện người dùng cho trò chơi của bạn:


import pygame


pygame.init()


# Thiết lập kích thước của cửa sổ game và tiêu đề

window = pygame.display.set_mode((500, 500))

pygame.display.set_caption("Trò chơi đơn giản với Pygame")


# Thiết lập hình nền cho giao diện người dùng

background_image = pygame.image.load("background.png")

window.blit(background_image, (0, 0))


# Thiết lập font chữ và màu sắc cho các nút trong giao diện

font = pygame.font.SysFont(None, 30)

button_color = (100, 100, 255)

text_color = (255, 255, 255)


# Lập trình các nút và văn bản cho giao diện người dùng

button_1 = pygame.draw.rect(window, button_color, (50, 50, 200, 50))

text_1 = font.render("Chế độ chơi dễ", True, text_color)

window.blit(text_1, (75, 60))


button_2 = pygame.draw.rect(window, button_color, (50, 150, 200, 50))

text_2 = font.render("Chế độ chơi khó", True, text_color)

window.blit(text_2, (75, 160))


button_3 = pygame.draw.rect(window, button_color, (50, 250, 200, 50))

text_3 = font.render("Thoát trò chơi", True, text_color)

window.blit(text_3, (75, 260))


# Vòng lặp chính của trò chơi

while True:

    # Kiểm tra các sự kiện xảy ra trong trò chơi

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            pygame.quit()

            quit()


        # Xử lý sự kiện khi người chơi nhấn vào một nút trong giao diện

        if event.type == pygame.MOUSEBUTTONDOWN:

            mouse_x, mouse_y = pygame.mouse.get_pos()

            if button_1.collidepoint(mouse_x, mouse_y):

                print("Chế độ chơi dễ được chọn!")

            elif button_2.collidepoint(mouse_x, mouse_y):

                print("Chế độ chơi khó được chọn!")

            elif button_3.collidepoint(mouse_x, mouse_y):

                pygame.quit()

                quit()


    # Cập nhật trạng thái của trò chơi

    pygame.display.update()


Kết luận: trên đây là hướng dẫn cơ bản để tạo một trò chơi đơn giản với Pygame. Tuy nhiên, với Pygame bạn có thể tự do sáng tạo và tạo ra các trò chơi phức tạp hơn với nhiều yếu tố đa dạng như hình ảnh, âm thanh, điều khiển di chuyển và va chạm giữa các đối tượng. Hy vọng bài viết này sẽ giúp bạn bắt đầu với Pygame và tạo ra những trò chơi thú vị của riêng mình.


Bình luận Facebook
Khóa học liên quan đến bài viết

KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS

56 giờ
Học Lập trình Front end hiện đại với ReactJS. Học làm chủ HTML, CSS, JS và thư viện JavaScript phổ biến nhất hiện nay. Sẵn sàng đi thực tập / đi làm ngay sau khóa học.

KHÓA HỌC LẬP TRÌNH PHP WEB

54 giờ
NIIT - ICT Hà Nội cung cấp Khóa học Lập trình Web Fullstack với PHP, phiên bản cập nhật lần thứ 5 (T8/2019). Dạy Lập trình PHP bài bản, chi tiết (từ Front-end đến Back-end)

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!