rectangle什么意思

更新时间:2022-12-26 23:53:22 阅读: 评论:0


2022年12月26日发(作者:人教版英语必修一)

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第一页共十六页

自动化111

高级语言程序设计

课程设计报告

ExperimentDesigningreporter

课程名称:高级语言程序设计

英文名称:CProgramExperimentDesigning

专业:自动化111

学号:XXX

姓名:XXX

指导教师:XXX

日期:2012年6月17日至2011年6月20日

山东工商学院信电学院

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第二页共十六页

自动化111

一:课程设计内容

程序功能介绍

贪吃蛇游戏是一个经典小游戏,深受众多玩家喜爱,其规则是:一条蛇

在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控

制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身

体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在

移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。此游戏不仅能

锻炼人的思维敏捷性,而且还可以提高玩家的逻辑判断能力。

设计思路

我们小组称设计本次课题——贪吃蛇的思路为“贪快速上手贪吃蛇三步曲”:

第一步:

寻找到一个真正可以运行的已用C编好的贪吃蛇。

因为我们毕竟从未看到过用C编游戏的程序,让我们两手一抹黑的开始编写

是有一定的困难的,如果我们自己找一个已经设计好的程序,以此为跳板实现我

们想要达到的效果,那么肯定是高效的。所以我们组统一决定,去寻找一个可以

运行的C编译的贪吃蛇。

第二步:

运行游戏并了解游戏程序。

我们认为,只有你运行并了解一个游戏,才能知道游戏里需要什么样的改进

和创新,如果你自己本身就没玩过这个游戏,那么你就是再有技术,你也永远改

进和改编不了一个游戏,因为你根本不知道你在干什么。

同样重要的是了解游戏程序。因为只有看懂了程序,才能实现对他的改编,

才能游刃有余。

第三步:

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第三页共十六页

自动化111

寻找模块并分类,而后进行改编。

寻找到你想要改变的游戏内容的控制模块,比如,我想要增加一堵墙,那

么就应该找到

voidDrawK(void)

{

tcolor(11);

tlinestyle(SOLID_LINE,0,THICK_WIDTH);

for(i=200;i<=500;i+=10)

rectangle(i,200,i+10,209);

}

然后要找到:改变蛇初始长度、颜色、初始位置的模块,改变苹果出现位置的

模块,让蛇见墙死的模块,让蛇吃苹果加长的模块……….

并且进行分类,这样下次再想实现某个目标时,可以一目了然的进行改编。

对于找到的模块如何进行改编呢?怎么才能知道某个数值或函数代表

什么呢?

我们有两个方法:

1.)看名字,比如snakecolor(),很明显他的意思是蛇的颜色。

2.)控制变量猜想,比如设置墙的时候for(i=200;i<=500;i+=10);

rectangle(i,300,i+10,309);中的200,500,300,209代表什么

呢?我们可以猜想:它很像是坐标上的(x,y)的格式,是不是呢?

可可以先让其他数值不变,只让309改变,改变后发现上面的墙变

粗了,由此可见这个数字控制的是一堵墙的最下面一行的坐标。

关于该程序的相关分析思路答题模板:

1.贪吃蛇程序流程图如下:

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第四页共十六页

自动化111

二.贪吃蛇程序的改编:

经过小组成员的认真研究我们对其进行了如下改编

第一步加墙

撞墙或撞自己

开始

筑墙

设计出现食物

蛇移动

吃食物

GAMEOVER

蛇死?

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第五页共十六页

自动化111

voidDrawK(void)

{

/*tbkcolor(MAGENTA);*/

tcolor(5);//可以改变颜色

tlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/

横向上的墙:

for(i=100;i<=600;i+=10)//本行代表行坐标上:100代表墙的初始位置,

i<=600代表墙的结尾。

{

rectangle(i,60,i+10,69);//本行代表纵坐标上:60代表墙的最上面一

行的位置,69代表墙最下面一行的位置。69-60=9,9代表墙块的厚度

}

纵向上的墙:

for(i=100;i<=400;i+=10)//本行代表纵坐标上:100代表墙的初始位置,i<=400

代表墙的结尾

{

rectangle(100,i,109,i+10);//本行代表纵坐标上:100代表墙的最左边

面一行的位置,69代表墙最右面一行的位置。69-60=9,9代表墙块的宽度

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第六页共十六页

自动化111

}

我们认为本模块最重要的是for语句控制的坐标代表的意思。只

要明白了坐标的意思,就可以实现对游戏的改编。

第二步就是进行对新加入的墙蛇是否撞上死亡

让蛇撞墙死

if(snake.x[0]>190&&snake.x[0]<510&&snake.y[0]>=200&&

snake.y[0]<=215)/*其中,对x,y范围的控制,实际是对蛇撞击的死亡区

域的限制。*/

{

GameOver();/*本次游戏结束*/

=1;/*蛇死*/

}

相应的新添加的墙。

for(i=200;i<=500;i+=10)/*画围墙*/

{

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第七页共十六页

自动化111

rectangle(i,200,i+10,209);/*指定位置*/

第三步食物的定点出现

if(==1)/*需要出现新食物*/

这里说明一下:rand()产生0-65535的数,在limits.h里有定

义%400后产生一个0-399的数+60则为60–459,即:%400+60

意思是在60~399之间随机产生一个数。

{

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)/*食物随机出现后必须让食物能

够在整格内,这样才可以让蛇吃到*/

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第八页共十六页

自动化111

food.x++;

while(food.y%10!=0)

food.y++;

=0;/*画面上有食物了*/

}

如果将food.x=(常数a)那么食物就会出现在x=a行的随机列,

对于food.y=(常数b)那么食物就出现在y=b列的随机行。

第四步对食物墙壁的颜色以及对蛇的运动速

个性化调节

tcolor(4);//对颜色的调整intgamespeed=50000;/*游戏速度自

己调整*/通过改变变量的值,就可以个性化选择自己喜欢

的颜色,这将是一场别开生面的游戏界面。

*红色代表解析浅蓝代表提示

三.课程设计总结

有言曰:“实践出真知”,在这几天的课程设计实践中,我们组三

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第九页共十六页

自动化111

人真正的体会到了这句话的真谛。

在经历了一学期的C语言学习后,我们从以往的“纸上谈兵”

直接过渡到“实际作战”。我们实现了让静态的程序变成动态的游戏

效果,虽然我们只是改编了一下别人做好的程序,但我们同样由此获

益匪浅,感触颇深,当然也发现了许多自己的不足。

首先,在我们刚刚进行第一步“寻找程序”的时候,就被搁浅了,

因为我们发现,在网上能找到一个真正符合我们使用标准的程序很

难,就是找到了几个也没有能运行它们的程序。我们花费了前两天的

时间来寻找能够使用的程序和软件,但最后还是一无所获,正当我们

一筹莫展的时候,我们的导师——杨老师给我们带来了曙光,使得我

们在黑暗中找到了希望的光明,杨老师给我们传来了一个上届师哥做

好的程序,并且把它的运行软件也给了我们,这对我们来说无疑是雪

中送炭,得到这个程序后,我们三个人看到了C语言运行一个游戏

的流程和方法,我们脑中也大概有了一个思路。我们三个人以此程序

为跳板,直接开始对程序模块进行挑选,因为我们已经浪费了两天,

所以我们决定进行分工作业,分别去寻找:筑墙模块,加苹果模块,

撞墙死模块。最后我们用了一下午时间完成了三大步中的前两大步和

第三步的第一部分,剩下的就是最重要而充满挑战的改编了,从以上

的操作中,让我们明白了找对一个平台的重要性,这个平台就是老师

给我们的程序,就是我们的前进方向。没有了方向了的征程,一开始

就是个错误。在我们寻找程序模块的时候,我们对于程序中的很多东

西都是模模糊糊的概念,比如struck是什么,比如for语句的使用,

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第十页共十六页

自动化111

以及for语句的循环体是什么,当然我们也发现了定义字符在长的程

序中的方便与重要性。还有就是我们发现程序在编写时的规范性很重

要,比如同级别花括号的位置的对应,对应好了,模块就好找,对应

不好就很乱。还有定义函数及变量的时候,函数名字和变量名最好是

见名知意,比如我们所看的程序中,gamespeed,snakecolour,food.....

在最后的攻坚阶段,为了实现对程序的改编,我们使用控制变

量猜想法是正确的选择,比如设置墙的时候for(i=200;i<=500;i+=10);

rectangle(i,300,i+10,309);中的200,500,300,209代表什么呢?我们猜

想:它很像是坐标上的(x,y)的格式,是不是呢?我们先让其他数值不

变,只让309改变,改变后发现上面的墙变粗了,由此我们知道这个

数字控制的是一堵墙的最下面一行的坐标。我们用这个方法知道了其

他很多数值的用途。我们用这种方法先是知道了如何设置一堵墙,在

我们欣喜设置一堵墙以后才发现:蛇撞了墙后不死。在我们进行了全

局来看以后才知道,原来设计一堵墙,都要再设计一个if语句来使得

蛇在这个范围内会死亡。并且我们发现在设计这个if语句的时候,不

仅要计算好墙的坐标,而且还要用好逻辑语言(&&,||!)同时语

句的运算顺序也很重要。刚一开始我们忽略的&&和关系运算符级别

的高低,使得我们设计的墙,总是撞不死蛇,为此我们很是恼火,着

急的组员还在这里发生了点小摩擦,由此可见C语言的严谨性!

最后我们又通过在网上查找信息,知道了随机数发生器randomize()

的用法:rand()=x%+d意思是说在d~(x-1)之间随机产生一个数字。

我们很自然的联想到,如果把food.x等于常数a;把food.y等于一

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第十一页共十六页

自动化111

个;x%+d的随机数,那不就能固定只在某一行出现苹果了吗?所以我

们觉得,充分利用手边的资源也是很重要的,毕竟C语言很高深,

课本上的东西总是有限的,要想知道更多的东西还需多练习,多查阅

资料。

总之:革命尚未成功,通知还需努力啊!

四个人感受:

汤X:

就我个人而言,这次课程设计,我觉得我最大的收获就是:我

明白了,我们其实真的没那么厉害,我们真的还有很多东西不会,我

们真的连课本上的基本东西都没掌握,课本上的东西,真的也只是C

语言这个大海中的一滴水而已。而在我本人还没有掌握好课本的知识

点的情况下,做起这个程序自然很费事,一个简单的课本P293讲到

的struct结构体,我一开始竟然忘记它是什么意思,不知道它是什么,

就更不用谈怎么用它了。还有逻辑语言的使用。我想,现在肯定有很

多同学还不知道逻辑运算的优先次序吧?这个问题我本人在使用逻

辑语言的时候也不太会,还查看了书。像这些小的知识点,我个人认

为如果掌握不好的话,是不可能让整个大程序运行起来的。还有比如

我在遇到程序显示“el多余”的警告时候不不知所措,问了老师才

知道是if()后面加了“;”而且if没有用“{}”来固定范围,这个

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第十二页共十六页

自动化111

错误原因是分号使得if语句结束了,孤立的el当然是多余的了。一

个小小的分号使得程序无法运行,由此可见在今后的编程中,一定要

注意谨慎,仔细。同时要注意记住平时编程的时候,出现的错误指示

是什么意思。比如这次的“el多余”就是因为if后多了分号。还有

在编程时候,书写一定要规范,特别是if语句的花括号的位置要对应

起来,因为位置决定范围。注意定义变量和函数要使用规范的英文单

词,这样才能见名知意,为以后修改找变量节省时间。对于这次课题

中,“设计一个墙,就要对应一个函数舍得蛇撞墙死”,让我明白,C

语言程序中各部分的联系性,牵一发而动全身,所以在编程时一定要

注意全局的把握。我们最后还要说说在编程中,好好利用网络资源,

因为课本里的东西总是有限的,而C语言又那么高深,像随机数发

生器,还有颜色的定都是我第一次接触,这些东西的用处可是颇大,

以后一定好好学习。多看,多练,多总结。最后还要感谢指导老师,

杨老师对我学习的帮助和指导。

徐XXX:

刚开始拿到题目时候什么也不会一片茫然,从网上找了一个

程序一看,太吓人了,这么长怎么看啊,而且还是错误的。没办

法只能硬着头皮去改了,但是在改的过程中才发现其实c语言没

有想象的那么难而且还很有意思,只是自己平时没有好好学所以

在改的时候非常吃力,有很多简单的知识都不知道,没有记住。

没办法只能借助与课本了。但是几天下来发现自己已经不再像以

前那样是个菜鸟了,虽然很多知识还没掌握。

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第十三页共十六页

自动化111

同时在编改程序的时候切记不能烦躁要静心慢慢来,好几次

自己都因心燥出现了很多不该出现的错误浪费了很多时间。

对键盘的熟悉在编程时也是很重要的,自己在写的时候往往

就是跟一指禅差不多眼睛盯着键盘打,打错了也不知道最后导致

整个程序都是错误的,就因为一个打错了一个字母。

总的来说这次课程设计收获很多,也知道了自己的不足,

在以后的学习中要多实践,实践很能提高自己的能力。

刘XX:

4天的C语言课程设计上机学习让我感受颇多,每天都发现新

的问题,又不得不绞尽脑汁解决问题,心情就像正弦函数,随着

问题的出现和解决一起一伏。

刚开始接触贪吃蛇的C语言成寻时,看着C-free上面出现的

有十几个错误的程序,一片茫然不知所措。只能继续在网上搜索

错误较少的程序,并结合书上的基础知识查看错误所在,最终发

现是不能在C-free中运行,只能在mytc5.6上运

行。

作为小组中唯一的女生,明显感觉有压力,打字速度不如另外两

个男生,对游戏和程序的敏感也不如他们强,有种小小的挫败感。

旁边小组的同学也给我很大的压力。他们自己编写程序,我很佩

服他们,越是这样想。心里越着急,越不能解决问题,每当感觉

有压力的时候,就提醒自己心静,认真的看程序。在学习过程中,

深深的发现了自己的不足之处,对于C语言,只学了一点点皮毛

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第十四页共十六页

自动化111

东西,想要学好C语言,编好程序,还要付出很多的努力,还要

用更多的时间来学习C语言这门深奥的学科。

现在只能借用别人已经写好的程序,在别人的基础上,一点点进

步和学习,比如程序中筑墙,需要仿照已有的程序,结合逻辑运

算,关系运算和数学知识才能让蛇撞墙死。苹果位置的出现也同

样需要进一步的搜索,通过更改食物的横纵坐标以及出现的概率

来确定食物的位置。

编写程序时,也发现书上的东西对于程序的某些部分来说,

没有什么作用,显得太浅显,想要实现老师给出的一些要求,还

需要实践,通过上机学习,自己摸索才能成功。一次次修改,一

次次失败,就像贪吃蛇想方设法吃苹果会Gameover,我们只有

认真学好基础理论,并结合实践经验才会取得进步。

在这次学习过程中,我很感谢我的组员,虽然有时我们的意

见出现分歧,但是通过大家的共同努力,我们收获了很多,一起

讨论,一起研究怎样解决问题,对老师提出的要求个个击破,我

们拧成一股绳共同应对问题,让我感受了团队的力量希望在以后

的学习过程中,我们依然能够互相帮助,共同进步。

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第十五页共十六页

自动化111

五课程设计修改后的程序

1.加墙

for(i=200;i<=500;i+=10)/*画围墙*/

{

rectangle(i,200,i+10,209);/*指定位置1*/

}

for(i=120;i<=200;i+=10)/*画围墙*/

{

rectangle(100,i,109,i+10);/*指定位置2*/

}

2.指定位置加苹果

if(==1)/*需要出现新食物*/

{

food.x=rand()60;

food.y=rand()%200+60;

while(food.x%10!=0)

food.x++;

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“

第十六页共十六页

自动化111

while(food.y%10!=0)

food.y++;

=0;

3.指定地方撞墙死

if(snake.x[0]>190&&snake.x[0]<510&&snake.y[0]>=200&&

snake.y[0]<=215)

{

GameOver();/*本次游戏结束*/

=1;/*蛇死*/

}

if(snake.x[0]>90&&snake.x[0]<110&&snake.y[0]>=110&&sna

ke.y[0]<=215)

{

GameOver();/*本次游戏结束*/

=1;/*蛇死*/

}}

本文发布于:2022-12-26 23:53:22,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/36848.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图