C语言实训-小球碰撞游戏
- 格式:doc
- 大小:104.00 KB
- 文档页数:19
Visual Basic 课程设计报告课程设计题目:弹球游戏姓名:班级:指导老师:时间:一、实验目的学会使用Visual Basic设计、编写程序,掌握基本的常用控件的使用。
二、实验内容使用Visual Basic制作弹球游戏。
通过使用键盘控制挡板,使运动的小球不掉落,同时计算分数。
三、实验步骤1.创建游戏进入窗体(Form1)(1) 创建窗体,添加所需控件。
(2) 在“属性”窗口设置窗体和标签属性。
对象对象名属性名属性值事件名窗体Form Caption 弹球游戏2.0之是男人就撑过40秒无Icon (Icon) BorderStyle 3 Picture (Bitmap)标签Label1Caption 弹球游戏无Font 黑体BackColor &H00000000&ForeColor &H00808080&Label2Caption 开始游戏ClickBackStyle 0Font 宋体ForeColor &H00FFC0C0&Label3Caption 游戏帮助ClickBackStyle 0Font 宋体ForeColor &H00FFC0C0&Label4Caption 退出ClickBackStyle 0Font 宋体ForeColor &H00FFC0C0&Label5 Caption Copyright版权无所有(C)2009 曾聪BackColor &H00FFC0C0& Font 宋体ForeColor &H00000040&Label6Caption警告:本软件受版权法和国际条约的保护,未经授权擅自复制或传播本程序(或其中的任何部分),将受到严厉的刑事及民事制裁,并将在法律许可范围内受到最大可能的起诉. BackStyle 0Font 宋体Label7Caption是男人就撑过40秒BackStyle 0Font 黑体ForeColor &H00C0C0C0&(3) 设计代码。
乒乓球小游戏(C开发环境使用Unity引擎开发)Unity引擎作为一款功能强大的游戏开发工具,能够帮助开发人员轻松地创建各种类型的游戏。
本文将介绍如何使用Unity引擎进行C语言开发,实现一个简单而有趣的乒乓球小游戏。
在开始之前,需要确保已经正确安装了Unity引擎,并且将其与C 语言开发环境连接起来。
一旦准备就绪,我们就可以开始创建乒乓球小游戏了。
首先,打开Unity引擎,并创建一个新的项目。
选择一个合适的项目名称,然后确定项目的存储位置。
接下来,选择2D模式,因为乒乓球游戏通常是使用2D图形进行展示的。
在Unity编辑器中,可以看到项目的主界面。
左侧是场景视图,用于显示游戏场景的图像。
右侧是项目视图,用于管理项目资源。
在顶部是一个工具栏,其中包含各种功能按钮。
现在,我们需要创建游戏场景。
在项目视图中,右键单击并选择"Create"->"Scene",然后将其命名为"Game"。
点击场景视图,我们可以看到一个空的游戏场景。
接下来,需要添加游戏对象。
在项目视图中,右键单击并选择"Create"->"Sprite",然后将其命名为"Ball"。
将球拖拽到场景视图中心位置,并将其大小进行调整。
为了让球能够在场景中移动,我们需要为其添加一个脚本。
在项目视图中,右键单击并选择"Create"->"C#Script",然后将其命名为"BallMovement"。
将脚本拖拽到球对象上,并在Unity编辑器中双击打开脚本。
在脚本中,我们需要编写代码来实现球的移动逻辑。
首先,需要声明球对象的速度变量,以控制球的移动速度。
然后,在Update函数中,使用Input类来接收玩家的键盘输入,并根据输入控制球的移动方向。
最后,调用球对象的Transform组件的Translate函数来实现球的移动。
班级_ _ 姓名____ ___ 指导教师___ ____2013年9月19日沈阳航空航天大学课程设计任务书学院:航空航天工程学部专业:飞行器制造工程班级:学号题目:弹球游戏一、课程设计时间二、课程设计内容设计一个弹球游戏的小系统,包括一个小球和一个木板。
木板在游戏界面的底部,可来回移动用来接住并反弹小球。
要求在游戏的过程中小球碰到界面上壁、左壁和右壁时会被弹回,碰到底部木板时小球变颜色,木板接不到小球时游戏结束。
游戏过程可随时暂停和启动。
用户界面中的应能够自主设置小球速度,记录得分的功能(计分方法由个人设计决定)。
(1)创建图形界面,并在其中绘制小球和木板;小球及木板的尺寸自行设置(最好设置成可修改);(2)假设小球在碰撞时无能量损失(速度不变);(3)应能设置小球速度;(4)碰撞次数即为得分;(5)可以选择文件或者数据库存放得分记录;(6)游戏过程可随时暂停和启动。
三、课程设计要求程序质量要求:✧贯彻面向对象程序设计思想。
✧设计用户图形界面,界面友好,功能明确,操作方便。
✧可以加以其它功能或修饰。
✧代码简洁清晰,并给出必要的注释,以增强程序的可读性。
课程设计说明书:✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字指导教师:________ 学生签名:________五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (3)三、主要界面截图 (4)四、技术要点 (8)五、个人总结 (18)六、参考文献 (18)七、源程序 (18)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个典型的对键盘操作即时反映的游戏系统,使用键盘操控,对使用者的指令进行即时执行;该游戏系统的使用者被假定为各个年龄段的人群,该游戏系统应具有即时响应、合理、稳定、多样的特点。
1.即时响应性分析游戏系统应该能够对玩家的指令做出即时的响应,从而达到自由操控的目的,增加游戏的可玩性。
1项目课题项目一:时钟项目二:动态太极图项目三:小球游戏2项目内容项目一:时钟本时钟编写时用到了Java中的Swing组件以及graphics方法,并具有下列处理功能:(1)显示时钟功能显示钟表时间。
(2)显示时钟功能显示数字时间。
项目二:动态太极图设计一个动态的太极图。
项目三:小球游戏用一个挡板去接小球,接到分数加五分,并且随着分数的增加挡板的宽度不断减小,小球的速度不断增减。
3项目步骤项目一:时钟(1)创建窗体和画板类首先,创建窗体类ClockJFrame并且继承JFrame类,再创建创建画板类ClockJPanel并且继承JPanel类。
然后,定义成员变量以及构造方法进行初始化,定义秒时分的坐标:秒针int sx,sy;时针int hx,hy;分针int mx,my。
定义时分秒时间:int s,m,h。
最后,初步设计画板尺寸、颜色、位置。
(2)在画板中画刻度线if(i%5==0){if(i%15==0){r=100;//圆心到是12 3 6 9的长度}else{r=120;//圆心到8个时针的长度}}else{r=140;//圆心到剩余分针的长度}(3)创建线程,获取当前时间并画时间在本程序中以实现Runnable接口内部类的形式创建多线程对象。
Runnable接口只定义了一个run()方法,所以调用start和sleep()方法时,必须创建Thread实例化对象,Interrupt()方法的作用是中断线程。
本程序在move()方法中创建Thread实例化对象。
(4)画时针分针秒针根据时钟坐标位置的关系得到如下转换公式:hx=(int) (300+(Math.sin(Math.toRadians(h*30+m*0.5))*100))hy=(int) (300-(Math.cos(Math.toRadians(h*30+m*0.5))*100))(5)使用repaint()方法重绘组件项目二:太极图(1)创建窗体和画板类首先,创建窗体类taijiJPanel并且继承JPanel类。
苏州市职业大学课程设计说明书名称计算机语言C#课程设计弹珠游戏2010年6月21日至2010年7月4日共2周院系计算机工程系班级09软件测试姓名罗苑(096307335)系主任李金祥教研室主任叶良指导教师张苏王德鹏摘要:这个小程序是关于弹珠的小游戏,游戏比较简单,以小球的速度来区分游戏的难易。
该小程序是用左右键控制游戏的开始和挡板的方向,不让小球落到底端,当然,小球的速度越快,该游戏的难度也就越大。
此程序利用C#程序编写,在visual studio 2005的环境下进行调试运行的。
弹珠原理:碰撞基本都是参照“反射定理”的,就是出射角=入射角,但是做碰撞时需要角度。
碰撞的运动和球的方向有关,球的方向有好几种。
有8向的,也有4向的。
保证小球横向上在允许范围之内运动,当触发时就反方向运动,和当出了球拍的可击打范围就停止运行了。
对于该程序开发,必须达到以下要求:1、熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。
2、掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。
3、掌握常用控件以及控件的常用属性的使用方法。
4、界面要做到简洁易懂,具有人性化等特点。
5、程序没有在使用过程中不存在任何的问题。
6、可选功能应全面,可以实施速度的选择,游戏的是否继续,还有记录的保存。
目录摘要: (2)目录 (3)一、题目说明 (4)二、总体设计 (4)2.1.系统开发平台 (4)三、详细说明 (4)3.1系统实施 (4)四、遇到的问题和解决方法 (20)五、课程设计总结 (22)六、参考文献 (22)附录(源程序代码) (22)一、题目说明当今用简单的代码编写的小游戏越来越受人们的欢迎,所以对于小游戏的开发也成为了各大编程人士的最爱。
我选择弹珠游戏这个课题,用代码控制游戏的等级,运用不同的函数来控制球的速度和方向,游戏简单而有趣。
二、总体设计2.1.系统开发平台系统采用Microsoft V isual Studio 2005三、详细说明在此弹球游戏中,对于球与挡板的位置,借助于x与y坐标的调整来实现统计,从而确定球落在板上后球的下一次方向。
#include<graphics.h>#include<dos.h>#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<time.h>#include<bios.h>#define R 4#define Key_Up 0x4800#define Key_Enter 0x1c0d#define Key_Down 0x5000struct wall/*墙*/{ int x;int y;int color;}a[20][20];int Keystate;int MouseX;int MouseY=400;int dx=1,dy=1;/*计算球的反弹*/int sizex=20,sizey=10; /*墙的宽度和长度*/ int Ide,Key;void draw(int x,int y) /*画组成墙的砖*/{int sizx=sizex-1;int sizy=sizey-1;setcolor(15);line(x,y,x+sizx,y);line(x,y+1,x+sizx,y+1);line(x,y,x,y+sizy);line(x+1,y,x+1,y+sizy);setcolor(4);line(x+1,y+sizy,x+sizx,y+sizy);line(x+2,y+sizy-1,x+sizx,y+sizy-1);line(x+sizx-1,y+1,x+sizx-1,y+sizy);line(x+sizx,y+2,x+sizx,y+sizy);setfillstyle(1,12);bar(x+2,y+2,x+sizx-2,y+sizy-2);}void picture(int r,int l) /*画墙*/{ int i,j;setcolor(15);rectangle(100,50,482,461);for(i=0;i<r;i++)for(j=0;j<l;j++){ a[i][j].color=0;a[i][j].x=106+j*25;a[i][j].y=56+i*15;draw(106+j*25,56+i*15);}sizex=50,sizey=5;}void MouseOn(int x,int y)/*鼠标光标显示*/{draw(x,y);}void MouseSetX(int lx,int rx)/*设置鼠标左右边界*/ {_CX=lx;_DX=rx;_AX=0x07;geninterrupt(0x33);}void MouseSetY(int uy,int dy)/*设置鼠标上下边界*/ {_CX=uy;_DX=dy;_AX=0x08;geninterrupt(0x33);}void MouseSetXY(int x,int y)/*设置鼠标当前位置*/ {_CX=x;_DX=y;_AX=0x04;geninterrupt(0x33);}void MouseSpeed(int vx,int vy)/*设置鼠标速度*/{_CX=vx;_DX=vy;_AX=0x0f;geninterrupt(0x33);}void MouseGetXY()/*获取鼠标当前位置*/{_AX=0x03;geninterrupt(0x33);MouseX=_CX;MouseY=_DX;}void MouseStatus()/*鼠标按键情况*/{int x;int status;status=0;x=MouseX;if(x==MouseX&&status==0) /*判断鼠标是否移动*/{MouseGetXY();if(MouseX!=x)if(MouseX+50<482)status=1;}if(status)/*如果鼠标移动则重新显示鼠标*/{setfillstyle(1,0);bar(x,MouseY,x+sizex,MouseY+sizey);MouseOn(MouseX,MouseY);}}void Play(int r,int l){int ballX;int ballY=MouseY-R;int i,j,t=0;srand((unsigned long)time(0));do{ballX=rand()%477;}while(ballX<=107||ballX>=476);/*随机产生小球的位置*/ while(kbhit){MouseStatus();if(ballY<=(59-R)) /*碰上反弹*/dy*=(-1);if(ballX>=(482-R)||ballX<=(110-R)) /*碰左右反弹*/dx*=(-1);setcolor(YELLOW);circle(ballX+=dx,ballY-=dy,R-1);delay(2500);setcolor(0);/*将球移动后留下的印记用背景色覆盖*/circle(ballX,ballY,R-1);for(i=0;i<r;i++)for(j=0;j<l;j++) /*判断是否撞到墙*/if(t<l*r&&a[i][j].color==0 && ballX>=a[i][j].x && ballX<=a[i][j].x+20&& ballY>=a[i][j].y && ballY<=a[i][j].y+10){t++;dy*=(-1);a[i][j].color=1;setfillstyle(1,0);bar(a[i][j].x,a[i][j].y,a[i][j].x+20,a[i][j].y+10);}if(ballX==MouseX||ballX==MouseX-1||ballX==MouseX-2&&ballX==(MouseX+50+2)||ballX==(M ouseX+50+1)||ballX==(MouseX+50)) /*判断球落在板的边缘*/if(ballY>=(MouseY-R)){ dx*=(-1);dy*=(-1); /*原路返回*/}if(ballX>MouseX && ballX<(MouseX+50)) /*碰板反弹*/if(ballY>=(MouseY-R))dy*=(-1);if(t==l*r)/*判断是否将墙壁完全清除*/{ sleep(1);cleardevice();setcolor(RED);settextstyle(0,0,4);outtextxy(100,200,"Win");sleep(1);break;}if(ballY>MouseY){ sleep(1);cleardevice();setcolor(RED);settextstyle(0,0,4);outtextxy(130,200,"Game Over");sleep(1);break;}}dx=1,dy=1;/*dx、dy重新置1*/sizex=20,sizey=10;}void Rule()/*游戏规则*/{int n;char *s[5]={"move the mouse right or left to let the ball rebound","when the ball bounce the wall","the wall will disappear","when all the wall disappear","you will win!"};settextstyle(0,0,1);setcolor(GREEN);for(n=0;n<5;n++)outtextxy(150,170+n*20,s[n]);}void DrawMenu(int j)/*菜单中的选项*/{int n;char *s[4]={"1.Mession One","2.Mession two","3.rule","4.Exit Game"};settextstyle(0,0,1);setcolor(GREEN);for(n=0;n<4;n++)outtextxy(250,170+n*20,s[n]);setcolor(RED);/*选中那个菜单,那个菜单变为红色*/outtextxy(250,170+j*20,s[j]);}void MainMenu()/*主菜单*/{void JudgeIde();setbkcolor(BLACK);cleardevice();Ide=0,Key=0;DrawMenu(Ide);do{if(bioskey(1)) /*有键按下则处理按键*/{Key=bioskey(0);switch(Key)case Key_Down:{Ide++;Ide=Ide%4;DrawMenu(Ide);break;}case Key_Up:{Ide--;Ide=(Ide+4)%4;DrawMenu(Ide);break;}}}}while(Key!=Key_Enter);JudgeIde(); /*调用judgeIde*/}void JudgeIde(){switch(Ide){case 0:cleardevice();picture(6,15);MouseSetX(101,431); /*设置鼠标移动的范围*/ MouseSetY(MouseY,MouseY); /*鼠标只能左右移动*/ MouseSetXY(150,MouseY); /*鼠标的初始位置*/ Play(6,15);MainMenu();break;case 1:{cleardevice();picture(9,15);MouseSetX(101,431);MouseSetY(MouseY,MouseY);MouseSetXY(150,MouseY);Play(9,15);MainMenu();break;}case 2:{cleardevice();Rule();MainMenu();break;}case 3:cleardevice();settextstyle(0,0,4);outtextxy(150,200,"goodbye!");sleep(1);exit(0);}}void main(){int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,""); MainMenu();closegraph();}。
Mfc_PlayBall 项目说明书一、游戏的概述移动“球板”来驱动“小球”碰撞“砖块”。
游戏进行中采用幂函数积分,x。
玩家将体验量变和质变的过程。
Y2二、游戏的元素“玩家”、“小球”、“球板”、“砖块”、“Level”、“对白”、“积分”、“Timer”由此设计的类图:三、游戏的机制1、积分规则:一个回合之内,“小球”碰撞第1个“砖块”得1分,再碰撞第2个“砖块”得2分,第3个“砖块”得3分,第4个得8分,以此类推……,当积分超过一亿时,“小球”的个数加“1”。
m_iDestoryOnce++; // 碰撞到“砖块”,即“++”m_iDestoryOnce =0; // 一个回合结束,碰撞到“球板”m_dwScore +=pow( (int)2,(float)m_iDestoryOnce -1 );if ( m_dwScore >=100000000 ){if( m_bIsStart ==TRUE )::SendMessage( m_hWnd, WM_KEYDOWN, VK_SPACE, NULL );char str[128];sprintf_s( str, "积分“Score = %d”过亿。
\n\n %d 亿+ +", m_dwScore, m_dwHundredMillion );MessageBox( str, "恭喜恭喜" );m_dwScore =m_dwScore %100000000;int add =m_dwScore /100000000;m_ball.m_iCounter +=add;m_dwHundredMillion +=add;m_iDestoryOnce =0;}CString strScore;strScore.Format( " Score : %d +%d 亿" ,m_dwScore, m_dwHundredMillion );( ( CMainFrame* )GetParent() )->m_wndStatusBar.SetPaneText( 2, strScore );2、玩家开始游戏时玩家有3个“小球”,积分为“0”。
C语言课程设计--桌球一、实验内容玩家通过移动球杆到单一的桌球处碰撞桌球运动,当桌球于一定速度通过桌面右方的同样颜色的球洞后,则该球进洞,在桌面左边重新分配新球开始游戏。
要求如下:1.游戏的初始界面如下,其中左边有一个体积较小的桌球,其x方向位置固定,y方向位置随机。
右边有八个颜色不一样,体积较大的球洞,游戏的目的是使用左边的桌球以一定小的速度穿过右边同样颜色的球洞就算桌球进洞,然后重新分配新球。
2.球杆随鼠标运动而运动,单击球杆,桌球获取一个前进的速度同时往前有运动。
桌球的前进方向有一段指示球运动方向的虚线。
3.右侧的球洞以移动的频率不断更换位置。
球洞的x左边不变,更换的是y坐标的位置,即每一轮中每一个球洞移动到下一个球洞的位置,最下边的球洞则移动到第一个球洞位置。
所以的这些动作都要在一个频率的时间里面完成。
因此当游戏一某一个频率进行的时候,右侧的球洞就能实现循环变化的效果。
4.球碰撞到桌面边沿的时候以发射角的角度弹走。
5.球进洞的判断是球以一定的速度通过同样颜色的球洞时,桌球消失,表明球进洞了,此时左侧随机生成新球。
球运动到球洞的速度不能太大,太大则球直接运动过球洞,如果速度太小,则球同样不进洞。
二、实验指南实验一开始实验【实验任务】步骤一、打开FunCode,创建一个的C++语言项目;步骤二、导入snooker模板。
【实验思路】按实验指导完成。
【实验指导】1、打开FunCode,点击“项目”菜单,选择“创建C语言工程”注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。
2、点击菜单“项目”中的“导入地图模块”,如图一。
跳出一个对话框,选中“snooker”模板,点击“导入到工程”按钮,如图二。
图一图二3、导入成功后的,界面如下图所示:实验二初始化桌球和球杆同时在球的前进方向画虚线【实验内容】步骤一、设置球的初始位置,球杆的初始朝向步骤二、设置球杆随鼠标移动步骤三、在球的前进方向上画虚线【实验思路】在设置初始球的时候要考虑随机本局的球数字,如果和上一局的不一致,则将上局的球拉到屏幕外,将本局的球拉到屏幕内,在Y向上随机摆放球的出生位置,只随机Y方向坐标,不动X方向。
计算机程序设计(C语言)课程设计报告题目:用C语言实现弹球游戏学院:专业:班级:姓名:指导教师:设计日期:一、选题背景:我们日常生活中的小游戏机、手机上,经常会有贪吃蛇、拼图游戏、俄罗斯方块、推箱子、弹球等小游戏,这些小游戏看起来复杂,其实根据我们所学的知识,利用C 语言亦可编译程序来实现。
下面就是通过C语言程序实现弹球游戏。
二、设计思想:游戏正式开始前设计初始图形,正中‘BASKETBALL’设为较大图形,颜色不断变换,下边‘ANY KEY……’设为绿色。
玩者按任意键游戏开始。
游戏开始后,背景为白色,桌面上端为一排彩色方块,下边有一个黄色小球和红色球拍,小球只做直线运动,碰到反弹壁反弹。
小球碰到球拍反弹。
玩者用←和→控制球拍的左右运动。
桌面下端为出界区,小球落进出界区游戏结束。
游戏结束界面:若任务未完成结束游戏则出现‘YOU ARE SILLY!’,图形自动跳转到‘GAME OVER’图形,然后自动关闭。
若任务完成游戏结束或强制结束,则出现‘GAME OVER’图形,然后自动关闭。
三、主要解决问题的方法及技术关键1、主要问题及解决方法:用“graphics.h”库存函数实现图形的初试化绘制。
并利用setcolour()( 显示当前要画线颜色)和循环语句实现图形的颜色随时间周期变换。
利用kbhit()(检查当前按下键)实现游戏的开始与否的控制,若不按键程序将处于无限循环状态,若按任意键程序将向下执行。
同时kbhit()实现球运动的控制。
利用cleardevice()实现清除图形功能。
爆裂艺术效果的实现:利用setcolour(),putpixel()(在指定位置画一点)delay()(暂停)以及for 循环实现爆裂效果。
2.技术关键:delay()的暂停功能。
cleardevice()的擦出整个图形屏幕。
closegraph()的关闭图形功能。
四、程序流程图:真五、程序清单:#include"stdio.h"#include"graphics.h"#include"stdlib.h"#include"bios.h"#define LEFT 0x4b00#define RIGHT 0x4d00#define ESC 0x011b/*存放方块的信息*/struct box{int m; /*方块右上角横坐标*/int n; /*方块右上角纵坐标*/int key; /*方块是否被击中过,1表示被击中过,0表示没有被击中过*/}a[10][20];int k; /*用来判断游戏的结束方式,0:按ESC退出,1:正常退出*//*初始化图形*/void initgr(){int gd=DETECT,gm;initgraph(&gd,&gm,"");}/*画出初始图*/void picture(){int m,n,i,color;setcolor(GREEN);outtextxy(0,0,"ANY KEY ...");while(!kbhit()){settextstyle(0,0,6);for(i=1;i<=15;i++){setcolor(i);outtextxy(150,180,"hello!!!");delay(1000000);}}cleardevice();setbkcolor(WHITE);setfillstyle(SOLID_FILL,RED);bar(300,400,348,404);/*画屏幕上端的方块*/randomize();for(n=0;n<=150;n=n+15)for(m=0;m<=640;m=m+32){color=((rand()%5)+2);setfillstyle(1,color);bar(m,n,m+32,n+15);}sleep(1);}/*关闭图形*/void closegr(){cleardevice();closegraph();}/*游戏结束*/void end(){cleardevice();setbkcolor(3);switch(k){case 1:setcolor(RED);settextstyle(0,0,4);outtextxy(130,200,"YOU ARE FALUIRE !!!"); sleep(1);cleardevice();settextstyle(0,0,7);outtextxy(80,220,"Again!!!");sleep(2);break;case 0:setcolor(RED);settextstyle(0,0,4);outtextxy(180,220,"Game Over!!!");sleep(2);break;}}/*爆裂效果*/void bomb(int m,int n){int r1,i;int pointM,pointN,point_color;setcolor(YELLOW);for(r1=1;r1<=4;r1++){circle(m+1,n+1,r1);delay(1000000);}delay(3000000);setcolor(RED);for(r1=1;r1>=6;r1++){circle(m+1,n+1,r1);delay(1000000);}delay(3000000);setcolor(BLUE);for(r1=6;r1>=1;r1--){circle(m+1,n+1,r1);delay(1000000);}for(i=1;i<=50;i++){point_color=rand()%15;pointM=(rand()%32+m);pointN=(rand()%15+n);putpixel(pointM,pointN,point_color);delay(1000000);}setfillstyle(1,BLUE);bar(m,n,m+32,n+15);}/*开始游戏*/void move(){int key;int i,j,boxM,boxN;int ballM,ballN,dM=1,dN=1;int barM=300,barN=400,m,n;randomize();ballM=rand()%620+10;ballN=rand()%200+190;for(;;) /*受侦察的指点....*/ {while(!kbhit()){if((ballM<=10)||(ballM>=630))dM=dM*(-1);if((ballN<=10)||(ballN>=470))dN=dN*(-1);setcolor(YELLOW);circle(ballM+=dM,ballN-=dN,5);setfillstyle(SOLID_FILL,YELLOW);floodfill(ballM,ballN,YELLOW);delay(6666);setcolor(BLUE);circle(ballM,ballN,5);setfillstyle(SOLID_FILL,BLUE);floodfill(ballM,ballN,BLUE);/*判断是否击中方块*/for(boxN=0,i=0;boxN<=150;boxN=boxN+15,i++)for(boxM=0,j=0;boxM<=640;boxM=boxM+32,j++){if((ballM<boxM+32)&&(ballM>boxM)&&((ballN<=(boxN+20))&&(ballN>=boxN-5) )&&(a[i][j].key==0)){dN=dN*(-1);setfillstyle(1,BLUE);bar(boxM,boxN,boxM+32,boxN+15);bomb(boxM,boxN);a[i][j].key=1;break;}}/*判断反弹或出界*/if((ballM>=barM)&&(ballM<=barM+60)&&(ballN>=390))dN=dN*(-1);if(((ballM<barM)||(ballM>barM+60))&&(ballN>410)){sleep(1);k=1;return;}}key=bioskey(0);m=barM;n=barN;if(key==LEFT){barM-=66;setfillstyle(SOLID_FILL,BLUE); bar(m,n,m+60,n+4);setfillstyle(SOLID_FILL,RED); bar(barM,barN,barM+60,barN+4); }else if(key==RIGHT){barM+=66;setfillstyle(SOLID_FILL,BLUE); bar(m,n,m+60,n+4);setfillstyle(SOLID_FILL,RED); bar(barM,barN,barM+60,barN+4); }else if(key==ESC){k=0;break;}}}void main(){int i,j,m,n;for(i=0,n=0;i<10;i++){m=0;for(j=0;j<20;j++){a[i][j].m=m;a[i][j].n=n;a[i][j].key=0;m=m+32;}n=n+15;}initgr();picture();move();end();closegr();}六、设计结果说明1、设计优点:能够手动控制游戏结束,实现人机互动,操作比较简单。
C语言双人弹球课程设计一、课程目标知识目标:1. 理解C语言中结构体、数组、函数的基本概念及其在编程中的应用。
2. 掌握C语言中逻辑控制语句,如if-else、循环等,实现对弹球运动的控制。
3. 学会使用C语言进行基本的图形绘制,模拟弹球运动轨迹。
技能目标:1. 能够运用C语言编写一个双人弹球游戏程序,实现基本的游戏逻辑。
2. 培养学生的编程思维和问题解决能力,学会分析并优化程序性能。
3. 提高学生的团队协作能力,通过分组合作完成课程设计任务。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发学习热情,形成主动探究的学习态度。
2. 培养学生的创新意识,鼓励尝试不同的解决方案,勇于克服困难。
3. 增强学生的团队协作精神,学会互相帮助、共同进步。
本课程针对高年级学生,他们在之前的学习中已掌握C语言基本知识,具备一定的编程基础。
本课程设计旨在巩固学生的基础知识,提高编程实践能力,培养创新意识和团队协作精神。
课程目标明确,可衡量,便于教学设计和评估。
在教学过程中,教师需关注学生的个体差异,给予个性化指导,确保每个学生都能在课程中取得进步。
二、教学内容1. C语言基础知识回顾:结构体、数组、函数的定义和使用。
2. 图形编程基础:利用C语言进行图形绘制,引入弹球游戏界面设计。
3. 逻辑控制语句:if-else、循环等在弹球游戏中的应用。
4. 函数封装与模块化编程:将游戏功能划分为多个函数,实现模块化设计。
5. 双人弹球游戏设计:- 游戏规则及逻辑设计:设定游戏玩法,实现双人互动。
- 程序编写与调试:分组合作,编写代码,调试程序。
6. 程序优化与性能分析:分析程序性能,优化代码,提高运行效率。
7. 课程总结与展示:总结学习成果,展示优秀作品,进行点评和交流。
教学内容依据课程目标,结合教材相关章节进行组织。
教学大纲明确,包括基础知识回顾、图形编程、逻辑控制、函数封装、游戏设计、程序优化等模块。
教学进度安排合理,确保学生能够逐步掌握C语言编程技巧,完成双人弹球游戏的设计与实现。
c 弹球小游戏课程设计一、课程目标知识目标:1. 学生能理解并掌握c语言中的基本语法,如变量定义、循环结构和条件判断。
2. 学生能运用c语言编写一个简单的弹球小游戏,理解游戏开发的基本流程。
3. 学生能理解并应用物理知识,如重力、速度和碰撞等,使游戏更真实。
技能目标:1. 学生能够熟练运用c语言进行程序设计,培养编程解决问题的能力。
2. 学生通过编写弹球小游戏,提高逻辑思维和问题分析能力。
3. 学生能运用所学知识,进行团队协作,共同完成一个完整的游戏项目。
情感态度价值观目标:1. 学生在编程过程中,培养耐心、细心和勇于克服困难的品质。
2. 学生通过团队合作,学会互相帮助、沟通和分享,增强团队意识。
3. 学生在创作游戏的过程中,激发创新精神,体会编程带来的乐趣。
课程性质:本课程为实践性课程,旨在让学生通过动手实践,掌握c语言编程技能,并将所学知识应用于实际项目中。
学生特点:学生具备一定的计算机操作能力,对编程有一定兴趣,但可能对c 语言语法和游戏开发了解较少。
教学要求:教师需引导学生从简单到复杂,逐步掌握c语言编程技巧,注重实践操作,鼓励学生积极思考、主动探索,培养其解决问题和团队协作能力。
通过本课程,使学生将所学知识转化为具体的学习成果,达到课程目标。
二、教学内容1. c语言基础知识回顾:变量定义、数据类型、运算符、表达式、基本输入输出等。
2. 控制结构:顺序结构、分支结构(if-else)、循环结构(for、while)。
3. 函数:函数定义、调用、参数传递、返回值。
4. 数组:一维数组、二维数组、数组操作。
5. 物理知识:重力、速度、加速度、碰撞检测。
6. 游戏设计:游戏框架搭建、角色控制、场景渲染、音效处理。
7. 编程实践:编写弹球小游戏,实现游戏基本功能,如球与挡板的碰撞、得分计算等。
教学内容安排和进度:第一课时:回顾c语言基础知识,讲解控制结构。
第二课时:介绍函数和数组,引导学生思考如何用数组表示游戏中的角色和场景。
c 弹球小游戏课程设计一、课程目标知识目标:1. 学生能理解并掌握c语言中基础的控制语句,如if条件语句、循环语句;2. 学生能够理解坐标系统的概念,并应用在编程中;3. 学生能运用基本的算术运算符进行坐标计算。
技能目标:1. 学生能够通过编写代码,实现一个简单的弹球小游戏;2. 学生能够运用调试工具检查并修正程序中的错误;3. 学生能够通过小组合作,进行编程任务的分工与协作。
情感态度价值观目标:1. 学生培养对编程的兴趣,增强学习信息技术的自信心;2. 学生通过编程活动,培养解决问题的能力和创新思维;3. 学生在小组合作中,学会倾听他人意见,培养团队合作精神。
二、教学内容本课程以c语言编程为基础,结合以下教学内容,实现弹球小游戏:1. c语言基础语法:变量定义、数据类型、运算符、表达式;2. 控制语句:if条件语句、for循环语句、while循环语句;3. 坐标系统:理解平面直角坐标系,坐标点的表示与计算;4. 函数定义与调用:编写自定义函数,实现代码模块化;5. 程序调试与优化:运用调试工具,查找并修正程序错误,提高程序性能。
教学内容安排与进度:第一课时:回顾c语言基础语法,介绍坐标系统,展示弹球小游戏案例;第二课时:讲解控制语句,引导学生编写弹球移动的逻辑代码;第三课时:学习函数定义与调用,指导学生将代码模块化;第四课时:小组合作,完成弹球小游戏的编写与调试;第五课时:展示学生作品,总结编程经验,进行教学评价。
教学内容与教材关联性:本课程教学内容与教材第三章“控制语句”和第四章“函数”密切相关,通过实现弹球小游戏,让学生在实践中掌握c语言编程的基本知识和技能。
三、教学方法本课程采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:教师通过生动的语言和实例,为学生讲解c语言编程的基本概念、语法和控制语句。
在讲授过程中,注重启发式教学,引导学生主动思考和提问。
2. 讨论法:针对编程中的问题,组织学生进行小组讨论,鼓励学生发表自己的观点和见解,培养学生的逻辑思维能力和解决问题的能力。
基于Android的简单小球弹跳游戏设计一、设计任务和要求✧设计小球弹跳游戏。
基本要求如下:✧欢迎界面✧登录界面✧简单小球弹跳游戏界面✧实现小球自动向各方向弹跳的功能✧扩展1:包含弹跳的声音✧扩展2:可控制小球的弹跳方向和力度二、设计方案根据设计任务要求,设计小球的弹跳游戏主要包括三大部分:欢迎界面、登陆界面、小球弹跳游戏界面。
三、设计代码1、欢迎界面<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@drawable/a2" >><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text=" "/><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/str_button1"android:id="@+id/button1"/><TextViewandroid:layout_width="80dp"android:layout_height="30dp"android:text=" "/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text=" 姓名:韦秀桃 "/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text=" 学号为:110263100103"/></LinearLayout>2、登陆界面<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:id="@+id/TextView01"android:background="@drawable/a2"android:layout_width="fill_parent"android:gravity="center_vertical"android:textSize="20dip"android:layout_height="600px"><LinearLayoutandroid:orientation="vertical"android:layout_width="fill_parent"android:layout_height="wrap_content" android:layout_weight="1"><TextViewandroid:layout_width="80dp"android:layout_height="30dp"android:text=" "/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content" android:text="请输入密码"/><EditTextandroid:id="@+id/edit1"android:layout_width="fill_parent" android:layout_height="wrap_content" /><Buttonandroid:text="登陆"android:id="@+id/button2"android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout></LinearLayout>3、小球弹跳游戏package android.hello;public class Movement extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(new MovementView(this));}}package android.hello;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.view.SurfaceHolder;import android.view.SurfaceView;public class MovementView extends SurfaceView implements SurfaceHolder.Callback {private int xPos;private int yPos;private int xVel;private int yVel;private int width;private int height;private int circleRadius;private Paint circlePaint;UpdateThread updateThread;public MovementView(Context context) {super(context);getHolder().addCallback(this);circleRadius = 10;circlePaint = new Paint();circlePaint.setColor(Color.BLUE);xVel = 2;yVel = 2;}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawColor(Color.YELLOW);canvas.drawCircle(xPos, yPos, circleRadius, circlePaint);}public void updatePhysics() {xPos += xVel;yPos += yVel;if (yPos - circleRadius < 0 || yPos + circleRadius > height) {if (yPos - circleRadius < 0) {yPos = circleRadius;}else{yPos = height - circleRadius;}yVel *= -1;}if (xPos - circleRadius < 0 || xPos + circleRadius > width) {if (xPos - circleRadius < 0) {xPos = circleRadius;} else {xPos = width - circleRadius;}xVel *= -1;}}public void surfaceCreated(SurfaceHolder holder) {Rect surfaceFrame = holder.getSurfaceFrame();width = surfaceFrame.width();height = surfaceFrame.height();xPos = width / 2;yPos = circleRadius;updateThread = new UpdateThread(this);updateThread.setRunning(true);updateThread.start();}public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}public void surfaceDestroyed(SurfaceHolder holder) { boolean retry = true;updateThread.setRunning(false);while (retry) {try {updateThread.join();retry = false;} catch (InterruptedException e) {}}}}package android.hello;import android.graphics.Canvas;import android.view.SurfaceHolder;public class UpdateThread extends Thread {private long time;private final int fps = 20;private boolean toRun = false;private MovementView movementView;private SurfaceHolder surfaceHolder;public UpdateThread(MovementView rMovementView) {movementView = rMovementView;surfaceHolder = movementView.getHolder();}public void setRunning(boolean run) {toRun = run;}public void run() {Canvas c;while (toRun) {long cTime = System.currentTimeMillis();if ((cTime - time) <= (1000 / fps)) {c = null;try {c = surfaceHolder.lockCanvas(null); movementView.updatePhysics();movementView.onDraw(c);} finally {if (c != null) {surfaceHolder.unlockCanvasAndPost(c);}}}time = cTime;}}}四、心得体会这次课程设计是我第一次接触安卓系统,第一次使用java语言,刚开始什么都不懂,在老师和同学的的帮助下,从最开始的连错误也不懂查找,到后来的初步了解,到最后的完成这次课程设计。
C语言弹球课程设计一、课程目标知识目标:1. 学生能理解C语言中结构体、函数和循环控制的使用,掌握弹球模拟程序的基本构成。
2. 学生能掌握C语言中图形处理库的基本使用,如SDL库,实现弹球动画的绘制。
3. 学生能理解物理知识在编程中的应用,如速度、加速度和碰撞处理。
技能目标:1. 学生能够运用C语言编写具有弹球功能的程序,实现弹球的移动、碰撞和得分。
2. 学生能够利用结构体和函数对代码进行模块化设计,提高代码的可读性和可维护性。
3. 学生能够通过调试和修改程序,优化弹球游戏的性能和用户体验。
情感态度价值观目标:1. 学生在课程学习中,培养对编程和计算机科学的兴趣,提高问题解决能力和创新意识。
2. 学生通过合作与交流,培养团队精神和沟通能力,学会分享和借鉴他人的经验。
3. 学生在探索弹球编程过程中,培养面对挑战的勇气和毅力,形成积极向上的学习态度。
课程性质:本课程为高年级信息技术课程,结合C语言编程和图形处理知识,以项目为导向,注重实践操作。
学生特点:学生具备一定的C语言基础,对编程有较高的兴趣,具有较强的动手能力和探究精神。
教学要求:教师需引导学生掌握弹球程序的核心算法,关注代码规范和编程思维训练,以实现课程目标。
通过项目实践,培养学生综合运用知识解决问题的能力。
二、教学内容1. C语言基础回顾:数据类型、运算符、控制结构(特别是循环控制)。
2. 结构体的定义和使用:以弹球游戏中对象(如球、挡板)的表示为例。
3. 函数的定义和调用:重点讲解模块化编程,实现不同功能的分离。
4. SDL图形库的介绍与使用:基本绘图函数、事件处理、窗口和渲染器的创建与管理。
5. 弹球游戏核心算法:- 球的移动:速度和加速度的计算。
- 碰撞检测:球与挡板、球与墙的碰撞处理。
- 游戏逻辑:得分、生命值等规则的设计与实现。
6. 代码调试与优化:性能提升、用户体验改进。
7. 项目实战:- 分组进行项目设计,明确分工和协作。
- 按照教学大纲逐步完成项目,每个阶段进行代码评审和反馈。
小球撞击试验报告试验目的:实现两个质量,速度不同的小球碰撞的物理过程。
试验要求:可以任意输入两小球的速度和质量。
试验实现过程:首先要有两个不同的小球,分别命名为小球A,小球B,通过画图软件画两个不同颜色的立体小球。
其格式为.bmp。
通过VC++的位图引入加载到资源当中。
小球引入到资源后,就该实现两球的碰撞。
第一个要问题是怎样把引入的小球在窗口中显示。
通过classwizard在视图类加载消息响应函数oncreat,创建一个窗口,用位图显示的语句使小球在窗口中显示。
小球在窗口显示之后就该让小球动起来。
小球的运动本质上是通过时间让小球的坐标不断的改变。
这就该想到用classwizard在视图类添加消息响应函数timer,通过制定一个时间定时器调用时间函数timer。
这步做好之后,就该考虑怎样实现小球碰撞的物理过程,利用物理公式来实现这个过程。
然后添加背景图片。
代码如下:1.声明视图类变量。
public:double mass_1,mass_2;double v1,v2;double m_ptpos1_x,m_ptpos1_y,m_ptpos2_x,m_ptpos2_y;CBitmap m_Bitmap,m_Bitmap1,m_Bitmap2;double n_FrameWidth,n_FrameWidth1,n_FrameWidth2;double n_FrameHeight,n_FrameHeight1,n_FrameHeight2;int i;CBrush m_BKBrush;2添加资源。
3.初始化函数。
mass_1=0;mass_2=0;v1=0;v2=0;i=0;CBitmap *pBitmap=new CBitmap;ASSERT(pBitmap);pBitmap->LoadBitmap(IDB_BITMAP4);m_BKBrush.CreatePatternBrush(pBitmap);delete pBitmap;4. 添加消息响应函数OnCreate。
迷你撞球游戏/*打砖块程序*/#include<dos.h>#include<stdio.h>#include<graphics.h>#include<math.h>union REGS regs;unsigned int zhuan[5];void quitgame();void wingame();int Msinit();void Setmouse(int left,int right,int top,int buttom); int Msread(int *xp,int *yp,int *bup);void Draw(int x,int y,int sizex,int sizey);void mycircle(int x, int y, int r, int color);{int mode=VGAHI,driver=VGA;char ch;unsigned int l;int i,gi,gj,j,flag=1;/*i,j是循环变量,flag是标记变量,-1:向x负半轴移动,+1:向x 正半轴移动*/double qx,qy,k,b=0.0,speech=0.4,x,y;double r=2.0,bx=60.0,byy=270.0;double pianx=100.0,piany=100.0,tx=20.0,ty=10.0,jx=2.0,jy=2.0;int mx=0,my=0,mb,sum;/*sum纪录砖块的数目*/FILE * p;if((p = fopen("record.dat", "r")) == NULL){p=fopen("record.dat","w");fprintf(p,"0 0 0 0 0\n");rewind(p);}fclose(p);registerbgidriver(EGAVGA_driver);initgraph(&driver,&mode,"C:\\tc");setbkcolor(BLUE);Setmouse((int)(pianx+1+bx/2),(int)((tx+jx)*8+pianx-1-bx/2),(int)byy+piany,(int) byy+piany);star: cleardevice();/*程序重载的介入点*/setcolor(RED);outtextxy(30,20,"^_^ Welcome to Play Hitting Brick Game! ^_^");sum=0;qx=100.0+pianx-10;qy=180.0+pianx-10;k=0.33;setcolor(7);rectangle((int)(pianx-2),(int)(piany-2),(int)((tx+jx)*8+2+pianx),302+piany); setcolor(1);rectangle((int)(pianx-1),(int)(piany-1),(int)((tx+jx)*8+1+pianx),301+piany);/*读取盘面情况*/p=fopen("record.dat", "r");for(i=0;i<5;i++)fscanf(p,"%x ",&zhuan[i]);fclose(p);/*画砖块*/for(i=0;i<5;i++){l=1;for(j=0;j<16;j++){if((zhuan[i]&l)==0){Draw((int)((jx+tx)*((16*i+j)%8)+pianx+jx),(int)((jy+ty)*((int)((16*i+j)/8))+piany +jy),(int)tx,(int)ty);sum+=1;}l=l*2;}}gotoxy(5,4);printf("Press any key to start game...Q key to quit...");ch=getch();if(ch=='q'||ch=='Q')quitgame();else{gotoxy(5,4);printf(" "); }for(;;){setfillstyle(1, 0);bar(mx-bx/2,my,mx+bx/2,my+5);Msread(&mx, &my, &mb);Draw(mx-bx/2,my,bx,5);setcolor(0);mycircle(qx,qy,r,0);/*判断求是否反弹*/if(qx-r<=pianx+1 || qx+r>=(tx+jx)*8+pianx-1) {flag=-flag;k=-k;}if(qy-r<=piany+1)k=-k;for(gi=0;gi<5;gi++){l=1;for(gj=0;gj<16;gj++){if((zhuan[gi]&l)==0){j=(16*gi+gj)/8;i=(16*gi+gj)%8;x=(jx+tx)*i+jx+tx/2+pianx;y=(jy+ty)*j+jy+ty/2+piany;/*边判断1*/if(qy>=y-ty/2 && qy<=y+ty/2 &&(pow(qx+r-x+tx/2,2)<1 || pow(qx-r-x-tx/2,2)<1)){flag=-flag;k=-k;zhuan[gi]=zhuan[gi]|l;sum-=1;if(sum==0)wingame();setfillstyle(1, 0);bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)*j+piany+j y+ty);}else/*边判断2*/if(qx>=x-tx/2 && qx<=x+tx/2 &&(pow(qy+r-y+ty/2,2)<1 || pow(qy-r-y-ty/2,2)<1)){k=-k;zhuan[gi]=zhuan[gi]|l;sum-=1;if(sum==0)wingame();setfillstyle(1, 0);bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)*j+piany+j y+ty);}else/*角判断*/if(pow(qx-x+tx/2,2)+pow(qy-y+ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y+ty/2,2)<=r*r ||pow(qx-x+tx/2,2)+pow(qy-y-ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y-ty/2,2)<=r*r){flag=-flag;zhuan[gi]=zhuan[gi]|l;sum-=1;if(sum==0)wingame();setfillstyle(1, 0);bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)*j+piany+j y+ty);}}l=l*2;}}/*棍棒的反弹*/if(qx<=mx+bx/2 && qx>=mx-bx/2 && pow(qy+r-my,2)<1){k=-(k/pow(k*k,0.5))*(0.3*bx/(pow(pow(qx-mx,2),0.5)+0.000001));}if((int)(qy+r)>my+0.5){gotoxy(5,5);printf("You have lost the game!Press any key to restart..."); getch();goto star;}b=qy-qx*k;if(flag==1)qx=qx+speech/pow(1.0+k*k,0.5);if(flag==-1)qx=qx-speech/pow(1.0+k*k,0.5);qy=qx*k+b;/*计算球心坐标*/setcolor(14);mycircle((int)qx,(int)qy,r,14);delay(1);if(mb==1){gotoxy(5,5);printf("You have lost the game!Press any key to restart..."); getch();goto star;}}}void quitgame(){closegraph();window(1,1,80,25);textbackground(BLACK);textcolor(LIGHTGRAY);clrscr();exit(0);}void wingame(){gotoxy(5,4);printf("You have won the game! Press any key to quit..."); getch();quitgame();}/*这个函数用于实现鼠标的初始化*/int Msinit(){int recored;regs.x.ax=0;int86 (0x33, & regs, & regs);recored=regs.x.ax;if(recored==0){printf("Mouse not foundd or Mouse driver not installed.\n"); return 0;}elsereturn recored;}/*下面的函数用于实现设置鼠标的移动范围*/void Setmouse(int left,int right,int top,int buttom){regs.x.ax=7;regs.x.cx=left;regs.x.dx=right;int86(0x33,& regs,& regs);regs.x.ax=8;regs.x.cx=top;regs.x.dx=buttom;int86(0x33,& regs,& regs);}/*下面这个函数用于实现鼠标的读取*/ int Msread(int *xp,int *yp,int *bup){int xnew,ynew,ch;if(kbhit()) return getch();regs.x.ax=3;int86(0x33,& regs,& regs); xnew=regs.x.cx;ynew=regs.x.dx;*bup=regs.x.bx;*xp=xnew;*yp=ynew;return -1;}/*下面这个子程序是完成描绘一个按钮*/void Draw(int x,int y,int sizex,int sizey)/* x, y为左上角坐标sizex,sizey为长和宽*/{int sizx=sizex-1;int sizy=sizey-1;setcolor(15);/*这里最好用白色*/line(x,y,x+sizx-1,y);line(x,y+1,x+sizx-2,y+1);line(x,y,x,y+sizy-1);line(x+1,y,x+1,y+sizy-2);setcolor(8);/*这里最好用深灰色*/line(x+1,y+sizy,x+sizx,y+sizy);line(x+2,y+sizy-1,x+sizx,y+sizy-1);line(x+sizx-1,y+1,x+sizx-1,y+sizy);line(x+sizx,y+2,x+sizx,y+sizy);setcolor(7);/*这里最好用灰色*/putpixel(x,y+sizy,3);putpixel(x+1,y+sizy-1,3);putpixel(x+sizx,y,3);putpixel(x+sizx-1,y+1,3);setfillstyle(1, 7);/*这里最好用灰色,设置填充模式*/ bar(x+2,y+2,x+sizx-2,y+sizy-2);}void mycircle(int x, int y, int r, int color){setcolor(color);circle(x,y,r);setfillstyle(SOLID_FILL,BLUE);floodfill(x,y,color);}。