简单图形编程的学习(2)---点 (small basic实现)
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
讨论新闻组及文件
一、 又一顿牢骚
虽然知道不应该老是说些与技术无关的话。。。。但是有的时候又总是想说。。。。难怪有同事说我最近已经有点像唐僧了-_-!总而言之,因为相对来说书看的太快,(现在租的房子离公司太远,老是坐地铁,导致有了非常固定的看书时间),而因为工作一直太忙,一直加班回家太晚的原因,所以实际的实践太慢(基本上现在就是以写博客的形式),所以Qt与Android的部分要是同步跟上我DirectX的书都要看好几本了,这样的方式好像不太好,所以目前暂时还是以Windows的为主了。。。。这也体现了一点理想与现实的差距-_-!虽然初期项目目标过大,项目中即时调整起码还能保证项目完成吧。。。。。(扯的远了)。
二、 画点
画点,在Small Basic中属于太基础的东西,当然,其实在Small Basic中什么都基础。。。呵呵
GraphicsWindow.SetPixel
函数用于画点,这里的点仅仅只有一个像素,所以叫SetPixel(设置像素),和Windows GDI的命名一致(其实Small Basic中的画图函数很多都与Windows GDI一致),参数的解释如下:
SetPixel
Draws the pixel specified by the x and y co-ordinates using the specified color.
GraphicsWindow.
SetPixel(x, y, color)
x
The x co-ordinate of the pixel.
y
The y co-ordinate of the pixel.
color
The color of the pixel to set.
Returns
Nothing
1. 随机在屏幕上画随机颜色点(HHT897)
GraphicsWindow.BackgroundColor = "White"
GraphicsWindow.PenColor = "LightBlue"
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
While ("True")
GraphicsWindow.SetPixel(Math.GetRandomNumber(gw), Math.GetRandomNumber(gh), GraphicsWindow.GetRandomColor())
EndWhile
So简单。。。不是吗?效果如插图1
但是,不要小看点的作用,点可以用于模拟星空。。。。。。。。。这里展示几个效果,真的觉得small basic用于演示什么叫简单的技术惊艳的效果非常合适。。。。。。在图形领域,感觉技术固然重要,但是思维强大也能利用简单的技术实现惊艳的效果。
2. 老电视机雪花点的效果:(PXB396)
GraphicsWindow.BackgroundColor = "DarkNight"
GraphicsWindow.PenColor = "LightBlue"
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
While ("True")
For i = 1 To 1000
GraphicsWindow.SetPixel(Math.GetRandomNumber(gw), Math.GetRandomNumber(gh), "White")
EndFor
Program.Delay(10)
GraphicsWindow.Clear()
EndWhile
3. 闪烁的星空:(TPK996)
GraphicsWindow.BackgroundColor = "DarkNight"
GraphicsWindow.PenColor = "LightBlue"
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
' 以数组记录下随机出来的点,这样才能保证星空是在闪烁而不是移动
For i = 1 To 500
width[i] = Math.GetRandomNumber(gw)
height[i] = Math.GetRandomNumber(gh)
EndFor
While ("True")
For i = 1 To 500
GraphicsWindow.SetPixel(width[i], height[i], "White")
EndFor
Program.Delay(1000)
GraphicsWindow.Clear()
EndWhile
4. 屏幕刮花效果(RMP025)
GraphicsWindow.BackgroundColor = "DarkNight"
GraphicsWindow.PenColor = "LightBlue"
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
For i = 1 To 500
width[i] = Math.GetRandomNumber(gw)
height[i] = Math.GetRandomNumber(gh)
EndFor
While ("True")
For i = 1 To 500
GraphicsWindow.SetPixel(width[i], height[i], "White")
width[i] = width[i] + 1
EndFor
Program.Delay(10)
EndWhile
5. 移动的星空:(ZGB224)
GraphicsWindow.BackgroundColor = "DarkNight"
GraphicsWindow.PenColor = "LightBlue"
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
For i = 1 To 50
width[i] = Math.GetRandomNumber(gw)
height[i] = Math.GetRandomNumber(gh)
EndFor
While ("True")
Program.Delay(1)
For i = 1 To 50
GraphicsWindow.SetPixel(width[i], height[i], "White")
width[i] = width[i] + 1
' 保证星空不是直接消失了-_-!
If(width[i] > gw) Then
width[i] = 0
EndIf
EndFor
GraphicsWindow.Clear()
EndWhile
Have Fun,aha?呵呵,的确是,很久没有这样爽的写程序了,有了思维,很简单的就能体现在Small Basic上,让人愉快。后面的字母都是可以直接在Small Basic中import的,现在Small Basic 0.6出来了,我用的都是Small Basic 0.6。另外,发现没有,不像在讲其他语言/程序的时候一样,对各个参数一通饱讲,10分钟还没有看到一个函数的参数,对于Small Basic的程序我感觉仅仅需要展示效果和源代码就好了,展示的直接就是编程的思想,而不是语言,因为语言本身如此的简单。完成上面所有的示例都没有花掉我一个小时。。。。。很难想象用GDI或者DX我要用多久。。。。。。。呵呵,虽然我用C/C++出身的(现在也靠这个吃饭),也稍微学习过一下汇编,但是我怎么感觉我对越简单的语言越有好感啊?LUA, Python, Bash ,JAVA都稍微学过一点,但是实在是没有如Small Basic这样让人愉快的语言了^^,也许最最重要的一点在于,现有的大部分语言(上面提及的都是),逻辑表达能力虽然很强,库很丰富,但是为了适应足够广阔的领域并达到工业强度,GUI编程方面都是复杂的让人吐血,MFC就不说了,TK号称简单,其实我感觉也好不到哪去,我没有尝试过用Bash没写GUI,Qt已经算是非常好的GUI库了,但是上百个类足够让你头晕目眩。Small Basic这样的语言虽然是玩具,也就因为其是玩具才敢这么简单。。。。。。。。。呵呵,欣赏它,起码作为一种简单的演示也不错。
上面的例子都是自己随便想的,下面看一个偷师来的例子,以前在讲small Basic的时候其实已经展示过了,但是因为这个例子给了我太多惊喜,我决定反复提起,告诉你们什么叫编程思维利用简单的技术,你别说看了没有感觉惊艳,要知道其实仅仅是利用了画点和文字输出两个如此平常而简单的特性。
6. 星空中的文字(HQG707)
GraphicsWindow.BackgroundColor = "midnight"
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
GraphicsWindow.FontSize = 100
Turtle.Move (100)
Turtle.Turn (1*1)
While ("True")
For i = 1 To 50
GraphicsWindow.SetPixel(Math.GetRandomNumber(gw),Math.GetRandomNumber(gh),GraphicsWindow.GetRandomColor())
EndFor
Turtle.Move(1)
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawBoundText(30,110,gw-20,"Small Basic")
EndWhile
第一次看到这个例子的时候我真的感叹作者是个天才-_-!也许是自己太笨了所以想不到用这样的方式去显示文字吧。这次来个系列效果,如星空中的文字-插图1-4。怎么样?效果惊艳吧?呵呵,直接运行一下程序吧,将文字改成你想要的,你会有更好的感觉。
三、 小结
一个个简单的点就能够构成如此繁多的效果,简直有点不可思议,但是其实,能够绘制一个点,就能够绘制整个世界,要知道,整个屏幕不过也就是一个一个像素构成的,呵呵。其实,从另外的角度来说,一连串连续的点就能构成一条直线,一排排直线就能构成一个面,有了点,线,面,还有什么不够构成的?你可以表达整个世界。
相关推荐
Small basiC 学习练习试题及参考答案
Small Basic derives its inspiration from the original BASIC programming language, and is based on the Microsoft .Net platform. It is really small with just 15 keywords and uses minimal concepts to ...
Small-Basic 儿童编程中文教程,Small Basic 是一门针对初学者设计的使编程变得非常容易,亲切,有趣的编程语言。Small Basic 的目的 在于消除障碍,充当通往令人惊奇的计算机编程世界的踏脚石。
微软发布的Small Basic是一款针对儿童的免费编程语言。不像Scratch和Alice,这款工具属于 Small Basic程序界面 “无编码”环境,本质上讲是一个简略版本的BASIC语言。该语言脱胎于传统的BASIC语言,但是基于.Net开发...
Small Basic 是一门针对初学者设计的使编程变得非常容易,亲切,有趣的编程语言。Small Basic 的目的 在于消除障碍,充当通往令人惊奇的计算机编程世界的踏脚石。 Microsoft SmallBasic Microsoft Small Basic (no ...
MSB(Microsoft Small Basic)是一种免费的简单编程语言,主要为教育小学使用而设计。 才华横溢的程序员对其进行了增强,使其在专业上也很有用。 程序可以设计为纯文本窗口(类似于 DOS 框)或全功能丰富的图形窗口...
Smallbasic小型特殊计算器程序。对于零基础的想学编程的朋友们来说没比smallbasic语言更好的选择了。这个语言很简单。学完了可以再学C语言。此程序是为smallbasic初学者提供的.
smallbasic简介,接绍微软最简单的编程语言,适合初学者
SmallBASIC包括三角函数,矩阵和代数函数,内置的IDE,强大的字符串库,系统,声音和图形命令以及结构化的编程语法。 初始化依赖 $ git submodule update --init 构建SDL版本 在Linux上的初始设置 $ sudo apt-get ...
IEC 61400-2-1996 Wind turbines-Part2:Design requirements for small wind turbines
这是用small basic编的猜数游戏,是以cmd方式打开的,界面极简。 需要microsoft.net framework3.5以上
The effects of man-marking on work intensity in small-sided soccer games,是一篇关于大数据技术在现代足球中运用的论文,高清扫描版pdf,亲测质量很好,放心下载~
微软精心制作的,教儿童/少年编程的最佳语言,SMALLBASIC。
Deep SORT 所需的 mars-small128系列文件。mars-small128.ckpt-68577;mars-small128.ckpt-68577.meta;mars-small128.pb;MOT16_POI_test;MOT16_POI_train 包括deep-sort中resource目录下的资源,弥补github缺失...
Networkers2009:BRKNMS-2007 - Management Needs of small & medium customers
小型无人控制直升机基于图像降落系统,王强,安杰,基于图像的小型无人直升机降落系统大都识别地面上某一特定形状计算直升机与目标点的距离。本文小型无人控制直升机降落时,直升机��
SmallBasic正版软件 学习编程的乐趣
这是经典文献Massive MIMO and Small Cells Improving Energy Efficiency by Optimal Soft-Cell Coordination 的matlab代码,绝对有效。
包含了mars-small128.ckpt-68577,mars-small128.ckpt-68577.meta,mars-small128.meta,mars-small128.pb
[J2ME编程].(Manning).J2ME.-.Java.in.small.things.(2002)