课程设计说明书
学生信息
系别 计算机工程学院 专业 计算机科学与技术
班级 姓名 学号
课程设计信息
课程名称 嵌入式网络协议及其应用开发课程设计
课程设计题目 基于SDL的记忆小游戏
课程设计时间 学期第 1~16 周
小组情况 指导教师
批改情况
成绩 评阅教师 批改时间
2011-2012学年第 2 学期
第 2 页 共 17 页
目 录
1. 课程设计内容 ............................................................................................. 3
2. 课程设计目的 ............................................................................................. 3
3. 背景知识 .................................................................................................... 3
4. 工具/准备工作 ............................................................................................ 4
5. 设计步骤与方法 ......................................................................................... 4
5.1. 步骤1:在photoshop下编辑图片 ................................................................................. 4
5.2. 步骤2:编译程序 ............................................................................................................ 4
5.2.1. 步骤2.1:安装SDL ................................................................................................ 4
5.2.2. 步骤2.2:linux下编译执行 .................................................................................... 5
5.3. 步骤4:设计游戏代码 .................................................................................................... 5
6. 设计结果及分析 ....................................................................................... 17
7. 设计结论 .................................................................................................. 17
8. 问题及心得体会 ....................................................................................... 17
9. 对本设计过程及方法、手段的改进建议 .................................................... 17
10. 任务分配 .................................................................................................. 17
11. 参考文献 .................................................................................................. 17
第 3 页 共 17 页
课程设计报告
1. 课程设计内容
本课程设计的内容是设计一个基于SDL的记忆小游戏。
2. 课程设计目的
考察自己对课程的掌握程度,以及自己实际的动手能力,编程能力。
3. 背景知识
网络应用程序的基本实现方法
网络游戏的基本实现原理
SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。
这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。
当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。
SDL是一个跨平台的多媒体函数库,被用来设计成在低层访问音频,键盘,鼠标,游戏杆,基于OPENGL(一个3D图象开发函数库)的3D 硬件,和2D图象帧缓冲区。它被广泛的用于基于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教学实验开发平台
软件:
安装Photoshop
VMware 6.0,debian
5. 设计步骤与方法
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-dev 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_game.cpp拷贝到linux主机
2) 进行编译:g++ -o t sdl_simple_game.cpp –L/usr/lib –lSDL,生成可执行文件
3) 执行 ,在命令行输入./t
5.3. 步骤4:设计游戏代码
//The headers
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include
#include
//Screen attributes
const int SCREEN_WIDTH = 721;
const int SCREEN_HEIGHT = 721;
const int SCREEN_BPP = 32;
//The frames per second
const int FRAMES_PER_SECOND = 10;
//The dimenstions of the stick figure
const int FOO_WIDTH = 180;
const int FOO_HEIGHT = 180;
const int Begin=0;
const int Run=1;
const int End=2;
bool flag[4][4];
int tu[4][4];
int tu_x;
int tu_y;
第 6 页 共 17 页 int m_x;
int m_y;
bool m_s;
bool lock=true;
bool quit = false;
int g_s;
int end_y;
//The surfaces
SDL_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;
//The event structure
SDL_Event event;
//The areas of the sprite sheet
SDL_Rect menu_rect[ 2 ];
SDL_Rect end_rect[ 2 ];
//The stick figure
class Foo
{
private:
//The offset
int offSet;
//Its rate of movement
int velocity;
//Its current frame
int frame;
public:
//Initializes the variables
Foo();