Hướng dẫn dự án level 2 Python Sáng chủ nhật

huyhuy17

Demo bài tập cá lớn ăn cá nhỏ


import turtle
import random


# Tạo class food
class Food(turtle.Turtle):
    def __init__(self):
        turtle.Turtle.__init__(self)
        self.size = random.randrange(1, 45) / 10.0
        self.shapesize(self.size)
        self.color(random.choice(['red','blue', 'yellow' , 'orange']))

    def move(self):
        self.left(random.randrange(-100, 100))
        self.forward(10)


# Khởi màn hình
sc = turtle.Screen()
sc.title("Ăn để lớn")
sc.setup(width=650, height=650)
sc.screensize(600, 600)
# Khởi tạo nhân vật
player = turtle.Turtle()
foods = []
for i in range(10):
    foods.append(Food())
notice = turtle.Turtle()

# đặt hình dạng
player.shape('square')
for i in foods:
    i.shape('circle')
notice.ht()

# nhấc bút
player.penup()
for i in foods:
    i.penup()
notice.penup()
# Đặt vị trí
player.setpos(0, 0)
for i in foods:
    i.setpos(random.randrange(-300, 300), random.randrange(-300, 300))
notice.setpos(-250, 250)

# Đặt tốc độ
player.speed(0)
for i in foods:
    i.speed(0)

# Biến trạng thái nhân vật
size = 1
indexOfHide = []


# Tạo hàm logic
def contain(i):
    for j in indexOfHide:
        if i == j:
            return True
    return False


def foodsMove():
    for f in foods:
        f.move()


def playgame():
    global size
    foodsMove()
    for i in range(len(foods)):
        if foods[i].distance(player) < 10 and not (contain(i)) and size > foods[i].size:
            foods[i].ht()
            indexOfHide.append(i)
            size += 1
            player.shapesize(size)
        elif foods[i].distance(player) < 10 and not (contain(i)) and size < foods[i].size:
            size -= 1
            player.shapesize(size)
    sc.ontimer(playgame, 4)


# Tạo hàm điều khiển
def moveup():
    player.sety(player.ycor() + 20)


def movedown():
    player.sety(player.ycor() - 20)


def moveleft():
    player.setx(player.xcor() - 20)


def moveright():
    player.setx(player.xcor() + 20)


# Gán sự kiện
sc.onkey(moveup, "Up")
sc.onkey(movedown, "Down")
sc.onkey(moveright, "Right")
sc.onkey(moveleft, "Left")

# Chạy chương trình
playgame()
sc.listen()

sc.mainloop()


Trả lời