Tạo một game nhập vai văn bản bằng Python

Đối với trò chơi của tôi, tôi bắt đầu với cảnh tiêu chuẩn “bạn thức dậy ở một nơi xa lạ”, nơi tôi đang tìm kiếm thông tin đầu vào cơ bản của người dùng. Đầu tiên, đây là phần đầu của chức năng cũng như các bộ mô tả ban đầu và một menu ngắn

def intro[]:
     print["Last night, you went to sleep in your own home."]
     print["Now, you wake up to an unfamiliar environment."]
     print["As your eyes flutter open, darkness greets you. Your surroundings are blind to you."]
     print["You are sat on a bed, and a wall hugs your back. Beside you is a table, whose outline you can vaguely determine."] print["1 - to check under the bed"]
     print["2 - to check the table"]

Tiếp theo, chúng ta sẽ đọc trong đầu vào. Tuy nhiên do người dùng không nhất thiết phải tuân theo quy tắc nhập chữ số nên chúng ta cần test đầu vào. Chúng ta cần đảm bảo rằng các chữ số là số nguyên, chúng là các số một và hai và giá trị thực tế là một số nguyên

Để làm điều này, chúng tôi sẽ kiểm tra trong một vòng lặp. Chúng tôi sẽ “thử” phân tích cú pháp đầu vào thành một số nguyên và nếu điều đó không hiệu quả, chúng tôi sẽ nhắc người dùng nhập một giá trị số nguyên. Mặt khác, nếu nó là một số nguyên khác một hoặc hai, nó khuyến khích người dùng chọn một trong các chữ số đó

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]

Bây giờ chúng tôi đã có đầu ra, trong trò chơi cá nhân của tôi, tôi có thêm một danh sách thiết lập câu chuyện

print[""]
print["The note reads:"]
print["My dearest participant,"]
print[" If you notice, the door contains a padlock with a three digit code."]
print[" You will find this code hidden within the room, and must solve it. You shall find three numbers, and must order them correctly."]
print[" I wish you the best of luck."]
print["Sincerely, your gracious host."]print[""]
print["You examine the room and see:"]

Đó là mã cuối cùng cho tệp giới thiệu. Tiếp theo, chúng ta sẽ cần thiết lập menu

Viết thực đơn

Đối với tệp menu này, chúng tôi sẽ cần chuyển một danh sách các mục để chọn. Chúng tôi cũng sẽ gửi lời nhắc người dùng. Trong vòng lặp “for”, chúng tôi sẽ in từng mục trong danh sách đó. Khi chúng ta có những thứ đó, chúng ta sẽ sử dụng vòng lặp “while” để kiểm tra đầu vào, giống như chúng ta đã làm trong tệp giới thiệu. Một lần nữa, chúng tôi sẽ nhắc người dùng sửa thông tin nhập của họ vào danh sách kết quả dự kiến

def menu[list, question]:

for item in list:

print[list.index[item], item]

while True:

result = input[question]

try:

result = int[result]

break

except:

print["Selection must be whole number between 0-9:"]

return result

Bây giờ chúng ta đã hoàn thành tệp menu, chúng ta có thể viết tệp tiếp theo, tệp này sẽ chứa các mục bên trong menu

Viết tệp searchItem

Đối với tệp này, chúng ta nên bao gồm tất cả các phần tử còn lại sẽ tham gia vào menu. Mục tiêu của trò chơi là tìm các số ẩn của mã ổ khóa, vì vậy menu sẽ bao gồm mọi mục có khả năng tìm kiếm, cũng như cánh cửa chứa ổ khóa. Đầu tiên, chúng tôi sẽ khai báo Cửa, nơi chúng tôi sẽ cần chuyển mã để kiểm tra xem người chơi có đoán đúng không. Mã được chèn sẽ cần kiểm tra từng chữ số, giống như trong hai tệp trước. Vì trò chơi sẽ ở trong một vòng lặp, nên chúng tôi cũng cần phá vỡ vòng lặp bằng cách gửi xác nhận tích cực nếu mã chính xác và mã nào đó để tiếp tục vòng lặp nếu mã không chính xác

def Door[code]:

print["You walk to the door. The rotary padlock contains three digits. You enter a code"]

while True:

try:

option1 = int[input["Digit one: "]]

break

except:

print["Digit one must be a whole number between 0-9:"]

while True:

try:

option2 = int[input["Digit two: "]]

break

except:

print["Digit two must be a whole number between 0-9:"]

while True:

try:

option3 = int[input["Digit three: "]]

break

except:

print["Digit three must be a whole number between 0-9:"]

chosenCode = int[str[option1] + str[option2] + str[option3]]

print[""]

if chosenCode == code:

print["You hear a click, and the padlock shifts. As you press open the door a rush of fresh, warm air caresses your face. At last, you are free."]

return [1]

else:

print["You jiggle the padlock, but to no avail. The code is incorrect."]

return[0]

Tiếp theo, chúng tôi tạo mục tìm kiếm đầu tiên của mình. Chúng tôi cần gửi lựa chọn số menu cho mặt hàng đó, sau đó là vị trí mã đầu tiên để kiểm tra và cũng là đoạn mã đầu tiên nếu đó là vị trí chính xác

def Window[choice, codeLocation, codeValue]:

print[""]

print["You look at the window. It's dark, and damp. Mold grows along the edges and you cannot see through its musty panes."]

if choice == codeLocation:

print["Carved into the edging, you see the number " + str[codeValue] + "."]

print[""]

else:

print["You find no code."]

print[""]

Cửa sổ là lựa chọn đầu tiên. Như bạn có thể thấy, hầu hết mã đều dựa trên văn bản và do đó, nó có thể được thay đổi thành bất cứ thứ gì bạn muốn. Mã tiếp theo sẽ xử lý lựa chọn ba lô

def Backpack[choice, codeLocation, codeValue]:

print[""]

print["The backpack is your personal bag. Strange. You thought you lost it weeks ago."]

if choice == codeLocation:

print["Within the front pocket, you see the number " + str[codeValue] + " written on a crumpled note."]

print[""]

else:

print["You find no code."]

print[""]

Văn bản có thể đơn giản hoặc mô tả như bạn muốn. Bây giờ, chúng ta sẽ làm việc trên phần bình hoa

def Vase[choice, codeLocation, codeValue]:

print[""]

print["A dark blue vase holds roses that seem to have died long ago."]

if choice == codeLocation:

print["On the base, you see the number " + str[codeValue] + "."]

print[""]

else:

print["You find no code."]

print[""]

Như bạn có thể thấy, mã rất chuẩn cho các chức năng này. Nhưng một lần nữa, chúng có thể có độ dài bất kỳ mà cá nhân bạn muốn cho trò chơi của mình

________số 8

Bây giờ chúng ta đã đi được nửa chặng đường lựa chọn các mặt hàng của tôi. Tôi quyết định làm chín trong số chúng, nhưng bạn có thể làm ít hơn nếu bạn muốn

def Painting[choice, codeLocation, codeValue]:

print[""]

print["Has Mona Lisa always been this creepy? Her eyes peer into you, her smile gleams as if she knows the fate that awaits you unless you find the code."]

if choice == codeLocation:

print["Painted in the corner, you see the number " + str[codeValue] + "."]

print[""]

else:

print["You find no code."]

print[""]

Một số tùy chọn chắc chắn mang tính mô tả hơn những tùy chọn khác, nhưng đó là niềm vui khi tận hưởng sự sáng tạo

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
0

Một điều cần lưu ý, để ngăn nhiều mã sử dụng cùng một vị trí, có một danh sách được xác định trước về vị trí mà mỗi đoạn mã có thể được tìm thấy trong

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
1

Gần đến nơi, chỉ còn hai mục nữa. Điều này có khả năng chứa đoạn mã thứ ba, nhưng không phải đoạn mã thứ hai hoặc thứ nhất như đã giải thích trước đây

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
2

Đây sẽ là mục cuối cùng của chúng tôi

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
3

Bây giờ, chúng tôi sẽ sẵn sàng tạo tệp cuối cùng, đây sẽ là tệp chính

Viết tệp chính

Trong tệp này, chúng tôi sẽ nhập tất cả các tệp khác, cũng như tạo mã ngẫu nhiên và khai báo trò chơi. Điều đầu tiên chúng ta cần làm là nhập mô-đun ngẫu nhiên

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
4

Với việc đã nhập đó, giờ đây chúng tôi có thể nhập tất cả các chức năng trong mỗi tệp mà chúng tôi đã viết

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
5

Để tạo mã, chúng tôi sẽ khai báo ba đoạn mã được tạo bởi các số nguyên ngẫu nhiên từ 0 đến 9. Chúng tôi cũng sẽ cần thêm chúng lại với nhau cho mã. Tiếp theo, chúng ta cần tạo danh sách các mặt hàng của mình. Sau đó, chúng tôi sẽ khai báo các vị trí mà các đoạn mã có thể có trong. Nhớ lại rằng để giữ cho chúng không bị trùng lặp, chúng tôi giữ các vị trí tiềm năng trong một tập hợp tiềm năng riêng biệt

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
6

Bây giờ, chúng tôi đã sẵn sàng để bắt đầu trò chơi

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
7

Cuối cùng, chúng tôi bắt đầu vòng lặp trò chơi. Nó sẽ tiếp tục chạy cho đến khi người dùng tìm đúng mã hoặc đoán đúng. Để xem lựa chọn của người chơi, hãy gọi menu và đặt nó trong một biến. Sau đó, lựa chọn nằm trong phần if/elif/else lớn hơn, nơi chúng tôi có thể gửi thông tin chi tiết phù hợp đến mục menu. Chúng tôi cũng sẽ cần gửi số lựa chọn và vị trí mã để chúng có thể được kiểm tra xem mặt hàng đó có ở đúng vị trí hay không. Chúng tôi cũng cần gửi đoạn mã trong trường hợp đúng. Bất cứ thứ gì không liên quan đến vật phẩm sẽ được gửi đến cửa để kiểm tra ổ khóa. Nếu mã trả về chính xác được trả về, cho biết người chơi đã nhập đúng mã ổ khóa, thì chúng tôi sẽ phá vỡ vòng lặp. Nếu không, trò chơi tiếp tục

while True:

bedOrWall = input[]

try:

if int[bedOrWall] == 1:

print["Under the bed, you feel a note. But you cannot see to examine it."]

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

break

elif int[bedOrWall] == 2:

print["You check the table and find a lamp. With a loud click, your surroundings are illuminated."]

print["You also check under the bed and find a note."]

break

else:

print["Enter either 1 or 2:"]

except:

print["Value must be whole number 1 or 2:"]
8

Và đó là mã trò chơi dựa trên văn bản tùy chỉnh cuối cùng của chúng tôi

Thời gian để chơi game

Giới thiệu

Mở menu đầu tiên

Kiểm tra các địa điểm đầu tiên

Kiểm tra các địa điểm tiếp theo

Kiểm tra các địa điểm tiếp theo

Kiểm tra các địa điểm tiếp theo

Kiểm tra vị trí cuối cùng và cửa

Mã ổ khóa không thành công

Kiểm tra mục nhập của người dùng

Mã khóa thành công

Phần kết luận

Không phải là mã phức tạp nhất và nhiều giá trị được mã hóa cứng hơn, mà là một cú hích tốt từ quá khứ đối với tôi. Phần hay nhất của nó là với một vài kỹ năng đơn giản này, chúng ta có thể tạo ra nhiều loại trò chơi dựa trên văn bản. Bởi vì rất nhiều mô tả được mã hóa cứng, cốt truyện có thể là sự kết hợp của bất kỳ thể loại nào. Tôi hy vọng bạn thích trải nghiệm viết trò chơi này, cũng như chuyến đi ngược dòng ký ức của tôi. Cho đến lần sau, chúc mừng

Bạn có thể tạo một game nhập vai dựa trên văn bản bằng Python không?

Bạn có thể tạo trò chơi phiêu lưu văn bản bằng Python , chạy trò chơi đó trong dòng lệnh và thay đổi câu chuyện dựa trên văn bản mà người chơi nhập vào. Tập lệnh Python sẽ bao gồm một số loại khái niệm lập trình cơ bản. Điều này bao gồm các câu lệnh in, câu lệnh if và các hàm.

Python có tốt cho việc viết game 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.

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

May mắn thay, thư viện arcade Python giúp tạo trò chơi 2D bằng Python cho nhiều lập trình viên. Nếu bạn chưa từng nghe về nó, thì thư viện arcade là một khung Python hiện đại để tạo các trò chơi có đồ họa và âm thanh hấp dẫn.

Bạn có thể viết trò chơi 3D bằng Python không?

Nếu bạn quan tâm đến việc tìm hiểu cách sử dụng Pygame để tạo trò chơi 3D, hai trang web dành riêng cho Python 3D là Python 3D[py3d. org] và Phần mềm Python 3D . Bạn có thể tìm thấy một số dự án trò chơi 3D có sẵn tại đây. PyWeek là một trang web thách thức lập trình hai năm một lần sản xuất một số trò chơi tuyệt vời.

Chủ Đề