Tôi có thể tạo trò chơi điện tử bằng Python không?

Trong phần hướng dẫn này, bạn sẽ tạo một trò chơi đơn giản có tên là Bunnies and Badgers, trong đó anh hùng, chú thỏ, phải bảo vệ lâu đài trước một bầy lửng đang tấn công. . O

Để viết trò chơi này, bạn sẽ sử dụng Python. Không, tôi không nói về một con rắn lớn. . ]

Python là một ngôn ngữ lập trình máy tính. Chúng tôi đã chọn Python cho hướng dẫn này vì đây là một ngôn ngữ đơn giản để bắt đầu, thú vị và dễ học

Nếu bạn chưa quen với Python, trước khi bắt đầu, hãy xem cuốn sách này. Nghĩ Python. Làm thế nào để suy nghĩ như một nhà khoa học máy tính. Điều đó sẽ giúp bạn tăng tốc

Sau đó quay lại đây và chuẩn bị sẵn sàng – sắp có một cuộc chiến giữa thỏ và lửng. Tiếp tục đọc để nhảy vào cuộc chiến

Bắt đầu. Cài đặt Python

Nếu bạn muốn thử hướng dẫn này trên PC Windows, bạn cần cài đặt Python. Hãy chắc chắn rằng bạn lấy 2. 7. 3 phiên bản và KHÔNG phải là 3. 3. 0 phiên bản. Sau khi chạy trình cài đặt, bạn sẽ có IDLE trong thư mục Tất cả chương trình trong menu bắt đầu của mình. Khởi chạy IDLE để bắt đầu

Nếu bạn đang dùng Mac, bạn đã cài đặt Python. Chỉ cần mở Terminal [/Applications/Utilities/Terminal. app], nhập python và nhấn Enter

Ghi chú. Nếu bạn cài đặt Python từ python. org [và có thể phải làm vậy nếu bạn muốn PyGame hoạt động], thì bạn cũng sẽ có quyền truy cập vào IDLE trên máy Mac. Nó phải nằm trong thư mục “/Applications/Python 2. thư mục 7”

Nếu bạn đã làm nó một cách chính xác, bạn sẽ thấy một cái gì đó như thế này

Python 2.7.3 [v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43] 
[GCC 4.2.1 [Apple Inc. build 5666] [dot 3]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Ghi chú. Nếu bạn muốn thoát khỏi dấu nhắc Python [dấu ngoặc ba góc, >>>], bạn có thể nhập exit[] tại dấu nhắc Python và nhấn Return hoặc bạn có thể nhấn Control+D

Khi bạn đang ở dấu nhắc Python, để kiểm tra xem Python có hoạt động chính xác hay không, hãy nhập print 1+1 và nhấn Enter/Return. Nó sẽ in 2. Bạn vừa viết chương trình Python đầu tiên của mình

Bây giờ bạn đã biết Python đang hoạt động bình thường, bạn cần cài đặt PyGame để viết trò chơi bằng Python

PyGame là một thư viện Python giúp viết game dễ dàng hơn rất nhiều. Nó cung cấp các chức năng như xử lý hình ảnh và phát lại âm thanh mà bạn có thể dễ dàng kết hợp vào trò chơi của mình

Truy cập vào đây và tải xuống trình cài đặt PyGame phù hợp với hệ thống của bạn. Đảm bảo bạn tải xuống Python 2. 7 phiên bản

Ghi chú. Trình cài đặt PyGame từ liên kết ở trên sẽ không hoạt động với Python mặc định của Apple được cài đặt trên máy Mac. Bạn sẽ cần tải xuống Python từ python. org và cài đặt nó để sử dụng PyGame. Hoặc, bạn có thể cài đặt cả Python và PyGame qua MacPorts

Để xác minh rằng bạn đã cài đặt PyGame đúng cách, hãy mở IDLE hoặc chạy Python qua Terminal và nhập nhập pygame tại dấu nhắc Python. Nếu điều này không dẫn đến bất kỳ đầu ra nào, thì bạn tốt

Mặt khác, nếu nó xuất ra lỗi như hiển thị bên dưới, thì PyGame chưa được cài đặt

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 

Nếu bạn gặp lỗi như thế này, hãy đăng lên diễn đàn và tôi sẽ giúp bạn khắc phục

Chạy mã Python từ tệp

Mặc dù bạn có thể chạy các đoạn mã Python ngắn tại dấu nhắc Python, nhưng nếu bạn muốn làm việc trên một chương trình lớn hơn [chẳng hạn như trò chơi], bạn có thể muốn lưu mã của mình vào một tệp để không phải nhập mã đó vào.

Có một số cách để chạy chương trình Python dưới dạng tệp. Một cách là sử dụng trình soạn thảo văn bản đơn giản như Notepad [Windows] hoặc TextEdit [Mac]. Mở một tệp văn bản mới, nhập mã Python của bạn [như in 1+1]. Sau đó lưu nó với tên XXX. py [XXX có thể là bất kỳ tên tệp mô tả nào]

Sau đó, trên Windows, bấm đúp vào tệp này để chạy nó. Trên Mac, mở Terminal và gõ python, sau đó kéo tệp bạn đã lưu vào cửa sổ Terminal và nhấn Enter

Một cách khác là nhập mã của bạn bằng trình chỉnh sửa IDLE, đó là những gì bạn sẽ làm trong hướng dẫn này. Để chạy nhàn rỗi, chỉ cần gõ nhàn rỗi từ Terminal. Sau đó chọn File\New Window từ menu IDLE và bạn sẽ có một cửa sổ soạn thảo văn bản nơi bạn có thể nhập mã Python. Bạn có thể lưu các thay đổi mã của mình qua File\Save và thậm chí chạy mã qua Run\Run Module [F5]

Xin lưu ý rằng menu Run chỉ khả dụng nếu bạn mở tệp trong cửa sổ trình chỉnh sửa

Thêm tài nguyên trò chơi

Bạn gần như đã sẵn sàng để tạo trò chơi của mình. Nhưng trò chơi nào mà không có đồ họa và hiệu ứng âm thanh tuyệt vời? . Bạn có thể tải xuống thông qua nút Tải xuống tài liệu ở đầu và cuối trang này

Khi bạn đã tải xuống tệp, hãy tạo một thư mục cho trò chơi của bạn trên đĩa cứng và giải nén thư mục tài nguyên vào thư mục đó để thư mục trò chơi của bạn có một thư mục con có tên là tài nguyên, với các tài nguyên khác nhau được nhóm trong các thư mục bổ sung bên trong nó, như thế này

Bây giờ bạn đã sẵn sàng để bắt đầu tạo Thỏ và Lửng. . ]

Bước 1. xin chào chú thỏ

Chạy IDLE và mở một cửa sổ soạn thảo văn bản mới, như đã đề cập trong phần trước. Nhập đoạn mã sau vào cửa sổ soạn thảo

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 

Lưu tệp vào thư mục trò chơi của bạn [thư mục chứa thư mục con tài nguyên] và đặt tên là trò chơi. py

Hãy đi qua từng phần mã

  1. Nhập thư viện PyGame. Điều này cho phép bạn sử dụng các chức năng từ thư viện trong chương trình của mình
  2. Khởi tạo PyGame và thiết lập cửa sổ hiển thị
  3. Tải hình ảnh mà bạn sẽ sử dụng cho chú thỏ
  4. Tiếp tục lặp qua mã thụt lề sau

    Ghi chú. Trong khi các ngôn ngữ khác như Objective-C, Java hoặc PHP sử dụng dấu ngoặc nhọn để hiển thị một khối mã sẽ được thực thi trong vòng lặp while hoặc câu lệnh if, thì Python sử dụng thụt lề để xác định các khối mã. Vì vậy, thụt đầu dòng thích hợp là rất quan trọng trong Python – hãy ghi nhớ điều đó. . ]

  5. Lấp đầy màn hình bằng màu đen trước khi bạn vẽ bất cứ thứ gì
  6. Thêm hình ảnh chú thỏ mà bạn đã tải vào màn hình tại x=100 và y=100
  7. Cập nhật màn hình
  8. Kiểm tra bất kỳ sự kiện mới nào và nếu có và đó là lệnh thoát, hãy thoát khỏi chương trình

    Ghi chú. Theo tài liệu PyGame, bạn không cần gọi pygame. thoát [] vì trình thông dịch sẽ tự động gọi nó khi trình thông dịch tắt. Tuy nhiên, ít nhất là trên Mac OS, trò chơi sẽ bị treo khi thoát trừ khi pygame. thoát [] đã được gọi

Nếu bạn chạy mã ngay bây giờ [thông qua Run\Run Module trong menu Idle], bạn sẽ thấy một màn hình tương tự như bên dưới

w00t chú thỏ đang ở trong cảnh và sẵn sàng hành động

Nhưng trò chơi trông thật đáng sợ và cô đơn với chú thỏ chỉ đứng đó trên nền đen. Thời gian để làm đẹp mọi thứ một chút. . ]

Bước 2. Thêm phong cảnh

Hãy bắt đầu bằng cách thêm nền vào cảnh trò chơi. Điều này có thể được thực hiện với một vài màn hình nữa. cuộc gọi blit[]

Ở cuối phần #3, sau khi tải hình ảnh trình phát, hãy thêm đoạn mã sau

grass = pygame.image.load["resources/images/grass.png"]
castle = pygame.image.load["resources/images/castle.png"]

Thao tác này sẽ tải hình ảnh và đặt chúng vào các biến cụ thể. Bây giờ chúng phải được vẽ trên màn hình. Nhưng nếu bạn kiểm tra hình ảnh cỏ, bạn sẽ nhận thấy rằng nó sẽ không bao phủ toàn bộ diện tích màn hình là 640 x 480. Điều này có nghĩa là bạn phải xếp cỏ trên khu vực màn hình để che phủ hoàn toàn

Thêm mã sau vào trò chơi. py ở đầu phần #6 [trước khi trình phát được vẽ trên màn hình]

    for x in range[width/grass.get_width[]+1]:
        for y in range[height/grass.get_height[]+1]:
            screen.blit[grass,[x*100,y*100]]
    screen.blit[castle,[0,30]]
    screen.blit[castle,[0,135]]
    screen.blit[castle,[0,240]]
    screen.blit[castle,[0,345 ]]

Như bạn có thể thấy, câu lệnh for lặp qua x trước. Sau đó, trong vòng lặp for đó, nó lặp qua y và vẽ cỏ tại các giá trị x và y được tạo bởi các vòng lặp for. Một vài dòng tiếp theo chỉ vẽ các lâu đài trên màn hình

Nếu bạn chạy chương trình bây giờ, bạn sẽ nhận được một cái gì đó như thế này

Tốt hơn nhiều - điều này đang bắt đầu tốt. . ]

Bước 3. Làm cho chú thỏ di chuyển

Tiếp theo, bạn cần thêm một số yếu tố chơi trò chơi thực tế, chẳng hạn như làm cho chú thỏ phản hồi khi nhấn phím

Để làm điều đó, trước tiên, bạn sẽ thực hiện một phương pháp tốt để theo dõi các phím nào đang được nhấn tại một thời điểm nhất định. Bạn có thể làm điều này đơn giản bằng cách tạo một mảng các trạng thái phím chứa trạng thái của từng phím bạn muốn sử dụng cho trò chơi

Thêm mã sau vào trò chơi. py ở cuối phần #2 [sau khi bạn đặt chiều cao và chiều rộng màn hình]

keys = [False, False, False, False]
playerpos=[100,100]

Mã này khá dễ hiểu. Mảng phím theo dõi các phím được nhấn theo thứ tự sau. WASD. Mỗi mục trong mảng tương ứng với một khóa – khóa đầu tiên đến W, khóa thứ hai đến A, v.v.

Biến playerpos là nơi chương trình thu hút người chơi. Vì trò chơi sẽ di chuyển người chơi đến các vị trí khác nhau nên sẽ dễ dàng hơn nếu có một biến chứa vị trí của người chơi và sau đó chỉ cần vẽ người chơi ở vị trí đó

Bây giờ bạn cần sửa đổi mã hiện có để vẽ trình phát để sử dụng biến playerpos mới. Thay đổi dòng sau trong phần #6

    screen.blit[player, [100,100]]

Đến

    screen.blit[player, playerpos]

Tiếp theo, cập nhật mảng phím dựa trên phím nào đang được nhấn. PyGame giúp dễ dàng phát hiện các lần nhấn phím bằng cách thêm sự kiện. chức năng chính

Ở cuối phần #8, ngay sau khối kiểm tra sự kiện. gõ==pygame. QUIT, đặt mã này [ở cùng mức thụt đầu dòng như pygame. QUIT nếu bị chặn]

________số 8_______

Ồ. Đó là rất nhiều dòng mã. Tuy nhiên, nếu bạn chia nó thành các câu lệnh if, thì nó không phức tạp lắm

Trước tiên, bạn kiểm tra xem một phím đang được nhấn xuống hay thả ra. Sau đó, bạn kiểm tra phím nào đang được nhấn hoặc nhả và nếu phím đang được nhấn hoặc nhả là một trong các phím bạn đang sử dụng, bạn cập nhật biến keys cho phù hợp

Cuối cùng, bạn cần cập nhật biến playerpos để đáp ứng với các lần nhấn phím. Điều này thực ra rất đơn giản

Thêm mã sau vào cuối trò chơi. py [với một mức thụt đầu dòng, đặt nó ở cùng mức với vòng lặp for]

    # 9 - Move player
    if keys[0]:
        playerpos[1]-=5
    elif keys[2]:
        playerpos[1]+=5
    if keys[1]:
        playerpos[0]-=5
    elif keys[3]:
        playerpos[0]+=5

Mã này chỉ đơn giản là kiểm tra phím nào đang được nhấn và cộng hoặc trừ vị trí x hoặc y của người chơi [tùy thuộc vào phím được nhấn] để di chuyển người chơi

Chạy trò chơi và bạn sẽ nhận được một người chơi giống như trước đây. Hãy thử nhấn WASD. vâng. nó hoạt động

Bước 4. biến con thỏ

Vâng, chú thỏ của bạn bây giờ sẽ di chuyển khi bạn nhấn phím nhưng sẽ không tuyệt hơn nếu bạn có thể sử dụng chuột để xoay chú thỏ theo hướng bạn chọn, để chú thỏ không phải lúc nào cũng quay về một hướng?

Hãy xem hình minh họa sau

Trong hình trên, nếu [5,3] là vị trí của chú thỏ và [2,4] là vị trí hiện tại của con chuột, bạn có thể tìm góc xoay [z] bằng cách áp dụng hàm lượng giác atan2 cho sự khác biệt trong . Tất nhiên, một khi bạn biết góc xoay, bạn chỉ cần xoay chú thỏ cho phù hợp. . ]

Nếu bạn hơi bối rối về phần này, đừng lo lắng – bạn vẫn có thể tiếp tục. Nhưng đây là lý do tại sao bạn nên chú ý trong lớp Toán. . ] Bạn sẽ sử dụng công cụ này mọi lúc trong lập trình trò chơi

Bây giờ bạn cần áp dụng khái niệm này vào trò chơi của mình. Để làm điều này, bạn có thể sử dụng PyGame Surface. chức năng xoay [độ]. Ngẫu nhiên, hãy nhớ rằng giá trị Z tính bằng radian. . [

Hàm atan2 đến từ thư viện toán học Python. Vì vậy, hãy thêm phần này vào cuối phần #1 trước

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
0

Sau đó, thay thế dòng cuối cùng trong phần #6 [trình phát. dòng blit] với đoạn mã sau

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
1

Hãy đi qua cấu trúc cơ bản của đoạn mã trên. Trước tiên, bạn có được vị trí của chuột và trình phát. Sau đó, bạn đưa chúng vào hàm atan2. Sau đó, bạn chuyển đổi góc nhận được từ hàm atan2 từ radian sang độ [nhân radian với khoảng 57. 29 hoặc 360/2π]

Vì chú thỏ sẽ được xoay nên vị trí của nó sẽ thay đổi. Vì vậy, bây giờ bạn tính toán vị trí chú thỏ mới và hiển thị chú thỏ trên màn hình

Chạy lại trò chơi. Nếu bạn chỉ sử dụng các phím WASD thì trò chơi sẽ hoạt động chính xác như trước đây. Nhưng nếu bạn di chuyển chuột, chú thỏ cũng xoay theo. Mát lạnh

Bước 5. bắn, thỏ, bắn

Bây giờ chú thỏ của bạn đang di chuyển xung quanh, đã đến lúc thêm một chút hành động. . ] Còn việc để chú thỏ bắn kẻ thù bằng cung tên thì sao?

Bước này phức tạp hơn một chút vì bạn phải theo dõi tất cả các mũi tên, cập nhật chúng, xoay chúng và xóa chúng khi chúng biến mất khỏi màn hình

Trước hết, thêm các biến cần thiết vào cuối phần khởi tạo, phần #2

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
2

Biến đầu tiên theo dõi độ chính xác của người chơi và mảng thứ hai theo dõi tất cả các mũi tên. Biến độ chính xác về cơ bản là một danh sách số lần bắn và số lượng con lửng bắn trúng. Sau đó, chúng tôi sẽ sử dụng thông tin này để tính tỷ lệ phần trăm chính xác

Tiếp theo load hình mũi tên ở cuối mục #3

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
3

Bây giờ khi người dùng nhấp chuột, một mũi tên cần bắn. Thêm phần sau vào cuối phần #8 làm trình xử lý sự kiện mới

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
4

Mã này kiểm tra xem chuột có được nhấp hay không và nếu có, nó sẽ lấy vị trí chuột và tính toán xoay mũi tên dựa trên vị trí người chơi được xoay và vị trí con trỏ. Giá trị xoay này được lưu trữ trong mảng mũi tên

Tiếp theo, bạn phải thực sự vẽ các mũi tên trên màn hình. Thêm mã sau ngay sau phần #6. 1

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
5

Các giá trị vely và velx được tính toán bằng lượng giác cơ bản. 10 là tốc độ của mũi tên. Câu lệnh if chỉ kiểm tra xem dấu đầu dòng có nằm ngoài giới hạn hay không và nếu có, nó sẽ xóa mũi tên. Câu lệnh for thứ hai lặp qua các mũi tên và vẽ chúng bằng cách xoay chính xác

Hãy thử và chạy chương trình. Bạn nên có một chú thỏ bắn tên khi bạn nhấp chuột. . D

Bước 6. cầm vũ khí. con lửng

OK, bạn có một lâu đài và bạn có một anh hùng có thể di chuyển và bắn. Vì vậy, những gì còn thiếu?

Trong bước này, bạn sẽ tạo những con lửng được tạo ngẫu nhiên để chạy trong lâu đài. Sẽ có ngày càng nhiều lửng khi trò chơi tiến triển. Vì vậy, hãy lập một danh sách những gì bạn sẽ cần nó để làm

  1. Thêm kẻ xấu vào danh sách một mảng
  2. Cập nhật mảng kẻ xấu từng khung hình và kiểm tra xem chúng có tắt màn hình không
  3. Cho thấy những kẻ xấu

Dễ dàng, phải không?. ]

Đầu tiên, thêm đoạn mã sau vào cuối phần #2

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
6

Ở trên thiết lập một bộ đếm thời gian [cũng như một vài giá trị khác] để trò chơi thêm một con lửng mới sau một thời gian đã trôi qua. Bạn giảm badtimer mỗi khung hình cho đến khi nó bằng 0 và sau đó bạn sinh ra một badger mới

Bây giờ thêm phần sau vào cuối phần #3

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
7

Dòng đầu tiên ở trên giống với tất cả các mã tải hình ảnh trước đó. Dòng thứ hai thiết lập một bản sao của hình ảnh để bạn có thể tạo hoạt ảnh cho kẻ xấu dễ dàng hơn nhiều

Tiếp theo, bạn phải cập nhật và hiển thị những kẻ xấu. Thêm mã này ngay sau phần #6. 2

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
8

Rất nhiều mã để đi qua. . ] Dòng đầu tiên kiểm tra xem badtimer có bằng 0 hay không và nếu có, hãy tạo một badger và thiết lập lại badtimer dựa trên số lần badtimer đã chạy cho đến nay. Vòng lặp for đầu tiên cập nhật vị trí x của con lửng, kiểm tra xem con lửng có ở ngoài màn hình không và xóa con lửng nếu nó ở ngoài màn hình. Vòng lặp for thứ hai rút ra tất cả các con lửng

Để sử dụng chức năng ngẫu nhiên trong đoạn mã trên, bạn cũng cần nhập thư viện ngẫu nhiên. Vì vậy, hãy thêm phần sau vào cuối phần #1

Python 2.7.2 [default, Jun 20 2012, 16:23:33] 
[GCC 4.2.1 Compatible Apple Clang 4.0 [tags/Apple/clang-418.0.60]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named pygame
>>> 
9

Cuối cùng, thêm dòng này ngay sau câu lệnh while [phần #4] để giảm giá trị của badtimer cho mỗi khung hình

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
0

Hãy thử tất cả mã này bằng cách chạy trò chơi. Bây giờ bạn sẽ bắt đầu thấy một số trò chơi thực sự - bạn có thể bắn, di chuyển, xoay người và những con lửng cố gắng chạy về phía bạn

Nhưng đợi đã. Tại sao những con lửng không thổi bay lâu đài?

Thêm mã này ngay trước index+=1 trên vòng lặp for đầu tiên trong phần #6. 3

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
1

Mã này khá đơn giản. Nếu giá trị x của con lửng nhỏ hơn 64 ở bên phải, thì hãy xóa kẻ xấu đó và giảm giá trị sức khỏe của trò chơi xuống một giá trị ngẫu nhiên trong khoảng từ 5 đến 20. [Sau đó, bạn sẽ hiển thị giá trị sức khỏe hiện tại trên màn hình. ]

Nếu bạn xây dựng và chạy chương trình, bạn sẽ nhận được một loạt những con lửng tấn công biến mất khi chúng tấn công lâu đài. Dù không thể nhìn thấy nhưng những con lửng đang thực sự hạ thấp sức khỏe của bạn

Bước 7. Va chạm với lửng và mũi tên

Những con lửng đang tấn công lâu đài của bạn nhưng mũi tên của bạn không có tác dụng với chúng. Làm thế nào để một chú thỏ có thể bảo vệ ngôi nhà của mình?

Đã đến lúc đặt các mũi tên để tiêu diệt những con lửng để bạn có thể bảo vệ lâu đài của mình và giành chiến thắng trong trò chơi. Về cơ bản, bạn phải lặp qua tất cả những kẻ xấu và trong mỗi vòng đó, bạn phải lặp qua tất cả các mũi tên và kiểm tra xem chúng có va chạm không. Nếu có, hãy xóa lửng, xóa mũi tên và thêm một mũi tên vào tỷ lệ chính xác của bạn

Ngay sau phần #6. 3. 1, thêm cái này

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
2

Chỉ có một điều quan trọng cần lưu ý trong mã này. Câu lệnh if là một hàm PyGame tích hợp để kiểm tra xem hai hình chữ nhật có giao nhau không. Một vài dòng khác chỉ cần làm những gì tôi đã giải thích ở trên

Nếu bạn chạy chương trình, cuối cùng bạn sẽ có thể bắn và giết những con lửng

Bước 8. Thêm HUD với Đồng hồ đo sức khỏe và Đồng hồ

Trò chơi đang tiến triển khá tốt. Bạn có những kẻ tấn công của bạn, và bạn có hậu vệ của bạn. Bây giờ tất cả những gì bạn cần là một cách để ghi điểm và cho thấy chú thỏ đang làm tốt như thế nào

Cách dễ nhất để làm điều này là thêm HUD [Hiển thị cảnh báo] hiển thị mức độ sức khỏe hiện tại của lâu đài. Bạn cũng có thể thêm đồng hồ để hiển thị thời gian lâu đài tồn tại

Đầu tiên thêm đồng hồ. Thêm đoạn mã sau ngay trước phần đầu của phần #7

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
3

Đoạn mã trên chỉ cần tạo một phông chữ mới bằng cách sử dụng phông chữ PyGame mặc định được đặt thành kích thước 24. Sau đó, phông chữ đó được sử dụng để hiển thị văn bản thời gian trên một bề mặt. Sau đó, văn bản được định vị và vẽ trên màn hình

Tiếp theo thêm thanh sức khỏe. Nhưng trước khi vẽ thanh sức khỏe, bạn cần tải hình ảnh cho thanh. Thêm đoạn mã sau vào cuối phần #3

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
4

Đầu tiên là hình ảnh màu đỏ được sử dụng cho thanh sức khỏe đầy đủ. Thứ hai là hình ảnh màu xanh lá cây được sử dụng để hiển thị mức độ sức khỏe hiện tại

Bây giờ thêm đoạn mã sau ngay sau phần #6. 4 [mà bạn vừa thêm] để vẽ thanh sức khỏe trên màn hình

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
5

Đầu tiên, mã vẽ thanh sức khỏe toàn màu đỏ. Sau đó, nó vẽ một lượng màu xanh lá cây nhất định trên thanh, tùy theo lượng tuổi thọ còn lại của lâu đài

Nếu bạn xây dựng và chạy chương trình, bạn nên có đồng hồ bấm giờ và thanh sức khỏe

Bước 9. Thắng hay thua

Nhưng cái gì đây? . Không chỉ vậy, bạn còn có thể tiếp tục bắn vào những con lửng. Điều đó sẽ không làm việc, phải không?

Vì vậy, hãy thêm điều kiện thắng thua cũng như màn hình thắng thua. . ] Bạn làm điều này bằng cách thoát khỏi vòng lặp chính và chuyển sang vòng lặp thắng/thua. Trong vòng thắng/thua, bạn phải tìm hiểu xem người dùng thắng hay thua và hiển thị màn hình tương ứng

Dưới đây là phác thảo cơ bản về các kịch bản thắng/thua

Nếu hết thời gian [90000 ms hoặc 90 giây] thì

  • Dừng chạy trò chơi
  • Đặt kết quả của trò chơi thành 1 hoặc thắng

Nếu lâu đài bị phá hủy thì

  • Dừng chạy trò chơi
  • Đặt kết quả của trò chơi thành 1 hoặc thắng

Tính độ chính xác theo một trong hai cách

Ghi chú. Tài khoản[0]*1. 0 chỉ chuyển acc[0] thành float. Nếu bạn không làm điều này, toán hạng chia sẽ trả về một số nguyên như 1 hoặc 2 thay vì số float như 1. 5

Thêm những dòng này vào cuối trò chơi. py

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
6

Đây là đoạn mã dài nhất. Nhưng nó không quá phức tạp

Câu lệnh if đầu tiên kiểm tra xem đã hết thời gian chưa. Cái thứ hai kiểm tra xem lâu đài có bị phá hủy không. Cái thứ ba tính toán tỷ lệ chính xác của bạn. Sau đó, một câu lệnh if nhanh sẽ kiểm tra xem bạn thắng hay thua và hiển thị hình ảnh chính xác

Tất nhiên nếu bạn muốn hiển thị hình ảnh cho màn hình thắng và thua thì những hình ảnh đó phải được tải trước. Vì vậy, hãy thêm đoạn mã sau vào cuối phần #3

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
7

Một điều nữa nhanh chóng. Thay đổi phần #4 từ

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
8

Đến

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init[]
width, height = 640, 480
screen=pygame.display.set_mode[[width, height]]

# 3 - Load images
player = pygame.image.load["resources/images/dude.png"]

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill[0]
    # 6 - draw the screen elements
    screen.blit[player, [100,100]]
    # 7 - update the screen
    pygame.display.flip[]
    # 8 - loop through the events
    for event in pygame.event.get[]:
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit[] 
            exit[0] 
9

Biến đang chạy theo dõi nếu trò chơi kết thúc và biến mã thoát theo dõi xem người chơi thắng hay thua

Chạy lại trò chơi và bây giờ bạn có thể chiến thắng hoặc chết khi cố gắng. Mát lạnh. . ]

Bước 10. Âm nhạc miễn phí và hiệu ứng âm thanh

Trò chơi trông khá hay nhưng âm thanh như thế nào?

PyGame làm cho việc tải và phát âm thanh trở nên cực kỳ đơn giản. Trước tiên, bạn phải khởi tạo bộ trộn bằng cách thêm phần này vào cuối phần #2

grass = pygame.image.load["resources/images/grass.png"]
castle = pygame.image.load["resources/images/castle.png"]
0

Sau đó tải âm thanh và đặt mức âm lượng ở cuối phần #3

grass = pygame.image.load["resources/images/grass.png"]
castle = pygame.image.load["resources/images/castle.png"]
1

Hầu hết đoạn mã trên chỉ đơn giản là tải tệp âm thanh và định cấu hình mức âm lượng. Nhưng hãy chú ý đến pygame. máy trộn. Âm nhạc. dòng load – dòng đó tải nhạc nền cho game và dòng tiếp theo đặt nhạc nền lặp lại vĩnh viễn

Điều đó quan tâm đến cấu hình âm thanh. . ] Bây giờ tất cả những gì bạn cần làm là phát các hiệu ứng âm thanh khác nhau khi cần. Làm điều đó theo hướng dẫn trong các nhận xét cho mã bên dưới

grass = pygame.image.load["resources/images/grass.png"]
castle = pygame.image.load["resources/images/castle.png"]
2

Chạy trò chơi một lần nữa và bạn sẽ nhận thấy rằng giờ đây bạn đã có nhạc nền và hiệu ứng âm thanh khi va chạm và bắn súng. Trò chơi cảm thấy sống động hơn nhiều. . ]

Đi đâu từ đây?

Bạn nên tự hào về bản thân. bạn vừa hoàn thành việc tạo một trò chơi thú vị với âm nhạc, hiệu ứng âm thanh, thỏ sát thủ, lửng kamikaze, v.v. Tôi đã nói với bạn rằng bạn có thể làm được. . ]

Bạn có thể tải xuống mã nguồn cuối cùng của trò chơi thông qua nút Tải xuống Tài liệu ở đầu hoặc cuối trang này

Tại thời điểm này, vui lòng mở rộng trò chơi này thành sáng tạo của riêng bạn. Có thể thử thay thế tác phẩm nghệ thuật bằng bản vẽ của riêng bạn hoặc thêm các loại vũ khí hoặc loại quái vật khác nhau vào trò chơi

Bạn có bất kỳ câu hỏi hoặc nhận xét nào về những gì bạn đã thực hiện trong hướng dẫn này không? . Tôi rất thích nghe từ bạn

Bạn có thể tạo trò chơi điện tử bằng Python không?

Do đó, Python cũng là một ngôn ngữ lý tưởng để bạn bắt đầu cuộc phiêu lưu tạo trò chơi , bất kể bạn đã thông thạo ngôn ngữ này hay chưa. . Do cú pháp thân thiện với người mới của Python, các nhà phát triển có thể tập trung vào những điều cơ bản của lập trình trò chơi, chứ không phải sự phức tạp của chính ngôn ngữ này.

Python hay C++ tốt hơn để phát triển trò chơi?

C ++ là người chiến thắng rõ ràng ở đây. Khó học hơn Python, nhưng tiềm năng phát triển game của nó thì vô đối. C++ là. Nhanh hơn nhiều so với Python, vốn dễ bị lag khi tải máy chủ nặng của một trò chơi điện tử

Tại sao Python không được sử dụng để làm game?

Một vài lý do. Tốc độ không phải là thế mạnh của Python . Đó là một trong những ngôn ngữ chậm nhất được sử dụng. Điều này không có nghĩa là nó tệ, nhưng thông thường các trò chơi yêu cầu tốc độ chấp nhận được để mang lại trải nghiệm chất lượng.

Chủ Đề