Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
26.05.2014
Размер:
1.87 Кб
Скачать
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>

char myname[]="test.map";

void loadscan(unsigned int x,unsigned int y)
{
int h;
int px,py;
char line[80];
h=open(myname,O_RDONLY|O_BINARY);
lseek(h,(long)y*1000+x,SEEK_SET);
for (py=0;py<25;py++)
 {
  read(h,line,80);
  for (px=0;px<80;px++) if (line[px]) pokeb(0xb800,2*(py*80+px),'Ы');
			 else pokeb(0xb800,2*(py*80+px),' ');
  lseek(h,1000-80,SEEK_CUR);
 }
close(h);
}

void savescan(int x,int y)
{
int h;
int px,py;
char line[80];
char c;
h=open(myname,O_RDWR|O_BINARY);
lseek(h,(long)y*1000+x,SEEK_SET);
for (py=0;py<24;py++)
 {
  for (px=0;px<80;px++) {c=peekb(0xb800,2*(80*py+px));
			 if (c!=32) c=1;else c=0;
			 line[px]=c;}
  write(h,line,80);
  lseek(h,tell(h)+1000-80,SEEK_SET);
 }
close(h);
}

void run()
{
int x=0,y=0;
int tx=40,ty=10;
int xp=1,yp;
char key;
char buf=32;
loadscan(x,y);
while (1) {
			 if (xp!=x||yp!=y) {
					    loadscan(x,y);
					    xp=x;
					    yp=y;
					   }
			 gotoxy(1,25);
			 printf("Coords (%4d;%4d)<%4d;%4d>[%4d;%4d]\r",x,y,x+tx,y+ty,x+79,y+24);

			 pokeb(0xb800,2*(ty*80+tx),'*');

			 key=getch();

			 pokeb(0xb800,2*(ty*80+tx),buf);

			 if (key==27) break;

			 if (key=='l') tx++;
			 if (key=='j') tx--;
			 if (key=='i') ty--;
			 if (key=='k') ty++;

			 if (key=='d') x++;
			 if (key=='a') x--;
			 if (key=='p') pokeb(0xb800,2*(ty*80+tx),'Ы');
			 if (key=='o') pokeb(0xb800,2*(ty*80+tx),' ');
			 if (key=='w') y--;
			 if (key=='s') y++;

			 if (key=='t') y-=10;
			 if (key=='g') y+=10;
			 if (key=='h') x+=10;
			 if (key=='f') x-=10;

			 if (key=='m') savescan(x,y);

			 if (x<0) x=0;
			 if (y<0) y=0;
			 buf=peekb(0xb800,2*(ty*80+tx));
	  }
}

void main()
{
clrscr();
run();
}
Соседние файлы в папке 3