void sierpTriangles(int x1,int y1,int x2,int y2,int x3,int y3){ if(x1+3>=x2) return; //check for base case //if the above case is not met, draw another triangle int xleft=(x1+x3)/2,xright=(x2+x3)/2,xtop=(x1+x2)/2; //drawing step int ymiddle=(y1+y3)/2,ytop=y1; gfx_triangle(x1,y1,xtop,ytop,xleft,ymiddle); gfx_triangle(xtop,ytop,x2,y2,xright,ymiddle); gfx_triangle(xleft,ymiddle,xright,ymiddle,x3,y3); //3 total recursive steps sierpTriangles(x1,y1,xtop,ytop,xleft,ymiddle);//top left triangle sierpTriangles(xtop,ytop,x2,y2,xright,ymiddle);//top right triangle sierpTriangles(xleft,ymiddle,xright,ymiddle,x3,y3);//bottom middle triangle }
int drawturtle(int x, int row, int wseg, int hseg, int boardw, int boardh, int col, int board[][col]) { int xb,yc=boardh*row+4*hseg,hr=10,tr=5,i,it; //define parameters xb=x/boardw; if(xb<col && xb>=0) board[row][xb]=1; //update position of turtle on board if(xb+1<col && xb+1>=0) board[row][xb+1]=0; //reset previous position of turtle on board gfx_color(50,25,0); //dark brown color for(i=0; i<wseg; i++) //draws shell gfx_ellipse(x,yc,i,i); gfx_color(20,150,0); //green color for(i=0; i<hr; i++) //draws head gfx_ellipse(x-wseg,yc,i,i); for(i=tr; i>0; i--) //draws tail gfx_triangle(x+wseg,yc+i,x+wseg,yc-i,x+wseg+i,yc); if(x<0) //if turtle goes off board x=width; //reset position of turtle else x--; //decrement x to move left return x; //return new position of turtle } //end drawturtle