c语言八个方向迷宫课程设计,【精品资料最新版】C语言课程设计-迷宫游戏.doc...

计算机技术基础课程设计

C语言

设计报告

题目:完整的二维迷宫游戏

学院:工商管理学院

专业:信息系统与信息管理

班级:050507

姓名:孙月

指导教师:张首伟

设计日期:2004年12月10日

题目:完整的二维迷宫游戏

一、选题背景:

问题的提出:我们在玩迷宫游戏的时候,常常在过了一关之后就结束了,这里设计的迷宫游戏足够多,难以程度也不尽相同,可以过瘾的玩。模仿的有那么一点意思,还请多多指教!

二、设计思想:

(1).问题描述

用一个m行n列的二维数组来表示迷宫。数组中每个元素的取值为0或1,其中值0表示 通路,值1表示阻塞,入口在左上方(1,1)处,出口在右下方(m,n)处,如图所示。要求求出从迷宫入口到出口有无通路,若有通路则指出其中一条通路的路径,即输出找到通路的迷宫数组,其中通路上的“0”用另一数字(例如8)替换,同时打印出所走通路径上每一步的位置坐标及下一步的方向。

(2).求解方法说明:1.为使问题一般化,假设以二维数组maze(1:m,1:n)表示迷宫,并设maze(i,j)表示任一位置。2.对每个位置maze(i,j),可移动的八个方向从正东起顺时针方向顺序为:E,SE,S,SW,W,NW,N,NE。再用一个二维数组move表示这八个方向上坐标的增量,如下表所示,move(v,1)表示第v个方向上i的增量, move(v,2)表示第v个方向上j的增量。

三、程序流程图

四、程序清单:

一、

二、

#include #include #include #include #include #define N 20/*迷宫的大小,可改变*/int??oldmap[N][N];/*递归用的数组,用全局变量节约时间*/int??yes=0;/*yes是判断是否找到路的标志,1找到,0没找到*/int??way[100][2],wayn=0;/*way数组是显示路线用的,wayn是统计走了几个格子*/void Init(void);/*图形初始化*/void Close(void);/*图形关闭*/void DrawPeople(int *x,int *y,int n);/*画人工探索物图*/void PeopleFind(int (*x)[N]);/*人工探索*/void WayCopy(int (*x)[N],int (*y)[N]);/*为了8个方向的递归,把旧迷宫图拷贝给新数组*/int??FindWay(int (*x)[N],int i,int j);/*自动探索函数*/void MapRand(int (*x)[N]);/*随机生成迷宫函数*/void PrMap(int (*x)[N]);/*输出迷宫图函数*/void Result(void);/*输出结果处理*/void Find(void);/*成功处理*/void NotFind(void);/*失败处理*/void main(void)/*主函数*/{? ?int map[N][N]; /*迷宫数组*/? ?char ch;? ?clrscr();? ?printf("\n Please select hand(1) else auto\n");/*选择探索方式*/? ?scanf("%c",&ch);? ?Init();??/*初始化*/? ?MapRand(map);/*生成迷宫*/? ?PrMap(map);/*显示迷宫图*/? ?if(ch=='1')? ?? ?PeopleFind(map);/*人工探索*/? ?else? ?? ?FindWay(map,1,1);/*系统自动从下标1,1的地方开始探索*/? ?Result();/*输出结果*/? ?Close();}void Init(void)/*图形初始化*/{? ?int gd=DETECT,gm;? ?initgraph(&gd,&gm,"c:\\tc");}void DrawPeople(int *x,int *y,int n)/*画人工控制图*/{/*如果将以下两句注释掉,则显示人工走过的路径,*/? ?setfillstyle(SOLID_FILL,WHITE);??/*设置白色实体填充样式*/? ?bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);/*恢复原通路*/? ?switch(n)/*判断x,y的变化,8个方向的变化*/? ?{? ?? ?case 1: (*x)--;break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件操作的小tips

freopen功 能: 替换一个流,或者说重新分配文件指针,实现重定向。 eg: freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); /* close the standard output stream */ fclose(stdout);若要返回到显示…

ant接口用什么天线_Ant-Basic天线基本知识讲

1天线1.1天线的作用与地位无线电发射机输出的射频信号功率,通过馈线(电缆)输送到天线,由天线以电磁波形式辐射出去。电磁波到达接收地点后,由天线接下来(仅仅接收很小很小一部分功率),并通过馈线送到无线电接收机。可见&#xff0…

android imageview 图片切换动画,在Android中以动画方式将ImageView移动到不同的位置...

TranslateAnimation animation new TranslateAnimation(0, 50, 0, 100);animation.setDuration(1000);animation.setFillAfter(false);animation.setAnimationListener(new MyAnimationListener());imageView.startAnimation(animation);更新:问题是,Vi…

shell,perl,python

shell,perl,python的区别 2012-03-18 10:48:42| 分类: 默认分类 | 标签: |字号大中小 订阅 shellsedawk三者中功能最弱,没有调试程序,大多数操作必须通过运行其他程序才能执行,所以需要更多时间、内存并在进程表中…

宁波python学习_python学习第五天

一 常用模块定义:可以实现某种功能的.py结尾的python文件,文件名为test.py,则模块名为test导入方法import 模块名import 模块名1,模块名2from 模块名 import * 不建议使用这种方法,容易引起模块中的方法被…

android管理员和普通用户登录,asp登录页如何区别管理员和普通用户,登录后跳转到不同页面?...

数据库表 user表 中,username(用户名) pass(密码) type(超级管理员、高级发文者) cname(单位名称)登录页index.aspif request.Form("submit")"登陆系统" thenusertrim(request.Form("uname"))passucase(md5(request.Form("pass&…

envoy实现_如何利用 Envoy 的 Postgres 过滤器实现网络可观察性

作者:Christoph Pakulski自发布版本 1.15.0 起,Envoy 代理就开始支持 Postgres 信息解码用于统计目的了。该功能为网络中发生的 Postgres 事务提供聚合视图。有了聚合视图,Postgres 作业的种类、故障的数量和严重性瞬间一目了然。通过时间序列…

android无感刷新下拉分页,GitHub - TakWolf/Android-RefreshAndLoadMore-Demo: 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。...

Android - RefreshAndLoadMore Demo一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。包含 ListView 和 RecyclerView 两种组件的对应实现。下拉刷新基于 SwipeRefreshLayout 实现。加载更多通过在列表底部添加 FooterView 实现。考虑了第一次请求数据填充不足一屏的…

神经网络与机器学习 第一讲(2)——什么是神经网络

一、为什么要研究神经计算 1. 理解人脑是怎样工作的 2. 理解利用神经元和连接所形成的并行计算(这与串行计算很不相同): 1) 能够做好人脑擅长的事情(vision) 2) 做不好人脑不擅长的事情(23*45) …

弹性法计算方法的mck法_粘弹性自由阻尼加筋板的随机响应分析和试验研究

0 引 言船舶在营运过程中可能产生有害振动并影响正常运营,此时需要对船体结构采取有效的减振措施,在结构上敷设阻尼是常用、高效的减振方法之一[。要达到良好的减振效果,需要选取合适的阻尼材料和合理的敷设方式。粘弹性阻尼材料由于其性能参…

自定义圆形倒计时Android,Android自定义View倒计时圆

本文实例为大家分享了Android自定义View倒计时圆的具体代码,供大家参考,具体内容如下创建attr创建DisplayUtil 类import android.content.Context;/*** Created by 王 on 2017/10/21.*/public class DisplayUtil {/*** 将px装换成dp,保证尺寸…

网络编程的4种IO模型

selectFD_ZERO初始化FD_SET将socket加进去select轮询当socket的事件发生时,fd_set里面有相关的socket,如果没有socket有事件发生,select返回0FD_ISSET检测,socket是否还在fd_set里,是的话,表示这个socket有…

pandas 合并所有列_图解Python表格操作包Pandas

Pandas 是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开…

android ndk gcc,Android NDK GCC似乎是铿锵的 - 它应该是这样吗?

刚刚下载的NDK在链接旧项目时失败:/usr/bin/ld: unrecognised emulation mode: armelf_linux_eabi看来,clang隐藏在gcc的面具后面:/opt/android-ndk-r18b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --versionAndroid (475164…