《C++程序》迷宫游戏设计报告(2)

2019-01-10 12:38

6、课程设计总结

为大家解决一些生活中实际的问题,在这个过程中,自身的能力也在不断地提高。此次 程序设计综合运用所学知识解决实际问题, 将课堂的书本知识有效的在程序中体现出来, 让 学生更理解 C++功能之强大,进一步让学生对面向对象的方法以及 C++的编程思想有较好的了解和认识。此外,此次设计培养独立开发、设计、调试、运行程序的能力,激发学生较 强的自学兴趣,锻炼学生之间以及学生与老师的沟通能力,培养学生之间的合作精神,让彼 此更好的认识到合作的重要性,使学生在今后的学习中加强对合作精神的培养。一般来说,课程设计要比教学实验复杂一些,涉及的深度深,而且更加实用些。其目的 是通过课程设计的综合训练, 培养学生分析解决实际问题和编程等动手能力, 最终目标是想 通过这种形式,帮助学生系统掌握 C++这门课程的主要内容,使老师更好的完成教学任务。 结合实际应用的要求, 使课程设计既覆盖教学所要求的知识点, 又接近工程的实际需要, 训练自己实际分析问题和解决问题以及编程的能力。 通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。课程设计将设计要 求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条 件。只要学生在吃透要求和算法的前提下,完全可以不按书中提示的参考程序,自己设计出 更具有特色的程序。

7、参考文献

[1] 谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.

附录:

#include #include #include #include #include using namespace std; typedef struct

6

{

int x,y;

}item;

typedef struct {

int x,y,d;

}Datetype;

typedef stack stack_int; void path (int **maze,int,int,int,int); void printpath();

#define NUM 100 //队列大小; typedef struct{ int x,y; //所到点的坐标;

int pre; //前驱点的下标;

}SqType; //队列;

int front,rear; //队首指针与队尾指针; void printpath(SqType sq[],int){//打印路径 int i; i=rear; do{ cout<<\

i=sq[i].pre; //回溯;

}while(i!=-1);

}

void restore(int **maze,int m,int n){//恢复迷宫

7

}

for(int i=1;i<=m;i++){ }

for(int j=1;j<=n;j++){ }

if(maze[i][j]==-1)

maze[i][j]=0;

int path1(int **maze,int m,int n,int c,int d,int x1,int y1)//最短路径

{ //m,n为迷宫的长和宽,c,d为迷宫入口坐标,x1,y1为迷宫出口坐标;maze为迷宫;

item move[8]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; //坐标增量数组; SqType sq[NUM]; int x,y,i,j,v; front=rear=0; sq[0].x=c; sq[0].y=d; sq[0].pre=-1; if(maze[c][d]==0)

maze[c][d]=-1;//入口点入队; else goto G;

while(front<=rear){ //队列不为空

x=sq[front].x; y=sq[front].y; for(v=0;v<8;v++){

i=x+move[v].x; j=y+move[v].y; if(maze[i][j]==0){

8

rear++; sq[rear].x=i; sq[rear].y=j; sq[rear].pre=front;

maze[i][j]=-1; //访问过的坐标点,入队;

}

if(i==x1&&j==y1){ cout<<\最短路径为:\ printpath(sq,rear); //输出路径; restore(maze,m,n); //恢复迷宫; return 1;

}

} //for v;

front++; //当前点搜索完,取下一个点搜索

} //while

G:cout<<\无路径。\ return 0;

}

void path(int **maze,int a,int b,int m,int n) { item move[8]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; stack_int st; Datetype temp; int x,y,d,i,j;

if(maze[a][b]==1){cout<<\进口输入有误。\

temp.x=a;temp.y=b;temp.d=-1; //初始化入口点坐标及方向;9

st.push(temp); while(!st.empty()) { temp=st.top(); st.pop();

x=temp.x;y=temp.y;d=temp.d+1; while(d<8) { i=x+move[d].x;j=y+move[d].y; if(maze[i][j]==0) //该点可到达; { temp.x=x;temp.y=y;temp.d=d; //坐标及方向;

st.push(temp); //坐标及方向入栈;

x=i;y=j; maze[x][y]=-1;//到达新点; if(x==m && y==n) { cout<<\迷宫路径为:\ cout<<\ Datetype t; while(!st.empty()) { t=st.top();

cout<<\

st.pop();

} //输出路径;

10


《C++程序》迷宫游戏设计报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:汽车电控技术试题(A卷)2018

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: