【无标题】

一、引入(之前学习过的面向过程编程)

#引入
#1.面向过程编程
#==>(1)之前的代码(像流水线,重复利用性差)
# 脸部
import turtle
turtle.pencolor('pink')
turtle.fillcolor('pink')
turtle.begin_fill()
turtle.circle(150)
turtle.end_fiil()

#眼睛
turtle.penup()
turtle.goto(-20, 20)
turtle.pendown()
turtle.fillcolor('white')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()

#==>(2)学习了函数(封装特定功能,调用)==函数式编程,增强重用性,可读性
def eyeball():
    turtle.penup()
    turtle.goto(-30, 220)
    turtle.pendown()
    turtle.dot(15,'black')
    turtle.penup()
    turtle.goto(30, 220)
    turtle.pendown()
    turtle.dot(15, 'black')
    turtle.hideturtle()
def face():
    turtle.pencolor('pink')
    turtle.fillcolor('pink')
    turtle.begin_fill()
    turtle.circle(150)
    turtle.end_fill()

二、

import turtle

# 定义游戏角色的属性(字典)
role_a = {
    'nickname': "小呆",
    'gender': "男",
    'x': -200,
    'y': 10
}

role_b = {
    'nickname': "小萌",
    'gender': "女",
    'x': 150,  # 小萌在小呆的右边,x坐标调整为150
    'y': 10
}

def draw_character(dic):
    # 获取角色属性
    nickname = dic.get('nickname')
    gender = dic.get('gender')
    x = dic.get('x')
    y = dic.get('y')

    # 初始化turtle
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()

    # 绘制角色头部
    turtle.circle(50)  # 头部是一个半径为50的圆


    # 绘制角色眼睛
    turtle.penup()
    turtle.goto(x-20, y+40)
    turtle.pendown()
    turtle.dot(10)  # 左眼

    turtle.penup()
    turtle.goto(x+20, y+40)
    turtle.pendown()
    turtle.dot(10)  # 右眼

    # 绘制角色嘴巴
    turtle.penup()
    turtle.goto(x-15, y+20)
    turtle.right(90)
    turtle.pendown()
    turtle.circle(15, 180)  # 半圆形嘴巴 半径r,度数18

    # 显示角色昵称
    turtle.penup()
    turtle.goto(x-40, y+100)
    turtle.pendown()

    turtle.write(nickname, font=("宋体", 16, "normal"))

    # 隐藏turtle箭头
    turtle.hideturtle()

# 调用函数绘制角色
draw_character(role_a)  # 绘制小呆

turtle.penup()
turtle.right(90)
draw_character(role_b)  # 绘制小萌

# 点击窗口关闭
turtle.done()

#角色类:
#1.把(属性,方法 抽象出来),封装到同一个类里面。
# 属性:昵称、性别、坐标
# 方法:让自己draw绘制出来
#2.小呆,小萌属于类的实例
#思路===>面向对象编程


# 面向过程:一个人,按照步骤做蛋糕
# 面向对象:一堆助手各司其职,你来指挥他们,不用动手

#一切皆为对象:
##1.什么是对象?
# (1)桌椅板凳都是;
# (2)6个数据类型也是对象。
# Number(数字)
# String(字符串)
# List (列表)
# Tuple(元组)
# Set (集合)
# Dictionary(字典)
#==>(3)自定义数据类型(是类)

##2.什么是类?
#类:是对一群具有相同 特征 或 行为 的事物的一个统称。(是抽象的)
#类和对象的关系(类大),实例对象拥有类中的方法,但属性数据各不相同
#书本==>语文书、数学书

三、类的构建

#创建一个 类  类名英文首字母大写
class 类名:
    def __init__(self):
        pass
    def 方法名(self):
        pass

class Person:
    #初始化对象,self调用时不用传递该参数
    def __init__(self,new_name):
        self.name=new_name      #接收传入的参数
        # ##1.init()
        # print("I am running")#在实例化小明的时候已经调用了init方法‘
        # ##init方法很特殊,在实例化小明对象的时候就调用了。


    ##walk方法
    def walk(self):
        print("I am walking")

#实例化
#对象:小明
xiaoming=Person("小明")#无反应
##2.walk()
# #开始调用walk方法:使用【对象名.方法名】
xiaoming.walk()
print(xiaoming.name)
#
# #对象:小红
# xiaohong=Person("小红")
# print(xiaohong.name)

四、

#类和对象==>创建角色
import turtle


class Role:
    def __init__(self,nickname,gender,x,y):
        self.nickname=nickname
        self.gender=gender
        self.x=x
        self.y=y    #存储实例属性
# # 定义游戏角色的属性
# role_a = {
#     'nickname': "小呆",
#     'gender': "男",
#     'x': -200,
#     'y': 10
# }
#
# role_b = {
#     'nickname': "小萌",
#     'gender': "女",
#     'x': 150,  # 小萌在小呆的右边,x坐标调整为150
#     'y': 10
# }

    def draw_character(self):
        # # 获取角色属性
        # nickname = dic.get('nickname')
        # gender = dic.get('gender')
        # x = dic.get('x')
        # y = dic.get('y')

        # 初始化turtle
        turtle.penup()
        turtle.goto(self.x, self.y)
        turtle.pendown()

        # 绘制角色头部
        turtle.circle(50)  # 头部是一个半径为50的圆


        # 绘制角色眼睛
        turtle.penup()
        turtle.goto(self.x - 20, self.y + 40)
        turtle.pendown()
        turtle.dot(10)  # 左眼
        turtle.penup()
        turtle.goto(self.x + 20, self.y + 40)
        turtle.pendown()
        turtle.dot(10)  # 右眼

        # 绘制角色嘴巴
        turtle.penup()
        turtle.goto(self.x - 15, self.y + 20)
        turtle.right(90)
        turtle.pendown()
        turtle.circle(15, 180)  # 半圆形嘴巴

        # 显示角色昵称
        turtle.penup()
        turtle.goto(self.x - 40, self.y + 100)
        turtle.pendown()
        turtle.write(self.nickname, font=("Arial", 16, "normal"))

        # 隐藏turtle箭头
        turtle.hideturtle()

# # 调用函数绘制角色
# draw_character(role_a)  # 绘制小呆
# turtle.penup()
# turtle.right(90)
# draw_character(role_b)  # 绘制小萌


#####小呆,男,(-200,10)
role_a=Role('小呆',"男",-200,10)
role_a.draw_character()#画出来



#####小萌,女,(200,10)
turtle.penup()
turtle.right(90)
turtle.pendown()
role_a=Role('小萌',"女",200,10)
role_a.draw_character()#画出来
# 点击窗口关闭
turtle.done()

五、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值