第一章 引言
1.1关于题目
1.1.1题目要求
利用QT制作一个贪吃蛇的小游戏并将其移植到嵌入式Linux平台下,要求:
能够记录游戏时间,游戏成绩
正常完成该游戏基本功能
1.1.2选题背景
贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的实现对于以前的我而言都是很神秘的。我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。更进一步的掌握C语言以及加深对嵌入式Linux操作系统编程的认识和了解,熟悉基本的嵌入式开发过程。
1.2关于编译软件
本系统采用开源社区所提供的一系列编程工具,gcc、gdb等。系统运行平台采取嵌入式uClinux操作系统。
第二章 概要设计
2.1软件主要功能设计
2.1.1程序结构
根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,游戏帮助提示与分数的显示等等。具体的程序功能如下图所示。
2.1.2程序流程
根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括: 游戏开始,随机出现食物,游戏结束,分数的显示,游戏帮助。程序主要流程图如下:
第三章 编程实现
3.1变量函数及资源的声明
根据程序的结构,将贪吃蛇需要实现的放在snakeBoard.h文件中,该文件创建游戏画面,显示贪吃蛇对象;另外,计分功能凡在countNumber.h文件中实现。。
3.1.1主函数
#include "snakeBoard.h"
#include
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
snakeBoard *gameMainBoard = new snakeBoard;
gameMainBoard->setGeometry(50,50,600,500);
gameMainBoard->show();
return app.exec();
}
3.1.2主要源代码
snakeBoard.h中定义的相关变量和方法
#include
#include
#include
#include
class snakeBoard:public QWidget
{
Q_OBJECT
public:
snakeBoard(QWidget *parent = 0);
int getRandNum(void);
void getRandXY(int &x,int &y);
private:
int isStart;//是否开始
int snakeLength;//蛇身长度
int directionFlag;//移动方向
int directionArray[4][2];//方向向量
int interval;//屏幕刷新频率
QTimer *updateTimer;
int foodArray[2];
int paintingIsOver;
int snakeArray[80][2];
//int gameField[20][20];
protected:
void paintEvent(QPaintEvent *paintEvent);
void keyPressEvent(QKeyEvent *keyEvent);
protected slots:
void snakeAutoRun(void);
void resetGame(void);
};
部分方法的实现代码
snakeBoard::snakeBoard(QWidget *parent):QWidget(parent)
{
for(int i = 0; i < 80; i++)
for(int j = 0; j < 2; j++)
snakeArray[j] = 0;
第一章 引言
1.1关于题目
1.1.1题目要求
利用QT制作一个贪吃蛇的小游戏并将其移植到嵌入式Linux平台下,要求:
能够记录游戏时间,游戏成绩
正常完成该游戏基本功能
1.1.2选题背景
贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的实现对于以前的我而言都是很神秘的。我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。更进一步的掌握C语言以及加深对嵌入式Linux操作系统编程的认识和了解,熟悉基本的嵌入式开发过程。
1.2关于编译软件
本系统采用开源社区所提供的一系列编程工具,gcc、gdb等。系统运行平台采取嵌入式uClinux操作系统。
第二章 概要设计
2.1软件主要功能设计
2.1.1程序结构
根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,游戏帮助提示与分数的显示等等。具体的程序功能如下图所示。
2.1.2程序流程
根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括: 游戏开始,随机出现食物,游戏结束,分数的显示,游戏帮助。程序主要流程图如下:
第三章 编程实现
3.1变量函数及资源的声明
根据程序的结构,将贪吃蛇需要实现的放在snakeBoard.h文件中,该文件创建游戏画面,显示贪吃蛇对象;另外,计分功能凡在countNumber.h文件中实现。。
3.1.1主函数
#include "snakeBoard.h"
#include
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
snakeBoard *gameMainBoard = new snakeBoard;
gameMainBoard->setGeometry(50,50,600,500);
gameMainBoard->show();
return app.exec();
}
3.1.2主要源代码
snakeBoard.h中定义的相关变量和方法
#include
#include
#include
#include
class snakeBoard:public QWidget
{
Q_OBJECT
public:
snakeBoard(QWidget *parent = 0);
int getRandNum(void);
void getRandXY(int &x,int &y);
private:
int isStart;//是否开始
int snakeLength;//蛇身长度
int directionFlag;//移动方向
int directionArray[4][2];//方向向量
int interval;//屏幕刷新频率
QTimer *updateTimer;
int foodArray[2];
int paintingIsOver;
int snakeArray[80][2];
//int gameField[20][20];
protected:
void paintEvent(QPaintEvent *paintEvent);
void keyPressEvent(QKeyEvent *keyEvent);
protected slots:
void snakeAutoRun(void);
void resetGame(void);
};
部分方法的实现代码
snakeBoard::snakeBoard(QWidget *parent):QWidget(parent)
{
for(int i = 0; i < 80; i++)
for(int j = 0; j < 2; j++)
snakeArray[j] = 0;
举报