在mswLogo上学习logo编程1

本文通过六个实例介绍MSWLogo编程语言的基本语法和应用,包括绘制多边形、打印数字序列、实现Haino程序、绘制九九乘法表、画超立方体以及创建几何形状函数库。每个例子都有详细的代码解释和运行效果。
部署运行你感兴趣的模型镜像
语法学习
====================
例子1:

to polygon :len :sides
  repeat :sides [ fd :len rt 360.0 / :sides ]
end

to myPic :len :rep
  lt 90 pu fd 400 rt 90 pd         ; fd 400 定位用,要根据自己的系统设定具体值
  repeat :rep [ if 2 < repcount [ polygon :len repcount ] ]
end

myPic 100 20

效果图见 J:/skyDiary/Data/myPic.bmp
====================
例子2:

to myPrint :len
  make "count 0
  do.until [ print :count make "count :count + 1 ] [ :count > :len ]
end

myPrint 5

输出结果为:
0
1
2
3
4
5
====================
例子3:

用logo写的haino程序

make "steps 1

to haino :size :from :mid :to
  if :size = 0 [ stop ]
  haino :size - 1 :from :to :mid
  print ( se :steps :from "-> :to )
  make "steps :steps + 1
  haino :size - 1 :mid :from :to
end

haino 3 "a "b "c

输出结果为:
1 a -> c
2 a -> b
3 c -> b
4 a -> c
5 b -> a
6 b -> c
7 a -> c
====================
例子4:

用logo做的九九乘法表

make "myLeft -550
make "myBottom 0
make "myWidth 100
make "myHeight 30

to myLocate :x :y
  pu
  setxy :myLeft + :x * :myWidth :myBottom + :y * :myHeight
  pd
  setheading 90
  repeat 2 [ fd :myWidth rt 90 fd :myHeight rt 90 ]

  pu
  setxy :myLeft + :x * :myWidth + 5 :myBottom + :y * :myHeight - 5
  pd
  setheading 90
end

to table99
  for [ i 1 9 1 ] [ for [ j 1 9 1 ] [ myLocate :i 10 - :j label ( se :i "* :j "= :i * :j ) ] ]
end

table99
pu setxy :myLeft + :myWidth * 4.5 :myBottom + :myHeight * 10 pd
label "九九乘法表
ht

结果见 j:/skyDiary/data/table[9by9].bmp
====================
例子5:

用logo画超立方体

to hyperCube :len
  pu setxy 0 - :len - :len / 5 :len / 2 pd
  setpencolor [ 0 0 255 ]
  setpensize [ 2 2 ]
  setheading 90
  repeat 8 [ box :len rt 90 fd :len lt 135 ]
end

to box :len
repeat 4 [ fd :len rt 90 ]
end

hyperCube 100
ht
setactivearea [ -200 -200 200 200 ]
( gifsave "hyperCube.gif  )

效果图见 j:/skyDiary/data/hyperCube.gif
====================
例子6:

用logo建立基本几何形的函数库


;画正三角形
;参数1  中间点的x坐标
;参数2  中间点的y坐标
;参数3  正三角形的边长
to triangel :centerX :centerY :len
  local "oldPos
  local "oldHeading

  make "oldPos pos
  make "oldHeading heading

  pu setxy :centerX :centerY fd :len / sqrt 3 pd
  rt 150
  repeat 3 [ fd :len rt 120 ]

  pu setpos :oldPos pd
  setheading :oldHeading
end

;画正方形
;参数1 中间点的x坐标
;参数2 中间点的y坐标
;参数3 正方形的边长
to rect :centerX :centerY :len
  polygon :centerX :centerY :len 4
end

;画正五边形
;参数1  中间点的x坐标
;参数2  中间点的y坐标
;参数3  正方五边形的边长
to pentagon :centerX :centerY :len
  local "oldPos
  local "oldHeading

  make "oldPos pos
  make "oldHeading heading

  pu setxy :centerX :centerY fd :len / 2 / cos 54 pd
  rt 126
  repeat 5 [ fd :len rt 72 ]

  pu setpos :oldPos pd
  setheading :oldHeading
end

;画正六边形
;参数1 中间点的x坐标
;参数2 中间点的y坐标
;参数3 正方六边形的边长
to hexagon :centerX :centerY :len
  polygon :centerX :centerY :len 6
end

;画正多边形
;参数1  中间点的x坐标
;参数2  中间点的y坐标
;参数3  正方多边形的边长
;参数4  几何形的边数,如果3表示要画正三角形,4表示要画正方形,5表示要画正五边形...
to polygon :centerX :centerY :len :sides
  local "oldPos
  local "oldHeading

  make "oldPos pos
  make "oldHeading heading

  pu
  setxy :centerX :centerY
  if ( modulo :sides 2 ) = 1 [ make "p ( 180 - 360.0 / :sides ) / 2 fd :len / 2 / cos :p rt 180 - :p ]
  if ( modulo :sides 2 ) = 0 [ make "p 360.0 / :sides / 2 fd :len / 2 / tan :p rt 90 bk :len / 2 ]
  pd

  repeat :sides [ fd :len rt 360.0 / :sides ]

  pu setpos :oldPos pd
  setheading :oldHeading
end

;画五角星
;参数1  五角星的中间点的x坐标
;参数2  五角星的中间点的x坐标
;参数3  五角星的边长 
to star :centerX :centerY :len
  local "oldPos
  local "oldHeading
  local "a
  local "b

  make "oldPos pos
  make "oldHeading heading

  make "a :len * cos 72
  make "b :a / tan 36

  pu
  setxy :centerX :centerY
  fd :b lt 90 fd :a 
  rt 108 
  pd

  repeat 5 [ fd :len rt 144 fd :len lt 72 ]

  pu setpos :oldpos pd
  setheading :oldheading
end

; cube中参数x,y,z所指代的方向
;   +--------+
; z/        /|
; +--------+ |
; |y       | +
; |   x    |/
; +--------+ 

to cube :x :y :z
  repeat 2 [ fd :y rt 90 fd :x rt 90 ]
  fd :y
  rt 45
  fd :z / 2
  rt 45
  fd :x
  rt 135
  fd :z / 2
  lt 45
  fd :y
  lt 135
  fd :z / 2
  lt 45
  fd :y
end
====================

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值