江天成-《打砖块游戏》PPT课件
- 格式:ppt
- 大小:96.00 KB
- 文档页数:3
打砖块游戏设计报告(共五则)第一篇:打砖块游戏设计报告*************面向对象方法及程序设计课程设计报告打砖块游戏的设计与开发分组:第九组组员姓名:******************** 班级:*********** 指导教师: ****完成日期:2014年 06月21日面向对象方法及程序设计课程设计题目:打砖块游戏的开发与设计为了加强计算机科学与技术专业学生的学科实践能力,巩固和强化所学专业知识,提高学生的学习兴趣,本课程设计实践周特别强调理论与实践相结合,利用所学专业知识,进行实践项目的开发,提高学生的实践编程能力和技术文档的写作能力,提高学生的学习兴趣,为后期的学习奠定一定的实践基础。
目录第一章课程设计的目的与要求.............................................................................................3 1.1课程设计目的................................................................................................................3 1.2 课程设计的实验环境...................................................................................................3 1.3 课程设计的预备知识 (3)1.4课程设计要求 (3)1.4.1人员分配,形成课程设计小组............................................................................3 1.4.2 分析课程设计的题目要求.................................................................................3 1.4.3写出详细的设计说明............................................................................................3 第二章课程设计内容.............................................................................................................3 2.1设计思路 (3)2.2功能介绍 (4)2.3相关素材 (4)2.4程序整体设计说明........................................................................................................4 2.5程序部分源代码及注释................................................................................................4 2.6程序结构流程图 (6)2.7程序代码 (6)2.8运行程序 (17)第三章课程设计总结 (17)/ 19 面向对象方法及程序设计课程设计第一章课程设计的目的与要求1.1课程设计目的本次课程设计是计算机科学与技术专业最重要的实践环节之一。
——《打砖块》学院:班级:学号:姓名:一.游戏设计规则游戏开始时,小球会停在挡板正中间,且此时挡板可左右自由移动,当按下空格键后小球会弹出,并在程序设定的区域内不停的碰撞反弹。
当小球碰到墙壁、挡板和砖块时,均会以相反的速度反弹,并且砖块被碰撞后会自动消失。
挡板可左右移动以接住小球,若小球没有被接住,超出指定区域下边缘,则程序会自动提示“游戏结束”,点击“确定”后退出程序。
当所有的砖块均消失时,程序会弹出提示“恭喜你,你赢了”。
二.游戏设计思路整个游戏可以分为三个类:小球类、挡板类和砖块类。
其中最简单的当然是挡板了,在回调函数中增加“WM_KEYDOWN”的按键消息,在里面编写控制挡板移动的代码,挡板的移动是通过“上、下、左、右”四个键来实现的。
砖块在整个程序中负责两件事情,其一是程序初始化时随着小球和挡板出现在游戏界面中,再就是被小球碰到后消失。
控制砖块出现与否是通过一个bool变量“blockExist”来实现的,当该变量为“true”时,就将砖块贴到目标DC上,否则就不贴。
由于砖块数量很多,故可以用一个for循环来实现,所有的砖块用的都是一张图片,而变化的只是砖块的坐标。
本游戏中最复杂的要数小球了,因为小球要涉及到很多碰撞检测和反弹,而且这其中还和砖块、挡板有联系。
小球涉及到的碰撞有:小球与墙壁碰撞、小球与挡板碰撞、小球与砖块碰撞。
碰撞检测实际上是检测小球的坐标是否进入了某个特定的区域,若进入了,则小球要反弹;否则,按原来的路线继续前进。
小球能不断的反弹,事实上靠的是小球速度方向的改变,对于小球而言,它能出现在某个点上,是它所在坐标系中的坐标导致的。
若设小球的坐标为(x_ball,y_ball),其速度为水平:vx,竖直:vy,将其坐标与速度之间建立赋值关系,即:x_ball+=vx,y_ball-=vy。
只要对其坐标进行相对应的计算,就能控制小球的反弹了。
三.游戏主要代码int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){// TODO: Place code here.MSG msg;HACCEL hAccelTable;// Initialize global stringsLoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadString(hInstance, IDC_APIDEMOGAME, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance);// Perform application initialization:if (!InitInstance (hInstance, nCmdShow)){return FALSE;}hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_APIDEMOGAME);// Main message loop:while (GetMessage(&msg, NULL, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}}return msg.wParam;}A TOM MyRegisterClass(HINSTANCE hInstance){WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = (WNDPROC)WndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_APIDEMOGAME);wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = (LPCSTR)IDC_APIDEMOGAME;wcex.lpszClassName = szWindowClass;wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);return RegisterClassEx(&wcex);}BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){hInst = hInstance; // Store instance handle in our global variablehWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW ,400, 100, 400, 500, NULL, NULL, hInstance, NULL);if (!hWnd){return FALSE;}ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);GetClientRect(hWnd,&rect); //取得内部窗口区域大小HBITMAP bmp;m_bg=(HBITMAP)LoadImage(NULL,"matlab.bmp",IMAGE_BITMAP,0,0, LR_LOADFROMFILE);m_board=(HBITMAP)LoadImage(NULL,"Board.bmp",IMAGE_BITMAP,0, 0,LR_LOADFROMFILE);m_ball=(HBITMAP)LoadImage(NULL,"ball_0.bmp",IMAGE_BITMAP,0,0, LR_LOADFROMFILE);bgDC=GetDC(hWnd);mdc=CreateCompatibleDC(bgDC);scDC=CreateCompatibleDC(bgDC);boardDC=CreateCompatibleDC(bgDC);ballDC=CreateCompatibleDC(bgDC);bmp=CreateCompatibleBitmap(bgDC,1024,745);SelectObject(mdc,bmp);SelectObject(scDC,m_bg);SelectObject(ballDC,m_ball);SelectObject(boardDC,m_board);int i;int bx=40,by=30; //控制砖块坐标//初始化砖块for(i=0;i<BN;i++){if(block[i].blockExist)block[i].bKilled=0;block[i].blockDC=CreateCompatibleDC(bgDC);m_block[i]=(HBITMAP)LoadImage(NULL,"block.bmp",IMAGE_BITMAP, 32,21,LR_LOADFROMFILE);SelectObject(block[i].blockDC,m_block[i]);block[i].rc.left=bx;block[i].rc.top=by;block[i].rc.right=block[i].rc.left+64;block[i].rc.bottom=block[i].rc.top+32;bx+=60;}return TRUE;}/********控制小球碰壁后反弹*************/ void DrawBall(){//计算X轴方向贴图坐标与速度x_ball+=vx;if(x_ball<=0){x_ball=0;vx=-vx;bHeng=false;}else if(x_ball>=rect.right-32){x_ball=rect.right-32;vx=-vx;bHeng=true;}//计算Y轴方向贴图坐标与速度y_ball-=vy;if(y_ball<=0){y_ball=0;vy=-vy;bZong=false;}/* if(y_ball>=rect.bottom-32){y_ball= rect.bottom-32;vy=-vy;}*/}/*****判断小球是否与砖块相碰*******/void CheckCrashBlock(){int i;float WIDTH = 96;float HEIGHT = 64;float tan=HEIGHT / WIDTH;//tanθ的值for(i=0;i<BN;i++){float x_ =(float)(x_ball - block[i].rc.left);float y_ =(float)(y_ball - block[i].rc.top);if((x_ball>=block[i].rc.left-32&&x_ball<=block[i].rc.right)&&(y_ball>=bloc k[i].rc.top-32&&y_ball<=block[i].rc.bottom)){block[i].bKilled=1;block[i].blockExist=false;num--;}else if(tan > abs(y_ / x_)) //在1、3区域{vx=-vx;x_ball=vx;}else //在2、4区域{vy=-vy;y_ball-=vy;}*/}}}/*****判断小球是否与挡板相碰******/void CheckCrashBoard(){if((y_ball+32)>y){if(((x_ball+64)>=x)&&(x_ball<=(x+128))){vy=-vy;y_ball-=vy;// vx=10;}else{MessageBox(hWnd,"游戏结束","提示",MB_OK|MB_ICONSTOP);exit(0);}}}void DrawMap(){GetClientRect(hWnd,&rect); //取得内部窗口区域大小int i;if(!win){BitBlt(mdc,0,0,1024,745,scDC,0,0,SRCCOPY);for(i=0;i<BN;i++){CheckCrashBlock();if(block[i].bKilled) //||block[i].blockDC==0continue;else{BitBlt(mdc,block[i].rc.left,block[i].rc.top,block[i].rc.right-block[i].rc.left,blo ck[i].rc.bottom-block[i].rc.top,block[i].blockDC,0,0,SRCCOPY);}}//挡板贴图BitBlt(mdc,x,y,128,32,boardDC,0,0,SRCCOPY);//小球贴图if(isKeyDown){DrawBall();CheckCrashBoard();}BitBlt(mdc,x_ball,y_ball,32,32,ballDC,32,0,SRCAND);BitBlt(mdc,x_ball,y_ball,32,32,ballDC,0,0,SRCPAINT);}//将整个图贴到目的DC上BitBlt(bgDC,0,0,1024,745,mdc,0,0,SRCCOPY);}DWORD WINAPI ThreadProc(LPVOID lpParameter ){void *ct = (void *)lpParameter;while(1){DrawMap();Sleep(80);}delete ct;return 0;}LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;void *ct;TCHAR szHello[MAX_LOADSTRING];LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);GetClientRect(hWnd,&rect);switch (message){case WM_COMMAND:wmId = LOWORD(wParam);wmEvent = HIWORD(wParam);// Parse the menu selections:switch (wmId){case IDM_START:{CreateThread(NULL,1024,ThreadProc,ct,0,NULL);}break;case IDM_STARTAGAIN:{x=300;y=300;x_ball=319;y_ball=270;DrawMap();}break;case IDM_ABOUT:DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}break;case WM_PAINT:{hdc = BeginPaint(hWnd, &ps);// TODO: Add any drawing code here...HBITMAPm_bottom=(HBITMAP)LoadImage(NULL,"matlab.bmp",IMAGE_BITMAP,102 4,745,LR_LOADFROMFILE);HDC hDC=CreateCompatibleDC(hdc);SelectObject(hDC,m_bottom);BitBlt(hdc,0,0,1024,745,hDC,0,0,SRCCOPY);DeleteObject(m_bottom);DeleteDC(hDC);ReleaseDC(hWnd,hdc);EndPaint(hWnd, &ps);}break;case WM_KEYDOWN:{switch(wParam){case VK_LEFT:x-=30;if(x<=0)x=0;if(!isKeyDown)x_ball-=30;break;case VK_RIGHT:x+=30;if(x>=rect.right-128)x=rect.right-128;if(!isKeyDown)x_ball+=30;break;case VK_SPACE:isKeyDown=1;break;}}break;case WM_DESTROY:PostQuitMessage(0);KillTimer(hWnd,1);DeleteObject(m_ball);DeleteDC(ballDC);DeleteObject(m_bg);DeleteObject(m_board);DeleteDC(scDC);DeleteDC(boardDC);ReleaseDC(hWnd,bgDC);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;}// Mesage handler for about box.LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){switch (message){case WM_INITDIALOG:return TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return TRUE;}break;}return FALSE;}四.游戏截图游戏截图(一)游戏截图(二)。
软件编程系列课讲义Scratch前置课第八讲:弹球打砖块一、教学目标1、重点掌握面向()方向,移动()步,碰到边缘就反弹,重复执行直到()、克隆【克隆(自己)、当作为克隆体启动时、删除此克隆体】的积木脚本使用2、掌握移到x()y()、在()和()之间取随机数的积木脚本使用。
3、学习侦测角色碰到舞台下边缘的方法。
二、主要程序脚本三、课堂准备四、上课流程本节课包括7步具体流程:(1)第1步为引入部分,可以通过让学生介绍自己喜欢的球类运动来引出弹球或者通过让学生介绍打砖块游戏来引入本节课的弹球打砖块游戏。
时长控制在10分钟内。
(2)第2步为角色功能分析,通过展示效果视频分析角色的动作,对任务进行拆分。
时长控制在5分钟内。
(3)第3-6步为项目制作,首先使用移到x()y()、面向()方向与在()和()之间取随机数,为小球设置初始位置和随机的出发方向;之后实现小球在舞台区自由弹跳,重点学习移到()步和碰到边缘就反弹;实现小球碰到挡板后弹起的效果;学习重复执行直到()积木,实现小球碰到下边缘后停止移动并停止游戏运行。
最后复习克隆相关积木,修改砖块角色的脚本,实现多个砖块在舞台区出现。
时长控制在70分钟内。
(3)第7步为总结与巩固,考察对本节课重点知识脚本和脚本逻辑的掌握。
时长控制在5分钟内。
五、主要程序说明【程序1-1描述】程序运行后,小球移到(-24,-6)的初始位置,面向130~270之间的方向。
【程序1-2描述】程序运行后,小球移到(-24,-6)的初始位置,向130~270之间的随机方向出发移动。
(在碰到舞台边缘时会沿边缘移动)【程序1-3描述】程序运行后,小球移到(-24,-6)的初始位置,向130~270之间的随机方向出发移动,碰到边缘时会反弹。
【程序1-4描述】程序运行后,小球移到(-24,-6)的初始位置,向130~270之间的随机方向出发移动,碰到边缘时会反弹,碰到挡板时会面向-40~40之间的任意方向,也就是向上弹起。
c 打砖块游戏课程设计一、课程目标知识目标:1. 学生能理解c语言中基础语法,如变量定义、循环结构和条件语句。
2. 学生能掌握c语言中图形绘制的相关库,如SDL。
3. 学生能了解游戏设计的基本原理和流程。
技能目标:1. 学生能运用c语言编写简单的打砖块游戏程序,实现游戏的基本逻辑。
2. 学生能通过编程实践,培养解决问题的能力和逻辑思维能力。
3. 学生能通过小组合作,提高沟通和协作能力。
情感态度价值观目标:1. 学生培养对编程和游戏开发的兴趣,激发学习动力。
2. 学生在游戏设计过程中,培养创新意识和审美观。
3. 学生通过游戏编程,认识到编程在实际应用中的价值,增强自信心。
课程性质:本课程为实践性较强的学科,结合了c语言编程和游戏设计。
学生特点:六年级学生具备一定的逻辑思维能力,对游戏有浓厚兴趣,但编程经验有限。
教学要求:注重理论与实践相结合,引导学生主动探索,培养合作精神。
通过分解课程目标为具体学习成果,使学生在完成课程后能独立编写简单的游戏程序,提高编程能力和团队合作能力。
二、教学内容1. c语言基础语法复习:变量定义、数据类型、运算符、循环结构(for、while)、条件语句(if-else)。
相关教材章节:第一章至第四章。
2. 图形绘制库SDL介绍:SDL库的安装与配置,基本绘图函数,事件处理。
相关教材章节:第八章图形与动画。
3. 游戏设计基本原理:游戏循环、游戏状态、游戏对象。
相关教材章节:第十章游戏设计与开发。
4. 打砖块游戏编程实践:a. 游戏框架搭建:窗口创建、游戏循环实现。
b. 游戏对象实现:砖块、球、挡板。
c. 碰撞检测:砖块与球的碰撞,球与挡板的碰撞。
d. 游戏逻辑:分数统计、生命值、游戏结束条件。
5. 小组合作项目:学生分组,合作完成一个具有创意的打砖块游戏。
教学内容安排与进度:第一周:c语言基础语法复习。
第二周:图形绘制库SDL介绍。
第三周:游戏设计基本原理学习。
第四周至第六周:打砖块游戏编程实践。
c++课程设计:打砖块游戏c++课程设计:打砖块游戏课程设计报告课程名称:面向对象程序设计C++ 设计题目:打砖块游戏专业:计算机科学与技术姓名:学号:指导教师:李晓虹2015 年12 月30 日一、需求分析本系统为一个用C#实现的为我们所熟悉的简单的打砖块游戏,该系统的具体功能如下: 能简便的开始游戏,游戏中的功能与日常我们所熟悉的游戏的功能一致,直到砖块全部打光过关和在砖块打光之前机会用完游戏结束功能; 当游戏结束时会自动弹出消息框提示本关所获得得分数; 当过关时会出现提示图片,点击进入下一关,下一关的方块位置和所组成的形状。
2、系统运行环境(1)硬件环境:计算机(2)软件环境:本系统的设计采用Visual C++6.0编写。
在Windows7环境下测试通过(3)本游戏软件在Windows平台下都可以运行三、总体设计3.1 开发与设计的总体思想 3.1.1 设计思路随着社会生活节奏的加快,越来越多的人,选择在自己的闲暇时间用玩游戏的方式去缓解自己的生活工作上的压力,所以,此款游戏的最终目标就是给游戏玩家带来一种精神上的放松以及娱乐消遣带来的快乐。
所以经过反复仔细的思考,我决定在用一种简单、大方的颜色作为游戏的背景颜色,并且里面插播一首轻音乐来使游戏者感到轻松、愉悦。
3.2功能介绍1) 游戏设计游戏开始时,小球会停在挡板正中间,而且此时小球可以随着挡板左右自由移动,当按下空格键小球弹出,并在程序设定的区域中不停碰撞反弹。
2) 当小球碰撞到墙壁、挡板、和砖块的时候,均以相同的速度反弹,并且砖块被碰撞后会以相同的速度反弹,并且当砖块被碰撞后会消失。
3) 挡板可以左右移动以接住小球,若超过三次没有接住,则游戏结束,按退出键退出,当所有砖块全部打光时则出现进入下一关的提示框,点击进入下一关。
四、详细设计4.1 结构流程图通过结构流程图可以清晰的了解该游戏的具体运行情况,如图所示:图4-1 4.2 游戏截屏4.2.1 游戏主界面图4-2 4.2.2 游戏开始界面图4-3 4.2.3 游戏失败界面图4-4 4.2.4 选择游戏关卡界面图4-5 5、结果分析经过测试,该系统能够正常运行,可以实现一些基本的操作,如控制方向键盘,对砖块进行左右方向的移动,以及可以进行关卡的设置,和最后结果的统计。
堆砌砖块时间:40~60分钟人数:4~12人.道具:·两组完全相同的砖块或者木块,每组50个.最好将砖块涂上不同颜色,这样每组砖块都是五彩缤纷的(增加混乱度).·给每个队员准备一副手套(用来搬运砖块).概述:这是一个相对简单的游戏,通过游戏大家能看出单向沟通的局限性.目的:1.证明队员们采用单向沟通,不能很好地交流.2.引导他们采用双向沟通完成同样的游戏.准备:除了将砖块涂上颜色外,还需要事先建好场地.将其中一组砖块构建的精细模型或物体,安置在队员们看不到的隔开区域;在隔开区听力所及范围的某个地方随意堆放另一组砖块.譬如,在两棵树之间挂一个毯子隔开第一组砖块,就是一个好办法.步骤:1.首先选一个志愿者,这并不是一个危险角色——他的全部工作只是说话.2.让志愿者和那组隐蔽的砖块呆在一起,尽量不让他看到第二组砖块;也不能让其他人知道你把他带到哪里去了.3.志愿者的工作是指导其他队友建造一个和自己面前的模型完全相同的结构.两处的砖块数量恰好相同.只允许单向沟通,这意味着志愿者只能向他们发指令,而其他队友不能说话.需要强制执行这条规则,当有人提问时,立即阻止他们交流.4.给队员们分发手套.要求他们听从志愿者的指挥.5.志愿者开始发口令.6.当队员们按着志愿者的要求建造模型后,还未来得及仔细观看到底造了一种什么结构时,立即向他们提出下列问题:你们只能单方面接受指令,有何感受?你们对此有什么情绪?你们认为自己建造的模型和最初的结构到底有多么相近?向那个只发指令的志愿者提下列问题:你认为自己的口令清楚吗?游戏过程中你有何感受?你认为队友构建的形状和自己想象的模型接近吗?7.让大家观看后,比较两个模型.8.笑过之后,引导大家就沟通.设想和指导技巧等问题展开讨论.9.再选一个志愿者,让他利用那组隐蔽砖块建造一个不同的模型或物件,看看队员们是否能从刚才的讨论中有所收获(为节省时间,你们讨论问题时,让助手重新建造一个模型).lO.重复游戏,但这次允许双向沟通,队员可以提问.两个模型这次在外观上应该比较相似.讨论问题示例:·单向沟通能够取得比较好的效果吗?·人们能够很好沟通的最根本因素是什么?安全:小心不要让砖块砸着队员的脚趾.变通:采用2套不同颜色混杂的剪纸图形代替砖块,两套剪纸的形状要完全相同.。
《打砖块》教学设计一、教学内容出自广东教育出版社的小学信息技术课本第三册(下)B版。
二、教材分析本课是本书的第10课,这节课主要是在于通过编写小游戏来激发学生学习的乐趣,通过Scratch软件制作的小游戏,来提高对Scratch的编程水平。
通过制作“打砖块”的小游戏,引导学生在制作的过程中,进一步了解Scratch编程的主要步骤:明确效果需求、选用哪些模块搭建脚本程序、具体如何搭建,为后面更精彩的课程打下基础。
三、学生分析通过认识Scratch、魔术表演、演奏音乐、漂亮的风车、幸运大转盘、猫抓老鼠等这几课的学习,让学生充分领略到了Scratch编程软件的乐趣。
本课教学对象是小学六年级学生。
此年龄段学生喜欢玩各类电子游戏,对游戏规则和游戏中途控制等相关内容感兴趣;虽然已对Scratch程序设计中程序脚本的制作方法有了初步了解,但对Scratch软件中众多的控件功能、作用还不了解,需要进一步的学习。
因此,这节课主要在于通过自己动手编写游戏的过程激发学生们对Scratch进一步的探索,留出足够的时间让学生动手操作,让学生感受Scratch软件的神奇,体验成功的乐趣。
四、教学目标1.知识与技能(1)掌握侦测鼠标位置方法。
(2)学会角色方向设置。
(3)学会设置停止和奖励机制。
2.过程与方法通过制作“打砖块”的游戏,了解Scratch软件创作游戏的步骤与过程,为以后的学习创作出更多有趣的动画与游戏。
3.情感态度与价值观通过小游戏的制作,让学生体验到成功的喜悦,进一步增进学习Scratch 的兴趣。
五、教学重难点教学重点:掌握侦测鼠标位置方法,学会方向设置。
教学难点:了解小球在舞台中运行时移动方向及在碰到物体后的反弹的方向。
六、教学准备多媒体课件、Scratch、《打砖块》游戏以及相关素材七、教学过程小球:碰到边缘会反弹碰到挡板会反弹(小球反弹的方向是多少?)砖块:被小球打中会消失底线:碰到颜色底线,游戏结束任务驱动20分钟一、任务一:1.导入打砖块的角色以及设计舞台2.搭建挡板的脚本,实现挡板跟随鼠标左右移动。