Các Yếu Tố Lập Trình Game Cơ Bản Với Pygame (Phần 2)

Chúng tôi rất vui mừng được chia sẻ kiến thức sâu sắc về từ khóa Pygame la gi và hy vọng rằng nó sẽ hữu ích cho bạn đọc. Bài viết tập trung trình bày ý nghĩa, vai trò và ứng dụng của từ khóa này trong việc tối ưu hóa nội dung trang web và chiến dịch tiếp thị trực tuyến. Chúng tôi cung cấp các phương pháp tìm kiếm, phân tích và lựa chọn từ khóa phù hợp, cùng với các chiến lược và công cụ hữu ích. Hy vọng rằng thông tin mà chúng tôi chia sẻ sẽ giúp bạn xây dựng chiến lược thành công và thu hút lưu lượng người dùng. Xin chân thành cảm ơn sự quan tâm và hãy tiếp tục theo dõi blog của chúng tôi để cập nhật những kiến thức mới nhất.

Trong bài hướng dẫn trước, tôi đã giới thiệu khá nhiều thứ trong pygame. Trong bài hướng dẫn lần này, tất cả chúng ta sẽ tiếp tục tìm hiểu những thứ cơ bản khác của pygame. Đây là những phần các bạn cần phải nắm để sở hữu thể làm được một game hoàn chỉnh, gồm có: cách thêm hình ảnh vào game, tạo chuyển động trong game, bắt sự kiện,… Thời điểm hiện nay tất cả chúng ta cùng mở màn thôi!

Bạn Đang Xem: Các Yếu Tố Lập Trình Game Cơ Bản Với Pygame (Phần 2)

Một số hàm vẽ thường gặp

Trong bài hướng dẫn trước tất cả chúng ta đã tìm hiểu kĩ cách vẽ một hình chữ nhật. Trong phần này mình sẽ giới thiệu nhanh qua những hàm vẽ thường dùng trong pygame. Thực tế, trong các game người ta ít dùng các hàm để vẽ những hình ảnh, mà người ta sẽ dùng những file ảnh để thêm vào trong game. Mình thì dùng các hàm vẽ này trong lúc test thử hoạt động của game trước lúc đặt những hình ảnh vào. Ví dụ, nếu mình muốn làm game Flappy Bird thì mình sẽ vẽ con chim là hình elip trước, sau khoản thời gian mọi thứ hoạt động ổn định thì mình sẽ tìm hình ảnh con chim để thay thế. Phương pháp để thêm hình ảnh vào thì mình sẽ nói trong phần sau. Thời điểm hiện nay các bạn hãy xem nhanh qua đoạn code này nhe.

import pygame, sys from pygame.locals import * pygame.init() DISPLAYSURF = pygame.display.set_mode((400, 300)) pygame.display.set_caption(‘Draw’) # Tạo sẵn các sắc tố BLACK = ( 0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = ( 0, 255, 0) BLUE = ( 0, 0, 255) while True: for sự kiện in pygame.sự kiện.get(): if sự kiện.type == QUIT: pygame.quit() sys.exit() DISPLAYSURF.fill(WHITE) pygame.draw.rect(DISPLAYSURF, RED, (10, 10, 100, 50))# Hình chữ nhật pygame.draw.rect(DISPLAYSURF, GREEN, (150, 10, 100, 50), 2)# Hình chữ nhật rỗng pygame.draw.circle(DISPLAYSURF, RED, (50, 100), 20) # Hình tròn pygame.draw.circle(DISPLAYSURF, BLUE, (200, 100), 20, 1)# Hình tròn rỗng pygame.draw.ellipse(DISPLAYSURF, RED, (10, 150, 100, 50))# Hình elip pygame.draw.ellipse(DISPLAYSURF, GREEN, (150, 150, 100, 50), 3)# Hình elip rỗng pygame.draw.polygon(DISPLAYSURF, RED, ((10, 220), (150, 230), (100 ,290), (30, 270)))# Đa giác pygame.draw.polygon(DISPLAYSURF, BLUE, ((160, 220), (300, 230), (250 ,290), (180, 270)), 2)# Đa giác rỗng pygame.draw.line(DISPLAYSURF, BLACK, (300, 50), (350, 150), 4)# Đoạn thẳng pygame.display.update()

Đây là kết quả khi chạy đoạn code trên:

Xem Thêm : Tìm hiểu về đế quốc chủ nghĩa là gì? (Imperialism) – Luật ACC

Hàm vẽ hình chữ nhật đã được giới thiệu ở phần trước. Thời điểm hiện nay tất cả chúng ta tìm hiểu các hàm vẽ khác.

pygame.draw.circle(surface, color, center, radius, width) Hàm này dùng làm vẽ hình tròn.

  • surface là nơi để vẽ lên.
  • color là màu được vẽ.
  • center là một tuple (hoặc list) thể hiện toạ độ tâm hình tròn.
  • radius là nửa đường kính hình tròn.
  • width là độ dày nét vẽ (tương tự hình chữ nhật).

pygame.draw.ellipse(surface, color, rect, width) Hàm này dùng làm vẽ hình elip.

  • surface là nơi để vẽ lên.
  • color là màu để vẽ.
  • rect là một tuple (hoặc list) gồm 4 thành phần là các thông số hình chữ nhật (như đã tìm hiểu ở phần trước). Hình elip được vẽ nội tiếp hình chữ nhật đó.
  • width là độ dày nét vẽ (tương tự hình chữ nhật).

pygame.draw.polygon(surface, color, points, width) Hàm này dùng làm vẽ đa giác.

  • surface là nơi để vẽ lên.
  • color là màu được vẽ.
  • points là tuple (hoặc list) thể hiện các đỉnh của đa giác. Mỗi đỉnh là một tuple (hoặc list) thể hiện toạ độ.
  • width là độ dày nét vẽ (tương tự hình chữ nhật).

pygame.draw.line(surface, color, start_pos, end_pos, width) Hàm này dùng làm vẽ một đoạn thẳng.

  • surface là nơi để vẽ lên.
  • color là màu được vẽ.
  • start_pos là tuple (hoặc list) thể hiện toạ độ điểm đầu của đoạn thẳng.
  • end_pos là tuple (hoặc list) thể hiện toạ độ điểm cuối của đoạn thẳng.
  • width là độ dày nét vẽ.

Các bạn lưu ý là các giá trị toạ độ hay độ dài là những số nguyên, đơn vị là px.

Tạo chuyển động trong game

Xem Thêm : Cây cỏ ngọt có lợi ích gì cho sức khỏe?

Sau thời điểm tìm hiểu qua một số hàm vẽ thì tất cả chúng ta đã vẽ được vài thứ lên màn hình hiển thị. Thời điểm hiện nay, các các bạn sẽ tìm hiểu cách làm cho những hình ảnh ấy chuyển động. Các bạn chạy thử đoạn code này nhé, mình sẽ giảng giải sau.

import pygame, sys from pygame.locals import * WINDOWWIDTH = 400 # Chiều dài hành lang cửa số WINDOWHEIGHT = 300 # Độ cao hành lang cửa số WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = ( 0, 255, 0) pygame.init() ### Xác định FPS ### FPS = 60 fpsClock = pygame.time.Clock() DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT)) pygame.display.set_caption(‘Animation’) ### Tạo surface và vẽ hình chiếc xe ### car_x = 0 # Hoành độ của xe carSurface = pygame.Surface((100, 50), SRCALPHA) pygame.draw.polygon(carSurface, RED, ((15, 0), (65, 0), (85, 15), (100, 15), (100, 40), (0, 40), (0, 15))) pygame.draw.circle(carSurface, GREEN, (15, 40), 10) pygame.draw.circle(carSurface, GREEN, (85, 40), 10) while True: for sự kiện in pygame.sự kiện.get(): if sự kiện.type == QUIT: pygame.quit() sys.exit() DISPLAYSURF.fill(WHITE) DISPLAYSURF.blit(carSurface, (car_x, 100)) ### Thay đổi vị trí xe ### car_x += 2 if car_x + 100 > WINDOWWIDTH: car_x = WINDOWWIDTH – 100 pygame.display.update() fpsClock.tick(FPS)

Đây là kết quả:

Trước lúc tìm hiểu những dòng code thì những bạn cần phải biết thêm một khái niệm là FPS (Frames Phườnger Second). Hiểu theo nghĩa tiếng Việt thì FPS là số lượng sườn hình trong một giây. Ví dụ: nếu FPS là 60 thì trong một giây sẽ có được 60 sườn hình xuất hiện liên tục. Có thể ai cũng biết vòng lặp while chạy rất nhanh, trong một giây sẽ lặp rất nhiều lần và tốc độ phụ thuộc vào nhiều yếu tố như code trong vòng lặp, CPU… Vì thế để đảm bảo game hoạt động ổn định thì hãy phải thiết lập FPS để vòng lặp game thực hiện với tốc độ nhất định. Để thiết lập FPS thì những bạn hãy lưu ý những dùng dòng code sau:

  • Đặt 2 dòng này bên phía ngoài vòng lặp game, trường hợp này thì FPS là 60:

FPS = 60 fpsClock = pygame.time.Clock()

  • Đặt dòng này ở cuối vòng lặp game:

fpsClock.tick(FPS)

You May Also Like

About the Author: v1000