Python level 3 CN

huyhuy17

Buổi 1

Link hướng dẫn và cài https://huyhuy17.xyz/python-mine-craft-usefull-link/

Địa chỉ  minecraft server : 103.237.147.88:25567

Server minecraft mcpi

ip : 103.237.147.88

port : 4713

Code mẫu: https://repl.it/@Quang_HuyHuy/NotedSnarlingHypotenuse
Api document : https://www.stuffaboutcode.com/p/minecraft-api-reference.html

Bài tập về nhà

  1. Viết hàm tourGuide()
  2. Tạo danh sách các địa danh bao gồm thông tin : tên công trình, toạ độ x y z, và đoạn văn ngắn giới thiệu công trình
  3. Di chuyển người chơi tới từng địa chỉ đã có mỗi 15s. Và chat đoạn giới thiệu về công trình

Buổi 3

Code mấu: https://repl.it/@Quang_HuyHuy/DelightfulFatalLead

Bài tập về nhà:

Cho người dùng nhập vào “make xxxx” với xxxx là tên công trình, xây công trình tại vị trí tương ứng

Ví dụ: Nếu người dùng chat : “make room” tạo một căn phòng tại vị trí người chơi đó

Buổi 4

Code mẫu


from mcpi import minecraft
import random
import time
mc = minecraft.Minecraft.create('103.237.147.88', 4713)

#Gửi tin nhắn
myname = "huyhuy171"
"""postToChat Để gửi tin nhắn"""
mc.postToChat("Hello, i am {}".format(myname))

#Đọc vị trí người chơi và di chuyển người chơi
"""getPlayerEntityId Để lấy id của người chơi"""
playerid = mc.getPlayerEntityId(myname)

x, y, z = -373, 229, -354
width_x = 10
h = 10
width_z = 5


def make_house():
    for i in range(3):
        mc.setBlocks(x, y+ 3*i, z, x + width_x, y + 3*(i+1), z + width_z, 35, random.randint(0,17))
    mc.setBlocks(x + 1, y + 1, z + 1, x + width_x - 1, y + h - 1,z + width_z - 1, 0)
    #xay 1 ke de do
    mc.setBlock(-370, 229, -355, 41)
    mc.postToChat(
        "If you want to come into my magic house, you should put a diamond on my gold"
    )

    #tạo nhà tắm
    mc.setBlocks(-366,230,-352,-366,231,-352+2,20)
    mc.setBlocks(-365,229,-352,-365+1,229,-352+2,168)

def open_door():
    mc.setBlock(-368, 229, -354, 0)
    mc.setBlock(-369, 229, -354, 0)
    mc.setBlock(-368, 230, -354, 0)
    mc.setBlock(-369, 230, -354, 0)
    mc.setBlock(-368, 231, -354, 0)
    mc.setBlock(-369, 231, -354, 0)


def close_door():
    mc.setBlock(-368, 229, -354, 17, 2)
    mc.setBlock(-369, 229, -354, 17, 2)
    mc.setBlock(-368, 230, -354, 17, 2)
    mc.setBlock(-369, 230, -354, 17, 2)
    mc.setBlock(-368, 231, -354, 17, 2)
    mc.setBlock(-369, 231, -354, 17, 2)


def check_has_diamond():
    blockid = mc.getBlock(-370,230,-355)
    return blockid == 57

def check_is_in_bathroom():
    for playerid in  mc.getPlayerEntityIds():
        xp,yp,zp = mc.entity.getTilePos(playerid)
        if -365<=xp<= -365+1 and  -352<=zp<=-352+2:
            return True
        else : 
            return False
make_house()
while True: 
    time.sleep(0.5)
    if check_has_diamond() :
        open_door()
    else:
        close_door()
    if check_is_in_bathroom():
        mc.postToChat("You are in bath room")
        mc.setBlocks(-365,229+1,-352,-365+1,229+2,-352+2,9)
        mc.setBlocks(-366,230,-353,-366,230+1,-353,20)
        time.sleep(5)
    else :
        mc.setBlocks(-366,230,-353,-366,230+1,-353,0)
        mc.setBlocks(-365,229+1,-352,-365+1,229+2,-352+2,0)

"""Bài tập - về nhà
tạo ra thêm một cục bông màu đen bên cạnh cục vàng
Nếu đập tan cục bông, di chuyển người chơi lên trên cao 10 block 
và đặt lại cục bông màu đen tại vị trí cũ"""

"""Bài tập 2 
Tạo phòng thể dục
Khi người chơi vào phòng thể dục
Thi chương trình sẽ chat ra các bài tập thể dục và hướng dẫn người chơi tập thể dục
"""


Buổi 5

Link code mẫu: https://repl.it/@Quang_HuyHuy/LongtermWellgroomedAnalysts

Một số kiên thức cần lưu ý:

  1. Sử dụng time.sleep(x) với x là thời gian deplay để giảm tải cho server và kiểm soát thời gian chờ của các vòng lặp
  2. setBlocks(x,y,z, x+ length_x,y+ height, z+ length_z, 10) để tạo khối theo ý muốn, việc kiểm soát chiều rộng, dài cao bằng biến sẽ giúp xây dựng dễ dàng hơn
  3. x,y,z = mc.entity.getTilePos(playerid) để lấy vị trí của người chơi xác định, với việc có 3 biến này hoàn toàn có thể làm các chương trình thao tác với ví trí của người chơi, như "lời nguyền nước"

Bài tập về nhà

  1. Nâng cấp sàn nhảy ,bằng cách thêm đèn chiếu sáng, thay vì chỉ thay đổi màu có nền. Việc thay đổi màu nền sẽ có nhịp điệu
  2. Tạo ra con đường thảm đỏ:
    1. Dựng 1 con đường dài 20 blocks x 4 blocks
    2. Người chơi sẽ được di chuyển đến 1 đầu cố định của con đường
    3. Khi người chơi di chuyển theo con chiều của con đường, đi tiến đến đâu thì đoạn đường đó chuyển màu sang đỏ đến đó và ngược lại nếu lùi đến đâu thì chỗ đã biến thành màu đỏ sẽ được trở về màu ban đầu

Buổi 6 (01-09-2019)

Link code mẫu chạy được https://repl.it/@Quang_HuyHuy/ChartreuseUnwillingModem

  1. Sử dụng thuật toán + thư viện random tạo ra các mẫu công trình
     
    
    from mcpi import minecraft
    import random
    import time
    mc = minecraft.Minecraft.create('103.237.147.88', 4713)
    
    #Gửi tin nhắn
    myname = "huyhuy171"
    """postToChat Để gửi tin nhắn"""
    mc.postToChat("Hello, i am {}".format(myname))
    
    
    def make_tree(x, y, z, randomSeed):
        #tao kieu cay khac nhau voi randomSeed : quy so la cua cay
        height = random.randrange(3, 5 + randomSeed)
        mc.setBlocks(x - 3, y, z - 3, x + 3, y + 15, z + 3, 0)
    
        treeData = random.randint(0, 3)
        tan_cay = random.randint(218,251)
        treeThick = random.randint(2, 2 + randomSeed)
        for _y in range(y + 3, y + treeThick + 3):
            do_rong_tan_cay = random.choice([2,2,2,4,3,1])
            mc.setBlocks(x - do_rong_tan_cay, _y, z - do_rong_tan_cay,
                            x + do_rong_tan_cay, _y, z + do_rong_tan_cay, tan_cay)
        mc.setBlocks(x - do_rong_tan_cay, y, z - do_rong_tan_cay,
                            x + do_rong_tan_cay, y, z + do_rong_tan_cay, 38,random.randint(0,8))
            
        mc.setBlocks(x, y, z, x, y + height, z, 17, treeData)
        
    
    
    def make_amzon (_x,_y,_z,number_tree_x,number_tree_z):
        for i in range(0 , number_tree_x):
            for k  in range(0 ,number_tree_z):
                x = _x  + i * 6
                z = _z + k * 6
                y = _y
                make_tree(x,y,z,6)
                
    
    make_amzon(396,3,-109,10,10)
  2. Tạo block di chuyển + lập trình tự động tìm đường
    
    import block_di_chuyen
    
    from mcpi import minecraft
    import random
    import time
    mc = minecraft.Minecraft.create('103.237.147.88', 4713)
    
    #Gửi tin nhắn
    myname = "huyhuy17"
    """postToChat Để gửi tin nhắn"""
    mc.postToChat("Hello, i am {}".format(myname))
    
    x,y,z = 516,4,-45
    plid = mc.getPlayerEntityId(myname)
    mc.entity.setPos(plid,x,y,z)
    blockid= 35
    blockdata = 6
    DIRECT_X_POS = 'DIRECT_X_POS'
    DIRECT_X_NEG ='DIRECT_X_NEG'
    DIRECT_Z_POS = 'DIRECT_Z_POS'
    DIRECT_Z_NEG = 'DIRECT_Z_NEG'
    
    currentDirect = DIRECT_Z_POS
    
    
    def move():
        global x,y,z,currentDirect
        change_x = 0
        change_z = 0
        if currentDirect == DIRECT_X_POS:
            change_x=1
        if currentDirect == DIRECT_X_NEG:
            change_x = - 1
        if currentDirect == DIRECT_Z_POS:
            change_z=1
        if currentDirect == DIRECT_Z_NEG:
            change_z = - 1
        blnext = mc.getBlock(x +change_x,y,z + change_z)
        if not(blnext):
            mc.setBlock(x,y,z , 0)
            x = x  + change_x
            z = z + change_z
            mc.setBlock(x,y,z, blockid,blockdata)
        else :
            currentDirect = random.choice ([DIRECT_X_POS,DIRECT_X_NEG,DIRECT_Z_POS,DIRECT_Z_NEG])
    
    while True: 
        time.sleep(0.5)
        move()
    
    
    

Buổi 7 (08-09-2019)

Buổi 8

Link lên ý tưởng, dàn bài

https://docs.google.com/spreadsheets/d/1DAkLODv1HrKrY8uu57hnGMJWxDYO4OaXZLwXB6C_qfM/edit?usp=sharing

Khung dàn bài slide

1 slide giới thiệuTên sản phẩm, tên team, các thành viên trong team
1 slide giới thiệu về team-Trình bày vai trò, và công việc chính của từng thành viên- Làm slide
- Lên ý tưởng
- Viết code: code phần nào
- Test, kiểm tra chương trình
- Viết text script nội dung thuyết trình
4+ slide giới thiệu về sản phẩm- Khái quát ý tưởng cũng như lợi ích, diểm hay của chương trình
- Các tính năng và kiến thức đã học áp dụng vào để thực hiện tính năng
2+ slide - Tổng kết sản phẩm
- Điểm mạnh
- Điểm yếu cân khắc phục
1+ Q&a

3 Replies to “Python level 3 CN”

  1. thay oi server ko vao dc

    1. dduowcj roi con oi 103.237.147.88:25568

      1. ok thay

Trả lời