




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实训项目一小球碰撞游戏程序的调试与运行一、实训目的通过本实例,主要目的是让学生掌握以下知识点:1、在C语言中如何绘制常见图形,绘图函数的使用。2、如何实现图形动画。3、如何处理按键响应。4、游戏算法的实现。二、功能描述本程序实现的游戏规则如卜:游戏者通过键盘上的LEFT键和RIGH键控制屏幕下方的一个黄色矩形框左右移动,拦截向卞运动的小球,小球碰到矩形上边的不同部位,会以不同的角度反弹。运动的小球碰到上边缘、左边缘、右边缘、和9个固定位置的小球都会发生碰撞反弹。如果运动的小球将屏幕上9个固定位置的小球全部打掉,则玩家获胜:如果小球掉出下边缘,则玩家失败,游戏结束。三、编程参考1、程序中使用的库
2、函数说明图形模式的初始化与退出在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化函数:voidfarinitgraph(intfar*gdriver,intfar*gmode,char*path);其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。图形驱动程序由TurboC出版商提供,文件扩展名为.BGIo根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器就调用驱动程序EGAVGA.BGI,所以PATH对应的实参应为文件EGAVGA.
3、BGI的实际路径名。voidfarclosegraph(void):该函数用于退出图形状态进入文本方式,并释放用于保存图形驱动程序和字体的系统内存。屏幕颜色的设置和清屏函数对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在TurboC中分别用下面两个函数。设置背景色:voidfarsetbkcolor(intcolor);设置作图色:voidfarsetcolor(intcolor):其中color为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见下表所示。有关屏毎颜色的符号帮数表符号幣数数值含义符号當数数值含义BLACK0黑色DARKGRAY
4、8深灰BLUE1兰色LIOHTBLUE9深兰OREEN2绿色LIOHTOREEN10淡绿CYAN3WfeLIGHTCYAN11淡育RED4红色LIGHTRED12淡红MAGENTA5洋红LIOHTNIAOENTA13淡洋红BROWN6棕色YELLOW14黄色LIOHTGRAr7淡灰WTHTE15白色清除图形屏幕内容使用清屏函数,其调用格式如下:voidefarcleardevice(void):有关颜色设置请参照上表。基本图形函数基本图形函数包括画点,线以及其它一些基本图形的函数。画点函数voidfarputpixeI(intx,inty,intcoIor);该函数表示有指定的象元画一个按co
5、lor所确定颜色的点。x,y是指图形彖元的坐标。画线函数TURBOC提供了一系列画线&函数,下面分别叙述voidfarIine(intxO,intyO,intx1,inty1):画一条从点(xO,yO)到(xl,yl)的直线。voidfarIineto(intx,inty):画一作从现行游标到点(x,y)的直线。voidfarIinerel(intdx,intdy);画一条从现行游标(x,y)到按相对增量确定的点(x+dx,y+dy)的直线。voidfarcircle(intx,inty,intradius);以(X,y)为圆心,radius为半径,画一个圆。voidfararc(intx,i
6、nty,intstangIe,intendangle,intradius);以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在TURBOC中规定x轴正向为0度,逆时针方向旋转一周,依次为90,180,270和360度(其它有关&函数也按此规定,不再重述)。voide11ipse(intxrinty,intstangle,intendangle,intxradius,intyradius);以(x,y)为中心,xradius,yradius为x轴和y轴半径,从角stangle开始到endangle结束画一段椭圆线,当stangle二0,
7、endangle二360时,画出一个完整的椭圆。voidfarrectangle(intx1,inty1,intx2,inty2);以(xl,yl)为左上角,(x2,y2)为右下角画一个矩形框。voidfardrawpoly(intnumpoints,intfar*poIypoints);画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypomts整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints的值取实际多边形的顶点数加一,并且数组polvpoints中第一个和最后一个点
8、的坐标相同。文本输出函数F列用于在图形显示模式下的文本输出。voidfarouttext(charfar*textstring);该函数在现行位置输出字符串指针textstring所指的文本。voidfarouttextxy(intx,inty,charfar*textstring);该函数在规定的(x,y)位置输出字符串指针textstnng所指的文本。其中x和y为象元坐标。有关文本字体、字型和输出方式的设置有关图形方式下的文本输出函数,可以通过setcolor()函数设置输出文本的颜色。另外,也可以改变文本字体人小以及选择是水平方向输出还是垂直方向输出。voidfarsettextstyl
9、e(intfont,intdirection,intcharsize);该函数用来设置输出字符的字形(由font确定)、输出方向(由direction确定)和字符人小(由charsize确定)等特性。TurboC2.0对&函数中各个参数的规定见下列各表所示:font的取值符号常数数值含义DEFAULT.F0NT08*8点阵字(缺省值)TRIPLEX.F0NT1三倍笔划字体SMALL_F0NT2小号笔划字体SANSSERIF.FONT3无衬线笔划字体G0THIC.F0NT4黑体笔划字direction的取值符号常数数值含义BRdivHORIZ.DIR0从左到右VERT.DIR1从底到顶chars
10、ize的取值符号常数或数值含义12345678910USER_CHAR_SIZE=O8*8点阵16*16点阵24*24点阵32*32点阵40*40点阵48*48点阵56*56点阵64*64点阵72*72点阵80*80点阵用户定义的字符大小voidfarsetusercharsize(intmulxvintdivxrintmuly,intdivy);该函数用来设置笔划型字和放人系数,它只有在settextstyle()函数中的charsize为0(或USER_CHAR_SIZE)时才起作用,并且字体为函数settextstyle()规定的字体。调用该函数后,每个显示在屏幕上的字符都以其缺省大小乘
11、以mulx/divx为输出字符宽,乘以muly/divy为输出字符高。其它函数intbioskey(intcmd);该函数用来执行各种键盘操作,由cmd确定操作。cmd可为以下值:取值为0:返回敲键盘上的下一个键。若低8位为非0,即为ASCII字符;若低8位为0,则返回扩充了的键盘代码。取值为1:测试键盘是否可用于读。返回0表示没有键可用:否则返回下一次敲键之值。敲键本身一直保持由下次调用具的cmd值为0的bioskey所返回的值。取值为2:返回当前的键盘状态,由返回整数的每一个位表示,见下表:厂1位111为0时意义1I-1为1时意义111111711插入状态11改写状态11161大写状态1小
12、写状态1151数字状态,NumLock灯亮|光标状态,NumLock灯熄|14IScrollLock灯亮IScrollLock灯熄1131Alt按下1Alt未按下1121Ctrl按下1Ctrl未按下1111左Shift按下1左Shift未按下11oI1右Shift按卞1右Shift未按下1intkbhit(void);该函数检查当前按下的键。voiddelay(unsignedmilliseconds):该函数将程序的执行暂停一段时间(亳秒)。unsignedsIeep(unsignedseconds);该函数将程序执行挂起一段时间(秒)。2、源程序#mclude”GRAPHICS.H”#mc
13、lude#mcludestdio-h#defineLEFT0 x4b00defineRIGHT0 x4d00#defineESC0 x01lbmtxyxl,y1.kev,t1,t2.keyx.keylong.keymove,ovei-0d,tt=0.fast;intballx9=5383,263,120,86,390,40,350,600;intbally9=158,139,160,113,30,213,120,263,281;iiitballz9=0;floatIs;win()floatlxjyjl;fdr(i=0;i9;i+)if(ballzi=l)contmue;lx=(float)(b
14、allxi-x);ly=(float)(ballyi-y);ll=lx*lx+ly*ly;ls=sqrt(ll);if(int)ls17)tt+;fast-=5O;if(i%2=0)keymove+=5;elsesetcolor(O);iectangle(keyx,460.key+kevlong,470);keylong-=10;setcoloi(YELLOW);iectangle(keyx,460.keyx-rkeylong,470);ballzi=l;setcolor(O);circle(ballxi,ballyi,10);if(yballvi)if(xballxi)t2=-l;elset
15、l=l;t2=-l;elseif(xballxi)tl=l;t2=l;elseif(xballxi)t2=l;elsetl=l;t2=l;fiuigoOx=100,y=50.keyx=200.keylong=100,keymove=15,fast=5OOO;fbr(i=0;i480)cleardeviceQ;over=l;setcolor(RED);settextstyle(0,0,4);setusercharsize(3,1,3,1);outtextxy(200.200/GAMEOVER*);break;elseif(x=6&y=6)tl=l;t2=l;elseif(x=633&y=6)tl
16、=-l;t2=l;elseif(x=6)if(yyi)ti=i;t2=-l;elsetl=l;t2=l;elseif(y=6)if(xy)t2=-l;elset2=l;elseif(y=454)if(x=keyx&x=keyx-rkeylong)if(x=(keyx+keylong/4)&x=(keyx+keylong/2)&x(keyx+keylong/4*3)tl=l;t2=-2;elsetl=l;t2=-l;if(over)break;kev=bioskev(0);setcolor(O);rectangle(keyx,460,keyx+keylong,470);改key=ESC)clea
17、rdevice();bieak;elseif(key=LEFT)keyx-=keymove;elseif(key=RIGHT)keyx+=keymove;main()intgd=DETECT,gr;initgraph(&gd,&g叮CTCBG);setcolor(lOO);ftmgoQ;getchQ;sleep(l);closegiaphQ;四、实训习题1、画出函数fiingo()和win()的程序流程图。2、改变固定小球的颜色、个数、位置和半径。3、改变运动小球的速度和反弹的轨迹。4、通过键盘输入运动小球的半径。实训项目二学生成绩管理系统一、实训目的通过本实例,主要目的是让学生掌握以下知识点
18、:1、结构体数组的定义和使用。2、结构体数据的输入与输出方法。3、插入、排序、查找、删除算法的实现。4、初步了解一个简单管理系统的设计方法。完成卜列功能:1、输入:函数input把10个学生的学号、姓名、性别、年龄、四科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、四科成绩由键盘输入,然后计算出平均成绩和总成绩放在结构体对应的域中。2、插入:insert函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。3、排序:sort函数对所有学生按要求排序(1学号2总成绩),并输出。4、查找:find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。要求能查询多
19、次。5、删除:delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。6、输出:函数output输出全部学生的记录。7、main调用所有函数,实现全部函数功能(注:除了定义结构外,不允许使用全局变量,函数之间的数据全部使用参数传递)。mcludemcludemcludestmctnodeintcode;charname20;chartype;intage;intchmese;intenglish;intcomputer;intmatli;inttotal;intaverage;stud100;stmctnodetemp:voidmenu(void)system(clear)
20、;prmtf(Att*1输入数据T);prmtf(Htt*2prmtf(Htt*3prmtf(Htt*4prmtf(Htt*5prmtf(Htt*prmtf(Htt*7查插删打找入除印数数数数数据据据据据T);*n”);*n”);*n”);*ir);prmtf(ntt*prmtf(Htt请输入你的选项(1-7):H);voidinput()mti;for(i=0;i10;i+)pnntf(”请输入第d个学生学号:”,i);scanf(H%d&studi.code);pnntf(请输入第d个学生姓名:”,i);scanf(H%s,);getchar();pnntf(请输入第d
21、个学生性别:”,i);scanf(H%c,&studi.type);pnntf(请输入第d个学生年龄:”,i);scanf(H%d&studi.age);printf(请输入第d个学生英文成绩:“,i);scanf(H%d&studi.english);pnntf(请输入第d个学生国文成绩:“,i);scanf(H%d,&studi.chmese);pnntf(请输入第4个学生计算机成绩:”,i);scanf(H%dH,&pu血);pnntf(“请输入第4个学生数学成绩:scanf(H%d&studi.niath);studi.total=studi.english+stiidi.chmese
22、+puter+studi.iiiath;studi.average=studitotaV4;voidfind(intc)mtchark20;svstem(HclearH);pnntf(按学号查找(按1):W);pnntf(”按姓名查找(按2):n“);pnntff请选择:”);scanf(H%d-&n);if(n=l)pnntfC请输入学号J;scanff%cT;&m);fdr(i=O;ic;i+)if(studi.code=m)priiitf(n*iiH)printf(”学号:%dnfl,studi.code);printf(”姓名:%);printf(”性别:%cn
23、M,stiidi.type);printf(”年龄:%dnfi,studi.age);printf(”英语成绩:%dn,r,studi.english);priiitf(n国文成绩:%darstudi.Chinese);prmtf(H计算机成绩:%dn,r,puter);printf(”数学成绩:%dn”,studimath);总分:%dir,studi.total);printf(”平均分:%dnH,snidi.average);*iiH)getcharQ;elseif(n=2)getcharQ;请输入姓名:”);fgets(k,20,stdiii);l=stilen(k);for(j=Oj
24、cj+)if(strcmp(k.studj.naine)=0)piintH*piintf(”学号diT,studjcod亡);prmtf(M姓名:%siT;studjiiame);prmtf(M性别:%cnH,studj.type);prmtf(M年龄:%dnH,studj.age);printfC1英语成绩:%dWstudljJ.english);pnntfC国文成绩:%dnfl,studjchinese);prmtf(M计算机成绩:%puter);printfC1数学成绩:%dn”,studjmath);总分:%dnH,studi.total);平均分:diT,studi.average)
25、;*nM)-getcharQ;getcharQ;voidinsert(mtc)inti,J;svstem(Hclearn);pnntf(“请输入要插入学生的信息:n”);pnntf(“请输入学生学号:”);scanf(H%dH,&temp.code);pnntf(请输入学生姓名:“);scanf(H%s,);getchar();pnntf(“请输入学生性别:“);scanf(H%c,&temp.type);pnntf(请输入学生年龄:“);scanff%护,&temp,age);pnntf(”请输入学生英文成绩:”);scanf(H%dH,&temp.english);pnntf(”请输入学生
26、国文成绩:”);scanf(H%dH,&temp.chm亡se);prmtfC请输入学生计算机成绩:”);scanf(H%dH,&putw);prmtfC请输入学生数学成绩:”);scanf(H%d,&temp.matli);temp.total=temp.english+tenip.chinese+putei+temp.matli;temp.average=temp.total/4;for(i=0;ic;i+)if(temp.code=c)studi.code=temp.code;strcpy(,);studi.type=temp.type;stud1age=temp.
27、age;studi.english=tenip.english;studi.puter;studi.math=temp.math;studi.clunese=temp.chinese;studi.total=temp.total;stud1.average=temp.average;voiddelete(intc)mtljJjhk;charname20;printff按学号删除(按l):nf,);printfC按姓名删除(按2):nn);scanf(H%d*&k);pnarff请输入学号g”);scanff%d;&n);fbi(i=O;ic;i+)if(studi.code=n)c=c-l;f
28、br(j=i;jcj-H-)studj.code=studj+1.code;sticpv(,studj+);studj.type=studj+l.type;studj.age=studlj+l.age;studj.english=studj+1.english;stud(j.chinese=studj+l.cliinese;putei-studj+putef;stud(j.math=studj+l.math;studj.total=studj+l.total;studj.aveiage=studj+l.average;elseif(k=2)getcharQ;pi
29、mtfC*请输入姓名:n“);fgets(name,20,stdm);l=strlen(name);nainel-l=O,;fbi(i=O;ic;i+)if(strcmp(name,)=O)fbr(j=i;jcj-H-)studj.code=studj+l.code;sticpv(,studj+);studj.type=studj+l.type;studj.age=studlj+l.age;studj.english=studj+1.english;stud(j.chinese=studj+l.cliinese;putei-snidj+pii
30、tef;stud(j.math=studj+l.math;studj.total=studj+1.total;studj.aveiage=studj+l.average;elsegetcharQ;getcharQ;voidprint(mtc)inti;system(clear,);fbr(i=O;iO;i-)for(j=0jstud|j+l.code)temp.code=studj.code;sticpv(,);temp.type=studj.type;temp.age=studjage;temp.english=studj.english;temp.clunese=stu
31、dlj.chmese;temp.math=studJj.niath;putei-puter;temp.total=stud|j.total;temp.aveiage=studlj.average;studj.code=sndj+l.code;strcpv(,);studjtype=studj+1type;studfj.age=studj+l.age;studj.english=studj+1.english;studfj.chmese=studj+1.clunese;studj.matli=studj+l.math;puter=studj+pute
32、r;studj.total=snidj4-l.total;studfj.average=studj+l.average;studj-rl.code=temp.code;strcpv(studj+1.naine,);studj4-l.type=temp.type;studj+1age=tenip.age;studj+1.english=temp.english;studj4-l.chinese=temp.chmese;studj+1puter;studj4-l.math=temp.niath;studj4-l.total=temp.total;studj4-l.average=temp.average;elseif(n=2)c=c-l;fbi(i=c;iO;i-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省A10联盟高三最后一卷理综生物试题
- 基于Modbus现场总线技术的智能配电系统设计与实现
- 事业单位车辆管理制度规定
- DB52/T 1212-2017 煤矿地面在用瓦斯泵及瓦斯泵站安全检查规范
- 小儿巨细胞病毒性肺炎临床特点分析
- 元治理视域下的农村养老服务体制构建研究
- 辽宁省示范校北票市尹湛纳希高级中学高中政治4.1世界的物质性学案新人教版必修4
- 2024-2025高中语文第二单元同步写作序列学案二直面挫折学习描写学案新人教版必修2
- 2025版新教材高中化学第五章化工生产中的重要非金属元素第一节第2课时硫酸硫酸盐课后练习含解析新人教版必修第二册
- 浙江专用2024年高中地理第三章自然灾害与环境第二讲我国自然灾害多发区的环境特点教案含解析湘教版选修5
- GB/T 20833.4-2021旋转电机绕组绝缘第4部分:绝缘电阻和极化指数测量
- GB/T 17187-2009农业灌溉设备滴头和滴灌管技术规范和试验方法
- GB/T 12624-2006劳动防护手套通用技术条件
- GB/T 12459-1990钢制对焊无缝管件
- 公司参观登记表
- GB 20517-2006独立式感烟火灾探测报警器
- 诊所备案信息表2022
- 仪器校正培训教材课件
- 混凝土裂缝类型产生原因以及防治处理措施课件
- 腰椎间盘突出症教学查房课件
- 21世纪中美关系发展趋势课件
评论
0/150
提交评论