C语言实现迷宫小游戏
迷宫游戏C语言程序课程设计

printf("");
if(chMap[i][j]==2)
prin tf("E");
}
}
if(chMap[y-5][x-10]==2)/*如果如果人的坐标和目标坐标重合输出"YOU WIN!"退出*/
clrscr();
printf("You Win!");
break;
}
/*返回ASCII码或扩充码*/
void main()
{
int iKey,x=11,y=6;/*x,y为人物移动后坐标*/
int chMap[10][10]={/*用二维数组定义地图*/
{0,0,0,0,0,0,0,0,0,0},/*0表示墙1表示路2表示出口*/
{0,1,0,0,1,1,1,1,1,0},
{0,1,1,0,1,0,1,0,1,0},
{0,0,1,0,1,0,1,0,1,0},
{0,0,1,1,1,0,0,0,1,0},
{0,0,0,0,0,0,1,1,1,0},
{0,1,0,0,1,1,1,0,0,0},
{0,1,1,1,1,0,0,0,2,0},
{0,1,0,0,1,1,1,1,1,0},
};
int fnGetKey(void)
{
union keyboard uniKeyl; while(bioskey(1)==0); uniKey1.iKeylnfo=bioskey(0);
/*
/*
/*
/*
/*
return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);
c语言随机生成迷宫算法

c语言随机生成迷宫算法迷宫是一种很有趣的游戏,它可以让人们在寻找出路的过程中培养思考能力和耐心。
在许多计算机游戏中,迷宫也是一个常见的题材。
那么,如何用C语言自动生成一个迷宫呢?下面就来详细介绍一下。
第一步,确定迷宫大小首先要确定迷宫的大小,也就是行和列的数量。
这可以通过用户输入来实现,也可以直接在程序中定义。
第二步,初始化迷宫在程序中,我们通常用一个二维数组来表示迷宫,数组元素的值表示对应的格子状态,0表示可通过,1表示不可通过。
因此,我们需要在程序中初始化迷宫,将所有的格子都标记为1,表示不可通过。
第三步,生成迷宫路径接下来,我们需要随机生成一个迷宫路径。
随机生成迷宫路径的方法有很多种,这里介绍一种比较简单的方法:深度优先搜索算法。
深度优先搜索算法是一种递归算法,可以从迷宫的起点开始,不断随机选择一个方向,往前走,直到无法再往前为止。
然后回到上一次的分支点,选择另一个方向继续走,直到整个迷宫路径都被探索完毕。
在探索的过程中,我们可以将经过的格子标记为0,表示可通过,同时记录路径上的所有分支点,方便后面生成迷宫时打通墙壁。
第四步,随机挖墙迷宫路径已经生成完毕,接下来我们需要随机挖墙,打通路径上的墙壁,让迷宫变成一张连接所有路径的图。
随机挖墙的方法也有很多种,这里介绍一种比较常见的方法:挖掉一些分支点周围的墙壁。
具体实现方法是选择一个随机的分支点,然后随机选择一个方向,检查该方向上的格子是否为墙壁,如果是墙壁,就把它打通,同时把该格子标记为已经访问过,以免重复挖掘。
然后继续在周围的格子中挑选下一个候选点,重复上述操作,直到所有的分支点周围的墙壁都被打通。
第五步,输出迷宫迷宫已经生成完毕,最后就是将其输出到屏幕上。
输出迷宫的方法也有很多种,这里介绍一种比较简单的方法:使用ASCII码字符表示迷宫。
具体实现方法是将生成的迷宫数组中的0标记为ASCII码字符' '(空格),将1标记为ASCII码字符'#'(井号),然后按照行列的顺序输出到屏幕上即可。
c语言小游戏

简单的c语言迷宫小游戏一、内容:1、本游戏主要实现了人控制键盘方向键使小人(*)走出迷宫。
2、具有的功能: 1)、在游戏菜单里人可以选择不同难度的游戏进行游戏;2)、在游戏过程中,可以通过键盘方向键使小人移动,走出迷宫;3)、在游戏过程中,当人碰到墙壁(#)的时候小人过不去;4)、当人顺利完成游戏之后,输出“========you are win!======”字样,30秒钟后自动返回到游戏菜单;5)、在游戏过程中,人可以通过按Esc键返回游戏菜单;也可以可以按0直接退出游戏;6)、在游戏菜单里,按0键可以退出游戏。
3、具体应用: 1)、人主要同过键盘的1,2,3数字键来选择游戏难度;2)、在游戏中通过Esc键来返回菜单;3)、同过0键退出游戏。
二、上机环境操作系统:windows7 开发工具:VC6.0三、各函数功能说明main() 主函数;menu() 游戏菜单;roadcake() 消去小人路径;introduce() 游戏介绍;system(“cls”)消屏函数;exit(0) 退出游戏;drawmg1() 画初级难度迷宫;drawmg2() 画中级难度迷宫;drawmg3() 画高级难度迷宫;control1() 控制初级难度游戏;control2() 控制中级难度游戏;control3() 控制高级难度游戏;四、算法流程图首先定义三个全局数组mg1[20][20]、mg2[30][30]、mg3[30][30]用于画出迷宫的地图;1表示墙(#),0表示空地();Introduce( )函数里如果按Enter键,则调用menu( )函数,从键盘中输入相应的提示数字,进入难度不同的游戏;游戏的执行在此只初级难度进行描述,其余的难度与其类似;选了1后调用system(”cls”)进行清屏;drawmg1()函数进行迷宫的地图的绘制, for(i=0;i<20;i++){printf("\t\t\t");for(j=0;j<20;j++){ch=mg1[i][j];switch(ch){case 4: printf("*");break;case 0: printf(" ");break;case 1: printf("#");break;}if(num++%20==0) /*每行只能输出20个字符*/printf(”\n”);}}之后调用控制函数control1()进行控制小人移动路径,在control1()函数里用do—while()语句进行循环,while(1)进行死循环,再定义四个整型a,b,m,n即:for(n=0;n<30;n++)for(m=0;m<30;m++)if(mg3[n][m]==4){a=n; /*为后面调用roadcake()实现消除小人路径进行初始赋值*/b=m;break;}用switch()语句选择方向键,在调用roadcake()函数进行消除小人路径 void roadcake(int *i,int *j){int temp;temp=*i; /*进行值交换,即数组值为0和值为4进行交换*i=*j;*j=temp;}完成第一个控制之后进行清屏和画新的游戏状态图,若在游戏进行中要退出游戏,只需按0键,调用exit(0)函数结束;若要返回游戏菜单,按Esc键掉用menu()函数即可,重复以上步骤,直达游戏结束,此时掉用menu()函数自动返回菜单。
用C和SFML制作迷宫小游戏

用C和SFML制作迷宫小游戏迷宫小游戏制作指南迷宫小游戏是一种经典的游戏类型,以其挑战性和趣味性而备受玩家喜爱。
这里将介绍使用C语言和SFML库来制作迷宫小游戏的步骤。
一、概述迷宫小游戏的基本原理是玩家通过键盘操作控制角色在迷宫中寻找出口。
玩家可以使用方向键或WASD键控制角色的移动,并避开迷宫中的障碍物。
游戏的难度可以根据迷宫的复杂程度和障碍物的设置来调整。
二、环境搭建1. 安装C编译器和SFML库:在开始制作游戏之前,需要安装C编译器(如GCC或Clang)以及SFML库。
GCC和Clang是常用的C语言编译器,在安装过程中会有相应的说明文档。
SFML是一个跨平台的多媒体库,提供了许多功能丰富的图形和音频接口。
2. 配置开发环境:在安装完成后,需要配置开发环境,包括设置编译器和库文件的路径。
具体操作请参考相关文档。
三、游戏设计在开始编写代码之前,我们需要先设计游戏的基本框架和功能。
1. 创建游戏窗口:使用SFML库可以方便地创建一个游戏窗口,并设置窗口的大小和标题。
2. 绘制迷宫地图:迷宫地图可以使用二维数组来表示,其中不同的数值代表不同的方块类型,比如墙壁、通道和出口。
在游戏开始时,需要根据地图数组来绘制迷宫。
3. 控制角色移动:通过监听键盘事件,可以让玩家使用方向键或WASD键来控制角色的移动。
需要注意的是,角色移动时需要检测是否与墙壁或边界发生碰撞。
4. 碰撞检测:在角色移动过程中,需要判断角色是否与墙壁或障碍物发生碰撞。
如果发生碰撞,则需要相应地处理角色的移动。
5. 胜利条件判断:游戏的胜利条件是角色到达迷宫的出口。
可以通过判断角色与出口的位置关系来判断玩家是否胜利。
四、编写代码在完成游戏设计之后,我们可以开始编写代码来实现游戏功能。
1. 引入SFML库和相关头文件:在代码文件的开头,引入所需的SFML库和相关头文件。
2. 创建游戏窗口:使用SFML库中的窗口类来创建游戏窗口,并设置窗口的大小和标题。
C#2010 制作迷宫游戏

C#2010 制作迷宫游戏C#2010制作迷宫游戏引言本文档将介绍如何使用C#2010制作迷宫游戏。
迷宫游戏是一种有趣且富有挑战性的游戏,玩家需要在迷宫中寻找出口。
我们将通过使用C#2010编程语言来创建一个基本的迷宫游戏。
步骤一:准备工作在开始制作迷宫游戏之前,您需要准备以下工作:1. 一台安装有C#2010的计算机。
2. 对C#编程语言有一定的了解。
3. 图形用户界面(GUI)设计的基本知识。
步骤二:创建游戏窗体在C#2010中,您可以使用Windows Forms应用程序来创建游戏窗体。
以下是创建游戏窗体的步骤:1. 打开Visual Studio 2010,并创建一个新的Windows Forms应用程序项目。
2. 设计游戏窗体的外观,包括标题、大小和背景色等。
步骤三:绘制迷宫在游戏窗体上绘制迷宫是制作迷宫游戏的关键步骤。
以下是绘制迷宫的一种方法:1. 使用C#的绘图功能,创建游戏窗体上的迷宫地图。
2. 定义迷宫的大小和结构。
3. 绘制迷宫的墙壁和通道。
步骤四:添加玩家角色玩家角色是游戏的主要参与者,他们需要通过迷宫找到出口。
以下是如何添加玩家角色的步骤:1. 在游戏窗体上添加一个角色图像或图标。
2. 实现玩家角色的移动功能,例如使用键盘控制。
步骤五:设置游戏规则和目标为了使迷宫游戏更有挑战性,您可以设置一些游戏规则和目标。
以下是一些示例:1. 设置游戏的时间限制。
2. 添加障碍物或敌人,使游戏更有难度。
3. 定义玩家需要达到的目标,例如收集所有宝藏或解决谜题。
步骤六:添加游戏功能为了增加游戏的趣味性和交互性,您可以添加一些额外的游戏功能。
以下是一些建议:1. 添加音效和背景音乐。
2. 提供游戏暂停和重新开始功能。
3. 计分系统和排行榜。
结论通过本文档,您了解了使用C#2010制作迷宫游戏的基本步骤。
希望这些信息对您有所帮助,祝您成功创建一个有趣的迷宫游戏!。
c语言走迷宫代码

c语言走迷宫代码以下是一个简单的 C 语言走迷宫代码示例,使用了递归算法: ```c#include <stdio.h>#include <stdlib.h>int main() {int size, row, col, choice, i, j;maze[0][0] = "*";maze[1][0] = "O";maze[0][1] = "O";maze[1][1] = "*";size = 2;row = 2;col = 2;while (1) {printf("Enter row: ");scanf("%d", &row);printf("Enter col: ");scanf("%d", &col);if (row < 0 || row > size || col < 0 || col > size) { printf("Invalid row or col. Try again.");}if (maze[row][col] != "*") {printf("Current cell is free. Try again. ");continue;}maze[row][col] = "X";printf("Enter a choice (1-6): ");scanf("%d", &choice);switch (choice) {case 1:row++;col = 0;break;case 2:row--;col = 0;break;case 3:col++;break;col--;break;case 5:row--;col = 1;break;case 6:row++;col = 1;break;default:printf("Invalid choice. Try again. ");continue;}}printf(" maze: ");for (i = 0; i < size * size; i++) { for (j = 0; j < size; j++) {if (maze[i][j] == "*")printf("*");elseprintf("%c", maze[i][j]);}printf("");}return 0;}```该程序首先初始化了一个 2x2 的迷宫,其中 `maze[0][0]` 和`maze[1][0]` 分别标记为 `"O"` 和 `"*"`,其他地方都为空。
C语言迷宫源代码

#include <graphics.h>#include <stdlib.h>#include <bios.h>/*定义几个功能按键*/#define ESC 0x11b /*强行退出游戏*/#define UP 0x4800 /*上下左右四个按键移动小人*/#define DOWN 0x5000#define LEFT 0x4b00#define RIGHT 0x4d00int a[50][50]={0}; /* 存放地图信息的数组0:不可走的障碍物1:可以走的路*/ int qdx=1,qdy=1,zdx=20,zdy=20; /* 起点和终点的坐标*/int renx,reny; /* 小人坐标*/int d=20; /* 小格子的间距*/int kk=0,rr=2;main(){int i,j,m=30,n=16,d=20,k;int gdriver = DETECT, gmode;randtu(200);renx=qdx,reny=qdy;registerbgidriver(gdriver);initgraph(&gdriver, &gmode, "c:\\turboc2");redraw();while(1) /* 反复从键盘获得程序需要的按键*/{if(bioskey(1)) /* 判断是否有按键*/{k=bioskey(0); /* 将按键存入变量k */switch(k) /* 对按键进行分情况处理*/{case ESC: /* ESC键退出*/printf("%d times\n",kk);exit(0); break;case UP: /* UP键向上移动光标*/if(a[renx][reny-1]==1){reny-=1;redraw();}break;case DOWN: /* DOWN键向下移动光标*/if(a[renx][reny+1]==1){reny+=1;redraw();}break;case LEFT: /* LEFT键向左移动光标*/if(a[renx-1][reny]==1){renx-=1;redraw();}break;case RIGHT: /* RIGHT键向右移动光标*/if(a[renx+1][reny]==1){renx+=1;redraw();}break;}}}getch();closegraph();}/*redraw重画函数在用户有操作后,重画游戏画面*/redraw(){int i,j;for(i=qdx;i<=zdx;i++)for(j=qdy;j<=zdy;j++){if(i<renx+rr && i>renx-rr && j<reny+rr && j>reny-rr)if(a[i][j]==0) geziza(i*d,j*d);else gezilu(i*d,j*d);else gezibk(i*d,j*d);}drawren(renx*d,reny*d);}/*随机地图(randlei)函数用于随机生成地图*/randtu(int num){int i,j,xx,yy,sum,t,m,n;srand(time(NULL));loop: sum=0;m=zdy-qdy+1;n=zdx-qdx+1;a[qdx][qdy]=1;a[zdx][zdy]=1;do{t=random(m*n);xx=t/m+1;yy=t%m+1;if(a[xx][yy]==0){a[xx][yy]=1;sum++;}}while(sum<num);if(ok()) return;for(i=0;i<50;i++)for(j=0;j<50;j++)a[i][j]=0;kk++;goto loop;}ok(){ int b[50][50]={0};b[qdx][qdy]=1;tansuo(qdx,qdy,b);return(b[zdx][zdy]);}tansuo(int x,int y,int *b[50][50]) /* 如果当前格子为空白无雷情况,向周围探索相类似的情况,并打开周围的数字*/{if(a[x][y-1]==1 && b[x][y-1]==0){b[x][y-1]=1;tansuo(x,y-1,b);}if(a[x+1][y]==1 && b[x+1][y]==0){b[x+1][y]=1;tansuo(x+1,y,b);}if(a[x-1][y]==1 && b[x-1][y]==0){b[x-1][y]=1;tansuo(x-1,y,b);}if(a[x][y+1]==1 && b[x][y+1]==0){b[x][y+1]=1;tansuo(x,y+1,b);}}/*绘制障碍物小格子(geziza)int x : 格子左上角点横坐标int y :格子左上角点纵坐标*/geziza(int x,int y){int i;setcolor(8);rectangle(x,y,x+d,y+d);setcolor(RED);setfillstyle(2,RED);bar(x+1,y+1,x+d-1,y+d-1);/* 设置深灰色为格子边框*/ }/*绘制障碍物小格子(geziza)int x : 格子左上角点横坐标int y :格子左上角点纵坐标*/gezibk(int x,int y){int i;setcolor(8);rectangle(x,y,x+d,y+d);setcolor(BLUE);setfillstyle(2,BLUE);bar(x+1,y+1,x+d-1,y+d-1);/* 设置深灰色为格子边框*/}gezilu(int x,int y){int i;setcolor(8); /* 设置深灰色为格子边框*/ rectangle(x,y,x+d,y+d);setcolor(BLUE);setfillstyle(8,BLUE);bar(x+1,y+1,x+d-1,y+d-1);}/*画小人(drawren)函数用于绘制给定坐标位置的小人小人画在格子的正中心格子背景色为红色int x : 所在格子左上角点横坐标int y :所在格子左上角点纵坐标*/drawren(int x,int y){int i;setcolor(8); /* 设置深灰色为格子边框*/ rectangle(x,y,x+d,y+d);setcolor(YELLOW);for(i=1;i<d/2-3;i++)circle(x+d/2,y+d/2,i);}/*over(over)函数用于判断游戏是否结束*/over(){}。
C语言迷宫游戏

《C语言程序设计实践》项目设计题目迷宫游戏专业软件工程学生姓名 =====学号 ************ 年级 2014指导教师2015年 6 月 9 日迷宫游戏1 项目功能需求1、在本游戏主要实现了人控制键盘方向键使小人走出迷宫。
2、在游戏菜单里人可以选择不同难度的游戏进行游戏;3、在游戏过程中,可以通过键盘方向键使小人移动,走出迷宫;4、在游戏过程中,当人碰到墙壁(0)的时候小人过不去;5、当人顺利完成游戏之后,输出“*******恭喜你获得胜利******”字样,然后自动返回到游戏菜单;6、在游戏过程中,人可以通过按Esc键返回游戏菜单;也可以可以按0直接退出游戏;7、在游戏菜单里,按0键可以退出游戏。
8、人主要同过键盘的1,2,3数字键来选择游戏难度;9、在游戏中按Esc键来返回菜单;10、在菜单中按0键退出游戏。
项目实现效果图:2 知识点分析1、指针的声明,指针变量的声明;2、结构体指针的声明和使用;3、各种基础函数的使用;4、数组的声明和使用;3 算法思想首先定义三个全局数组mg1[20][20]、mg2[30][30]、mg3[30][30]画出迷宫的地图;1表示障碍物,0表示路径;Introduce函数里如果按Enter键,则调用menu函数,从键盘中输入相应的提示数字,进入不同难度的游戏;然后调用控制函数control控制小人移动路径,在control函数里用循环语句进行循环;用switch语句选择方向键,在调用roadcake函数进行消除小人路径;最后完成第一个控制之后进行清屏和画新的游戏状态图,若在游戏进行中要退出游戏,只需按0键,调用exit(0)函数结束;若要返回游戏菜单,按Esc键掉用menu函数即可,重复步骤,直到游戏结束。
4 系统流程图开始主菜单(游戏提示)是否进入游戏Enter键Esc键选择游戏难度初级中级高级胜利或游戏失败游戏结束图1 迷宫游戏流程图5 项目实现(含代码解释)6 项目扩展1、界面设计,增加色彩,使游戏更加美观;2、使用其他方式实现迷宫游戏;7 项目小结能自己编程写一个小游戏一直是我的一个小心愿,如今能完成,内心也是十分激动,虽然这不是一个非常完美的游戏,但是是自己亲手制作的,意义重大,这让我对程序编写的兴趣和信心大大增加,经过一年的C语言学习,这学期的进步应该是最大的,通过的众多的项目实战,累积了不少的经验,完成这个迷宫游戏虽然难度对我来说非常大,但是我还是想要尝试这样的挑战,这对我今后的发展有很大的帮助。
迷宫(direction)C语言代码

};
mazePath(maze,direction,1,1,6,9);
getchar();
return 0;
}
#include<stdio.h>
#include<conio.h>
intmigong[10][10]= //设置迷宫,最外围1为墙 里边0为可走路径 1为障碍
voidpush_seq(PSeqStackpastack,DataTypex ) {
if(pastack->t >= MAXNUM - 1 )
printf( "Overflow! \n" );
else {
pastack->t++;
pastack->s[pastack->t] = x;
}
}
/* 删除栈顶元素 */
element =top_seq(st);
pop_seq(st);
i=element.x; j =element.y;
for (k =element.d+ 1; k <= 3; k++) { /* 依次试探每个方向 */
g =i+ direction[k][0];h = j + direction[k][1];
lj[top].x=1;
lj[top].y=1;
migong[1][1]=-1;
find=0;d=-1;
while(top>-1){
if(lj[top].x==8&&lj[top].y==8)
{
printf("迷宫路径如下:\n");
c语言迷宫代码

c语言迷宫代码C语言迷宫代码是指用C语言编写的程序,用于生成和解决迷宫问题的算法。
迷宫通常由一个矩形网格组成,其中包含墙壁和通道。
目标是找到从迷宫的起点到终点的路径,同时避开墙壁。
下面是一个简单的示例代码,用于生成迷宫:```c#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define ROWS 10#define COLS 10typedef struct {int x;int y;} Point;void generateMaze(int maze[ROWS][COLS]) {for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {if (i % 2 == 0 || j % 2 == 0) { maze[i][j] = 1; // 墙壁} else {maze[i][j] = 0; // 通道}}}}void printMaze(int maze[ROWS][COLS]) {for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {printf('%d ', maze[i][j]);}printf('');}}int main() {int maze[ROWS][COLS];generateMaze(maze);printMaze(maze);return 0;}```在上面的代码中,我们使用一个二维数组来表示迷宫。
数组中的值为1表示墙壁,值为0表示通道。
使用generateMaze函数,我们将迷宫的墙壁和通道初始化为适当的值。
然后使用printMaze函数打印迷宫。
通过运行上面的代码,我们可以得到一个简单的迷宫的表示:```1 1 1 1 1 1 1 1 1 11 0 1 0 1 0 1 0 1 11 1 1 1 1 1 1 1 1 11 0 1 0 1 0 1 0 1 11 1 1 1 1 1 1 1 1 11 0 1 0 1 0 1 0 1 11 1 1 1 1 1 1 1 1 11 0 1 0 1 0 1 0 1 11 1 1 1 1 1 1 1 1 11 0 1 0 1 0 1 0 1 1```当然,上述代码只是生成了一个简单的迷宫,还没有解决迷宫问题。
迷宫游戏C语言小游戏源代码

PosType NextPos(PosType seat,i nt di);
Status MazePath(PosType start,PosType end);
void CreatMaze(void)
/* Forቤተ መጻሕፍቲ ባይዱ the maze. */
case ''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''':Maze[j][k]=2・break・
case ''''''''''''''''''''''''''''''''3'''''''''''''''''''''''''''''''':Maze[j][k]=1・
(完整word版)c语言迷宫最完整做法

#include〈stdio。
h〉#include〈stdlib。
h>#include〈time.h>#define stack_init_size 200#define stack_increment 10#define ERROE 0#define TRUE 1#define FALSE 0#define OVERFLOW 0#define OK 1typedef int Status;typedef struct{int x;int y;}PosType;typedef struct {int ord; // 通道块在路径上的“序号”PosType seat; //通道块在迷宫中的“坐标位置”int di; //从此通道块走向下一通道块的“方向”}SElemType;typedef struct{SElemType *base;SElemType *top;int stacksize;}SqStack;int mg[20][20];/*随机生成迷宫的函数/*为了能够让尽量能通过,将能通过的块和不能通过的块数量比大致为2:1*/void Random(){int i,j,k;srand(time(NULL));mg[1][0]=mg[1][1]=mg[18][19]=0; //将入口、出口设置为“0"即可通过for(j=0;j〈20;j++)mg[0][j]=mg[19][j]=1;/*设置迷宫外围“不可走”,保证只有一个出口和入口*/ for(i=2;i〈19;i++)mg[i][0]=mg[i—1][19]=1; /*设置迷宫外围“不可走”,保证只有一个出口和入口*/ for(i=1;i〈19;i++)for(j=1;j<19;j++){k=rand()%3; //随机生成0、1、2三个数if(k)mg[i][j]=0;else{if((i==1&&j==1)||(i==18&&j==18)) /*因为距入口或出口一步的路是必经之路,故设该通道块为“0”加大迷宫能通行的概率*/mg[i][j]=0;elsemg[i][j]=1;}}}//构造一个空栈Status InitStack(SqStack &s){s。
【转】C语言180行随机迷宫代码(非本人代码)详解+分析 整理版

/*迷宫游戏 by CDQ*//*vc++ 6.0 编译成功本程序参照网上一个特殊算法随机生成迷宫该算法优点:效率高,从入口到出口只有唯一路径,入口出口自己设定该算法缺点:宽度高度都必须为奇数,只能生成n*m矩阵迷宫*/#include <stdio.h>#include <conio.h>#include <windows.h>#include <time.h>#define Height 31 //迷宫的高度,必须为奇数#define Width 25 //迷宫的宽度,必须为奇数#define Wall 1#define Road 0#define Start 2#define End 3#define Esc 5#define Up 1#define Down 2#define Left 3#define Right 4int map[Height+2][Width+2];void gotoxy(int x,int y) //移动坐标{COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); }void hidden()//隐藏光标{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);}void create(int x,int y) //随机生成迷宫{int c[4][2]={0,1,1,0,0,-1,-1,0}; //四个方向int i,j,t;//将方向打乱for(i=0;i<4;i++){j=rand()%4;t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;}map[x][y]=Road;for(i=0;i<4;i++)if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) {map[x+c[i][0]][y+c[i][1]]=Road;create(x+2*c[i][0],y+2*c[i][1]);}}int get_key() //接收按键{char c;while(c=getch()){if(c==27) return Esc; //Escif(c!=-32)continue;c=getch();if(c==72) return Up; //上if(c==80) return Down; //下if(c==75) return Left; //左if(c==77) return Right; //右}return 0;}void paint(int x,int y) //画迷宫{gotoxy(2*y-2,x-1);switch(map[x][y]){case Start:printf("入");break; //画入口case End:printf("出");break; //画出口case Wall:printf("※");break; //画墙case Road:printf(" ");break; //画路}}void game(){int x=2,y=1; //玩家当前位置,刚开始在入口处int c; //用来接收按键while(1){gotoxy(2*y-2,x-1);printf("☆"); //画出玩家当前位置if(map[x][y]==End) //判断是否到达出口{gotoxy(30,24);printf("到达终点,按任意键结束");getch();break;}c=get_key();if(c==Esc){gotoxy(0,24);break;}switch(c){case Up: //向上走if(map[x-1][y]!=Wall){paint(x,y);x--;}break;case Down: //向下走if(map[x+1][y]!=Wall){paint(x,y);x++;}break;case Left: //向左走if(map[x][y-1]!=Wall){paint(x,y);y--;}break;case Right: //向右走if(map[x][y+1]!=Wall){paint(x,y);y++;}break;}}}int main(){int i,j;srand((unsigned)time(NULL)); //初始化随即种子hidden(); //隐藏光标for(i=0;i<=Height+1;i++)for(j=0;j<=Width+1;j++)if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫map[i][j]=Road;else map[i][j]=Wall;create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数for(i=0;i<=Height+1;i++) //边界处理{map[i][0]=Wall;map[i][Width+1]=Wall;}for(j=0;j<=Width+1;j++) //边界处理{map[0][j]=Wall;map[Height+1][j]=Wall;}map[2][1]=Start; //给定入口map[Height-1][Width]=End; //给定出口for(i=1;i<=Height;i++)for(j=1;j<=Width;j++) //画出迷宫paint(i,j);game(); //开始游戏getch();return 0;}首先,先挂上代码。
简单的迷宫小游戏C语言程序源代码

简单的迷宫小游戏C语言程序源代码#include <stdio.h>#include <conio.h>#include <windows.h> #include <time.h>#define Height 31 //迷宫的高度,必须为奇数 #define Width 25 //迷宫的宽度,必须为奇数 #define Wall 1#define Road 0#define Start 2#define End 3#define Esc 5#define Up 1#define Down 2#define Left 3#define Right 4int map[Height+2][Width+2]; void gotoxy(int x,int y) //移动坐标{COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );}void hidden()//隐藏光标{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci; GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);}void create(int x,int y) //随机生成迷宫 {int c[4][2]={0,1,1,0,0,-1,-1,0}; //四个方向 int i,j,t;//将方向打乱for(i=0;i<4;i++){j=rand()%4;t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;}map[x][y]=Road;for(i=0;i<4;i++)if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall){map[x+c[i][0]][y+c[i][1]]=Road;create(x+2*c[i][0],y+2*c[i][1]);}}int get_key() //接收按键{char c;while(c=getch()) {if(c==27) return Esc; //Escif(c!=-32)continue; c=getch();if(c==72) return Up; //上if(c==80) return Down; //下if(c==75) return Left; //左if(c==77) return Right; //右}return 0;}void paint(int x,int y) //画迷宫 { gotoxy(2*y-2,x-1); switch(map[x][y]) { case Start:printf("入");break; //画入口case End:printf("出");break; //画出口case Wall:printf("※");break; //画墙case Road:printf(" ");break; //画路}}void game(){int x=2,y=1; //玩家当前位置,刚开始在入口处 int c; //用来接收按键while(1){gotoxy(2*y-2,x-1); printf("?"); //画出玩家当前位置if(map[x][y]==End) //判断是否到达出口{gotoxy(30,24); printf("到达终点,按任意键结束");getch();break;}c=get_key(); if(c==Esc){gotoxy(0,24); break;}switch(c){case Up: //向上走if(map[x-1][y]!=Wall){paint(x,y); x--;}break;case Down: //向下走if(map[x+1][y]!=Wall){paint(x,y); x++;}break;case Left: //向左走if(map[x][y-1]!=Wall){paint(x,y); y--;}break;case Right: //向右走if(map[x][y+1]!=Wall){paint(x,y); y++;}break;}}}int main(){int i,j;srand((unsigned)time(NULL)); //初始化随即种子 hidden(); //隐藏光标for(i=0;i<=Height+1;i++) for(j=0;j<=Width+1;j++)if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫 map[i][j]=Road;else map[i][j]=Wall;create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数for(i=0;i<=Height+1;i++) //边界处理 {map[i][0]=Wall;map[i][Width+1]=Wall; }for(j=0;j<=Width+1;j++) //边界处理{map[0][j]=Wall;map[Height+1][j]=Wall; }map[2][1]=Start; //给定入口map[Height-1][Width]=End; //给定出口 for(i=1;i<=Height;i++)for(j=1;j<=Width;j++) //画出迷宫paint(i,j);game(); //开始游戏getch();return 0;}。
c语言—迷宫游戏

目录1、程序的功能 (2)2、游戏界面设计和图形函数的使用 (2)3、整体设计思路 (6)4、程序中的数据结构 (7)5、程序核心算法的流程图 (9)6、程序改进的设想 (10)7、总结 (10)8、参考文献 (12)1、程序的功能设计并实现一个类似于手机游戏“走迷宫”的程序。
一般设计迷宫为二维平面图,将迷宫的左上角作为入口,右下角作为出口。
一个点从入口通过键盘方向键的移动,走过通道,从出口成功走出。
迷宫随机生城,黄色代表可以通过,蓝色代表墙壁不能通过。
程序有两种运行方式:一种是由系统自动运行探索;一种是人工探索通路。
2、游戏界面设计和图形函数的使用Stack.h#include <iostream.h>#include <malloc.h>typedef struct {int r;int c;}PosType;typedef struct{int step; //当前位置在路径上的序号PosType seat; //当前位置的坐标int di; //往下一坐标的方向}ElemType;typedef struct NodeType{ElemType data;NodeType *next;}*NodeLink;typedef struct{NodeLink top;//指向栈顶int size;}Stack;////////////栈的基本操作void InitStack(Stack &S){//初始化栈,设S为空栈S.size=0;///cout<<"栈初始化成功"<<endl;S.top=NULL;}int LengthStack(Stack S){return S.size;}bool StackEmpty(Stack S){if(S.size==0)return true;else return false;}bool Push(Stack &S,ElemType e){//若分配空间成功,则在S的栈顶插入新的栈顶元素e,并返回true NodeType *p;if((p=(NodeType *)malloc(sizeof(NodeType)))==NULL)return false;p->data=e;p->next=S.top;S.top=p;S.size++;return true;}bool Pop(Stack &S,ElemType &e){//若栈不空,将栈S的栈顶元素删除并由e带回其值,且返回trueNodeType *p=S.top;if(p==NULL){cout<<"栈为kong,无法删除栈顶元素……\n";return false;}e=p->data;S.size--;S.top=p->next;free(p);return true;}bool StackTraveser(Stack S){NodeType *p;p=S.top;if(p==NULL){return false;}while(!p){cout<<S.top->data.di<<endl;p=p->next;}return true;}1.、main()主函数首先确定是人工探索还是系统自动探索,通过输入字符选定。
C语言迷宫小程序

//记录位置移动后的当前位置
current_x++;
//打印迷宫及当前位置
printf_matrix(matrix);
printf("请控制位置移动;w.上 s.下 a.左 d.右 q.退出\n");
//定义位置移动函数
void move(char map[ROW_X][COL_Y], int old_x, int old_y, int new_x, int new_y);
//定义迷宫及初始位置
char matrix[ROW_X][COL_Y] =
{
{ '\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2' },
{ '\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2','\2' }
基于C语言实现简单的走迷宫游戏

基于C语⾔实现简单的⾛迷宫游戏本⽂实例讲述了C语⾔实现简单的⾛迷宫游戏的⽅法,代码完整,便于读者理解。
学数据结构时⽤“栈”写的⼀个⾛迷宫程序,实际上⽤到双向队列,⽅便在运⾏完毕后输出经过的点。
#include <cstdio>#include <deque>#include <windows.h>using namespace std;class node{public:int x,y;int lastOpt;};deque<node> sta;int x,y;int endx,endy;int mapW,mapH;int steps;int xopt[5]= {0,0,1,0,-1};int yopt[5]= {0,1,0,-1,0};int map[100][100]={};void init(){x = 1;y = 1;endx = 1;endy = 9;mapH = 10;mapW = 10;for(int i=0; i<=mapH; i++)for(int j=0; j<=mapW; j++){if(i==0 ||j==0 ||i==mapH||j==mapW)map[i][j]=-1;}steps=0;map[1][2]=-1;map[2][2]=-1;map[3][2]=-1;map[4][2]=-1;map[6][2]=-1;map[7][2]=-1;map[8][2]=-1;map[9][2]=-1;map[9][3]=-1;map[8][3]=-1;map[1][4]=-1;map[3][4]=-1;map[4][4]=-1;map[5][4]=-1;map[6][4]=-1;map[7][4]=-1;map[1][6]=-1;map[2][6]=-1;map[3][6]=-1;map[4][6]=-1;map[5][6]=-1;map[6][6]=-1;map[7][6]=-1;map[8][6]=-1;map[8][7]=-1;map[8][8]=-1;map[7][8]=-1;map[6][8]=-1;map[5][8]=-1;map[4][8]=-1;map[2][8]=-1;map[1][8]=-1;map[endx][endy]=5;}void dis(){system("cls");int ori = map[x][y];map[x][y]=1;for(int i=0; i<=mapH; ++i){for(int j=0; j<=mapW; ++j){if(map[i][j]==0)printf(" ");else if(map[i][j]==-1)printf(" #");else if(map[i][j]==1)printf(" @");else if(map[i][j]==2)printf(" .");else if(map[i][j]==5)printf(" !");}cout<<i<<endl;}for(int j=0; j<=mapW; ++j)cout<<j<<" ";printf("\n\n > steps:%d Exit:(%d,%d)\n",steps,endx,endy);map[x][y] = ori;}int can(int n){if(map[x+xopt[n]][y+yopt[n]] == 0 || map[x+xopt[n]][y+yopt[n]] == 5) return 1;return 0;}void visit(int n){map[x][y]=2;x+=xopt[n];y+=yopt[n];node tem;tem.x = x;tem.y = y;stOpt = n;sta.push_back(tem);steps++;}int main(){init();node tem;while( x != endx || y!=endy){int cans = 0;for(int i=1; i<=4; i++){if(can(i)){cans = 1;visit(i);break;}}if(!cans){if(!sta.empty()){tem = sta.back();map[tem.x][tem.y]=0;}else{map[x][y]=2;x+=xopt[stOpt];x+=yopt[stOpt];dis();break;}}dis();Sleep(500);}if(x==endx && y == endy)cout<<"\n > i am finished....\n";elsecout<<"\n > i am finished...but i can't find the right way\n";return 0;}效果图:以上就是本⽂的全部内容,希望对⼤家学习C语⾔有所帮助。
C语的迷宫小游戏_源代码

C语的迷宫小游戏_源代码编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C语的迷宫小游戏_源代码)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为C语的迷宫小游戏_源代码的全部内容。
C语言编写的迷宫游戏源代码#include 〈graphics。
h>#include 〈stdlib.h>#include 〈stdio.h〉#include <conio。
h〉#include <dos。
h〉#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);/*人工探索*/elseFindWay(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; /*上*/case 2: (*x)——;(*y)++;break ;/*右上*/case 3:(*y)++;break; /*右*/case 4: (*x)++;(*y)++;break; /*右下*/case 5: (*x)++;break; /*下*/case 6: (*x)++;(*y)—-;break; /*左下*/case 7:(*y)-—;break; /*左*/case 8: (*x)--;(*y)—-;break; /*左上*/}setfillstyle(SOLID_FILL,RED);/*新位置显示探索物*/bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);}void PeopleFind(int (*map)[N])/*人工手动查找*/{int x,y;char c=0;/*接收按键的变量*/x=y=1;/*人工查找的初始位置*/setcolor(11);line(500,200,550,200);outtextxy(570,197,"d”);line(500,200,450,200);outtextxy(430,197,"a");line(500,200,500,150);outtextxy(497,130,"w”);line(500,200,500,250);outtextxy(497,270,"x”);line(500,200,450,150);outtextxy(445,130,”q");line(500,200,550,150);outtextxy(550,130,"e”);line(500,200,450,250);outtextxy(445,270,”z”);line(500,200,550,250);outtextxy(550,270,"c");/*以上是画8个方向的控制介绍*/setcolor(YELLOW);outtextxy(420,290,"Press 'Enter' to end");/*压回车键结束*/setfillstyle(SOLID_FILL,RED);bar(100+y*15-6,50+x*15—6,100+y*15+6,50+x*15+6);/*入口位置显示*/ while(c!=13)/*如果按下的不是回车键*/{c=getch();/*接收字符后开始各个方向的探索*/if(c==’w'&&map[x—1][y]!=1)DrawPeople(&x,&y,1);/*上*/elseif(c=='e'&&map[x—1][y+1]!=1)DrawPeople(&x,&y,2);/*右上*/elseif(c==’d’&&map[x][y+1]!=1)DrawPeople(&x,&y,3);/*右*/elseif(c=='c'&&map[x+1][y+1]!=1)DrawPeople(&x,&y,4);/*右下*/elseif(c==’x’&&map[x+1][y]!=1)DrawPeople(&x,&y,5);/*下*/elseif(c=='z'&&map[x+1][y-1]!=1)DrawPeople(&x,&y,6); /*左下*/elseif(c=='a’&&map[x][y-1]!=1)DrawPeople(&x,&y,7); /*左*/else if(c==’q’&&map[x—1][y-1]!=1)DrawPeople(&x,&y,8); /*左上*/}setfillstyle(SOLID_FILL,WHITE); /*消去红色探索物,恢复原迷宫图*/bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);if(x==N-2&&y==N-2)/*人工控制找成功的话*/yes=1; /*如果成功标志为1*/}void WayCopy(int (*oldmap)[N],int (*map)[N])/*拷贝迷宫数组*/ {int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)oldmap[i][j]=map[i][j];}int FindWay(int (*map)[N],int i,int j)/*递归找路*/{if(i==N—2&&j==N-2)/*走到出口*/{yes=1;/*标志为1,表示成功*/return;}map[i][j]=1;/*走过的地方变为1*/WayCopy(oldmap,map); /*拷贝迷宫图*/if(oldmap[i+1][j+1]==0&&!yes)/*判断右下方是否可走*/{FindWay(oldmap,i+1,j+1);if(yes)/*如果到达出口了,再把值赋给显示路线的way数组,也正是这个原因,所以具体路线是从最后开始保存*/{way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i+1][j]==0&&!yes)/*判断下方是否可以走,如果标志yes已经是1也不用找下去了*/{FindWay(oldmap,i+1,j);if(yes){way[wayn][0]=i;way[wayn++][1]=j;。
使用CC++语言生成一个随机迷宫游戏

使⽤CC++语⾔⽣成⼀个随机迷宫游戏迷宫相信⼤家都⾛过,毕竟书本啊啥啥啥的上⾯都会有迷宫,主要就是考验你的逻辑思维。
那么我们学习C/C++也是需要学习到逻辑思维⽅式的,那今天我就来分享⼀下,如何⽤C/C++打造⼀个简单的随机迷宫游戏。
(代码的话我只截取了如何创建迷宫的代码,如果想要全套代码的话可以加群:558502932,群内有很多C/C++学习资料提供学习,⼤家⼀起交流进步)完整版的迷宫游戏效果如下:代码如下://创建迷宫void CreateMaze(int x,int y){//定义4个⽅向int dir[4][2] = { 0, 1, 1, 0, 0, -1, -1, 0 }; //回答错误//打乱⽅向int j,temp; //temp 临时变量for (int i = 0; i < 4; i++){j = rand() % 4; //0-3 数组的下标 //j随机之后 j同⼀次还会不会变temp = dir[i][0];dir[i][0] = dir[j][0];dir[j][0] = temp;temp = dir[i][1];dir[i][1] = dir[j][1];dir[j][1] = temp;}map[x][y] = ROAD; //把这个点赋值成路for (int i = 0; i < 4; i++){if (map[x + 2 * dir[i][0]][y + 2 * dir[i][1]] == WALL) //向上 0 1 //隔壁的⼀个{map[x + dir[i][0]][y + dir[i][1]] = ROAD;CreateMaze(x + 2*dir[i][0], y + 2*dir[i][1]);}}}int main(){srand((unsigned int)time(NULL));for ( int i = 0; i <= HEIGHT+1; i++){for (int j = 0; j <= WIDTH + 1; j++){if (i == 0 || i == HEIGHT + 1 || j == 0 || j == WIDTH + 1){map[i][j] = ROAD;}else{map[i][j] = WALL;}}}CreateMaze(2 * (rand() % (HEIGHT / 2) + 1), 2 * (rand() % (WIDTH / 2) + 1));//边界for (int i = 0; i <= HEIGHT + 1; i++){map[i][0] = WALL;map[i][WIDTH + 1] = WALL;}for (int i = 0; i <=WIDTH+1; i++){map[0][i] = WALL;map[HEIGHT + 1][i] = WALL;}//画出⼊⼝和出⼝map[2][1] = START;map[HEIGHT - 1][WIDTH] = END;for (int i = 1; i <= HEIGHT; i++){for (int j = 1; j <= WIDTH; j++){paint(i, j);}}paint(0, 0);return 0;}这只是⾥⾯的⼀部分代码,所以你们复制粘贴也是没⽤的,给你们代码只是辅导作⽤,主要是你们要知道编程思想及程序设计的思路,希望你们能学好C/C++学成C/C++咯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int a;
init();
while (1)
{
keyboard();
key = keyboard();
maze_move();
victor();
a = victor();
if (a == 1)
return 0;
}
}
0,12,20,24,40,44,48,
0,4,6,8,10,12,16,20,24,26,28,30,32,36,38,40,44,48,
0,12,16,24,36,44,48,
0,4,6,8,12,16,18,20,22,24,28,30,32,34,36,40,42,44,48,
0,8,12,16,28,36,44,48,
0,2,4,6,8,12,14,16,20,22,24,26,28,30,32,36,38,40,44,48,
0,12,20,36,44,48,
0,4,6,8,10,12,16,18,20,24,26,28,30,32,36,40,42,44,48,
0,4,16,20,32,36,48,
0,4,8,10,12,14,16,20,24,26,28,32,34,36,38,40,42,44,46,48,
flag = 0;
k++;
}
if (flag == 1)
{
Pos(i, j);
printf(" ");
j = j + 1;
Pos(i, j);
printf("♀");
}
Sleep(300);
}
if (key == 3)
{
flag = 1;
k = 0;
while (flag == 1 && k<336)
}
if (key == 4)
{
flag = 1;
k = 0;
while (flag == 1 && k<336)
{
if ((i + 2) == x[k] && j == y[k] || (i + 2 == -2 && j == 1))
flag = 0;
k++;
}
if (flag == 1)
{
Pos(i, j);
13,13,13,13,13,13,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
15,15,15,15,15,15,15,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
j = j - 1;
Pos(i, j);
printf("♀");
}
Sleep(300);
}
if (key == 2)
{
flag = 1;
k = 0;
while (flag == 1 && k<336)
{
if (i == x[k] && (j + 1) == y[k] || (i == -2 && j + 1 == 1))
uchar key;
int i = 0, j = 1;
int flag;
int k;
int x[] = { 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,
24,48,
0,2,4,6,8,12,14,16,18,20,24,28,30,32,34,36,38,40,44,46,48,
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
9,9,9,9,9,9,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
11,11,11,11,11,11,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
5,5,5,5,5,5,5,
6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
7,7,7,7,7,7,7,7,
{
flag = 1;
k = 0;
while (flag == 1 && k<336)
{
if (i == x[k] && (j - 1) == y[k] || (i == -2 && j - 1 == 1))
flag = 0;
k++;
}
if (flag == 1)
{
Pos(i, j);
printf(" ");
uchar keyboard()
{
if (GetAsyncKeyState(VK_UP)) return 1;
if (GetAsyncKeyState(VK_DOWN)) return 2;
if (GetAsyncKeyState(VK_LEFT)) return 3;
if (GetAsyncKeyState(VK_RIGHT)) return 4;
if (GetAsyncKeyState(VK_RETURN)) return 5;
else return 0;
}
void Pos(int x, int y)//设置光标位置
{
COORD pos;
HANDLE hOutput;
pos.X = x;
pos.Y = y;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
{
if ((i - 2) == x[k] && j == y[k] || (i - 2 == -2 && j == 1))
flag = 0;
k++;
}
if (flag == 1)
{
Pos(i, j);
printf(" ");
i = i - 2;
Pos(i, j);
printf("♀");
}
Sleep(300);
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#define uchar unsigned char
#define wide 50
#define high 25
uchar up = 0, down = 0, left = 0, right = 0;
0,2,4,6,8,12,14,16,18,20,22,24,26,28,30,32,34,36,40,42,44,46,48,
0,8,16,36,48,
0,4,6,8,10,12,16,20,22,24,26,28,30,32,36,38,40,42,44,48,
0,4,12,20,32,44,48,
printf(" ");
i = i + 2;
Pos(i, j);
printf("♀");
}
Sleep(300);
}
}
int victor()
{
if (i == 48 && j == 23)
{
Pos(20, 12);
printf("恭喜通过");
Sleep(300000);
return 1;
}
}
int main()
21,21,21,21,21,21,21,
22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
23,23,23,
24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24 };
17,17,17,17,17,
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
19,19,19,19,19,
20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
0,4,8,12,14,16,18,20,24,28,30,32,34,36,38,40,44,48,
0,8,24,
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48 };
int y[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,4,12,20,28,48,
0,4,6,8,12,16,18,20,22,24,28,30,32,34,36,38,40,44,48,
0,12,16,28,36,44,48,
0,4,6,8,10,12,16,20,22,24,26,28,30,32,36,40,42,44,48,