乌龟图问题

xiaoxiao2021-02-27  251

题目:乌龟背着毛笔在20*20单位的地上爬。笔尖朝上不显示痕迹;朝下显示痕迹。指令如下: 1、笔尖朝上 2、笔尖朝下 3、向右转 4、向左转 (5,x)、向前移动x个格。触壁则停。 6、打印痕迹 9、数据结束标志

// No.test-7.23.cpp : 海龟图 // #include "stdafx.h" #include <iostream> using namespace std; enum totorseDirection{TOP,BOTTOM,LEFT,RIGHT};//定义乌龟的方向; enum penDirection{PenTOP,PenBOTTOM};//定义笔的方向; //定义数组元素结构; struct elem { int totorseDirection; int penDirection; bool isShow;//是否留下痕迹; }; void howToDo(int []); int _tmain(int argc, _TCHAR* argv[]) { int x=0;//当前乌龟的行数; int y=0;//当前乌龟的列数; int tdirec=RIGHT;//当前乌龟的方向; int pdire=PenTOP;//当前笔的方向; bool isShow=false;//是否显示痕迹; elem path[20][20];//声明elem类型数组20*20并进行必要的初始化; for (int i=0;i<20;i++) { for(int j=0;j<20;j++) { path[i][j].isShow=isShow; } } int instructions [11][2]={{2},{5,12},{3},{5,12},{3},{5,12},{3},{5,12},{1},{6},{9}};//指令集合; for (int i=0;i<11;i++) { int num=instructions[i][0]; switch (num) { case 1: isShow=false;//笔尖朝上; path[x][y].totorseDirection=tdirec; path[x][y].penDirection=pdire; path[x][y].isShow=isShow; break; case 2: pdire=PenBOTTOM;//笔尖朝下; isShow=true;//显示痕迹; path[x][y].totorseDirection=tdirec; path[x][y].penDirection=pdire; path[x][y].isShow=isShow; break; case 3: //向右转; if (tdirec==RIGHT) { tdirec=BOTTOM; } else if(tdirec==BOTTOM) { tdirec=LEFT; }else if (tdirec==LEFT) { tdirec=TOP; }else { tdirec=RIGHT; } break; case 4: //向左转; if (tdirec==RIGHT) { tdirec=TOP; } else if(tdirec==BOTTOM) { tdirec=RIGHT; }else if (tdirec==LEFT) { tdirec=BOTTOM; }else { tdirec=LEFT; } path[x][y].totorseDirection=tdirec; path[x][y].penDirection=pdire; path[x][y].isShow=isShow; break; case 5: if (tdirec==RIGHT) { int temp=y; y+=12; for (int i=temp;i<y;i++) { path[x][i].isShow=true; } if (y>=20) { y=20; } } else if(tdirec==BOTTOM) { int temp=x; x+=12; for (int i=temp;i<x;i++) { path[i][y].isShow=true; } if (x>=20) { x=20; } }else if (tdirec==LEFT) { int temp=y; y-=12; for (int i=temp;i>y;i--) { path[x][i].isShow=true; } if (x<=0) { x=0; } }else { int temp=x; x-=12; for (int i=temp;i>x;i--) { path[i][y].isShow=true; } if (y<=0) { y=0; } } path[x][y].totorseDirection=tdirec; path[x][y].penDirection=pdire; path[x][y].isShow=isShow; break; case 6: for (int i=0;i<20;i++) { for (int j=0;j<20;j++) { if (path[i][j].isShow) { cout<<"*"; }else { cout<<" "; } } cout<<endl; } break; case 9: break; } //cout<<instructions[i][0]<<endl; } system("pause"); return 0; }

效果如下:

转载请注明原文地址: https://www.6miu.com/read-11223.html

最新回复(0)