祝CSDN2021牛氣沖天祝我也撥云散霧

前言

2020年4月,我寫了一篇用turtle繪制《小清新風格的樹》,反響挺好。現在打算使用turtle修改一下繪制方式,因為線條的繪制太過考慮因素過多,如果使用方塊進行堆疊,繪制出來的形狀可以如馬賽克一樣,既符合IT,也較為建議,又方便一些低齡段的孩子學習turtle;畢竟turtle的文檔上說的很清楚,turtle是為了提升青少年學習python的樂趣而開發的,那我也為這個樂趣舔一份彩吧。
雖然這個工具由于時間關系還沒寫好,只實現了其中一部分,也就是核心的線條部分,代碼也沒優化。計劃是之后打算寫一個圖像庫,直接調用即可繪制不同種類的字母、數字、人以及各類物體。
有始有終,既然我正式連續性的寫博客是從小清新樹這篇文開始,那么即將到春節,也草草的做個總結吧。

計劃

我們先看幾張馬賽克風格的圖片:

我們的馬賽克風格一般是由一些顏色的小方塊組合而成,并且使用了階梯式來呈現出弧度的效果,但基本元素是小方塊。那么我們第一步就先繪制出一個基本小方塊為core吧。

一、繪制小方塊

我們創建一個函數為point點,以后繪制小方塊都使用這個函數即可。在turtle中繪制一個正方形的小方塊很簡單,for循環4次left或者right,并且進行fd畫線即可,新建一個文件為core,代碼如下:

from turtle import *class Core:def point(self):for i in range(0,4):fd(10)right(90)

接下來我們創建一個文件為drawdemo,在其中進行測試:

from core import Corepxtool=Core()
pxtool.point()
input()

成功繪制:

在此需要注意,要統一標注,以后繪制一個點都需要從這個方法進行出發。接下來開始給這個方法增加參數,這樣可以動態的繪制指定大小;增加了參數后還需要有一個填充顏色,使用turtle的填充方法begin_fill與end_fill,并且需要給予顏色值fillcolor;再添加一個筆桿顏色,設置默認與填充顏色一致。我們可以創建2個方法,分別設置填充顏色與筆桿顏色:

from turtle import *class Core:def point(self,plenght=10,fcolor="black",pcolor="1",psize=1):self.fillcolor_set(fcolor)self.pencolor_set(fcolor,pcolor)self.pensize_set(psize)begin_fill()for i in range(0,4):fd(plenght)right(90)end_fill()#填充顏色色值def fillcolor_set(self,fcolor="black"):fillcolor(fcolor)#筆桿顏色設置def pencolor_set(self,fcolor="black",pcolor="1"):if pcolor=="1":pcolor=fcolorpencolor(pcolor)else:pencolor(pcolor)#筆桿尺寸def pensize_set(self,psize=1):pensize(psize)

這個時候就可以傳值,隨意的設置顏色和大小了:

pxtool=Core()
pxtool.point(30,fcolor="red",pcolor="blue",psize=10)

二、繪制線

我們從已有的點上開始出發,直接繪制線段線段繪制的方法很簡單,也就是平移點到下一個繪制坐標進行點的繪制即可。首先我們查看繪制完一個點后的小烏龜位置:

小烏龜回到了初始點,這個時候我們默認往右開始繪制線段,那么這個時候就應該是當前繪制向前移動一個單位,我們在這里統一不使用fd,使用goto進行跳轉:

def loc_goto(self,plenght):penup()goto(pos()+(plenght,0))pendown()def line(self,lenght=1,plenght=10,fcolor="black",pcolor="1",psize=1):for i in range(0,lenght):self.point(plenght=plenght,fcolor=fcolor,pcolor=pcolor,psize=psize)if i!=(lenght-1):self.loc_goto(plenght)

以上寫了2個方法,一個是line繪制線,一個是跳轉到下一個單位的goto方法,但是在line方法中,我們只在有需要跳轉時跳轉,不需要跳轉時,最后一筆時則不跳轉,方便之后的擴展少改動,只做有限的事情,絕不畫蛇添足。
效果如下:

編寫好向右繪制線段好我們接下來需要向左繪制線段。向左繪制線段需要使用loc_goto方法減去當前的x坐標點,向左移動即可,并且在line方法中添加參數,判斷方向:

def line(self,lenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1):for i in range(0,lenght):self.point(plenght=plenght,fcolor=fcolor,pcolor=pcolor,psize=psize)if i!=(lenght-1):if direction=="right":self.loc_goto(plenght)elif direction=="left":self.loc_goto(-plenght)elif i==(lenght-1):if direction=="left":self.loc_goto(plenght)

以上代碼為了保證一個標準型,所有的繪制方法在最后一個矩形繪制時需要進行移動,所以在方向扥估left時向右移動了一個單位的距離。同理,接下來向上繪制以及向下繪制代碼如下,并且修改loc_goto方法,loc_goto方法只做移動,不復再值拼接,再設置一個方法用于控制line繪制的移動:

def loc_goto(self,movepos):penup()goto(pos()+movepos)pendown()
#line方法的繪圖跳轉控制
def line_func_draw_move(self,cout_i,direction,lenght,plenght):if cout_i!=(lenght-1):if direction=="right":self.loc_goto((plenght,0))elif direction=="left":self.loc_goto((-plenght,0))elif direction=="up":self.loc_goto((0,plenght))elif direction=="down":self.loc_goto((0,-plenght))elif cout_i==(lenght-1):if direction=="left":self.loc_goto((plenght,0))if direction=="up":self.loc_goto((0,-plenght))def line(self,lenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1):for i in range(0,lenght):self.point(plenght=plenght,fcolor=fcolor,pcolor=pcolor,psize=psize)self.line_control_func_draw_move(i,direction,lenght,plenght)

三、階梯繪制

階梯在馬賽克繪畫中是當作弧來使用,階梯有每個階梯的長,以及每個階梯的高;長我們可以使用橫線繪制,高我們使用橫線往上繪制即可完成。

def step(self,lenght=1,height=1,blenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1):for i in range(0,lenght):self.line(lenght=blenght,plenght=plenght,direction=direction,fcolor=fcolor,pcolor=pcolor,psize=psize)self.loc_goto((plenght,plenght))self.line(lenght=blenght,plenght=plenght,direction="up",fcolor=fcolor,pcolor=pcolor,psize=psize)if i!=(lenght-1):self.loc_goto((plenght,plenght*2))

以上代碼繪制方法一樣,首先繪制橫線,然后跳轉到下一個繪制點,由于要繪制成馬賽克鋸齒狀所以跳轉的位置的高度會提高一個單位self.loc_goto((plenght,plenght*2))。其中lenght是總長度,height是每個分段位的高度,blenght是每個分段的長度。意思就說lenght表示有多少個分段,blenght每個分段位有多少長度,height為每個分段的高度。代碼調用:

pxtool.step(2,2,2,10,direction="right",fcolor="red",pcolor="blue")

結果如下:

接著我們繪制起始繪制方向為左邊、左下、右下的階梯,這時只需要更改繪制時的跳轉坐標以及繪制方向以及寫一個控制跳轉的方法即可:

#step方法的繪圖跳轉控制
#@lenght=總長
#@blenght=bit一個位長度
#@plenght=點長度
#@direction1=橫線繪制方向
#@direction2=豎線繪制方向
#@fcolor=填充顏色
#@pcolor=筆顏色
#@psize=筆大小
#@gotopos=如何跳轉pos位置
#@cout_i=循環控制變量i
def step_control_func_draw_move(self,lenght,blenght,plenght,direction1,direction2,fcolor,pcolor,psize,gotopos1,gotopos2,cout_i):self.line(lenght=blenght,plenght=plenght,direction=direction1,fcolor=fcolor,pcolor=pcolor,psize=psize)self.loc_goto(gotopos1)self.line(lenght=blenght,plenght=plenght,direction=direction2,fcolor=fcolor,pcolor=pcolor,psize=psize)if cout_i!=(lenght-1):self.loc_goto(gotopos2)def step(self,lenght=1,height=1,blenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1):for i in range(0,lenght):if direction=="right":self.step_control_func_draw_move(lenght,blenght,plenght,direction,"up",fcolor,pcolor,psize,(plenght,plenght),(plenght,plenght*2),i)elif direction=="left":self.step_control_func_draw_move(lenght,blenght,plenght,"left","up",fcolor,pcolor,psize,(-plenght*2,plenght),(-plenght,plenght*2),i)elif direction=="rightdown":self.step_control_func_draw_move(lenght,blenght,plenght,"right","down",fcolor,pcolor,psize,(plenght,-plenght),(plenght,-plenght),i)elif direction=="leftdown":self.step_control_func_draw_move(lenght,blenght,plenght,"left","down",fcolor,pcolor,psize,(-plenght*2,-plenght),(-plenght,-plenght),i)

三、對稱繪制

在繪制馬賽克時,很多繪制內容都是左右對稱,這時我們可以對我們繪制的線段進行對稱控制。我們可以考慮從起始繪制點開始到左右某一點的距離對稱。我們暫且定位右邊與當前繪制的起始點對稱,若我們設為右邊10個單位與當前起始點對稱則是當前起始點位置pos+(10*一個單位的值,0)為對稱坐標,得到對稱坐標后計算對稱坐標與與起始點的差,將對稱坐標加上差則等于右側對稱內容的起始繪制點,從而進行反向繪制即可對稱。

這時我們可以從point方法入手,在point繪制點時就記錄每次繪制的坐標,方便之后選取目標點作為起始繪制點:

def goto_(self,pos_):penup()goto(pos_)pendown()
def point(self,plenght=10,fcolor="black",pcolor="1",psize=1):poslist=[]self.fillcolor_set(fcolor)self.pencolor_set(fcolor,pcolor)self.pensize_set(psize)begin_fill()for i in range(0,4):poslist.append(pos())fd(plenght)right(90)end_fill()return poslist
def line(self,lenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1,symmetrical="f",symmetrical_direction="right"):posdict={}symmetrical_point="f"if symmetrical!="f":if symmetrical_direction=="right":symmetrical_point=pos()+(int(symmetrical)*plenght,0)elif symmetrical_direction=="left":symmetrical_point=pos()+(-int(symmetrical)*plenght,0)elif symmetrical_direction=="up":symmetrical_point=pos()+(0,int(symmetrical)*plenght)elif symmetrical_direction=="down":symmetrical_point=pos()+(0,-int(symmetrical)*plenght)for i in range(0,lenght):posdict['point'+str(i)]=self.point(plenght=plenght,fcolor=fcolor,pcolor=pcolor,psize=psize)self.line_control_func_draw_move(i,direction,lenght,plenght)if symmetrical!="f":self.goto_(symmetrical_point)posdict['symmetrical_point']=self.line(lenght=lenght,plenght=plenght,direction=direction,fcolor=fcolor,pcolor=pcolor,psize=psize,symmetrical="f")self.goto_(posdict['point'+str(lenght-1)][3])return posdict   

這時我們所繪制的線段就會產生對稱:

pos_list=pxtool.line(4,10,direction="left",fcolor="red",pcolor="blue",symmetrical=5,symmetrical_direction="down")

symmetrical_direction為對稱方向,symmetrical為對稱單位。

返回的結果為每個點坐標:
接下來再把階梯對稱的給寫好:

def step(self,lenght=1,height=1,blenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1,symmetrical="f",symmetrical_direction="right"):posdict={}symmetrical_point="f"symmetrical_draw_direction=''if symmetrical!="f":if symmetrical_direction=="right":symmetrical_point=pos()+(int(symmetrical)*plenght,0)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"elif symmetrical_direction=="left":symmetrical_point=pos()+(-int(symmetrical)*plenght,0)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"elif symmetrical_direction=="rightdown":symmetrical_point=pos()+(0,int(symmetrical)*plenght)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"elif symmetrical_direction=="leftdown":symmetrical_point=pos()+(0,-int(symmetrical)*plenght)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"for i in range(0,lenght):if direction=="right":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,direction,"up",fcolor,pcolor,psize,(plenght,plenght),(plenght,plenght*2),i)elif direction=="left":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,"left","up",fcolor,pcolor,psize,(-plenght*2,plenght),(-plenght,plenght*2),i)elif direction=="rightdown":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,"right","down",fcolor,pcolor,psize,(plenght,-plenght),(plenght,-plenght),i)elif direction=="leftdown":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,"left","down",fcolor,pcolor,psize,(-plenght*2,-plenght),(-plenght,-plenght),i)print(posdict)#對稱if symmetrical!="f":self.goto_(symmetrical_point)posdict['symmetrical_step']=self.step(lenght=lenght,height=height,blenght=blenght,plenght=plenght,direction=symmetrical_draw_direction,fcolor=fcolor,pcolor=pcolor,psize=psize)self.goto_(posdict['step'+str(lenght-1)]['vline'+str(blenght-1)]['point'+str(height-1)][0])return posdict

使用方法:

pos_list=pxtool.step(2,2,2,10,direction="leftdown",fcolor="red",pcolor="blue",symmetrical=5,symmetrical_direction="left")

結果:

祝大家新年快樂,CSDN牛氣沖天

以下代碼由《小清新風格的樹》組成。

完整代碼如下:
core.py文件:

from turtle import *class Core:'''設置'''#填充顏色色值#@fcolor=點填充顏色def fillcolor_set(self,fcolor="black"):fillcolor(fcolor)#筆桿顏色設置#@fcolor=點填充顏色#@pcolor=線顏色def pencolor_set(self,fcolor="black",pcolor="1"):if pcolor=="1":pcolor=fcolorpencolor(pcolor)else:pencolor(pcolor)#筆桿尺寸#@psize=線尺寸def pensize_set(self,psize=1):pensize(psize)'''other func '''#跳轉def loc_goto(self,movepos):penup()goto(pos()+movepos)pendown()def goto_(self,pos_):penup()goto(pos_)pendown()#line方法的繪圖跳轉控制def line_control_func_draw_move(self,cout_i,direction,lenght,plenght):if cout_i!=(lenght-1):if direction=="right":self.loc_goto((plenght,0))elif direction=="left":self.loc_goto((-plenght,0))elif direction=="up":self.loc_goto((0,plenght))elif direction=="down":self.loc_goto((0,-plenght))elif cout_i==(lenght-1):if direction=="left":self.loc_goto((plenght,0))if direction=="up":self.loc_goto((0,-plenght))#step方法的繪圖跳轉控制#@lenght=總長#@blenght=bit一個位長度#@plenght=點長度#@direction1=橫線繪制方向#@direction2=豎線繪制方向#@fcolor=填充顏色#@pcolor=筆顏色#@psize=筆大小#@gotopos=如何跳轉pos位置#@cout_i=循環控制變量idef step_control_func_draw_move(self,lenght,blenght,plenght,direction1,direction2,fcolor,pcolor,psize,gotopos1,gotopos2,cout_i,height):print('-----------',blenght)posdict={}posdict['line'+str(cout_i)]=self.line(lenght=blenght,plenght=plenght,direction=direction1,fcolor=fcolor,pcolor=pcolor,psize=psize)self.loc_goto(gotopos1)posdict['vline'+str(cout_i)]=self.line(lenght=height,plenght=plenght,direction=direction2,fcolor=fcolor,pcolor=pcolor,psize=psize)if cout_i!=(lenght-1):self.loc_goto(gotopos2)return posdict'''繪制'''#繪制點#@plenght=點長度#@fcolor=點填充顏色#@pcolor=線顏色#@psize=線尺寸def point(self,plenght=10,fcolor="black",pcolor="1",psize=1):poslist=[]self.fillcolor_set(fcolor)self.pencolor_set(fcolor,pcolor)self.pensize_set(psize)begin_fill()for i in range(0,4):poslist.append(pos())fd(plenght)right(90)end_fill()return poslist#繪制線段#@lenght=線長度#@plenght=點長度#@fcolor=點填充顏色#@pcolor=線顏色#@psize=線尺寸def line(self,lenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1,symmetrical="f",symmetrical_direction="right"):posdict={}symmetrical_point="f"if symmetrical!="f":if symmetrical_direction=="right":symmetrical_point=pos()+(int(symmetrical)*plenght,0)elif symmetrical_direction=="left":symmetrical_point=pos()+(-int(symmetrical)*plenght,0)elif symmetrical_direction=="up":symmetrical_point=pos()+(0,int(symmetrical)*plenght)elif symmetrical_direction=="down":symmetrical_point=pos()+(0,-int(symmetrical)*plenght)for i in range(0,lenght):posdict['point'+str(i)]=self.point(plenght=plenght,fcolor=fcolor,pcolor=pcolor,psize=psize)self.line_control_func_draw_move(i,direction,lenght,plenght)if symmetrical!="f":self.goto_(symmetrical_point)posdict['symmetrical_point']=self.line(lenght=lenght,plenght=plenght,direction=direction,fcolor=fcolor,pcolor=pcolor,psize=psize,symmetrical="f")self.goto_(posdict['point'+str(lenght-1)][3])return posdict    #繪制線段#@lenght=線長度#@height=線高度#@blenght=bit一個位長度#@plenght=點長度#@fcolor=點填充顏色#@pcolor=線顏色#@psize=線尺寸def step(self,lenght=1,height=1,blenght=1,plenght=10,direction="right",fcolor="black",pcolor="1",psize=1,symmetrical="f",symmetrical_direction="right"):posdict={}symmetrical_point="f"symmetrical_draw_direction=''if symmetrical!="f":if symmetrical_direction=="right":symmetrical_point=pos()+(int(symmetrical)*plenght,0)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"elif symmetrical_direction=="left":symmetrical_point=pos()+(-int(symmetrical)*plenght,0)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"elif symmetrical_direction=="rightdown":symmetrical_point=pos()+(0,int(symmetrical)*plenght)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"elif symmetrical_direction=="leftdown":symmetrical_point=pos()+(0,-int(symmetrical)*plenght)if direction=="right":symmetrical_draw_direction="left"elif direction=="left":symmetrical_draw_direction="right"elif direction=="rightdown":symmetrical_draw_direction="leftdown"elif direction=="leftdown":symmetrical_draw_direction="rightdown"for i in range(0,lenght):if direction=="right":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,direction,"up",fcolor,pcolor,psize,(plenght,plenght),(plenght,plenght*2),i,height)elif direction=="left":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,"left","up",fcolor,pcolor,psize,(-plenght*2,plenght),(-plenght,plenght*2),i,height)elif direction=="rightdown":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,"right","down",fcolor,pcolor,psize,(plenght,-plenght),(plenght,-plenght),i,height)elif direction=="leftdown":posdict["step"+str(i)]=self.step_control_func_draw_move(lenght,blenght,plenght,"left","down",fcolor,pcolor,psize,(-plenght*2,-plenght),(-plenght,-plenght),i,height)#對稱if symmetrical!="f":self.goto_(symmetrical_point)posdict['symmetrical_step']=self.step(lenght=lenght,height=height,blenght=blenght,plenght=plenght,direction=symmetrical_draw_direction,fcolor=fcolor,pcolor=pcolor,psize=psize)print(posdict)self.goto_(posdict['step'+str(lenght-1)]['vline'+str(lenght-1)]['point'+str(height-1)][0])return posdict
from core import Core
from turtle import *
import random
tracer(False)
setworldcoordinates(-1000,-750,1000,750)  
def drawTree(length):if length>1:if length<30 and length>14:#縮小一下樹干pensize(4)elif length<15 and length>5:#長度這個范圍內那么就是綠葉color('#04B486')#pensize(3)elif length<5 and length>1:#紅花color('#FE2E9A')pensize(2)else:color('#5E5E5E')#其他范圍就是正常的樹干pensize(5)#隨機角度與長度randangle=2*random.random()randlen=2*random.random()#每次使用函數先繪制線段,再調整角度,這里是向右的角度轉動fd(length)right(20*randangle)drawTree(length - 10*randlen)#這里是向左的角度轉動left(40 * randangle)drawTree(length - 10*randlen)#為什么需要再向右轉20度?那是因為我一共向左轉了40度,使用backward后退,必須是相同的角度,不然退回去角度就不同了位置就不會對right(20 * randangle)up()backward(length)down()
def fallingFlowers(m):x,y=-1000,-750for i in range(30):up()goto(x,y)x+=100down()yval=50for i in range(m):a = 100*random.random()b = 2*random.random()print(a)if a>59:color('#FE2E9A')else:color('#04B486')circle(5)up()goto(x,y+(yval*b))fd(a)yval+=50down()      def treemain():               fallingFlowers(10)#繪制落葉bgcolor("#F5F6CE")color('#5E5E5E')pensize(5)up()goto(0,-700)#跳到繪制起始點down()left(80)fd(140)drawTree(120)pxtool=Core()
def degoto(posv):penup()goto(posv)pendown()weight_v=20
#牛頭
def cattle():#pxtool.line(4,10,direction="right",fcolor="red",pcolor="blue")pos_list=pxtool.step(1,4,9,30,direction="left",fcolor="red",pcolor="blue",symmetrical=1,symmetrical_direction="right")penup()goto(pos_list['step0']['line0']['point5'][2])pendown()for i in range(10):pxtool.line(6,30,direction="down",fcolor="red",pcolor="blue")degoto(pos()+(30,30*5))
def cwrite():#Cpxtool.line(4,weight_v,direction="left",fcolor="red",pcolor="blue")degoto(pos()+(-weight_v,0))pxtool.step(2,1,2,weight_v,direction="leftdown",fcolor="red",pcolor="blue")pxtool.line(8,weight_v,direction="down",fcolor="red",pcolor="blue")pxtool.step(1,1,2,weight_v,direction="rightdown",fcolor="red",pcolor="blue")pxtool.line(7,weight_v,direction="right",fcolor="red",pcolor="blue")
def swrite():#spxtool.step(1,5,5,weight_v,direction="leftdown",fcolor="red",pcolor="blue")pxtool.step(1,5,5,weight_v,direction="rightdown",fcolor="red",pcolor="blue")pxtool.line(6,weight_v,direction="left",fcolor="red",pcolor="blue")
def dwrite():#dpxtool.line(11,weight_v,direction="down",fcolor="red",pcolor="blue")pxtool.line(6,weight_v,direction="right",fcolor="red",pcolor="blue")pxtool.step(1,2,2,weight_v,direction="right",fcolor="red",pcolor="blue")pxtool.line(10,weight_v,direction="up",fcolor="red",pcolor="blue")degoto(pos()+(0,weight_v))pxtool.line(8,weight_v,direction="left",fcolor="red",pcolor="blue")
def nwrite():#npxtool.line(10,weight_v,direction="up",fcolor="red",pcolor="blue")degoto(pos()+(weight_v,0))pxtool.step(4,1,1,weight_v,direction="rightdown",fcolor="red",pcolor="blue")pxtool.line(10,weight_v,direction="up",fcolor="red",pcolor="blue")    
treemain()degoto((-weight_v*11,0))
cwrite()
degoto((-weight_v*11,0))
degoto(pos()+(weight_v*8,0))
swrite()
degoto((-weight_v*11,0))
degoto(pos()+(weight_v*11,-weight_v))
dwrite()
degoto(pos()+(weight_v*11,-weight_v*9))
nwrite()degoto((0,-weight_v*21))
cattle()
#pos_list=pxtool.line(4,10,direction="left",fcolor="red",pcolor="blue",symmetrical=5,symmetrical_direction="down")#goto(pos_list['point3'][0])
#goto((0,0))
#fd(30)
input()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287539.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287539.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android之Only fullscreen opaque activities can request orientation

1 問題 使用透明的activity主題&#xff0c;并且固定了方向&#xff0c;在Android8.0手機上提示錯誤如下 Only fullscreen opaque activities can request orientation 2 解決辦法 簡單粗暴就是去在AndroidManifest.xml文件去掉當前activity配置的里面的橫豎屏方向設置 and…

wamp5.5.12安裝re dis擴展

轉載地址&#xff1a;http://hanqunfeng.iteye.com/blog/1984387 phpredis是個人覺得最好的一個php-redis客戶端&#xff0c;因為其提供的function與redis的命令基本一致&#xff0c;降低的了學習成本&#xff0c;同時功能也很全面。 一。linux安裝方法 phpredis下載地址&#…

java 數組轉bean_json數組轉java對象怎么轉

展開全部首先需要 commons-beanutils jar包&#xff0c;然后轉bean的方法為&#xff1a;62616964757a686964616fe59b9ee7ad9431333363386133/**** Title: transMap2Bean* param&#xff1a;param map* param&#xff1a;param obj* return&#xff1a;void* Description&#x…

FPGA圖案--數字表示(代碼+波形)

在數字邏輯系統&#xff0c;僅僅存在高低。所以用它只代表一個整數數字。并且有3代表性的種類。這是&#xff1a;原碼表示(符號加絕對值值)、反碼表示(加-minus標志)而補碼(符號加補)。這三個在FPGA中都有著廣泛的應用。以下分別討論。1、原碼表示法 原碼表示法是機器數的一種簡…

WPF效果第一百八十四篇之網頁視頻保存

一年一度的小學入學采集開始了;我一朋友很是頭大,他說頭都大了好幾圈了;既要準備各種入學材料又要聽線上專人視頻直播講解;然而在直播結束后,他發現自己仍是一臉疑惑;雖說直播有回訪吧,但是他那蝸牛網速簡直了;這時他場外找我,讓我看能不能給他自己下載一份;1、畢竟第一次,直接…

【遙感數字圖像處理】基礎知識:第一章 緒論

第一章 緒 論 ◆ 課程學習要求 主要教學內容&#xff1a;遙感數字圖像處理的概念和基礎知識&#xff0c;遙感數字圖像的幾何處理&#xff0c;遙感圖像的輻射校正&#xff0c;遙感數字圖像的增強處理&#xff0c;遙感圖像的計算機分類&#xff0c;遙感數字圖像的分析方法&…

Android之Canvas的drawRoundRect()

1 問題 Canvas的drawRoundRect()函數怎么用 public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) 功能:該方法用于在畫布上繪制圓角矩形,通過指定RectF對象以及圓角半徑來實現。float rx:生成圓角的橢圓的X軸半徑 float ry:生成圓角的橢圓的Y軸半徑…

201671010128 2017-10-08《Java程序設計》之Lambda與內部類

一、基本概念 Java Lambda 表達式是 Java 8 引入的一個新的功能&#xff0c;主要用途是提供一個函數化的語法來簡化編碼。Lambda表達式本質上是一個匿名方法。Java Lambda 表達式以函數式接口為應用基。內部類(inner class)是定義在另一個類內部的類。二、幾點注意 使用內部類的…

自定義Git

在安裝Git一節中&#xff0c;我們已經配置了user.name和user.email&#xff0c;實際上&#xff0c;Git還有很多可配置項。 比如&#xff0c;讓Git顯示顏色&#xff0c;會讓命令輸出看起來更醒目&#xff1a; $ git config --global color.ui true這樣&#xff0c;Git會適當地顯…

java抽象方法實例_Java的抽象方法和抽象類實例詳解

本文實例講述了Java的抽象方法和抽象類。分享給大家供大家參考&#xff0c;具體如下&#xff1a;一 點睛抽象方法是只有方法簽名&#xff0c;沒有方法實現的方法。抽象方法和抽象類必須使用abstract修飾符來定義&#xff0c;有抽象方法的類只能被定義為抽象類&#xff0c;抽象類…

[python opencv 計算機視覺零基礎到實戰] 九、模糊

一、學習目標 了解什么是卷積了解模糊的使用方法與應用 如有錯誤歡迎指出~ 二、了解模糊的應用 上一篇:[python opencv 計算機視覺零基礎到實戰] 八、ROI泛洪填充 2.1 了解卷積是什么 在本節中&#xff0c;卷積我們不過多的進行深入講解&#xff0c;我本人對卷積也只是稍…

windows update更新失敗 安全模式進不去

今天一同事的電腦遇到問題了&#xff0c;提示“windows update更新失敗”。最后一次正確配置不行&#xff0c; 安全模式進不去。解決方法&#xff1a;強制關機開機后F8啟動修復模式&#xff08;系統盤或者pe進入也可以&#xff09;&#xff0c;系統還原&#xff0c;找最后的還原…

windbg的時間旅行實現對 C# 程序的終極調試!

一&#xff1a;什么是時間旅行 簡而言之就是把程序的執行流拍成vlog&#xff0c;這樣就可以對 vlog 快進或者倒退&#xff0c;還可以分享給別人做進一步的分析&#xff0c;是不是想都不敢想。很開心的是 windbg preview 版本中已經實現了&#xff0c;叫做 時間旅行調試 TTD&…

【神經網絡】神經網絡結構在命名實體識別(NER)中的應用

命名實體識別&#xff08;Named Entity Recognition&#xff0c;NER&#xff09;就是從一段自然語言文本中找出相關實體&#xff0c;并標注出其位置以及類型&#xff0c;如下圖。它是NLP領域中一些復雜任務&#xff08;例如關系抽取&#xff0c;信息檢索等&#xff09;的基礎。…

centos安裝禪道的步驟

1、下載 XAMPP 套件&#xff1a; https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/stats/timeline 下載的文件是 xampp-linux-x64-7.0.6-0-installer.run 2、 執行 ./xampp-linux-x64-7.0.6-0-installer.run 3、 啟動 /opt/lampp/lampp start 4、 下載禪道 ZenTa…

[python opencv 計算機視覺零基礎到實戰] 十、圖片效果毛玻璃

一、學習目標 了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片 上一篇:[python opencv 計算機視覺零基礎到實戰] 九、模糊 如有錯誤歡迎指出~ 二、了解模糊與美顏 2.1 使用高斯模糊降噪 由于很多小伙伴反應拋開原理或理論講解使用用法對于初學…

Android之自定義View實現帶4圓角或者2圓角的效果

1 問題 實現任意view經過自定義帶4圓角或者2圓角的效果 2 原理 1) 實現view 4圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 2) 實現view上2圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 安卓源碼里面有這樣的類 package and…

java trim()函數_Java - split()函數和trim()函數的使用方法

split()函數和trim()函數的使用方法本文地址: http://blog.csdn.net/caroline_wendy/article/details/24465141詳細參考Java API: http://docs.oracle.com/javase/6/docs/api/java/lang/String.htmlsplit()函數是依據參數如",", "-", " "等, 切割…