《嵌入式网络协议及其应用开发课程设计报告_基于sdl的记忆小游戏》由会员分享,可在线阅读,更多相关《嵌入式网络协议及其应用开发课程设计报告_基于sdl的记忆小游戏(17页珍藏版)》请在金锄头文库上搜索。
1、课课程程设设计计说说明明书书学生信息学生信息系别计算机工程学院专业计算机科学与技术班级姓名学号课程设计信息课程设计信息课程名称嵌入式网络协议及其应用开发课程设计课程设计题目基于 SDL 的记忆小游戏课程设计时间学期第 116 周小组情况指导教师批改情况批改情况成绩评阅教师批改时间20112012 学年第学年第 2 学期学期第 2 页 共 17 页目目 录录1.课程设计内容课程设计内容42.课程设计目的课程设计目的43.背景知识背景知识 .44.工具工具/准备工作准备工作.55.设计步骤与方法设计步骤与方法.55.1.步骤 1:在 photoshop 下编辑图片55.2.步骤 2:编译程序.55
2、.2.1.步骤 2.1:安装 SDL.55.2.2.步骤 2.2:linux 下编译执行 65.3.步骤 4:设计游戏代码.66.设计结果及分析设计结果及分析.187.设计结论设计结论 .188.问题及心得体会问题及心得体会.189.对本设计过程及方法、手段的改进建议对本设计过程及方法、手段的改进建议.1810. 任务分配任务分配 .1811. 参考文献参考文献 .18第 3 页 共 17 页课程设计报告课程设计报告1. 课程设计内容课程设计内容本课程设计的内容是设计一个基于 SDL 的记忆小游戏。2. 课程设计目的课程设计目的考察自己对课程的掌握程度,以及自己实际的动手能力,编程能力。3.
3、背景知识背景知识网络应用程序的基本实现方法网络游戏的基本实现原理SDL 是 Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件) 、游戏摇杆等。当然,最为重要的是提供了 2D 图形帧缓冲(framebuffer)的接口,以及为 OpenGL 与各种操作系统之间提供了统一的标准接口以实现 3D 图形。SDL 是一个跨平台的多媒体函数库,被用来设计成在低层访问音频,键盘,鼠标,游戏杆,基于 OPENGL(一个 3D 图象开发函数库)的 3D 硬件,和 2D 图象帧缓冲区
4、。它被广泛的用于基于 MPEG 的媒体播放软件,模拟器,和许多著名的游戏。SDL 是一个跨平台的函数库,几乎支持现今所有平台:Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX。 第 4 页 共 17 页4. 工具工具/准备工作准备工作硬件:安装有 windowsXP 以上版本的操作系统 PC 机一台建议配置是 CPU PIV 以上,512M 内存以上, 20G 硬盘空间以上ARM2200 教学实验开发平台软件:安装 Photosh
5、opVMware 6.0,debian5. 设计步骤与方法设计步骤与方法5.1.步骤步骤 1:在在 photoshop 下编辑图片下编辑图片5.2.步骤步骤 2:编译程序:编译程序5.2.1. 步骤步骤 2.1:安装:安装 SDL使用命令“sdl-config -cflags”来检查是否已安装 SDL。如果没有安装,可以选择上网安装,或从源码包安装:上网安装:首先确保能联上 internet(如果没有联上互联网可参考Linux 相关实验常见问题.doc ).并在命令行下输入 :apt-get install libsdl1.2-dev 第 5 页 共 17 页libsdl-image1.2-d
6、ev libsdl-mixer1.2-dev libsdl-ttf2.0-dev。系统将自动完成安装从源码包安装:拷贝 SDL-1.2.13.tar.gz 至 linux 主机/home/test 目录,然后执行命令:tar xvzf tar xvzf SDL-1.2.13.tar.gz SDL-1.2.13.tar.gz, 执行后,将在本地生成一个 SDL-1.2.13 的目录,进入这个目录,在 root 权限下,依次执行 ./configure; make; make install 5.2.2. 步骤步骤 2.2:linux 下编译执行下编译执行1) 将源文件 sdl_simple_ga
7、me.cpp 拷贝到 linux 主机2) 进行编译:g+ -o t sdl_simple_game.cpp L/usr/lib lSDL,生成可执行文件3) 执行 ,在命令行输入./t5.3. 步骤步骤 4:设计游戏代码设计游戏代码 /The headers#include “SDL/SDL.h“#include “SDL/SDL_image.h“#include #include /Screen attributesconst int SCREEN_WIDTH = 721;const int SCREEN_HEIGHT = 721;const int SCREEN_BPP = 32;/Th
8、e frames per secondconst int FRAMES_PER_SECOND = 10;/The dimenstions of the stick figureconst int FOO_WIDTH = 180;const int FOO_HEIGHT = 180;const int Begin=0;const int Run=1;const int End=2;bool flag44; int tu44;第 6 页 共 17 页int tu_x;int tu_y;int m_x;int m_y;bool m_s;bool lock=true;bool quit = false
9、;int g_s;int end_y;/The surfacesSDL_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
10、 = NULL;SDL_Surface *pai7 = NULL;SDL_Surface *pai8 = NULL;/The event structureSDL_Event event;/The areas of the sprite sheetSDL_Rect menu_rect 2 ;SDL_Rect end_rect 2 ;/The stick figureclass Fooprivate:/The offsetint offSet;/Its rate of movementint velocity;/Its current frameint frame;public:第 7 页 共
11、17 页/Initializes the variablesFoo();/Handles inputvoid handle_events();/Shows the stick figurevoid show();SDL_Surface *load_image( std:string filename )/The image thats loadedSDL_Surface* loadedImage = NULL;/The optimized surface that will be usedSDL_Surface* optimizedImage = NULL;/Load the imageloa
12、dedImage = IMG_Load( filename.c_str() );/If the image loadedif( loadedImage != NULL )/Create an optimized surfaceoptimizedImage = SDL_DisplayFormat( loadedImage );/Free the old surfaceSDL_FreeSurface( loadedImage );/If the surface was optimizedif( optimizedImage != NULL )/Color key surfaceSDL_SetCol
13、orKey( optimizedImage, SDL_SRCCOLORKEY, SDL_MapRGB( optimizedImage-format, 0, 0xFF, 0xFF ) );/Return the optimized surfacereturn optimizedImage;void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL )/Holds offsetsSDL_Rect offset;/Get offsets第 8 页 共 17
14、 页offset.x = x;offset.y = y;/BlitSDL_BlitSurface( source, clip, destination, /*void set_clips()/Clip the spritesclipsRight 0 .x = 0;clipsRight 0 .y = 0;clipsRight 0 .w = FOO_WIDTH;clipsRight 0 .h = FOO_HEIGHT;clipsRight 1 .x = FOO_WIDTH;clipsRight 1 .y = 0;clipsRight 1 .w = FOO_WIDTH;clipsRight 1 .h
15、 = FOO_HEIGHT;clipsRight 2 .x = FOO_WIDTH * 2;clipsRight 2 .y = 0;clipsRight 2 .w = FOO_WIDTH;clipsRight 2 .h = FOO_HEIGHT;clipsRight 3 .x = FOO_WIDTH * 3;clipsRight 3 .y = 0;clipsRight 3 .w = FOO_WIDTH;clipsRight 3 .h = FOO_HEIGHT;clipsLeft 0 .x = 0;clipsLeft 0 .y = FOO_HEIGHT;clipsLeft 0 .w = FOO_
16、WIDTH;clipsLeft 0 .h = FOO_HEIGHT;clipsLeft 1 .x = FOO_WIDTH;clipsLeft 1 .y = FOO_HEIGHT;clipsLeft 1 .w = FOO_WIDTH;clipsLeft 1 .h = FOO_HEIGHT;clipsLeft 2 .x = FOO_WIDTH * 2;clipsLeft 2 .y = FOO_HEIGHT;clipsLeft 2 .w = FOO_WIDTH;clipsLeft 2 .h = FOO_HEIGHT;第 9 页 共 17 页clipsLeft 3 .x = FOO_WIDTH * 3;clipsLeft 3 .y = FOO_HEIGHT;clipsLeft 3 .w = FOO_WIDTH;cl