开发者社区> 问答> 正文

怎么用代码做出一棵圣诞树呢?

怎么用代码做出一棵圣诞树呢?

展开
收起
问问小秘 2019-12-23 14:38:03 3221 0
3 条回答
写回答
取消 提交回答
  • C++代码:

    #include <bits/stdc++.h>
    using namespace std;
     
    void Christmas_Tree(int height)
    {
        int stars = 1;
        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < height-i; j++)
            {
                cout << " ";
            }
            for(int j = 0; j < stars; j++)
            {
                cout << "*";
            }
            cout << endl;
            stars += 2;
        }
        for (int i = 0; i < height/4; i++)   //让高一点的圣诞树看起来正常一些
        {
            for (int j = 0; j < height; j++)   //在正中间画树干
            {
                cout << " ";
            }
            cout << "|" << endl;
        }
        
    }
     
    int main()
    {
        int n;   //树叶的高度
        cout << "请输入这棵圣诞树的高度:";
        cin >> n;    
        Christmas_Tree(n);
        return 0;
    }
    

    圣诞树效果图:

    image.png

    Life is short, use python! 调用turtle库

    import turtle as t
    screen = t.Screen()
    screen.setup(800,700)
    circle = t.Turtle()
    circle.shape('circle')
    circle.color('red')
    circle.speed('fastest')
    circle.up()
    square = t.Turtle()
    square.shape('square')
    square.color('green')
    square.speed('fastest')
    square.up()
    circle.goto(0,280)
    circle.stamp()
    k = 0
    for i in range(1, 17):
        y = 30*i
        for j in range(i-k):
            x = 30*j
            square.goto(x,-y+280)
            square.stamp()
            square.goto(-x,-y+280)
            square.stamp()
        if i % 4 == 0:
            x = 30*(j+1)
            circle.color('red')
            circle.goto(-x,-y+280)
            circle.stamp()
            circle.goto(x,-y+280)
            circle.stamp()
            k += 2
        if i % 4 == 3:
            x = 30*(j+1)
            circle.color('yellow')
            circle.goto(-x,-y+280)
            circle.stamp()
            circle.goto(x,-y+280)
            circle.stamp()
    square.color('brown')
    for i in range(17,20):
        y = 30*i
        for j in range(3):
            x = 30*j
            square.goto(x,-y+280)
            square.stamp()
            square.goto(-x,-y+280)
            square.stamp()
    t.exitonclick()
    

    圣诞树效果图:

    image.png

    2019-12-23 15:00:34
    赞同 展开评论 打赏
  • 高阶版本

    from turtle import *
    import random
    import time
    n = 80.0
    speed("fastest")
    screensize(bg='seashell')
    left(90)
    forward(3*n)
    color("orange", "yellow")
    begin_fill()
    left(126)
    for i in range(5):
        forward(n/5)
        right(144)
        forward(n/5)
        left(72)
    end_fill()
    right(126)
    color("dark green")
    backward(n*4.8)
    def tree(d, s):
        if d <= 0: return
        forward(s)
        tree(d-1, s*.8)
        right(120)
        tree(d-3, s*.5)
        right(120)
        tree(d-3, s*.5)
        right(120)
        backward(s)
    tree(15, n)
    backward(n/2)
    for i in range(200):
        a = 200 - 400 * random.random()
        b = 10 - 20 * random.random()
        up()
        forward(b)
        left(90)
        forward(a)
        down()
        if random.randint(0, 1) == 0:
                color('tomato')
        else:
            color('wheat')
        circle(2)
        up()
        backward(a)
        right(90)
        backward(b)
    time.sleep(60)
    
    

    image.png image.png

    2019-12-23 14:45:29
    赞同 展开评论 打赏
  • 不定期更新钉群圈子活动等内容

    入门版本

    height = 5
    stars = 1
    for i in range(height):
        print((' ' * (height - i)) + ('*' * stars))
        stars += 2
    print((' ' * height) + '|')
    

    image.png

    2019-12-23 14:43:50
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
属兔的处子——Clojure太灵活,臣妾驾驭不住啊 立即下载
50行代码玩转强化学习讲义 立即下载