迷宫探路II

 

    对《迷宫探路》做了一点改进。小人在行走过程中不走回头路,

即不重复经过同一点。                     

/* crazymaze.c*/
/* 2003-8-26 */
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <graphics.h>
#define N 22
#define M 22
#define MAXLEN 200;
int bg[M][N];
struct square{
    int x;
    int y;
    int direc;
}p[200];
void makebg(int,int);
void drawbg(int[][],int,int,int,int,int);
void drawman(int,int,int);
void rect(int,int,int,int);

void main(){/* main()开始 */
int step=20;
int len=10;
int size=20;
int x=0,y=0,x0=0,y0=0;
int i=0,j=0,k=0,count=0;
int gdriver=DETECT,gmode;
char ch;
int direc;
makebg(M,N);
/*  registerbgidriver(EGAVGA_driver);
 initgraph(&gdriver,&gmode,"c:\turboc2");*/
initgraph(&gdriver,&gmode,"c:\tc20\bgi");
cleardevice();
setwritemode(XOR_PUT);
settextstyle(1,0,3);
setcolor(GREEN);
outtextxy(100,180,"Press <Q> to quit");
setcolor(BLUE);
setfillstyle(LINE_FILL,BLUE);

drawbg(bg,M,N,size,0,0);
setcolor(GREEN);
outtextxy(60,120,"PRESS KEY <1> :YOU ,");
outtextxy(70,150,"OTHER KEY :AUTOMATIC");
setcolor(WHITE);
x+=len;y+=len;
drawman(x,y,len);
x0=x;y0=y;
if((ch=getch())=='1'){
/* 人工控制 */
while((ch=getch())!='q'){
  delay(800);
  drawman(x,y,len);
  switch(ch){
    case 'a':
        if(j>0&&bg[i][j-1]==0){
            if(x>step){x-=step;j--;};
        }
        break;
    case 's':
        if(i<M-1&&bg[i+1][j]==0){
            if(y<479-step){y+=step;i++;};
        }
        break;
   

时间: 2024-09-20 00:01:07

迷宫探路II的相关文章

实例编程:迷宫探路II

对<迷宫探路>做了一点改进.小人在行走过程中不走回头路,即不重复经过同一点. /* crazymaze.c*/ /* 2003-8-26 */ #include <stdlib.h> #include <time.h> #include <math.h> #include <stdio.h> #include <graphics.h> #define N 22 #define M 22 #define MAXLEN 200; int

实例编程:迷宫探路III

将从迷宫入口到各点的最短路近的集合看作一棵树.用广度遍历的方法即可找到出口的最短路近.本程序算法思想来源于求图上一点到其余各点最短路近的Dijkstra算法. /* 迷宫探路III(最短路径)*/ /* DIJKSTRAMAZE.C */ /* 2003-8-26 */ #include <stdlib.h> #include <time.h> #include <math.h> #include <stdio.h> #include <graphic

迷宫探路III(最短路径)

    将从迷宫入口到各点的最短路近的集合看作一棵树.用广度遍历  的方法即可找到出口的最短路近.本程序算法思想来源于求图上一点  到其余各点最短路近的Dijkstra算法.  /* 迷宫探路III(最短路径)*//* DIJKSTRAMAZE.C *//* 2003-8-26 */#include <stdlib.h>#include <time.h>#include <math.h>#include <stdio.h>#include <graph

迷宫探路IV(递归算法)

/* 迷宫探路(recursive)*//* recursivemaze.c *//* 2003-10-16 */#include <stdlib.h>#include <time.h>#include <math.h>#include <stdio.h>#include <graphics.h>#define N 22#define M 22#define MAXLEN M*Nint bg[M][N];int aa[M][N];struct p

实例编程:迷宫探路I

曾经听说过一个走迷宫的诀窍:顺着墙沿一侧走. (一直沿左侧或一直沿右侧).本程序实现了这一 思想,小人一直沿左侧走. 迷宫是随机生成的. 开始时,按数字 1 键进入人工控制模式:按w,s, a,d分别代表上,下,左,右方向. 开始时,按除数字 1 以外的任意键进入自动模式: 小人由电脑控制. 按 Q键结束程序. /* Name: maze.c Author: zhuqing Description: 迷宫探险 Date: 28-08-03 10:15 Copyright: */ #include

迷宫探路

    曾经听说过一个走迷宫的诀窍:顺着墙沿一侧走.(一直沿左侧或一直沿右侧).本程序实现了这一思想,小人一直沿左侧走.    迷宫是随机生成的.    开始时,按数字 1 键进入人工控制模式:按w,s, a,d分别代表上,下,左,右方向.    开始时,按除数字 1 以外的任意键进入自动模式:小人由电脑控制.     按 Q键结束程序. /*  Name:    maze.c  Author:      zhuqing  Description:     迷宫探险   Date: 28-08-

模拟迷宫

#include<stdio.h> #define ROW 8 #define COLUMN 8 #define STEP ROW*COLUMN /*ROW表示迷宫的行数,COLUMN表示迷宫的列数,STEP表示队列的容量*/ //定义一个用来记录迷宫探路的队列 struct StepQueue { int x,y;     int PreStep; }StepQ[STEP],tmpStepQ[STEP]; //定义一个结构体用来表示迷宫中的移动方向,一共有8种方向 struct MoveD

数据结构演示(tc版)

/*前段时间写的几个tc版演示,其中一些程序在与郭翠英老师合作的<<c语言课程设计案例精编>>中用到,所以源码也就不能随便发布了,在这里主要把程序主题列出来了,因为没经验,所以没用建立工程的方法写这个程序,以后如果还有机会用tc写稍微大点的程序,应该要注意这点了.用tc来练习这些程序也是对我上学期学的数据结构复习了下,个人感觉写类似的程序一方面能提高学习兴趣,一方面也能多动下脑子.还有别的什么有趣的演示大家可以想想! */ /*上海工程技术大学 02211 朱昀*/ #includ

Java中栈.回溯.迷宫问题求解

考虑使用一个二维数组表示迷宫.所有的通路用0表示,墙用1表示,出口用9表示,入口用6表 示,已经过点用3表示.输出走出迷宫的过程. 从这个问题的求解过程中可以简单总结出两个算法,一是探路过程,二是输出路线. 1.探路过程 探路过程算法可归纳为: [1]从入口位置开始,检查东西南北四个方向上的通路,如果发现出口则成功退出,否则将所 有通路坐标压入栈; [2]从栈中取出一个坐标,将其标记为当前位置(标记数字3),再次判断通路情况; [3]如此进行,直到发现出口则成功退出,若栈空而且未发现出口,则失败