Raspberry Pi 2 là một thiết bị có khả năng đáng ngạc nhiên, khi xem xét mức giá dưới £ 30 của nó. Nó đi kèm với một phiên bản Minecraft được cài đặt sẵn, cùng với một API cho phép bạn viết mã để chạy trong thế giới ảo. Bạn làm điều này bằng Python, rất đơn giản để học. Sự kết hợp của Pi, Python và Minecraft mang đến cơ hội tuyệt vời để bắt đầu khám phá các khả năng lập trình. Và cảm giác hồi hộp khi thấy một ngôi nhà tự xây dựng trên một khung cảnh ảo cũng không chỉ dành cho trẻ em.
bạn có thể gửi tiền từ venmo đến ứng dụng tiền mặt không
Viết kịch bản trong Minecraft
Minecraft là một trò chơi hộp cát mở không có cốt truyện để theo dõi. Đôi khi nó được mô tả như Lego ảo, vì người chơi có thể xây dựng bất kỳ loại cấu trúc nào bằng cách sử dụng các khối theo ý của họ. Phiên bản đi kèm với Raspberry Pi có một bộ tính năng hạn chế phù hợp với vai trò giáo dục của nó - chẳng hạn như bạn không cần phải lo lắng về việc bị zombie truy đuổi. Tương tác với thế giới này không yêu cầu thiết lập đặc biệt, chỉ cần bản dựng hệ điều hành Raspbian gần đây cộng với môi trường lập trình. Tôi chọn Geany, bạn có thể cài đặt Geany bằng cách mở LXTerminal và nhập:
sudo apt-get install geany
Hãy bắt đầu bằng cách tạo một kịch bản để xây dựng một ngôi nhà trước mặt người chơi - nhưng thay vì chỉ đóng một ngôi nhà vào vị trí, chúng tôi sẽ tạo hiệu ứng cho nó. Chúng tôi cũng sẽ xây dựng các cài đặt có thể định cấu hình khác nhau, điều này sẽ cho phép người chơi thử nghiệm với các kích thước và vật liệu khác nhau. Điều này cũng sẽ làm cho chương trình trở nên mô-đun, vì vậy nó có thể được sử dụng làm cơ sở để tạo ra những phúc lợi phức tạp hơn.
Để làm cho mã hoạt động, hãy tải nó vào Geany, sau đó khởi động Minecraft và tạo ra một thế giới mới. Nhấn phím Tab để nhả con trỏ khỏi cửa sổ Minecraft và nhấp vào biểu tượng bánh răng cưa trong Geany (hoặc nhấn F5) để khởi chạy tập lệnh. Bạn sẽ thấy một ngôi nhà tự lắp ráp một cách kỳ diệu. Nếu không, hãy thử quay lại - nó có thể ở phía sau bạn! Bạn có thể thấy tập lệnh đang hoạt động đây . Vậy script hoạt động như thế nào? Đầu tiên, nó mở ra một liên kết đến Minecraft:
nhập mcpi.minecraft dưới dạng minecraft, time mc = minecraft.Minecraft.create ()
Trong Python, điều quan trọng là phải chú ý đến thụt lề, vì đó là cách mã được chia thành các khối. Trong trường hợp này, cả hai dòng đều nằm ngang với lề bên trái: dòng đầu tiên nhập thư viện Minecraft và Thời gian và dòng thứ hai tạo một đối tượng Minecraft để chúng ta sử dụng xuyên suốt. 25 dòng tiếp theo đặt một số biến cho các khối mà chúng ta sẽ sử dụng để chúng ta có thể gọi chúng là wood_planks thay vì theo ID khối của chúng (trong trường hợp này là 5). Sau đó, chúng tôi cho biết khối nào trong số các khối này sẽ được sử dụng cho các bức tường, khối nào cho mái nhà, v.v. Chúng ta có thể dễ dàng thay đổi hoàn toàn việc xây dựng ngôi nhà bằng cách hoán đổi bức tường gạch lấy đá cuội chẳng hạn. Cuối cùng, chúng tôi thiết lập chiều rộng, chiều dài và chiều cao của ngôi nhà mong muốn của chúng tôi.
Bây giờ chúng tôi gọi hàm Minecraft là mc.player.getTilePos () để định vị người chơi trong khung cảnh và các giá trị quay lại sau đó được sử dụng để tạo hai biến, bên trái và bên dưới, để mô tả vị trí góc đầu tiên của ngôi nhà .
Sau đó, cấu trúc của kịch bản khớp với quá trình Minecraft xây dựng một ngôi nhà theo cách thủ công. Chúng tôi bắt đầu bằng cách dọn sạch một khoảng trống để nếu người chơi chọn xây ngôi nhà bên trong, chẳng hạn như một ngọn núi, thì khu vực sinh sống sẽ không phải là một tảng đá vững chắc. Đây là khối mã - hàm trong Python - thực hiện điều này:
def clear_house (hạt nhân):
nếu hạt nhân == Đúng:
blast_zone = 20
khác:
blast_zone = 0
mc.setBlocks (left-blast_zone, player_
ground, bottom + blast_zone, left + width + blast_
vùng, player_ground + height + blast_
vùng + 10, bottom-length-blast_zone, air_block)
Khi chúng ta gọi clear_house, chúng ta truyền tham số hạt nhân vào. Nó có giá trị Đúng hoặc Sai. Bạn có thể thử gọi nó bằng True để xóa một khối lượng lớn hơn xung quanh khu vực mục tiêu hoặc gọi nó với False để giới hạn khoảng trống cho các kích thước bên trong của ngôi nhà. Trong Minecraft, hàm mc.setBlocks được sử dụng để tạo một khối lập phương bằng cách chuyển cho nó tọa độ, theo ba chiều, của các góc đối diện, theo sau là loại khối mà bạn muốn sử dụng. Trong trường hợp này, chúng tôi đang giải phóng một khoảng trống, vì vậy chúng tôi sử dụng không khí.
Khi chúng tôi đã dọn sạch không gian, đã đến lúc chuyển sang giai đoạn xây dựng. Mỗi giai đoạn xây dựng này diễn ra theo chức năng riêng của nó. Ở cuối tập lệnh, bạn sẽ thấy một hàm có tên là main (), điều khiển luồng chương trình bằng cách gọi lần lượt từng giai đoạn xây dựng. Bằng cách đặt tên cho các hàm của chúng ta một cách hợp lý và gọi chúng từ hàm main (), thật dễ dàng để hiểu chương trình đang làm gì:
def main ():
clear_house (Sai)
start_pos = [left, bottom, player_
đất]
build_floor (start_pos)
course = build_walls (start_pos)
add_door (door_position)
time.sleep (trì hoãn * 10)
build_roof (start_pos, khóa học)
Hàm tiếp theo được gọi trong hàm main () xây dựng tầng - hàm này sử dụng mc. setBlocks một lần nữa để chạm khắc nền móng (để tạo hiệu ứng nghệ thuật) và sau đó thêm một khối gạch lát sàn với chiều sâu một khối để tạo ra một sàn vững chắc trong ngôi nhà của chúng tôi.
cách sử dụng máy tính xách tay làm bộ định tuyến
Xây tường
Hàm build_walls là trung tâm của chương trình. Cách hiệu quả nhất để tạo ra lớp vỏ của một ngôi nhà là đập một khối hình khối rắn xuống và sau đó sử dụng clear_house để chạm khắc nội thất. Tuy nhiên, chúng tôi muốn ngôi nhà dường như tự xây dựng, vì vậy chúng tôi cần đặt các khối riêng lẻ, cái này đến cái khác. Đây là phiên bản đơn giản của mã xây tường:
def build_course (start_pos, hướng,
khóa học):
khối = 1
current_horiz = start_pos [0]
current_vert = start_pos [1]
nếu hướng == lên hoặc
hướng xuống ==:
number_of_blocks = length
khác:
number_of_blocks = width
trong khi khối mc.setBlock (current_horiz, player_
mặt đất + khóa học, current_vert, wall_block)
nếu hướng == lên:
current_vert- = 1
hướng elif == xuống:
current_vert + = 1
hướng elif == phải:
current_horiz + = 1
khác:
current_horiz- = 1
blocks = blocks + 1 # chuyển sang khối tiếp theo
time.sleep (trì hoãn)
Chúng tôi bắt đầu bằng cách lưu trữ vị trí bắt đầu - đây sẽ là vị trí của khối cuối cùng được đặt từ khóa trước của các khối. Sau đó, chúng tôi chỉ định số lượng khối để đặt, tùy thuộc vào việc chúng tôi đi dọc theo chiều dài của tòa nhà hay chiều rộng của tòa nhà.
Giai đoạn xây dựng được chứa trong khối while - giai đoạn này tiếp tục chạy cho đến khi chúng tôi đặt tất cả các khối. mc.setBlock đặt một khối duy nhất tại các tọa độ được hiển thị, sau đó tăng một trong các tọa độ đó tùy thuộc vào hướng mà chúng ta đang đặt. Hiệu quả là các khối được đặt dọc theo một bức tường trước khi rẽ vào một góc và tiếp tục theo hình chữ nhật cho đến khi hoàn thành khóa học.
xbox một trò chơi trên máy tính không có bảng điều khiển
Phiên bản cuối cùng của mã có liên quan nhiều hơn một chút, thêm cửa sổ vào mỗi bức tường. Các cửa sổ có kích thước động sao cho chúng có chiều dài bằng một nửa bức tường và căn giữa. Nó cũng ghi lại vị trí cho cửa; nó được thêm vào khi các bức tường được xây dựng. Các khóa học được điều khiển từ hàm build_walls, hàm này lặp lại hàm build_course cho mỗi khóa học của các khối cho đến khi nó đạt đến chiều cao cuối cùng.
Bạn thậm chí có thể thử xây dựng ngôi nhà của mình trên đại dương hoặc trên không - hãy làm điều này bằng cách nhấn đúp vào phím cách để bay, sau đó nhấn lại để nâng người lên trước khi chạy kịch bản. Thay đổi các biến wall_block vàof_block để xem điều gì sẽ xảy ra nếu bạn tạo các bức tường hoặc mái nhà bằng vàng hoặc thực sự là dung nham. Bạn có thể thêm các khối của riêng mình bằng cách tham khảo danh sách đầy đủ đây và thêm biến được liên kết vào tập lệnh. Các sửa đổi khó khăn hơn có thể bao gồm việc thêm nhiều tầng vào cấu trúc nếu biến chiều cao được đặt thành một giá trị đủ lớn. Ví dụ, hãy tìm cách thêm tháp pháo và bạn sẽ có những tác phẩm của lâu đài Minecraft.
Những chỉnh sửa này nghe có vẻ tầm thường, nhưng tôi đã lập trình chuyên nghiệp hơn 20 năm và tôi vẫn cảm thấy hồi hộp khi một đoạn mã hoạt động như dự định. Nếu bạn chưa từng lập trình trước đây, tôi hy vọng bạn sẽ thử - và nếu bạn có một người hâm mộ Minecraft trong gia đình, tôi khuyên bạn nên để họ hiểu mã và xem nó đưa họ đến đâu. Bạn sẽ tìm thấy các liên kết đến tài nguyên Minecraft Pi tại kevpartner.co.uk/programming .