zoukankan      html  css  js  c++  java
  • 海龟图形,终于被我征服!(二)

    控制面板比较容易,使用while和switch语句就可以解决了,It's too easy.
    但是如何控制海龟就成了难点和重点,只要这个一旦解决,所有的问题就将迎刃而解。
    首先需要一个函数用于输出当笔在海龟下时的轨迹:

    在数组floor[50][50]中,首先将二维数组初始化为0。如果海龟走过,就将走过的数组元素修改为1,当然这不是此函数的功能。此函数只是输出值为1的元素。

    Code

    最关键的问题是,如何判断海龟的方向?
    海龟在方格中爬行,有自己的方向,我们将其称为“相对方向”。也就是说,海龟先向右走,再向右走,再向右走,再向右走,就回到了原来的位置,这个“向右”是相对海龟自己而言的。然而,我们以方格为参照物,那么海龟的方向就是右>下>左>上,我们称此为“绝对方向”。如果能够确定绝对方向,那么问题就变得很容易了。我很顺利的写下来四个函数(绝对方向):

    Code

    其中参数row是二维数组的第一维,column是第二维。

    用数组体现方格方格如下:

    <0, 0>  <0, 1>  <0, 2>  <0, 3>  <0, 4>  ...  <0, 49>

    <1, 0>  <1, 1>  <1, 2>  <1, 3>  <1, 4>  ...  <1, 49>
    <2, 0>  <2, 1>  <2, 2>  <2, 3>  <2, 4>  ...  <2, 49>
    ...

    <49,0> <49, 1> <49, 2> <49, 3> <49, 4>  ...  <49, 49>

    参数step是向前走的步长。
    参数pen是代表笔在海龟上或下。pen=1是代表笔在海龟上,这样pen - 1的值为0,这样就不会产生轨迹;pen=2是代表笔在海龟下,这样pen - 1的值为1,这样数组元素为1,就可以通过print函数输入轨迹了。

    返回值是非常关键的,它反映了海龟位置的变化。用于定位海龟位置。


    可是题中只有相对位置的左右,没有上下。如何将海龟的相对方向转换为绝对方向呢。知道电灯泡是如何发明出来的么?是一万次实验么?记不得了,反正爱迪生经过了许多试验之后才发明了电灯泡。我为了这个问题也做了许多试验,在本上画了无数的图,终于得出一个结论:
    当海龟
    向右(相对方向)时:+1
    向左(相对方向)时:-1
    默认海龟在<0,0>位置上方向向上,经过多次相对方向的组合得出的数字除以4。如果
    余数为0,绝对位置向上;

    余数为1,绝对位置向右;

    余数为2,绝对位置向下;

    余数为3,绝对位置向左。

    这样就可以通过if语句实现相对位置向绝对位置的转换。主文件的代码如下:

    Code


  • 相关阅读:
    基于ArcGIS for Server的服务部署分析 分类: ArcGIS for server 云计算 2015-07-26 21:28 11人阅读 评论(0) 收藏
    ArcGIS for Server的安装及站点中的集群配置 分类: ArcGIS for server 2015-07-18 14:14 16人阅读 评论(0) 收藏
    Windows中的DNS服务——正向解析&反向解析配置 分类: AD域 Windows服务 2015-07-16 20:21 19人阅读 评论(0) 收藏
    如鹏网.Net高级技术8.反射
    如鹏网.Net高级技术6.正则表达式
    如鹏网.Net高级技术7.委托、事件
    如鹏网.Net高级技术5.泛型集合及键值对
    如鹏网.Net高级技术3.值类型和引用类型
    如鹏网.Net高级技术4.String特点及常用方法
    如鹏网.Net高级技术1.面向对象
  • 原文地址:https://www.cnblogs.com/iPeterRex/p/1249920.html
Copyright © 2011-2022 走看看