| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 316 人关注过本帖
标题:[求助]有大侠帮我看看吗
只看楼主 加入收藏
sxtz531
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-11-8
收藏
 问题点数:0 回复次数:0 
[求助]有大侠帮我看看吗
#include <stdio.h>
#include <bios.h>
#include <conio.h>
#define ESC 0x011b
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define MAXSIZE 10
typedef struct
{
int x;
int y;
}point;
point des[MAXSIZE];
char map[10][10] =
{
" ",
" ####",
" ### @#",
" # b #",
" ## # ###",
" # # #*#",
" # # b*#",
" # b *#",
" ########",
" "
};
void DrawMan(int x, int y)
{
gotoxy(x+10, y+5);
textcolor(YELLOW);
putch(2);
printf("\b");
}
void DrawSpace(int x, int y)
{
gotoxy(x+10, y+5);
printf(" ");
}
void DrawBox(int x, int y)
{
gotoxy(x+10, y+5);
textcolor(CYAN);
putch('@');
}
void DrawDes(int x, int y)
{
gotoxy(x+10, y+5);
textcolor(YELLOW);
putch('*');
}
void DrawBoxIn(int x, int y)
{
gotoxy(x+10, y+5);
textcolor(YELLOW);
putch('@');
}
void DrawMap(point *pman)
{
int x = 0, y = 0;
int i = 0;
for (; y < 10; ++y)
{
for (x=0; x < 10; ++x)
{
if (map[y][x] == '#')
{
textcolor(GREEN);
gotoxy(x+10, y+5);
putch(219);
}
else if (map[y][x] == '*')
{
DrawDes(x, y);
des[i].x = x; /*负值有什么用?*/
des[i].y = y;
++i;
}
else if (map[y][x] == '@')
{
pman->x = x; /*负值有什么用?*/
pman->y = y;
DrawMan(x, y);
map[y][x] = ' ';
}
else if (map[y][x] == 'b')
{
DrawBox(x, y);
}
else if (map[y][x] == 'i') /*map[]中没'i',有什么用?*/
{
DrawBoxIn(x, y);
des[i].x = x;
des[i].y = y;
++i;
}
des[i].x = -1; /*负值为-1有什么用?*/
}
}
}
int main()
{
point man = {1, 1};
int key = 0;
int i = 0, count = 0;
clrscr();
DrawMap(&man);
while (key != ESC)
{
while (bioskey(1) == 0);
key = bioskey(0);
switch (key)
{
case UP:
if (map[man.y - 1][man.x] == '#')
{
break;
}
else if (map[man.y - 1][man.x] == 'b' || map[man.y - 1][man.x] == 'i')
{
switch (map[man.y - 2][man.x])
{
case 'b':
case '#':
case 'i':
break;
case ' ':
/*move box*/
if (map[man.y - 1][man.x] == 'i') /*'if'中给map[]不断复值为什么?*/
{
map[man.y - 1][man.x] = '*';
}
else
{
map[man.y - 1][man.x] = ' ';
}
map[man.y - 2][man.x] = 'b';
DrawBox(man.x, man.y - 2);
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
--man.y;
DrawMan(man.x, man.y);
break;
case '*':
/*move box in*/
if (map[man.y - 1][man.x] == 'i')
{
map[man.y - 1][man.x] = '*';
}
else
{
map[man.y - 1][man.x] = ' ';
}
map[man.y - 2][man.x] = 'i';
DrawBoxIn(man.x, man.y - 2);
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
--man.y;
DrawMan(man.x, man.y);
break;
defalut:
break;
}
break;
}
else
{
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
--man.y;
DrawMan(man.x, man.y);
break;
}
case DOWN:
if (map[man.y + 1][man.x] == '#')
{
break;
}
else if (map[man.y + 1][man.x] == 'b' || map[man.y + 1][man.x] == 'i')
{
switch (map[man.y + 2][man.x])
{
case 'b':
case '#':
case 'i':
break;
case ' ':
/*move box*/
if (map[man.y + 1][man.x] == 'i')
{
map[man.y + 1][man.x] = '*';
}
else
{
map[man.y + 1][man.x] = ' ';
}
map[man.y + 2][man.x] = 'b';
DrawBox(man.x, man.y + 2);
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
++man.y;
DrawMan(man.x, man.y);
break;
case '*':
/*move box in*/
if (map[man.y + 1][man.x] == 'i')
{
map[man.y + 1][man.x] = '*';
}
else
{
map[man.y + 1][man.x] = ' ';
}
map[man.y + 2][man.x] = 'i';
DrawBoxIn(man.x, man.y + 2);
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
++man.y;
DrawMan(man.x, man.y);
break;
default:
break;
}
break;
}
else
{
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
++man.y;
DrawMan(man.x, man.y);
break;
}
case LEFT:
if (map[man.y][man.x - 1] == '#')
{
break;
}
else if (map[man.y][man.x - 1] == 'b' || map[man.y][man.x - 1] == 'i')
{
switch (map[man.y][man.x - 2])
{
case 'b':
case '#':
case 'i':
break;
case ' ':
/*move box*/
if (map[man.y][man.x - 1] == 'i')
{
map[man.y][man.x - 1] = '*';
}
else
{
map[man.y][man.x - 1] = ' ';
}
map[man.y][man.x - 2] = 'b';
DrawBox(man.x - 2, man.y);
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
--man.x;
DrawMan(man.x, man.y);
break;
case '*':
/*move box in*/
if (map[man.y][man.x - 1] == 'i')
{
map[man.y][man.x - 1] = '*';
}
else
{
map[man.y][man.x - 1] = ' ';
}
map[man.y][man.x - 2] = 'i';
DrawBoxIn(man.x - 2, man.y);
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
--man.x;
DrawMan(man.x, man.y);
break;
default:
break;
}
break;
}
else
{
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
--man.x;
DrawMan(man.x, man.y);
break;
}
case RIGHT:
if (map[man.y][man.x + 1] == '#')
{
break;
}
else if (map[man.y][man.x + 1] == 'b' || map[man.y][man.x + 1] == 'i')
{
switch (map[man.y][man.x + 2])
{
case 'b':
case '#':
case 'i':
break;
case ' ':
/*move box*/
if (map[man.y][man.x + 1] == 'i')
{
map[man.y][man.x + 1] = '*';
}
else
{
map[man.y][man.x + 1] = ' ';
}

map[man.y][man.x + 2] = 'b';
DrawBox(man.x + 2, man.y);
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
++man.x;
DrawMan(man.x, man.y);
break;
case '*':
/*move box in*/
if (map[man.y][man.x + 1] == 'i')
{
map[man.y][man.x + 1] = '*';
}
else
{
map[man.y][man.x + 1] = ' ';
}
map[man.y][man.x + 2] = 'i';
DrawBoxIn(man.x + 2, man.y);


if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
++man.x;
DrawMan(man.x, man.y);
break;
default:
break;
}
break;
}
else
{
if (map[man.y][man.x] == '*')
{
DrawDes(man.x, man.y);
}
else
{
DrawSpace(man.x, man.y);
}
DrawSpace(man.x, man.y);
++man.x;
DrawMan(man.x, man.y);
break;
}
defualt:
break;
}
for (i=0, count=0; des[i].x != -1; ++i)
{
if (map[des[i].y][des[i].x] == '*')
{
++count;
}
}
if (count == 0)
{
gotoxy(35, 3);
printf("Ok! you win!");
getch();
key = ESC;
}
}
return 0;
}
搜索更多相关主题的帖子: include 
2007-03-17 17:21
快速回复:[求助]有大侠帮我看看吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020830 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved