C程序课程设计报告—走迷宫

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C程序课程设计报告—走迷宫

一课题分析

1.1 设计要求

走迷宫:绘制和选择迷宫地图,系统能够自动寻找出口,支持鼠标和键盘操作。通过画图函数设定迷宫,运用数据结构的相关知识,利用一定的算法,实现单步找寻迷宫出口的操作。

1.2 实现功能

小游戏,游戏者从左侧入口处走到右侧的出口处,则胜;中途退出,则败。

二整体设计

2.1框架设计

1.定义操作键键码,用#define实现。

2.系统BGI初始化模块:

3.画出迷宫模块:其中包括边框、出口、入口、墙壁等相关信息;用函数drawmaze()实现此操作。

4.定义迷宫中的人模块:用函数move()实现此操作。实现点的移动,并判断是否到达出口。

5.退出系统模块:用if函数进行判断,如胜则输出-You win,如败则输出you lose.用函数getch()查看结果。

三详细设计

3.1界面设计

此游戏界面采用图形设计。

主界面设计如下:

图1 走迷宫图

3.2结构设计:

用if语句实现人的坐标移动和判断游戏者输赢。

四总结

参考文献

暂无

附录#include

#include

/*定义操作键键码*/

#define UP 0x4800/*上移--方向键up*/

#define DOWN 0x5000/*下移--方向键down*/

#define LEFT 0x4b00/*左移--方向键left*/

#define RIGHT 0x4d00/*右移--方向键right*/

#define ESC 0x011b

#define midx getmaxx()/2

#define midy getmaxy()/2

void initgr(void) /* BGI初始化*/

{

int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果*/ registerbgidriver(EGA VGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行*/ initgraph(&gd, &gm, "");

}

void drawmaze()/* 画出迷宫*/

{

rectangle(midx-200,midy-200,midx+200,midy+200);/* 画出边框*/

setcolor(BLACK);

line(midx-200,200,midx-200,226);/* 画出迷宫入口*/

line(midx+200,300,midx+200,326);/* 画出迷宫出口*/

setcolor(WHITE);

line(midx-150,midy-200,midx-150,midy-150);/* 画出迷宫内的墙壁*/

line(midx-150,midy-150,midx-170,midy-150);

line(midx-170,midy-150,midx-170,midy-100);

line(midx-170,midy-75,midx-170,midy+170);

line(midx-170,midy+170,midx+100,midy+170);

line(midx+120,midy+170,midx+170,midy+170);

line(midx+120,midy+170,midx+120,midy+30);

line(midx+120,midy,midx+120,midy-50);

line(midx+120,midy-50,midx+70,midy-50);

line(midx+100,midy+170,midx+100,midy+80);

line(midx+70,midy+170,midx+70,midy-200);

line(midx,midy+170,midx,midy);

line(midx,midy-30,midx,midy-130);

line(midx,midy-130,midx-50,midy-130);

line(midx-50,midy-130,midx-50,midy-200);

line(midx-170,midy+30,midx-100,midy+30);

line(midx-70,midy+30,midx,midy+30);

line(midx-100,midy+30,midx-100,midy+100);

line(midx-130,midy+30,midx-130,midy+150);

line(midx-110,midy-200,midx-110,midy-50);

line(midx-110,midy-50,midx-50,midy-50);

line(midx-50,midy-50,midx-50,midy+30);

line(midx-170,midy,midx-65,midy);

line(midx+150,midy-200,midx+150,midy+170);

}

void move()

{

int yes=1;/* 循环的条件*/

int x,y;/* 点的坐标,点相当于迷宫中的人*/

int key;

x=midx-200;y=214;

putpixel(x,y,WHITE);

while(yes)/* 实现点的重复移动*/

{

key=bioskey(0);

if(key==UP)/* 如果键入上键,位置上移*/

{

putpixel(x,y,BLACK);

y-=5;

if(getpixel(x,y)==WHITE)/* 如果改变后的坐标是墙壁,将坐标回到原先的位置,点不会移动*/ y+=5; /* 如果不是墙壁,实现点的移动*/

putpixel(x,y,WHITE);/* 在坐标处画点*/

}

if(key==DOWN)/* 如果键入下键,位置下移?*/

{

相关文档
最新文档