嵌入式网络协议及其应用开发课程设计报告_基于SDL的记忆小游戏_第1页
嵌入式网络协议及其应用开发课程设计报告_基于SDL的记忆小游戏_第2页
嵌入式网络协议及其应用开发课程设计报告_基于SDL的记忆小游戏_第3页
嵌入式网络协议及其应用开发课程设计报告_基于SDL的记忆小游戏_第4页
嵌入式网络协议及其应用开发课程设计报告_基于SDL的记忆小游戏_第5页
免费预览已结束,剩余10页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书学生信息系别计算机工程学院专业计算机科学与技术班级姓名学号课程设计信息课程名称嵌入式网络协议及其应用开发课程设计课程设计题目基于SDL的记忆小游戏课程设计时间学期第116周小组情况指导教师批改情况成绩评阅教师批改时间20112012学年第2学期1 .课程设计内容32 .课程设计目的33 .背景知识34 .工具/准备工作45 .设计步骤与方法45.1. 步骤1:在photoshop下编辑图片45.2. 步骤2:编译程序45.2.1. 步骤2.1:安装SDL45.2.2. 步骤2.2:linux下编译执行55.3. 步骤4:设计游戏代码56 .设计结果及分析177 .设计结论178

2、.问题及心得体会179 .对本设计过程及方法、手段的改进建议1710 .任务分配1711 .参考文献17第2页共17页课程设计报告1 .课程设计内容本课程设计的内容是设计一个基于SDL的记忆小游戏。2 .课程设计目的考察自己对课程的掌握程度,以及自己实际的动手能力,编程能力。3 .背景知识网络应用程序的基本实现方法网络游戏的基本实现原理SDL是SimpleDirectMediaLayer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer

3、)的接口,以及为OpenGLf各种操作系统之间提供了统一的标准接口以实现3D图形。SDL是一个跨平台的多媒体函数库,被用来设计成在低层访问音频,键盘,鼠标,的戈杆,基于OPENGL一个3D图象开发函数库)的3D硬件,和2D图象帧缓冲区。它被广泛的用于基于MPEG勺媒体播放软件,模拟器,和许多著名的游戏。SDL1一个跨平台的函数库,几乎支持现今所有平台:Linux,Windows,WindowsCE,BeOS,MacOS,MacOSX,FreeBSD,NetBSD,OpenBSDBSD/OS,Solaris,IRIX,andQNX。第3页共17页4 .工具/准备工作硬件:安装有windowsXP

4、以上版本的操作系统PC机一台建议配置是CPUPIV以上,512M内存以上,20G硬盘空间以上ARM2200教学实验开发平台软件:安装PhotoshopVMware6.0,debian5 .设计步骤与方法5.1. 步骤1:在photoshop下编辑图片5.2. 步骤2:编译程序5.2.1. 步骤2.1:安装SDL使用命令"sdl-config-cflags”来检查是否已安装SDL。如果没有安装,可以选择上网安装,或从源码包安装:上网安装:首先确保能联上internet(如果没有联上互联网可参考Linux相关实验常见问题.doc).并在命令行下输入:apt-getinstalllibsd

5、l1.2-dev第4页共17页libsdl-image1.2-devlibsdl-mixer1.2-devlibsdl-ttf2.0-dev。系统将自动完成安装从源码包安装:拷贝SDL-1.2.13.tar.gz至linux主机/home/test目录,然后执行命令:tarxvzftarxvzfSDL-1.2.13.tar.gzSDL-1.2.13.tar.gz,执行后,将在本地生成一个SDL-1.2.13的目录,进入这个目录,在root权限下,依次执行./configure;make;makeinstall5.2.2. 步骤2.2:linux下编译执行1) 将源文件sdl_simple_ga

6、me.cpp拷贝到linux主机2) 进行编译:g+-otsdl_simple_game.cpp-L/usr/lib-lSDL,生成可执行文件3)执行,在命令行输入./t5.3. 步骤4:设计游戏代码/Theheaders#include"SDL/SDL.h"#include"SDL/SDL_image.h"#include<string>#include<math.h>/ScreenattributesconstintSCREEN_WIDTH=721;constintSCREEN_HEIGHT=721;constintSCREE

7、N_BPP=32;/TheframespersecondconstintFRAMES_PER_SECOND=10;/ThedimenstionsofthestickfigureconstintFOO_WIDTH=180;constintFOO_HEIGHT=180;constintBegin=0;constintRun=1;constintEnd=2;boolflag44;inttu44;inttu_x;inttu_y;第5页共17页intm_x;intm_y;boolm_s;boollock=true;boolquit=false;intg_s;intend_y;/ThesurfacesSD

8、L_Surface*foo=NULL;SDL_Surface*screen=NULL;SDL_Surface*menu=NULL;SDL_Surface*begin=NULL;SDL_Surface*end=NULL;SDL_Surface*pai1=NULL;SDL_Surface*pai2=NULL;SDL_Surface*pai3=NULL;SDL_Surface*pai4=NULL;SDL_Surface*pai5=NULL;SDL_Surface*pai6=NULL;SDL_Surface*pai7=NULL;SDL_Surface*pai8=NULL;/Theeventstruct

9、ureSDL_Eventevent;/TheareasofthespritesheetSDL_Rectmenu_rect2;SDL_Rectend_rect2;/ThestickfigureclassFoo(private:/TheoffsetintoffSet;/Itsrateofmovementintvelocity;/Itscurrentframeintframe;public:/InitializesthevariablesFoo();第6页共17页/Handlesinputvoidhandle_events();/Showsthestickfigurevoidshow();SDL_S

10、urface*load_image(std:stringfilename)(/Theimagethat'sloadedSDL_Surface*loadedlmage=NULL;/TheoptimizedsurfacethatwillbeusedSDL_Surface*optimizedlmage=NULL;/Loadtheimageloadedlmage=IMG_Load(filename.c_str();/Iftheimageloadedif(loadedlmage!=NULL)(/Createanoptimizedsurfaceoptimizedlmage=SDL_DisplayF

11、ormat(loadedlmage);/FreetheoldsurfaceSDL_FreeSurface(loadedlmage);/lfthesurfacewasoptimizedif(optimizedlmage!=NULL)(/ColorkeysurfaceSDL_SetColorKey(optimizedlmage,SDL_SRCCOLORKEY,SDL_MapRGB(optimizedlmage->format,0,0xFF,0xFF);/Returntheoptimizedsurfacereturnoptimizedlmage;voidapply_surface(intx,i

12、nty,SDL_Surface*source,SDL_Surface*destination,SDL_Rect*clip=NULL)(/HoldsoffsetsSDL_Rectoffset;/Getoffsetsoffset.x=x;offset.y=y;第7页共17页/BlitSDL_BlitSurface(source,clip,destination,&offset);)/*voidset_clips()/ClipthespritesclipsRight0.x=0;clipsRight0.y=0;clipsRight0.w=FOO_WIDTH;clipsRight0.h=FOO_

13、HEIGHT;clipsRight1.x=FOO_WIDTH;clipsRight1.y=0;clipsRight1.w=FOO_WIDTH;clipsRight1.h=FOO_HEIGHT;clipsRight2.x=FOO_WIDTH*2;clipsRight2.y=0;clipsRight2.w=FOO_WIDTH;clipsRight2.h=FOO_HEIGHT;clipsRight3.x=FOO_WIDTH*3;clipsRight3.y=0;clipsRight3.w=FOO_WIDTH;clipsRight3.h=FOO_HEIGHT;clipsLeft0.x=0;clipsLe

14、ft0.y=FOO_HEIGHT;clipsLeft0.w=FOO_WIDTH;clipsLeft0.h=FOO_HEIGHT;clipsLeft1.x=FOO_WIDTH;clipsLeft1.y=FOO_HEIGHT;clipsLeft1.w=FOO_WIDTH;clipsLeft1.h=FOO_HEIGHT;clipsLeft2.x=FOO_WIDTH*2;clipsLeft2.y=FOO_HEIGHT;clipsLeft2.w=FOO_WIDTH;clipsLeft2.h=FOO_HEIGHT;clipsLeft3.x=FOO_WIDTH*3;第8页共17页clipsLeft3.y=F

15、OO_HEIGHT;clipsLeft3.w=FOO_WIDTH;clipsLeft3.h=FOO_HEIGHT;*/boolinit()/InitializeallSDLsubsystemsif(SDL_Init(SDL_INIT_EVERYTHING)=-1)returnfalse;/Setupthescreenscreen=SDL_SetVideoMode(SCREEN_WIDTH八SCREEN_HEIGHT,SCREEN_BPP,SDL_SWSURFACE);/Iftherewasanerrorinsettingupthescreenif(screen=NULL)returnfalse

16、;/SetthewindowcaptionSDL_WM_SetCaption("AnimationTest",NULL);/Ifeverythinginitializedfinereturntrue;voidCs_Index()srand(time(NULL);inti,j,x,y,t;intk=0;m_s=true;tu_x=-1;lock=false;quit=false;end_y=30;g_s=Begin;for(i=0;i<4;i+)for(j=0;j<4;j+)第9页共17页tuij=k;k+;k%=8;)for(i=0;i<4;i+)(for

17、(j=0;j<4;j+)(x=rand()%4;y=rand()%4;t=tuij;tuij=tuxy;tuxy=t;)memset(flag,0,sizeof(flag);menu_rect0.x=0;menu_rect0.y=0;menu_rect0.w=250;menu_rect0.h=120;menu_rect1.x=0;menu_rect1.y=120;menu_rect1.w=250;menu_rect1.h=120;end_rect0.x=0;end_rect0.y=300;end_rect0.w=720;end_rect0.h=30;end_rect1.x=0;end_r

18、ect1.y=360;end_rect1.w=720;end_rect1.h=30;)boolload_files()(第10页共17页/Loadthespritesheetfoo=load_image("foo.bmp");begin=load_image("begin.bmp");end=load_image("end.bmp");menu=load_image("menu.bmp");pai1=load_image("pai1.bmp");pai2=load_image("pai

19、2.bmp");pai3=load_image("pai3.bmp");pai4=load_image("pai4.bmp");pai5=load_image("pai5.bmp");pai6=load_image("pai6.bmp");pai7=load_image("pai7.bmp");pai8=load_image("pai8.bmp");/Iftherewasaprobleminloadingthespriteif(foo=NULL|begin=NULL

20、|end=NULL|menu=NULL|pai1=NULL|pai2=NULL|pai3=NULL|pai4=NULL|pai5=NULL|pai6=NULL|pai7=NULL|pai8=NULL)(returnfalse;)/bg=load_image("l.png");/Ifeverythingloadedfinereturntrue;)voidclean_up()(/FreethesurfaceSDL_FreeSurface(foo);SDL_FreeSurface(begin);SDL_FreeSurface(end);SDL_FreeSurface(menu);

21、SDL_FreeSurface(pail);SDL_FreeSurface(pai2);SDL_FreeSurface(pai3);SDL_FreeSurface(pai4);SDL_FreeSurface(pai5);SDL_FreeSurface(pai6);SDL_FreeSurface(pai7);SDL_FreeSurface(pai8);/QuitSDLSDL_Quit();第11页共17页Foo:Foo()(/InitializemovementvariablesoffSet=0;velocity=0;)voidFoo:handle_events()(intx=0,y=0;if(

22、event,type=SDL_MOUSEBUTTONUP)(if(event.button.button=SDL_BUTTON_LEFT)(x=event.button.x;y=event.button.y;if(g_s=Begin)(if(y>=300&&y<=360&&x>=240&&x<490)(g_s=Run;)elseif(y>=360&&y<=420&&x>=240&&x<490)(quit=true;/g_s=End;)elseif(g_

23、s=Run)(if(lock&&!flagy/180x/180)(flagy/180x/180=true;m_s=!m_s;m_x=x;m_y=y;lock=false;)第12页共17页)voidmove()(if(g_s=Run&&lock=false)(if(m_s)(if(tu_x!=-1)&&(tutu_xtu_y!=tum_y/180m_x/180)(flagtu_xtu_y=false;flagm_y/180m_x/180=false;)else(tu_x=m_y/180;tu_y=m_x/180;)lock=true;boolis

24、open=true;for(inti=0;i<4;i+)(for(intj=0;j<4;j+)(if(flagij=false)(isopen=false;)if(isopen)(g_s=End;第13页共17页)elseif(g_s=End)(end_y+=60;if(end_y>360)(end_y=360;)end_rect0.y=360-end_y;end_rect0.h=end_y;end_rect1.h=end_y;)voidFoo:show()(inti,j;if(g_s=Begin)/如果开始状态,显示开始图片(apply_surface(0,0,begin,

25、screen);for(i=0;i<2;i+)(apply_surface(240,300+i*60,menu,screen,&menu_recti);)elseif(g_s=Run)(/遍历图像索引,在相应位置显示图像for(i=0;i<4;i+)(for(j=0;j<4;j+)(if(flagij)/翻开(switch(tuij)(第14页共17页case0:apply_surface(180*j,180*i,pail,screen);break;case 1: apply_surface(180*j,180*i,pai2,screen);break;case 2

26、: apply_surface(180*j,180*i,pai3,screen);break;case 3: apply_surface(180*j,180*i,pai4,screen);break;case 4: apply_surface(180*j,180*i,pai5,screen);break;case 5: apply_surface(180*j,180*i,pai6,screen);break;case 6: apply_surface(180*j,180*i,pai7,screen);break;case 7: apply_surface(180*j,180*i,pai8,screen);break;)else/没翻开(apply_surface(180*j,180*i,foo,screen);)elseif(g_s=End)(/apply_surface(0,0,endBg,screen);apply_surface(0,0,end,screen,&end_rect0);apply_surface(0,720-end_y,end,screen,&end_rect1);)intmain(intargc,char*args)(/Q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论