KPL青少年电脑编程语言--[大家都来做KPL]怎么用循环来画一条船呢?

[大家都来做KPL][大家都来做KPL]怎么用循环来画一条船呢?
kpl 发布于 2007-5-15 11:07:00


在51节的时候,我们开通了kpl的专用群,还是给大家通报一声:

    KPL QQ 群:39562753   验证申请请输入:KPL

我们希望通过这个窗口,能给大家一些公开的辅导和支持。

今天,就收到一位学习者寄过来的代码,他的问题如下:

你好,我用普通的方法做出这个船的图案, 我想用循环来做这个船的图案,你看要怎么做?

 

他给出的源码如下:

Program DrawTheBoat

 Define x As Int
 Define y As Int
 
 Method triangle1()
 Pen(True)
 MoveTo(x,y)
 Color(Green)
 PenWidth(5)
 
 y = y + 100
 MoveTo(x,y)
 x = x + 100
 MoveTo(x,y)
 y = y - 100
 x = x - 100
 MoveTo(x,y)
 End Method
 
 Method triangle2()
 Pen(True)
 Color(Green)
 PenWidth(5)
 x = x + 100
 MoveTo(x,y)
 y = y + 100
 MoveTo(x,y)
 x = x - 100
 y = y - 100
 MoveTo(x,y)
 End Method
 
 Method triangle3()
 Pen(True)
 Color(Green)
 PenWidth(5)
 x = x + 100
 MoveTo(x,y)
 x = x - 100
 y = y + 100
 MoveTo(x,y)
 y = y - 100
 MoveTo(x,y)
 End Method
 
 Method triangle4()
 Pen(False)
 
 x = x + 100
 MoveTo(x,y)
 
 Pen(True)
 Color(Green)
 PenWidth(5)
 y = y + 100
 MoveTo(x,y)
 x = x - 100
 MoveTo(x,y)
 y = y - 100
 x = x + 100
 MoveTo(x,y)
 End Method
 
 
 
 Method Main()
  x = 0
  y = 0
  
  Pen(False)
  x = x + 100
  MoveTo(x,y)
  Pen(True)
  triangle4()
  
  Pen(False)
  x = x + -200
  y = y + 100
  MoveTo(x,y)
  Pen(True)
  triangle2()

  x = x + 100
  MoveTo(x,y)
  triangle3()
  triangle4()
  triangle1()
  triangle2()
  x = x + 100
  MoveTo(x,y)
  triangle3()
  
 
   

 End Method

End Program

相当不错,对于程序来说,首先是想像出来,并实现它,然后再优化,经验是慢慢积累起来的!

根据他的要求,我重写了一下:

Program DrawTheBoat
 // 定义一个三角形的数据结构,因为船的图形都是由三角形构成
 Structure triangle
  startx As Int //三角形的起始点x坐标
  starty As Int //起始点y坐标
  tx1 As Int  //第一点的x偏移量,即画线长度
  ty1 As Int  //第一点的y偏移量
  tx2 As Int  //第二点的x偏移量
  ty2 As Int  //第二点的y偏移量
 End Structure
 
 //定义数组来存放关于三角性数据
 Var boat As triangle[7]
 
 //根据起始点,画出任意三角形图形
 Method drawtriangle(startx As Int,starty As Int,tx1 As Int,ty1 As Int,tx2 As Int,ty2 As Int)
  
  Pen(False)
  MoveTo(startx,starty)
  Pen(True)
  
  Color(green)
  PenWidth(5)
  
  MoveBy(tx1,ty1) //moveby,会根据当前画笔位置开始画图,无须重新定位
  MoveBy(tx2,ty2)
  MoveTo(startx,starty)
 
 End Method
 
 //给构成船图形的7个三角形赋值
 Method inittriangle()
  
  boat[1].startx=0
  boat[1].starty=100
  boat[1].tx1=100
  boat[1].ty1=100
  boat[1].tx2=0
  boat[1].ty2=-100
  
  boat[2].startx=100
  boat[2].starty=100
  boat[2].tx1=100
  boat[2].ty1=0
  boat[2].tx2=0
  boat[2].ty2=-100
  
  boat[3].startx=100
  boat[3].starty=100
  boat[3].tx1=0
  boat[3].ty1=100
  boat[3].tx2=100
  boat[3].ty2=-100
  
  boat[4].startx=200
  boat[4].starty=100
  boat[4].tx1=-100
  boat[4].ty1=100
  boat[4].tx2=100
  boat[4].ty2=0  
  
  boat[5].startx=200
  boat[5].starty=100
  boat[5].tx1=0
  boat[5].ty1=100
  boat[5].tx2=100
  boat[5].ty2=0  
  
  boat[6].startx=200
  boat[6].starty=100
  boat[6].tx1=100
  boat[6].ty1=0
  boat[6].tx2=0
  boat[6].ty2=100  
  
  boat[7].startx=300
  boat[7].starty=100
  boat[7].tx1=0            
  boat[7].ty1=100
  boat[7].tx2=100
  boat[7].ty2=-100  
 End Method
 //程序从这儿开始
 Method Main()
 
  //初始化船的数据
  inittriangle()
  
  //定义循环计数器变量
  Var count As Int
  
  //使用循环画出船的图形
  For count=1 To 7
   drawtriangle(boat[count].startx,boat[count].starty,boat[count].tx1,boat[count].ty1,boat[count].tx2,boat[count].ty2)
  Next
  
 End Method

End Program

写的代码的大致思路是:

【1】定义要处理的数据类型

【2】给数据赋值

【3】对数据进行操作

把这个流程分开,是编程的一种偏好和习惯。这样每个阶段都可以独立控制或修改。代码的逻辑也相对清楚一些。

大家可以把程序复制到KPL中,运行看看!

如果你有其他的思路来画各种东西,请把做好的程序寄给我们,让大家来分享!

 

不过,还是要提醒一下大家:

用坐标来定位画图的重心不是画图本身,而是对坐标的理解。不要去画过于复杂的东西,你明白了坐标的概念,就可以了。

 

源文件下载:http://www.dapenti.com/blog/target/kpl/sourcecode/drawboat.kpl

 

转发到新浪微博

 

网上书店:当当图书  卓越亚马逊  新华书店  中国图书网  蔚蓝书店

  |  KPL QQ 群:39562753 
 




KPL QQ 群:39562753 

  验证申请请输入:KPL

  公告

敏捷培训视频培训教程,版权所有,未经授权,禁止转载

     现在国内无法访问KPL官方网站,喷嚏网(www.dapenti.com)提供的KPL资料为国内首份公开的KPL汉化资料。

该资料转载并注明作者和译者出处。如:来源:喷嚏网-www.dapenti.com

欢迎从事中小学信息技术的教师转载和引用,论坛或媒体须经书面许可

欢迎媒体合作!


邮箱:dapenti2006@gmail.com


  我的分类(专题)
  最近日志
程序员怎样学数学:半路出家也能让编程
汉语编程-汉芯之后的中国软件界大骗局
一步一步学KPL【9】:如何对按键进
一步一步学KPL【8】:如何让字母精
一步一步学KPL【7】:如何在屏幕上
一步一步学KPL【6】:如何随机产生
一步一步学KPL【5】:如何随机产生
一步一步学KPL【4】:如何编写一个
KPL开发环境中的一个bug
一步一步学KPL【3】:如何调试KP
一步一步学KPL[2]:编码的习惯和
structure有什么用?
为什么编程要用英文?
如何用任意的图形来画线?
一步一步学KPL[1]:初学者入门
吴文虎:别让“程序设计”成第二门“英
如何使用系统函数?
版权和转载申明
孩子什么时候学编程比较合适?
《KPL游戏示例代码讲解》电子书在线

  最新评论

  留言板
 

  链接

  Blog AD
 



|站点首页 | 联系我们 | 博客登陆
蜀ICP备11003155号 公安部备案号:51019002000333

特别声明:本站不提供任何视听上传服务,所有视频内容均来自视频分享站点所提供的公开引用资源

Powered by oBlog 2.52 © Copyright 2004. All rights reserved.