小游戏1-(迷宫游戏)、(地图编辑器)

上一篇 / 下一篇  2008-09-08 20:11:37 / 个人分类:收藏

/*迷宫游戏*/
/*进入tc运行游戏,按上下左右键控制,任何时候按ESC键退出*/
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#define LEFT 120
#define TOP 40
#define RIGHT 520
#define BOTTOM 440
#define SMALL 20
int b[20][20];  /*用来保存地图信息*/
b[20][20]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
   {1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1},
   {1,0,1,0,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,1},
   {1,0,1,0,1,1,0,1,1,0,1,0,1,0,0,1,0,1,0,1},
   {1,0,0,0,0,1,0,0,1,0,0,0,1,0,1,1,0,1,0,1},
   {1,1,1,0,1,1,1,0,1,1,1,1,0,0,1,0,0,1,0,1},
   {1,1,0,0,1,1,0,0,1,0,0,1,0,1,1,0,1,0,0,1},
   {1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1},
   {1,0,1,1,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1},
   {1,0,1,0,0,1,1,0,0,1,0,0,1,1,0,0,1,0,1,1},
   {1,0,0,0,1,1,0,1,0,0,0,1,1,0,1,0,1,0,0,1},
   {1,0,1,1,1,0,0,1,1,1,0,1,1,0,1,0,1,1,0,1},
   {1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,1},
   {1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1},
   {1,0,0,0,1,0,1,1,0,1,0,1,0,0,0,1,0,0,0,1},
   {1,0,1,0,1,0,0,0,0,1,0,0,0,1,1,0,0,1,0,1},
   {1,0,1,0,1,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1},
   {1,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0,0,0,1,1},
   {1,0,0,0,0,1,0,1,1,0,0,0,0,1,1,0,1,0,0,1},
   {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
void drawcake(int x,int y)  /*划方块*/
{
setfillstyle(SOLID_FILL,BLUE);
bar(LEFT+1+x*SMALL,TOP+1+y*SMALL,RIGHT-1-19*SMALL+x*SMALL,BOTTOM-1-19*SMALL+y*SMALL);
}
void draw(int x,int y)  /*划小方块*/
{
setfillstyle(SOLID_FILL,RED);
bar(LEFT+5+x*SMALL,TOP+5+y*SMALL,RIGHT-5-19*SMALL+x*SMALL,BOTTOM-5-19*SMALL+y*SMALL);
}
void undraw(int x,int y)  /*擦去小方块*/
{
setfillstyle(SOLID_FILL,BLACK);
bar(LEFT+5+x*SMALL,TOP+5+y*SMALL,RIGHT-5-19*SMALL+x*SMALL,BOTTOM-5-19*SMALL+y*SMALL);
}
main()
{
int gr=DETECT,gm,k=0,i,j,x=1,y=1,ch;
float f;
initgraph(&gr,&gm,"");
cleardevice();
setbkcolor(0);
for(i=0;i<20;i++)
 for(j=0;j<20;j++)
  if(b[i][j]==1)drawcake(j,i);
draw(x,y);
do{
ch=bioskey(0);
switch(ch)
 {
 case 19200:   /*按向左键*/
  if(b[y][x-1]==0)
  {
  undraw(x,y);
  b[y][x]=0;
  x--;
  draw(x,y);
  b[y][x]=2;
  break;
  }
 case 19712:   /*按向右键*/
  if(b[y][x+1]==0)
  {
  undraw(x,y);
  b[y][x]=0;
  x++;
  draw(x,y);
  b[y][x]=2;
  break;
  }
 case 18432:   /*按向上键*/
  if(b[y-1][x]==0)
  {
  undraw(x,y);
  b[y][x]=0;
  y--;
  draw(x,y);
  b[y][x]=2;
  break;
  }
 case 20480:   /*按向下键*/
  if(b[y+1][x]==0)
  {
  undraw(x,y);
  b[y][x]=0;
  y++;
  draw(x,y);
  b[y][x]=2;
  break;
  }
 }
if(b[18][18]==2)ch=283;
}while(ch!=283);
if(b[18][18]==2)printf("                          恭贺你成功地走出了迷宫!");
getch();
}

 

 

 

/*地图编辑器*/
/*本程序可以画迷宫地图,并自动生成0,1代码保存在一个文件里*/
/*使用方法:按上下左右键可以控制物体的移动,按下空格键可以画方块,再按空格键可擦去方块*/
/*本程序存在一些问题,因为定义的数组不是很大,也没有考虑再数组外的情况,所以最好不要移出范围内*/
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>
#include <graphics.h>
#define LEFT 120
#define TOP 40
#define RIGHT 520
#define BOTTOM 440
#define BIG 20
#define SMALL 20

int a[20][20];
void drawcake(int x,int y) /*划方块*/
{
setfillstyle(SOLID_FILL,BLUE);
bar(LEFT+1+x*SMALL,TOP+1+y*SMALL,RIGHT-1-19*SMALL+x*SMALL,BOTTOM-1-19*SMALL+y*SMALL);
}
void undrawcake(int x,int y) /*擦去方块*/
{
setfillstyle(SOLID_FILL,BLACK);
bar(LEFT+1+x*SMALL,TOP+1+y*SMALL,RIGHT-1-19*SMALL+x*SMALL,BOTTOM-1-19*SMALL+y*SMALL);
}
main()
{
int gr=DETECT,gm,i,j,x=1,y=1,ch;
FILE *fp;
float f;
initgraph(&gr,&gm,"");
cleardevice();
setbkcolor(0);
fp=fopen("迷宫地图.txt","w");
printf("                                  地图编辑器");
for(i=0;i<20;i++)
{
drawcake(i,0); a[i][0]=1;
drawcake(i,19);a[i][19]=1;
drawcake(0,i); a[0][i]=1;
drawcake(19,i);a[19][i]=1;
}
drawcake(x,y);
do{
ch=bioskey(0);

switch(ch)
{
case 19200:
{
if(a[x][y]==0)undrawcake(x,y);
else ;
x--;
drawcake(x,y);
break;
}
case 19712:
{
if(a[x][y]==0)undrawcake(x,y);
else ;
x++;
drawcake(x,y);
break;
}
case 18432:
{
if(a[x][y]==0)undrawcake(x,y);
else ;
y--;
drawcake(x,y);
break;
}
case 20480:
{
if(a[x][y]==0)undrawcake(x,y);
else ;
y++;
drawcake(x,y);
break;
}
case 14624:
if(a[x][y]==0)
{
drawcake(x,y);
a[x][y]=1;
}
else
{
undrawcake(x,y);
a[x][y]=0;
}
}

}while(ch!=283);
cleardevice();
fp=fopen("迷宫地图.txt","w");
for(x=0;x<20;x++)
{
for(y=0;y<20;y++)
fprintf(fp,"%d,",a[y][x]);
fprintf(fp,"\n");
}
fclose(fp);
getch();
}


TAG: 编辑器 地图 迷宫 小游戏

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-03  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 2755
  • 日志数: 70
  • 图片数: 2
  • 建立时间: 2007-10-16
  • 更新时间: 2008-11-22

RSS订阅

Open Toolbar